From 00dff34195e019080fd6b2c891a03b9b6ac9bfbd Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Thu, 13 Feb 2014 12:51:50 +0000 Subject: [PATCH] clang-format: Improve documentation of DerivePointerBinding. For reference: llvm.org/PR18690. Also updated generated help page and page creation script. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201323 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/ClangFormatStyleOptions.rst | 26 +++++++++++++++++++++++--- docs/tools/dump_format_style.py | 4 ++-- include/clang/Format/Format.h | 3 ++- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/docs/ClangFormatStyleOptions.rst b/docs/ClangFormatStyleOptions.rst index bbe92c6cd80b..662f49d9946d 100644 --- a/docs/ClangFormatStyleOptions.rst +++ b/docs/ClangFormatStyleOptions.rst @@ -146,6 +146,10 @@ the configuration (without a prefix: ``Auto``). Like ``Attach``, but break before function definitions. * ``BS_Allman`` (in configuration: ``Allman``) Always break before braces. + * ``BS_GNU`` (in configuration: ``GNU``) + Always break before braces and add an extra level of indentation to + braces of control statements, not to those of class, function + or other definitions. **BreakBeforeTernaryOperators** (``bool``) @@ -162,6 +166,10 @@ the configuration (without a prefix: ``Auto``). clang-format will respect the input's line breaking decisions within statements unless they contradict other rules. +**CommentPragmas** (``std::string``) + A regular expression that describes comments with special meaning, + which should not be split into lines or otherwise changed. + **ConstructorInitializerAllOnOneLineOrOnePerLine** (``bool``) If the constructor initializers don't fit on a line, put each initializer on its own line. @@ -189,7 +197,8 @@ the configuration (without a prefix: ``Auto``). a zero-length name is assumed. **DerivePointerBinding** (``bool``) - If ``true``, analyze the formatted file for the most common binding. + If ``true``, analyze the formatted file for the most common binding + and use ``PointerBindsToType`` only as fallback. **ExperimentalAutoDetectBinPacking** (``bool``) If ``true``, clang-format detects whether function calls and @@ -227,6 +236,9 @@ the configuration (without a prefix: ``Auto``). Should be used for C, C++, ObjectiveC, ObjectiveC++. * ``LK_JavaScript`` (in configuration: ``JavaScript``) Should be used for JavaScript. + * ``LK_Proto`` (in configuration: ``Proto``) + Should be used for Protocol Buffers + (https://developers.google.com/protocol-buffers/). **MaxEmptyLinesToKeep** (``unsigned``) @@ -245,6 +257,10 @@ the configuration (without a prefix: ``Auto``). Indent in all namespaces. +**ObjCSpaceAfterProperty** (``bool``) + Add a space after ``@property`` in Objective-C, i.e. use + ``@property (readonly)`` instead of ``@property(readonly)``. + **ObjCSpaceBeforeProtocolList** (``bool``) Add a space in front of an Objective-C protocol list, i.e. use ``Foo `` instead of ``Foo``. @@ -292,7 +308,7 @@ the configuration (without a prefix: ``Auto``). **SpaceInEmptyParentheses** (``bool``) - If ``false``, spaces may be inserted into '()'. + If ``true``, spaces may be inserted into '()'. **SpacesBeforeTrailingComments** (``unsigned``) The number of spaces to before trailing line comments. @@ -302,7 +318,11 @@ the configuration (without a prefix: ``Auto``). template argument lists **SpacesInCStyleCastParentheses** (``bool``) - If ``false``, spaces may be inserted into C style casts. + If ``true``, spaces may be inserted into C style casts. + +**SpacesInContainerLiterals** (``bool``) + If ``true``, spaces are inserted inside container literals (e.g. + ObjC and Javascript array and dict literals). **SpacesInParentheses** (``bool``) If ``true``, spaces will be inserted after '(' and before ')'. diff --git a/docs/tools/dump_format_style.py b/docs/tools/dump_format_style.py index 0c8ca6d610f1..addda2abc2c6 100644 --- a/docs/tools/dump_format_style.py +++ b/docs/tools/dump_format_style.py @@ -98,7 +98,7 @@ class State: enum = Enum(name, comment) elif line.endswith(';'): state = State.InStruct - field_type, field_name = re.match(r'(\w+)\s+(\w+);', line).groups() + field_type, field_name = re.match(r'([:\w]+)\s+(\w+);', line).groups() option = Option(str(field_name), str(field_type), comment) options.append(option) else: @@ -122,7 +122,7 @@ class State: raise Exception('Not finished by the end of file') for option in options: - if not option.type in ['bool', 'unsigned', 'int']: + if not option.type in ['bool', 'unsigned', 'int', 'std::string']: if enums.has_key(option.type): option.enum = enums[option.type] else: diff --git a/include/clang/Format/Format.h b/include/clang/Format/Format.h index c6fe888c4131..c322f552d14d 100644 --- a/include/clang/Format/Format.h +++ b/include/clang/Format/Format.h @@ -76,7 +76,8 @@ struct FormatStyle { /// \brief Set whether & and * bind to the type as opposed to the variable. bool PointerBindsToType; - /// \brief If \c true, analyze the formatted file for the most common binding. + /// \brief If \c true, analyze the formatted file for the most common binding + /// and use \c PointerBindsToType only as fallback. bool DerivePointerBinding; /// \brief The extra indent or outdent of access modifiers, e.g. \c public:.