views:

538

answers:

3

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!

A: 

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

Gareth
+5  A: 

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

hmemcpy
Thank you VERY much for sharing your solution! Really much appreciate!BTW I compiled code, changed cmd line to point my dll but it seems not installed after F5. What I'm doing wrong ?
Maciej
Okay - I've copied solution to C:\ drive and now seems working - gonna test it now!
Maciej
I've just tested and plugin work as expected. Thanks.Unfortunately (as you mentioned) it not align variables inside methods. Looked quickly into your code and it is not so easy for me to add this. Need to learn more about RS's semantics. But I'll definitely try and share community if I did it. :)
Maciej
I'm glad this is working for you. I haven't looked at it yet, but I think there might be a problem aligning variables - how will you know which ones to align? Unless you define all your variables at the top of the method, this won't really work well. Perhaps this could be implemented as a "quick fix" - highlight the variables you want to align, press Alt-Enter and voilla! :)I'll look into it later :)
hmemcpy
See my update to find the rule how to align variables.Quick Fix option sound also reasonable!
Maciej
+1  A: 

I think it is worth noting that the Visual Studio Productivity Power Tools have an Align Assignments feature.

gencha
Wow. This seems to be what I've looked. Unfortunately we have no VS2010 in my corp :(
Maciej