Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resharper fluent interface code formatting (align to the dot)

I read a lot of answers about formatting options for fluent indendation. ( Resharper formatting code into a single line and ReSharper fluent indentation and http://youtrack.jetbrains.com/issue/RSRP-88220 ) like this:

mockCrypto.Expect(c => c.Hash("authenticationHashSalt", "ignoring arguments"))
   .IgnoreArguments()
   .Return("hashed");

But I have not found information about formatting code like this:

kernel.Bind<ICameraController>()
      .To<NikonCameraController>()
      .NamedLikeFactoryMethod((ICameraFactory f) => f.GetNikonCamera());

mock.Setup(framework => framework.DownloadExists("2.0.0.0"))
    .Returns(true)
    .AtMostOnce(); // (it's from moq QuickStart)

But the style is very common and I often see it in the documentation for frameworks. How to set up Resharper auto-formatting for the use of this style?

like image 681
Dvor_nik Avatar asked Jul 20 '12 07:07

Dvor_nik


2 Answers

I'm using next settings in R# in Options -> Code Editing -> C# -> Formatting Style:

Line Breaks and Wrapping -> Arrangement of Member Access Expressions section -> Wrap chained method calls == Chop always

Tabs, Indents, Alignment -> Align Multiple Constructs section -> Chained method calls checked

Result:

enter image description here

Based on https://blog.jetbrains.com/dotnet/2012/11/12/code-formatting-improvements-in-resharper-71/ . Path for Chained method calls was is some version between 7.1 and R# 2018

like image 149
aderesh Avatar answered Nov 15 '22 14:11

aderesh


Unfortunately, Resharper doesn't seem to be able to do this at the moment and it's an issue that's been flagged for quite some time.

As a potentially acceptable trade off, to minimize the pain of Resharper undoing the formatting of existing fluent invocations, you can select "Keep existing line breaks" in Resharper options under "Formatting Style" -> "Line Breaks and Wrapping" -> "Preserve Existing Formatting".

like image 33
Matt B Avatar answered Nov 15 '22 14:11

Matt B