Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 356
Mathias Avatar asked Aug 13 '11 21:08

Mathias


People also ask

How do you indent multiple lines in Visual Studio?

If you prefer using [spacebar] to indent your code rather than using [tab], you can select multiple lines by holding the [alt] key and clicking on the beginning of each line you want to indent. Then, you can press [spacebar] and all the selected lines will be affected.

How do I turn on auto indent in Visual Studio?

Select the text you want to automatically indent.Click menu Edit → Advanced → *Format Selection, or press Ctrl + K , Ctrl + F . Format Selection applies the smart indenting rules for the language in which you are programming to the selected text.


2 Answers

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".

Align contents

like image 116
turoni Avatar answered Oct 11 '22 17:10

turoni


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.

like image 21
Leslie Hanks Avatar answered Oct 11 '22 17:10

Leslie Hanks