r181617 - Reformat clang-format help strings, filter out irrelevant options.

Alexander Kornienko alexfh at google.com
Mon May 13 04:30:09 PDT 2013


In this particular case yes. But even when it's not clean it doesn't mean
it's intentionally hand-formatted. So the idea to automate the process of
self-formatting is still valid.
On May 13, 2013 12:53 PM, "Daniel Jasper" <djasper at google.com> wrote:

> As mentioned above, I had used clang-format with incorrect parameters, the
> file is indeed "clean".
>
>
> On Mon, May 13, 2013 at 12:43 PM, Alexander Kornienko <alexfh at google.com>wrote:
>
>> I'm pretty sure I don't intentionally hand-format code after
>> clang-format. But I also don't specially clang-format everything before
>> commit. So assume that anything not clang-formatted you find in my commits
>> is purely unintentional. If you want to avoid this, we should probably
>> think of an automated way to run clang-format over itself as a part of
>> tests or something.
>>  On May 13, 2013 12:22 PM, "Daniel Jasper" <djasper at google.com> wrote:
>>
>>> Sorry, turns out, I was just not able to use clang-format with the right
>>> parameters .. :-/
>>>
>>>
>>> On Mon, May 13, 2013 at 12:20 PM, Daniel Jasper <djasper at google.com>wrote:
>>>
>>>>
>>>>
>>>>
>>>> On Fri, May 10, 2013 at 8:12 PM, Alexander Kornienko <alexfh at google.com
>>>> > wrote:
>>>>
>>>>> Author: alexfh
>>>>> Date: Fri May 10 13:12:00 2013
>>>>> New Revision: 181617
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=181617&view=rev
>>>>> Log:
>>>>> Reformat clang-format help strings, filter out irrelevant options.
>>>>>
>>>>> Summary: +updated ClangFormat.rst
>>>>>
>>>>> Reviewers: djasper, klimek
>>>>>
>>>>> Reviewed By: klimek
>>>>>
>>>>> CC: cfe-commits
>>>>>
>>>>> Differential Revision: http://llvm-reviews.chandlerc.com/D780
>>>>>
>>>>> Modified:
>>>>>     cfe/trunk/docs/ClangFormat.rst
>>>>>     cfe/trunk/tools/clang-format/ClangFormat.cpp
>>>>>
>>>>> Modified: cfe/trunk/docs/ClangFormat.rst
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ClangFormat.rst?rev=181617&r1=181616&r2=181617&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- cfe/trunk/docs/ClangFormat.rst (original)
>>>>> +++ cfe/trunk/docs/ClangFormat.rst Fri May 10 13:12:00 2013
>>>>> @@ -20,21 +20,43 @@ to format C/C++/Obj-C code.
>>>>>
>>>>>    If no arguments are specified, it formats the code from standard
>>>>> input
>>>>>    and writes the result to the standard output.
>>>>> -  If <file> is given, it reformats the file. If -i is specified
>>>>> together
>>>>> -  with <file>, the file is edited in-place. Otherwise, the result is
>>>>> -  written to the standard output.
>>>>> +  If <file>s are given, it reformats the files. If -i is specified
>>>>> +  together with <file>s, the files are edited in-place. Otherwise, the
>>>>> +  result is written to the standard output.
>>>>>
>>>>> -  USAGE: clang-format [options] [<file>]
>>>>> +  USAGE: clang-format [options] [<file> ...]
>>>>>
>>>>>    OPTIONS:
>>>>> -    -fatal-assembler-warnings - Consider warnings as error
>>>>> -    -help                     - Display available options
>>>>> (-help-hidden for more)
>>>>> -    -i                        - Inplace edit <file>, if specified.
>>>>> -    -length=<int>             - Format a range of this length, -1 for
>>>>> end of file.
>>>>> -    -offset=<int>             - Format a range starting at this file
>>>>> offset.
>>>>> -    -stats                    - Enable statistics output from program
>>>>> -    -style=<string>           - Coding style, currently supports:
>>>>> LLVM, Google, Chromium.
>>>>> -    -version                  - Display the version of this program
>>>>> +
>>>>> +  Clang-format options:
>>>>> +
>>>>> +    -dump-config             - Dump configuration options to stdout
>>>>> and exit.
>>>>> +                               Can be used with -style option.
>>>>> +    -i                       - Inplace edit <file>s, if specified.
>>>>> +    -length=<uint>           - Format a range of this length (in
>>>>> bytes).
>>>>> +                               Multiple ranges can be formatted by
>>>>> specifying
>>>>> +                               several -offset and -length pairs.
>>>>> +                               When only a single -offset is
>>>>> specified without
>>>>> +                               -length, clang-format will format up
>>>>> to the end
>>>>> +                               of the file.
>>>>> +                               Can only be used with one input file.
>>>>> +    -offset=<uint>           - Format a range starting at this byte
>>>>> offset.
>>>>> +                               Multiple ranges can be formatted by
>>>>> specifying
>>>>> +                               several -offset and -length pairs.
>>>>> +                               Can only be used with one input file.
>>>>> +    -output-replacements-xml - Output replacements as XML.
>>>>> +    -style=<string>          - Coding style, currently supports:
>>>>> +                                 LLVM, Google, Chromium, Mozilla.
>>>>> +                               Use '-style file' to load style
>>>>> configuration from
>>>>> +                               .clang-format file located in one of
>>>>> the parent
>>>>> +                               directories of the source file (or
>>>>> current
>>>>> +                               directory for stdin).
>>>>> +
>>>>> +  General options:
>>>>> +
>>>>> +    -help                    - Display available options
>>>>> (-help-hidden for more)
>>>>> +    -help-list               - Display list of available options
>>>>> (-help-list-hidden for more)
>>>>> +    -version                 - Display the version of this program
>>>>>
>>>>>
>>>>>  Vim Integration
>>>>>
>>>>> Modified: cfe/trunk/tools/clang-format/ClangFormat.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/ClangFormat.cpp?rev=181617&r1=181616&r2=181617&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- cfe/trunk/tools/clang-format/ClangFormat.cpp (original)
>>>>> +++ cfe/trunk/tools/clang-format/ClangFormat.cpp Fri May 10 13:12:00
>>>>> 2013
>>>>> @@ -23,43 +23,57 @@
>>>>>  #include "llvm/Support/Debug.h"
>>>>>  #include "llvm/Support/FileSystem.h"
>>>>>  #include "llvm/Support/Signals.h"
>>>>> +#include "llvm/ADT/StringMap.h"
>>>>>
>>>>>  using namespace llvm;
>>>>>
>>>>>  static cl::opt<bool> Help("h", cl::desc("Alias for -help"),
>>>>> cl::Hidden);
>>>>>
>>>>> -static cl::list<unsigned> Offsets(
>>>>> -    "offset",
>>>>> -    cl::desc(
>>>>> -        "Format a range starting at this byte offset. Multiple ranges
>>>>> can be "
>>>>> -        "formatted by specifying several -offset and -length pairs.
>>>>> Can "
>>>>> -        "only be used with one input file."));
>>>>> -static cl::list<unsigned> Lengths(
>>>>> -    "length",
>>>>> -    cl::desc("Format a range of this length (in bytes). Multiple
>>>>> ranges can be "
>>>>> -             "formatted by specifying several -offset and -length
>>>>> pairs. When "
>>>>> -             "only a single -offset is specified without -length,
>>>>> clang-format "
>>>>> -             "will format up to the end of the file. Can only be used
>>>>> with one "
>>>>> -             "input file."));
>>>>> -static cl::opt<std::string> Style(
>>>>> -    "style",
>>>>> -    cl::desc(
>>>>> -        "Coding style, currently supports: LLVM, Google, Chromium,
>>>>> Mozilla. "
>>>>> -        "Use '-style file' to load style configuration from
>>>>> .clang-format file "
>>>>> -        "located in one of the parent directories of the source file
>>>>> (or "
>>>>> -        "current directory for stdin)."),
>>>>> -    cl::init("LLVM"));
>>>>> +// Mark all our options with this category, everything else (except
>>>>> for -version
>>>>> +// and -help) will be hidden.
>>>>> +cl::OptionCategory ClangFormatCategory("Clang-format options");
>>>>> +
>>>>> +static cl::list<unsigned>
>>>>> +    Offsets("offset",
>>>>> +            cl::desc("Format a range starting at this byte offset.\n"
>>>>> +                     "Multiple ranges can be formatted by
>>>>> specifying\n"
>>>>> +                     "several -offset and -length pairs.\n"
>>>>> +                     "Can only be used with one input file."),
>>>>> +            cl::cat(ClangFormatCategory));
>>>>>
>>>>
>>>> I think we should try to keep clang-format's files "clang-format
>>>> clean". Is there something you found particularly bad about the way
>>>> clang-format formats this? Can we fix it?
>>>>
>>>>
>>>>> +static cl::list<unsigned>
>>>>> +    Lengths("length",
>>>>> +            cl::desc("Format a range of this length (in bytes).\n"
>>>>> +                     "Multiple ranges can be formatted by
>>>>> specifying\n"
>>>>> +                     "several -offset and -length pairs.\n"
>>>>> +                     "When only a single -offset is specified
>>>>> without\n"
>>>>> +                     "-length, clang-format will format up to the
>>>>> end\n"
>>>>> +                     "of the file.\n"
>>>>> +                     "Can only be used with one input file."),
>>>>> +            cl::cat(ClangFormatCategory));
>>>>> +static cl::opt<std::string>
>>>>> +    Style("style",
>>>>> +          cl::desc("Coding style, currently supports:\n"
>>>>> +                   "  LLVM, Google, Chromium, Mozilla.\n"
>>>>> +                   "Use '-style file' to load style configuration
>>>>> from\n"
>>>>> +                   ".clang-format file located in one of the parent\n"
>>>>> +                   "directories of the source file (or current\n"
>>>>> +                   "directory for stdin)."),
>>>>> +          cl::init("LLVM"), cl::cat(ClangFormatCategory));
>>>>>  static cl::opt<bool> Inplace("i",
>>>>> -                             cl::desc("Inplace edit <file>s, if
>>>>> specified."));
>>>>> +                             cl::desc("Inplace edit <file>s, if
>>>>> specified."),
>>>>> +                             cl::cat(ClangFormatCategory));
>>>>>
>>>>> -static cl::opt<bool> OutputXML(
>>>>> -    "output-replacements-xml", cl::desc("Output replacements as
>>>>> XML."));
>>>>> +static cl::opt<bool> OutputXML("output-replacements-xml",
>>>>> +                               cl::desc("Output replacements as
>>>>> XML."),
>>>>> +                               cl::cat(ClangFormatCategory));
>>>>>  static cl::opt<bool>
>>>>>      DumpConfig("dump-config",
>>>>> -               cl::desc("Dump configuration options to stdout and
>>>>> exit. Can be used with -style option."));
>>>>> +               cl::desc("Dump configuration options to stdout and
>>>>> exit.\n"
>>>>> +                        "Can be used with -style option."),
>>>>> +               cl::cat(ClangFormatCategory));
>>>>>
>>>>> -static cl::list<std::string> FileNames(cl::Positional,
>>>>> -                                       cl::desc("[<file> ...]"));
>>>>> +static cl::list<std::string> FileNames(cl::Positional,
>>>>> cl::desc("[<file> ...]"),
>>>>> +                                       cl::cat(ClangFormatCategory));
>>>>>
>>>>>  namespace clang {
>>>>>  namespace format {
>>>>> @@ -196,6 +210,17 @@ static bool format(std::string FileName)
>>>>>
>>>>>  int main(int argc, const char **argv) {
>>>>>    llvm::sys::PrintStackTraceOnErrorSignal();
>>>>> +
>>>>> +  // Hide unrelated options.
>>>>> +  StringMap<cl::Option*> Options;
>>>>> +  cl::getRegisteredOptions(Options);
>>>>> +  for (StringMap<cl::Option *>::iterator I = Options.begin(), E =
>>>>> Options.end();
>>>>> +       I != E; ++I) {
>>>>> +    if (I->second->Category != &ClangFormatCategory && I->first() !=
>>>>> "help" &&
>>>>> +        I->first() != "version")
>>>>> +      I->second->setHiddenFlag(cl::ReallyHidden);
>>>>> +  }
>>>>> +
>>>>>    cl::ParseCommandLineOptions(
>>>>>        argc, argv,
>>>>>        "A tool to format C/C++/Obj-C code.\n\n"
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> cfe-commits mailing list
>>>>> cfe-commits at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>>
>>>>
>>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130513/af12b030/attachment.html>


More information about the cfe-commits mailing list