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

Manuel Klimek via cfe-dev cfe-dev at lists.llvm.org
Tue Aug 16 20:05:25 PDT 2016

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160817/9abd1587/attachment.html>

More information about the cfe-dev mailing list