[cfe-dev] clang-format custom format specification

Kyle Knoepfel via cfe-dev cfe-dev at lists.llvm.org
Tue Sep 15 13:47:52 PDT 2020


David, see my response below.

> On Sep 15, 2020, at 12:38 PM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> I've cc'd Sam McCall who might have opinions on the specific feature
> you're suggesting. In the mean time I'd like to/be happy to drill down
> a bit more into your use case, perhaps there are other solutions or
> it'll give Sam more context when he can reply
> 
> On Tue, Sep 15, 2020 at 10:21 AM Kyle Knoepfel <kyleknoepfel at gmail.com> wrote:
>> 
>> David, the current situation I'm faced with is that we're experimenting with different formats, and there is no .clang-format file that resides in the directory hierarchy.
> 
> What sort of experiments are you running? If it's a matter of using
> different formats in different parts of the codebase, that could be
> done with more narrowly scoped .clang-format files, for instance. If
> the project isn't open to having any .clang-format files checked in
> during the experimentation phase, that's trickier - could put one
> up/above/outside the project - but couldn't do that and have different
> sub directories running different experimental formats

Yes, that is what I've settled on--placing the .clang-format file outside of the source-code tree, and doing something like:

sourcecode/...
option-a/.clang-format
option-b/.clang-format
option-c/.clang-format

Somebody then asked me to send them the 'option-c' format so they could run it on their code base.  Unfortunately, he placed the '.clang-format' file in the wrong place, ran clang-format, and received an output they thought was 'option-c' but really wasn't.  If instead he could have run something like:

clang-format -style=custom:option-c ...

then a hard failure stating "option-c format not found" (or something similar) would have been helpful.

Thanks,
Kyle 

>> Once we settle on a format, I expect the .clang-format to be included in the source-code repository, and this problem can be a non-issue.  Until we get there, however, this would be a very helpful safety mechanism.
>> 
>> That said, I'm very cognizant of the XY problem, and do not want to be a perpetrator of it.
>> 
>> Thanks for your response,
>> Kyle
>> 
>>> On Sep 15, 2020, at 3:14 AM, David Blaikie <dblaikie at gmail.com> wrote:
>>> 
>>> "clang-format for each input file will try to find the .clang-format
>>> file located in the closest parent directory of the input file." - so
>>> it shouldn't matter which directory you invoke the command from. If
>>> you have the .clang-format file in the parent of the file you want to
>>> format, it should always get that format.
>>> 
>>> Perhaps there's something broken in your setup that's causing that
>>> behavior not to work?
>>> 
>>> On Mon, Sep 14, 2020 at 5:47 PM Kyle Knoepfel via cfe-dev
>>> <cfe-dev at lists.llvm.org> wrote:
>>>> 
>>>> Forgive me if this has already been discussed.
>>>> 
>>>> I work on projects with different formatting guidelines.  For simple cases, it is simple to embed the .clang-format file in the correct (parent) directory, run `clang-format -style=file ...` and everyone's happy.  However, it is easy to get into a situation where the wrong format is applied, especially if you accidentally invoke the command from the wrong directory.
>>>> 
>>>> Would Clang be opposed to a command line invocation such as:
>>>> 
>>>> clang-format -style=custom:my-projects-format ...
>>>> 
>>>> where a field in the .clang-format file would have the value 'my-projects-format', thus attributing the file to the format name?  If a user specified something like -style=custom:my-unsupported-format, and such a format name could not be discovered in the .clang-format file, then it would be a hard failure, not letting a silent error slip by.
>>>> 
>>>> Thanks for your input.  If it is favorable, then I'm happy to explore implementing it.
>>>> 
>>>> Kyle Knoepfel
>>>> 
>>>> Software framework group leader, Fermilab
>>>> 
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>> 



More information about the cfe-dev mailing list