i.e. should SortIncludes be false for -style=WebKit for now? On Mon, Nov 16, 2015 at 11:19 AM, Nico Weber <tha...@chromium.org> wrote:
> Should this be a per-style default? It still only doesn't break webkit > files only by accident, right? > > On Mon, Nov 16, 2015 at 10:35 AM, Eric Christopher via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> !!!!!!! >> >> Awesome :) >> >> -eric >> >> On Mon, Nov 16, 2015 at 4:41 AM Daniel Jasper via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> Author: djasper >>> Date: Mon Nov 16 06:38:56 2015 >>> New Revision: 253202 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=253202&view=rev >>> Log: >>> clang-format: Enable #include sorting by default. >>> >>> This has seen quite some usage and I am not aware of any issues. Also >>> add a style option to enable/disable include sorting. The existing >>> command line flag can from now on be used to override whatever is set >>> in the style. >>> >>> Added: >>> cfe/trunk/test/Format/disable-include-sorting.cpp >>> Modified: >>> cfe/trunk/include/clang/Format/Format.h >>> cfe/trunk/lib/Format/Format.cpp >>> cfe/trunk/tools/clang-format/ClangFormat.cpp >>> cfe/trunk/tools/clang-format/clang-format-sublime.py >>> cfe/trunk/tools/clang-format/clang-format.el >>> cfe/trunk/tools/clang-format/clang-format.py >>> cfe/trunk/unittests/Format/FormatTest.cpp >>> cfe/trunk/unittests/Format/SortIncludesTest.cpp >>> >>> Modified: cfe/trunk/include/clang/Format/Format.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Format/Format.h?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/include/clang/Format/Format.h (original) >>> +++ cfe/trunk/include/clang/Format/Format.h Mon Nov 16 06:38:56 2015 >>> @@ -469,6 +469,9 @@ struct FormatStyle { >>> /// Pointer and reference alignment style. >>> PointerAlignmentStyle PointerAlignment; >>> >>> + /// \brief If true, clang-format will sort #includes. >>> + bool SortIncludes; >>> + >>> /// \brief If \c true, a space may be inserted after C style casts. >>> bool SpaceAfterCStyleCast; >>> >>> >>> Modified: cfe/trunk/lib/Format/Format.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/lib/Format/Format.cpp (original) >>> +++ cfe/trunk/lib/Format/Format.cpp Mon Nov 16 06:38:56 2015 >>> @@ -284,6 +284,7 @@ template <> struct MappingTraits<FormatS >>> IO.mapOptional("PenaltyExcessCharacter", >>> Style.PenaltyExcessCharacter); >>> IO.mapOptional("PenaltyReturnTypeOnItsOwnLine", >>> Style.PenaltyReturnTypeOnItsOwnLine); >>> + IO.mapOptional("SortIncludes", Style.SortIncludes); >>> IO.mapOptional("PointerAlignment", Style.PointerAlignment); >>> IO.mapOptional("SpaceAfterCStyleCast", Style.SpaceAfterCStyleCast); >>> IO.mapOptional("SpaceBeforeAssignmentOperators", >>> @@ -507,6 +508,7 @@ FormatStyle getLLVMStyle() { >>> LLVMStyle.PenaltyBreakBeforeFirstCallParameter = 19; >>> >>> LLVMStyle.DisableFormat = false; >>> + LLVMStyle.SortIncludes = true; >>> >>> return LLVMStyle; >>> } >>> @@ -635,6 +637,7 @@ FormatStyle getGNUStyle() { >>> FormatStyle getNoStyle() { >>> FormatStyle NoStyle = getLLVMStyle(); >>> NoStyle.DisableFormat = true; >>> + NoStyle.SortIncludes = false; >>> return NoStyle; >>> } >>> >>> @@ -1743,6 +1746,9 @@ tooling::Replacements sortIncludes(const >>> ArrayRef<tooling::Range> Ranges, >>> StringRef FileName) { >>> tooling::Replacements Replaces; >>> + if (!Style.SortIncludes) >>> + return Replaces; >>> + >>> unsigned Prev = 0; >>> unsigned SearchFrom = 0; >>> llvm::Regex IncludeRegex( >>> >>> Added: cfe/trunk/test/Format/disable-include-sorting.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Format/disable-include-sorting.cpp?rev=253202&view=auto >>> >>> ============================================================================== >>> --- cfe/trunk/test/Format/disable-include-sorting.cpp (added) >>> +++ cfe/trunk/test/Format/disable-include-sorting.cpp Mon Nov 16 >>> 06:38:56 2015 >>> @@ -0,0 +1,10 @@ >>> +// RUN: clang-format %s | FileCheck %s >>> +// RUN: clang-format %s -sort-includes -style="{SortIncludes: false}" | >>> FileCheck %s >>> +// RUN: clang-format %s -sort-includes=false | FileCheck %s >>> -check-prefix=NOT-SORTED >>> + >>> +#include <b> >>> +#include <a> >>> +// CHECK: <a> >>> +// CHECK-NEXT: <b> >>> +// NOT-SORTED: <b> >>> +// NOT-SORTED-NEXT: <a> >>> >>> Modified: cfe/trunk/tools/clang-format/ClangFormat.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/ClangFormat.cpp?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/ClangFormat.cpp (original) >>> +++ cfe/trunk/tools/clang-format/ClangFormat.cpp Mon Nov 16 06:38:56 2015 >>> @@ -98,9 +98,11 @@ static cl::opt<unsigned> >>> "clang-format from an editor integration"), >>> cl::init(0), cl::cat(ClangFormatCategory)); >>> >>> -static cl::opt<bool> SortIncludes("sort-includes", >>> - cl::desc("Sort touched include >>> lines"), >>> - cl::cat(ClangFormatCategory)); >>> +static cl::opt<bool> SortIncludes( >>> + "sort-includes", >>> + cl::desc("If set, overrides the include sorting behavior determined >>> by the " >>> + "SortIncludes style flag"), >>> + cl::cat(ClangFormatCategory)); >>> >>> static cl::list<std::string> FileNames(cl::Positional, >>> cl::desc("[<file> ...]"), >>> cl::cat(ClangFormatCategory)); >>> @@ -252,17 +254,14 @@ static bool format(StringRef FileName) { >>> return true; >>> StringRef AssumedFileName = (FileName == "-") ? AssumeFileName : >>> FileName; >>> FormatStyle FormatStyle = getStyle(Style, AssumedFileName, >>> FallbackStyle); >>> - Replacements Replaces; >>> - std::string ChangedCode; >>> - if (SortIncludes) { >>> - Replaces = >>> - sortIncludes(FormatStyle, Code->getBuffer(), Ranges, >>> AssumedFileName); >>> - ChangedCode = tooling::applyAllReplacements(Code->getBuffer(), >>> Replaces); >>> - for (const auto &R : Replaces) >>> - Ranges.push_back({R.getOffset(), R.getLength()}); >>> - } else { >>> - ChangedCode = Code->getBuffer().str(); >>> - } >>> + if (SortIncludes.getNumOccurrences() != 0) >>> + FormatStyle.SortIncludes = SortIncludes; >>> + Replacements Replaces = >>> + sortIncludes(FormatStyle, Code->getBuffer(), Ranges, >>> AssumedFileName); >>> + std::string ChangedCode = >>> + tooling::applyAllReplacements(Code->getBuffer(), Replaces); >>> + for (const auto &R : Replaces) >>> + Ranges.push_back({R.getOffset(), R.getLength()}); >>> >>> bool IncompleteFormat = false; >>> Replaces = tooling::mergeReplacements( >>> >>> Modified: cfe/trunk/tools/clang-format/clang-format-sublime.py >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format-sublime.py?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/clang-format-sublime.py (original) >>> +++ cfe/trunk/tools/clang-format/clang-format-sublime.py Mon Nov 16 >>> 06:38:56 2015 >>> @@ -32,7 +32,7 @@ class ClangFormatCommand(sublime_plugin. >>> if encoding == 'Undefined': >>> encoding = 'utf-8' >>> regions = [] >>> - command = [binary, '-sort-includes', '-style', style] >>> + command = [binary, '-style', style] >>> for region in self.view.sel(): >>> regions.append(region) >>> region_offset = min(region.a, region.b) >>> >>> Modified: cfe/trunk/tools/clang-format/clang-format.el >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format.el?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/clang-format.el (original) >>> +++ cfe/trunk/tools/clang-format/clang-format.el Mon Nov 16 06:38:56 2015 >>> @@ -126,7 +126,6 @@ is no active region. If no style is giv >>> nil `(,temp-buffer ,temp-file) nil >>> >>> "-output-replacements-xml" >>> - "-sort-includes" >>> "-assume-filename" (or (buffer-file-name) "") >>> "-style" style >>> "-offset" (number-to-string start) >>> >>> Modified: cfe/trunk/tools/clang-format/clang-format.py >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format.py?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/clang-format.py (original) >>> +++ cfe/trunk/tools/clang-format/clang-format.py Mon Nov 16 06:38:56 2015 >>> @@ -72,7 +72,7 @@ def main(): >>> startupinfo.wShowWindow = subprocess.SW_HIDE >>> >>> # Call formatter. >>> - command = [binary, '-style', style, '-cursor', str(cursor), >>> '-sort-includes'] >>> + command = [binary, '-style', style, '-cursor', str(cursor)] >>> if lines != 'all': >>> command.extend(['-lines', lines]) >>> if fallback_style: >>> >>> Modified: cfe/trunk/unittests/Format/FormatTest.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/unittests/Format/FormatTest.cpp (original) >>> +++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Nov 16 06:38:56 2015 >>> @@ -9563,12 +9563,14 @@ TEST_F(FormatTest, ParsesConfigurationBo >>> CHECK_PARSE_BOOL(ConstructorInitializerAllOnOneLineOrOnePerLine); >>> CHECK_PARSE_BOOL(DerivePointerAlignment); >>> CHECK_PARSE_BOOL_FIELD(DerivePointerAlignment, >>> "DerivePointerBinding"); >>> + CHECK_PARSE_BOOL(DisableFormat); >>> CHECK_PARSE_BOOL(IndentCaseLabels); >>> CHECK_PARSE_BOOL(IndentWrappedFunctionNames); >>> CHECK_PARSE_BOOL(KeepEmptyLinesAtTheStartOfBlocks); >>> CHECK_PARSE_BOOL(ObjCSpaceAfterProperty); >>> CHECK_PARSE_BOOL(ObjCSpaceBeforeProtocolList); >>> CHECK_PARSE_BOOL(Cpp11BracedListStyle); >>> + CHECK_PARSE_BOOL(SortIncludes); >>> CHECK_PARSE_BOOL(SpacesInParentheses); >>> CHECK_PARSE_BOOL(SpacesInSquareBrackets); >>> CHECK_PARSE_BOOL(SpacesInAngles); >>> >>> Modified: cfe/trunk/unittests/Format/SortIncludesTest.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/SortIncludesTest.cpp?rev=253202&r1=253201&r2=253202&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/unittests/Format/SortIncludesTest.cpp (original) >>> +++ cfe/trunk/unittests/Format/SortIncludesTest.cpp Mon Nov 16 06:38:56 >>> 2015 >>> @@ -40,6 +40,16 @@ TEST_F(SortIncludesTest, BasicSorting) { >>> "#include \"b.h\"\n")); >>> } >>> >>> +TEST_F(SortIncludesTest, IncludeSortingCanBeDisabled) { >>> + Style.SortIncludes = false; >>> + EXPECT_EQ("#include \"a.h\"\n" >>> + "#include \"c.h\"\n" >>> + "#include \"b.h\"\n", >>> + sort("#include \"a.h\"\n" >>> + "#include \"c.h\"\n" >>> + "#include \"b.h\"\n")); >>> +} >>> + >>> TEST_F(SortIncludesTest, MixIncludeAndImport) { >>> EXPECT_EQ("#include \"a.h\"\n" >>> "#import \"b.h\"\n" >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits