ReSharper formatting: align equal operands

狂风中的少年 提交于 2019-11-27 01:57:27

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!

Der Hochstapler

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.

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

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

Other goodies are obviously there as well.

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

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!