[cfe-dev] [clang-format] Trying to use libFormat for code indentation

Ivan Donchevskii via cfe-dev cfe-dev at lists.llvm.org
Fri Oct 5 06:22:11 PDT 2018

Hi Jonas,

Lexer returns only the indentation which is already in the source code but not the calculated according to the .clang-format file.

So far I've found the WhitespaceManager in libFormat but it seems to work only together with other formatting.


From: Jonas Toth <development at jonas-toth.eu>
Sent: Friday, October 5, 2018 3:16:51 PM
To: Ivan Donchevskii; cfe-dev
Subject: Re: [cfe-dev] [clang-format] Trying to use libFormat for code indentation

Hi Ivan,

take a look at this one: https://clang.llvm.org/doxygen/classclang_1_1Lexer.html#a9102a4b3ccbed3505f6d002502193793

The Lexer provides a function that gives the indendation for a line, given that you seem to know the line of interest you can probably query the Lexer there.

Best Jonas

Am 05.10.2018 um 13:31 schrieb Ivan Donchevskii via cfe-dev:


libFormat and clang-format are great for formatting but I want to use libFormat a bit differently - to provide the indentation for the next line (inside IDE, when you press CR in code editor).

Probably I miss some handy flag which helps with that but so far I've found only workarounds to do what I need:

 - add some stupid expression to the new line (something like "a;") to force libFormat indent it

 - play with clang-format flags to prevent it from shrinking the new line into the previous one

 - set ColumnLimit to the length of the previous line also to prevent shrinking

All of them work completely unreliably. Also it's often some incomplete code in the middle of typing so it might have unfinished expressions.

So I want to ask if somebody has/had similar use cases and knows how to deal with them before adding some special flag to clang-format and trying to solve my issues there.

Kind regards,


cfe-dev mailing list
cfe-dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20181005/02f24a69/attachment.html>

More information about the cfe-dev mailing list