llvm-project/clang/lib/Format
Francois Ferrand 38d8013458 clang-format: keep ObjC colon alignment with short object name
Summary:
When the target object expression is short and the first selector name
is long, clang-format used to break the colon alignment:

  [I performSelectorOnMainThread:@selector(loadAccessories)
                       withObject:nil
                    waitUntilDone:false];

This happens because the colon is placed at `ContinuationIndent +
LongestObjCSelectorName`, so that any selector can be wrapped. This is
however not needed in case the longest selector is the firstone, and
not wrapped.

To overcome this, this patch does not include the first selector in
`LongestObjCSelectorName` computation (in TokenAnnotator), and lets
`ContinuationIndenter` decide how to account for the first selector
when wrapping. (Note this was already partly the case, see line 521
of ContinuationIndenter.cpp)

This way, the code gets properly aligned whenever possible without
breaking the continuation indent.

  [I performSelectorOnMainThread:@selector(loadAccessories)
                      withObject:nil
                   waitUntilDone:false];
  [I // force break
      performSelectorOnMainThread:@selector(loadAccessories)
                       withObject:nil
                    waitUntilDone:false];
  [I perform:@selector(loadAccessories)
      withSelectorOnMainThread:true
                 waitUntilDone:false];

Reviewers: krasimir, djasper, klimek

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D43121

llvm-svn: 324741
2018-02-09 15:41:56 +00:00
..
AffectedRangeManager.cpp
AffectedRangeManager.h
BreakableToken.cpp [clang-format] Ignore UnbreakableTailLength sometimes during breaking 2018-01-23 11:26:19 +00:00
BreakableToken.h [clang-format] Ignore UnbreakableTailLength sometimes during breaking 2018-01-23 11:26:19 +00:00
CMakeLists.txt [clang-format] Support sorting using declarations 2017-06-21 12:03:12 +00:00
ContinuationIndenter.cpp clang-format: keep ObjC colon alignment with short object name 2018-02-09 15:41:56 +00:00
ContinuationIndenter.h [clang-format] Do not break Objective-C string literals inside array literals 2018-02-08 16:07:25 +00:00
Encoding.h [Format] Remove dead code. 2016-12-19 21:10:50 +00:00
Format.cpp [clang-format] Do not break before long string literals in protos 2018-02-08 10:47:12 +00:00
FormatInternal.h FormatInternal.h: Add missing includes. 2017-11-21 01:09:17 +00:00
FormatToken.cpp clang-format clang-format. 2017-09-20 09:51:03 +00:00
FormatToken.h [clang-format] Fix ObjC message arguments formatting. 2018-02-07 10:35:08 +00:00
FormatTokenLexer.cpp [clang-format] Support python-style comments in text protos 2017-11-10 12:50:09 +00:00
FormatTokenLexer.h [clang-format] Support python-style comments in text protos 2017-11-10 12:50:09 +00:00
NamespaceEndCommentsFixer.cpp [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
NamespaceEndCommentsFixer.h [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
SortJavaScriptImports.cpp [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
SortJavaScriptImports.h
TokenAnalyzer.cpp [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
TokenAnalyzer.h [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
TokenAnnotator.cpp clang-format: keep ObjC colon alignment with short object name 2018-02-09 15:41:56 +00:00
TokenAnnotator.h [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
UnwrappedLineFormatter.cpp [clang-format] Fix shortening blocks in macros causing merged next line 2018-01-19 16:12:37 +00:00
UnwrappedLineFormatter.h [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
UnwrappedLineParser.cpp [clang-format] Re-land: Fixup #include guard indents after parseFile() 2018-02-05 15:59:00 +00:00
UnwrappedLineParser.h [clang-format] Re-land: Fixup #include guard indents after parseFile() 2018-02-05 15:59:00 +00:00
UsingDeclarationsSorter.cpp [clang-format] Deduplicate using declarations 2017-11-24 18:00:01 +00:00
UsingDeclarationsSorter.h [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
WhitespaceManager.cpp [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00
WhitespaceManager.h [clang-format] Format raw string literals 2017-10-30 14:01:50 +00:00