[cfe-dev] Clang-format / clang-tidy VS plugin

Michael Lewis via cfe-dev cfe-dev at lists.llvm.org
Tue Aug 16 20:26:47 PDT 2016

The Windows lifestyle, for what it's worth, would prefer to have a GUI for
modifying the .clang-format settings but still serialize them as always.

This way you get the accessibility without losing the strengths of having a
versionable file on disk.

Speaking as a virtually all-Windows dev, I would be exceedingly happy to
get better clang-format support in VS. Writing a VS plugin isn't hard, for
what it's worth, and can totally offer a fully dynamic editor for the
settings stored on disk. I can definitely say that such a plugin would be
very popular even among programmers who don't build (primarily) with clang.

- Mike

On Aug 16, 2016 8:05 PM, "Manuel Klimek via cfe-dev" <cfe-dev at lists.llvm.org>

> On Tue, Aug 16, 2016, 10:49 PM Zachary Turner via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>> That is one idea that I considered, but from what I understand of how to
>> implement options UI in Visual Studio (I have never actually done this, but
>> looked at it for an hour or so once upon a time) the options and values
>> need to be statically defined in order to create the UI property sheet.  ie
>> you can't build one of these sheets dynamically, because the UI is
>> generated when Visual Studio loads your extension by reading some XML.
>> It's possible my understanding is wrong though.
>> I agree that per-project and per-file settings would be nice.  I'll have
>> to think about this some more though, as you would want a tight integration
>> with what people normally expect with the project system, such as being
>> able to override settings on a per file basis.  This also means figuring
>> out how to make this interoperate (if at all) with existing .clang-format
>> settings files on disk.
> That's why we have the files on disk. Do you think people on Windows would
> not want to just check in a .clang-format file and use style=file?
>> On Tue, Aug 16, 2016 at 12:41 PM Yury Mikhaylov <yury.mikhaylov at gmail.com>
>> wrote:
>>> Can't we just ask clang-format to dump all options that its parser
>>> understands and use that info to populate property sheet in MSVC? Something
>>> similar to what -dump-config does now.
>>> I have also noticed that your mock-up shows the prop sheet in the
>>> system-wide settings. Won't it be better to keep them on per-project basis?
>>> Maybe even parse/regenerate .clang-format file in the project folder to
>>> allow versioning?
>>> - Yury
>>> On Fri, Aug 12, 2016 at 3:58 PM, Zachary Turner via cfe-dev <
>>> cfe-dev at lists.llvm.org> wrote:
>>>> I was thinking about some ways to improve clang-format, and possibly
>>>> even add clang-tidy to the list of things our VS plugin supports.  Perhaps
>>>> even merge them into a single plugin.  But you know, I'm a windows person,
>>>> and I want a UI.  I don't want to just click a button and have it use some
>>>> settings that are on disk that I edited by hand, I'd like to be able to
>>>> edit the settings themselves through a nice UI, like everything in VS.
>>>> This is kind of difficult if the plugin shells out to an external tool
>>>> without linking against it, because it doesn't have any knowledge of what
>>>> specific options and features the version it's calling might support in
>>>> order to build the appropriate UI to set them.  On the other hand, if it
>>>> links against the tool, this all becomes very easy, because the plugin can
>>>> share types and data structures with the tool itself.  And it also means
>>>> that someone could download the plugin without installing LLVM, as a
>>>> standalone tool, greatly reducing the barrier to entry for people wanting
>>>> to try out the tool.
>>>> Here's a quick mockup of what my ideal UI would look like and what I
>>>> have in mind: http://imgur.com/a/p3XBv
>>>> But again, it's hard to maintain this kind of thing if the VS plugin
>>>> has to rely on an external tool to do the formatting, since it would have
>>>> to know about every possible set of options for every version as the
>>>> software improves.  So in order to do this this way, we'd need to probably
>>>> build clang-format and/or clang-tidy as a DLL and bundle them with the
>>>> plugin, which could link against it.
>>>> Not really asking anyone else to do the work so much as I am asking if
>>>> people think this would be cool and/or something they'd like to see.
>>>> Personally I think it would be a great way to get clang-format and
>>>> clang-tidy onto more peoples' systems, particularly those people who are
>>>> not currently using clang on Windows, since this would be standalone and
>>>> work out of the box while providing a familiar user interface to what
>>>> people are used to.
>>>> Thoughts?
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160816/9bef62d4/attachment.html>

More information about the cfe-dev mailing list