amaiorano added a comment.

(NOTE, I forgot to click Submit on the reply to @klimek a couple days ago!)



================
Comment at: tools/clang-format-vs/ClangFormat/ClangFormat.vsct:76
+        <Strings>
+          <ButtonText>Clang Format Document</ButtonText>
+        </Strings>
----------------
klimek wrote:
> hans wrote:
> > amaiorano wrote:
> > > hans wrote:
> > > > I think File would be better than Document when referring to source 
> > > > code.
> > > > 
> > > > But it seems a little annoying to need two menu alternatives. Could we 
> > > > make the regular "Clang Format" option just format the whole file if 
> > > > there is currently no selection, or would that be confusing?
> > > The reason I chose "Document" is that it mimics the existing 
> > > functionality in Visual Studio:
> > > {F2661117}
> > > 
> > > As you can see, "Ctrl+K, Ctrl+F" is bound to format selection by default; 
> > > which I assumed is the reason "Ctrl+R, Ctrl+F" was used for Clang Format 
> > > (Selection). So along the same lines, I bound "Ctrl + R, Ctrl + D" to 
> > > Clang Format Document.
> > > 
> > > I don't really have a problem with having multiple menu options, although 
> > > we could have both of them underneath a "Clang Format" top menu, with 
> > > "Format Selection" and "Format Document" as sub menu items.
> > > 
> > > As for annoyance in menus, I think most developers would reach for 
> > > keyboard shortcuts in this case anyway. Furthermore, the next feature I 
> > > want to add, building on top of this one, is allowing the user to enable 
> > > "Format on Save", which would make this even easier to use.
> > I see, I didn't realize they call it documents. And if they also have 
> > separate commands for formating selection and formating the whole file, 
> > maybe that makes sense for us too.
> > 
> > Right, I also imagine folks would use this from the keyboard, but there too 
> > it's annoying to have two shortcuts for the same thing. But again, if 
> > that's how it's generally done in VS...
> > 
> > I'd like to hear from Manuel on this patch too, though.
> Clang-format currently formats the current line / statement if there is no 
> selection, and that's how most people I know use it.
> Formatting the whole file by default is not what clang-format is optimized 
> for, and highly disruptive (eclipse does that, and it's annoying).
> I'm more wondering why we need a setting for this at all - isn't 
> ctrl-a,ctrl-k,ctrl-f equivalent to formatting the whole file?
@klimek My own experience, which also seems to match those of others online, is 
that clang-format is a fantastic tool for making sure your code-base follows a 
strict formatting standard. What many people do is install Git pre-stage hooks, 
for instance, to run clang-format across entire source files, to ensure they're 
formatted properly. So even if it's not optimized for that, it works very well 
:)

Using clang-format to format only the current line doesn't guarantee that 
everything will be formatted accordingly. My own experience is that it 
sometimes formats the line differently than if you format the entire document. 
Or perhaps you end up writing a few lines of code, and formatting current line 
doesn't pick up all the lines you've modified. As for ctrl-a,ctrl-r-ctrl-f, the 
problem with it is that you lose your cursor position, as ctrl-a will place it 
at the end of the file.

You also mention that formatting the entire file is "highly disruptive" like in 
eclipse. I'm not sure how eclipse handles that, but so far VS seems to do a 
pretty good job. It manages to maintain breakpoint positions quite well, it 
manages to keep the cursor in the same place, and it manages to keep the 
relative location of the code where the cursor is at visible on screen. I 
suspect part of the reason it works well in VS is because Microsoft made sure 
it worked for their own format document feature (ctrl-k,ctrl-d).

As I mentioned earlier, this is a stepping stone towards adding a feature to 
"format on save", for which I'd like to offer the ability to choose "current 
line/selection" and "document". [[ 
https://github.com/Elders/VSE-FormatDocumentOnSave | Here's an example ]] of an 
extension that offers this feature, but for VS's built-in formatting.


https://reviews.llvm.org/D27501



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to