ReSharper formatting: align equal operands

2020-01-26 09:50发布

Note to Googlers, this question is somewhat out of date as the requested feature is now supported in the current version of ReSharper 2017.3.1

I like to formatting my code to align right side of equal operands.
Like here:

bool    canRead     = false;
bool    canReadClass    = true;
string  className   = boType.Name;

I've switch to ReSharper recently and found it very useful but cannot find option allowing me format code in described way.

Do you know if there is such option / plugin?
Maybe you know other than ReSharp solution allowing that?

EDIT:
How to decide what part of code shall be aligned?
My convention is aligning all variables in same block.
By "block" I meant part of code not divided by empty lines.

eg

// First block
int      count     = 10;
string   name      = "abc";
bool     calculate = true;
.....
.....
// Second block
MyOwnType    myType   = new MyOwntype();
int          count    = 10;

EDIT -2
I've opened R# ticket for this. If anyone interested please vote!

6条回答
家丑人穷心不美
2楼-- · 2020-01-26 10:23

You can try this: Code Alignment

It supports

  • Align by... (Dialog)
  • Align by position... (Dialog)
  • Align by Equals
  • Align by m_
  • Align by "
  • Align by .
  • Align by Space
查看更多
再贱就再见
3楼-- · 2020-01-26 10:24

Years late, but further to the comment from @MickyD, Resharper can do this for you, see Resharper blog. Go to Resharper/ Options/ Code Editing/ C#/ Tabs, Indents, Alignment. Scroll to the bottom of the options in the right hand window pane to find "Align Similar Code in Columns", click things, enjoy.

查看更多
老娘就宠你
4楼-- · 2020-01-26 10:30

I think it is worth noting that the Visual Studio Productivity Power Tools have an Align Assignments feature. Here's a link to the Visual Studio 2013 Productivity Power Tools.

查看更多
够拽才男人
5楼-- · 2020-01-26 10:34

Productivity Power Tools 2012 also has a command for this: ctrl-alt-]

Other goodies are obviously there as well.

查看更多
地球回转人心会变
6楼-- · 2020-01-26 10:36

As far as I know, this is unfortunately not possible using Resharper.

查看更多
SAY GOODBYE
7楼-- · 2020-01-26 10:49

There is (currently) no way to do this out of the box in ReSharper. Fortunately, ReSharper has a very rich extensibility API (albeit poorly documented). I've spent a lot of time with Reflector trying to figure things out.

We use a similar alignment guideline for class members in a company I work for (to the extreme, we also align method parameters). I wrote a plugin for ReSharper to help me do just that. It's a "Code Cleanup" module, which runs sometime during the code cleanup (Ctrl-E, Ctrl-F) and aligns the code for you. It also makes the class sealed, if possible.

Some examples:

Method parameters:

public void DoSomething(string      name,
                        int         age,
                        IEnumerable coll)

(you will need to change Wrap formal parameters to Chop always in Options->Formatting Style->Line Breaks and Wrapping for this to work properly)

Constants:

private const int    RESOURCEDISPLAYTYPE_DOMAIN = 0x00000001;
private const int    CONNECT_COMMANDLINE        = 0x00000800;
private const int    CONNECT_INTERACTIVE        = 0x00000008;
private const string RESOURCE_NAME              = "Unknown";


You can download the source code from my SkyDrive.
Edit I seem to have lost access to that SkyDrive, and lost the files too. This was before github :(

Please note that you'll need several things to compile/debug it:

  1. Update the Command Line Arguments in Debug tab in Project Properties with the correct path of the output DLL:

    /ReSharper.Plugin "X:\<projects>\MyCompany.CodeFormatter\MyCompany.CodeFormatter\bin\Debug\MyCompany.CodeFormatter.dll"

    This allows debugging the plugin via F5, and it will be automatically installed in ReSharper's Plugins in the new Visual Studio instance which will open.

  2. The plugin is for ReSharper 4.5 and it references the DLLs of this version. If you installed ReSharper anywhere else except C:\Program Files\JetBrains\ReSharper, you will have to fix the references.
  3. This does not align variables inside methods, but it shouldn't be hard to add :)

After you install this, just run Code Cleanup to fix your alignment (I never got a reply from JetBrains about how to do this during brace/semicolon formatting, unfortunately).

Assembly was renamed to protect the innocent :)

Good luck!

查看更多
登录 后发表回答