Mathias
Mathias

Reputation: 15391

Automatic indentation of arguments list on multiple lines in Visual Studio

When the list of arguments to a method grows to the point where they do not fit comfortably on one line, I like to format code such that each argument is on a separate line (following the StyleCop suggestion), like this:

public void MyMethod(
   int someArgument,
   double someOtherArgument,
   int someMoreArguments)

The problem I run into is that this formatting is "fragile" and does not get automatically reformatted when using Ctrl + K + D. For instance, if I happen to insert some spaces in front of one of the arguments, it doesn't get removed, and I end up doing some tedious manual reformatting.

If I copy a method (say, to provide an overloaded signature), the argument indentation in the copy gets totally messy. I have a similar issue with LINQ statements, which I also like to format on multiple lines, like:

myEnumerable.
   .Where(this and that)
   .Where(this and that)
   .FirstOrDefault();

I realize this is complete obsessive-compulsive formatting, and a very minor issue, but is there a way to make Visual Studio 2010 automatically reindent multi-line arguments following that pattern when it gets misaligned?

Upvotes: 23

Views: 9590

Answers (2)

turoni
turoni

Reputation: 1435

For anyone searching this problem for later versions, in Visual Studio 2017 I found an option to do this (I am not sure if it is available in other versions).

Under menu ToolsOptionsText editorC/C++FormattingIndentation"Within parentheses, align new lines when I type them".

Choose the option "Align contents to opening parentheses".

Visual studio 2019 update.

Mostly the same answer but Formatting seems to have moved under Code style: So: Under menu ToolsOptionsText editorC/C++Code StyleFormattingIndentation"Within parentheses, align new lines when I type them".

Choose the option "Align contents to opening parentheses".

Align contents

Upvotes: 9

Leslie Hanks
Leslie Hanks

Reputation: 2377

You may want to look at ReSharper from JetBrains. It has all sorts of rules that can be applied to formatting code that is much better that the built-in Visual Studio stuff.

This particular option is located at:

ReSharper → menu OptionsC#Formatting StyleLine Breaks and WrappingWrap long lines.

I don't know if it does exactly what you want, but it does wrap long lines.

Upvotes: 4

Related Questions