https://github.com/DaanDeMeyer created 
https://github.com/llvm/llvm-project/pull/137617

When https://github.com/llvm/llvm-project/issues/27416 was fixed it became 
impossible to only use clang-format for include sorting. Let's introduce an 
option -disable-format to make it possible again to only sort includes with 
clang-format without doing any other formatting.

>From f81803b7b81634871a1a8d96a599e85196979eef Mon Sep 17 00:00:00 2001
From: Daan De Meyer <daan.j.deme...@gmail.com>
Date: Mon, 28 Apr 2025 13:07:50 +0200
Subject: [PATCH] clang-format: Add -disable-format option

When https://github.com/llvm/llvm-project/issues/27416 was fixed it
became impossible to only use clang-format for include sorting. Let's
introduce an option -disable-format to make it possible again to only
sort includes with clang-format without doing any other formatting.
---
 clang/docs/ClangFormat.rst               |  2 ++
 clang/tools/clang-format/ClangFormat.cpp | 11 +++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/clang/docs/ClangFormat.rst b/clang/docs/ClangFormat.rst
index 92af06e5083d6..a0de662b5c93b 100644
--- a/clang/docs/ClangFormat.rst
+++ b/clang/docs/ClangFormat.rst
@@ -95,6 +95,8 @@ to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# 
code.
                                      determined by the QualifierAlignment 
style flag
     --sort-includes                - If set, overrides the include sorting 
behavior
                                      determined by the SortIncludes style flag
+    --disable-format               - If set, only sort includes if include 
sorting
+                                     is enabled
     --style=<string>               - Set coding style. <string> can be:
                                      1. A preset: LLVM, GNU, Google, Chromium, 
Microsoft,
                                         Mozilla, WebKit.
diff --git a/clang/tools/clang-format/ClangFormat.cpp 
b/clang/tools/clang-format/ClangFormat.cpp
index c45e3a2c28327..da3d7edf2649f 100644
--- a/clang/tools/clang-format/ClangFormat.cpp
+++ b/clang/tools/clang-format/ClangFormat.cpp
@@ -120,6 +120,12 @@ static cl::opt<bool>
                           "determined by the SortIncludes style flag"),
                  cl::cat(ClangFormatCategory));
 
+static cl::opt<bool>
+    DisableFormat("disable-format",
+                  cl::desc("If set, only sort includes if include sorting\n"
+                           "is enabled"),
+                  cl::cat(ClangFormatCategory));
+
 static cl::opt<std::string> QualifierAlignment(
     "qualifier-alignment",
     cl::desc("If set, overrides the qualifier alignment style\n"
@@ -506,8 +512,9 @@ static bool format(StringRef FileName, bool 
ErrorOnIncompleteFormat = false) {
   // Get new affected ranges after sorting `#includes`.
   Ranges = tooling::calculateRangesAfterReplacements(Replaces, Ranges);
   FormattingAttemptStatus Status;
-  Replacements FormatChanges =
-      reformat(*FormatStyle, *ChangedCode, Ranges, AssumedFileName, &Status);
+  Replacements FormatChanges;
+  if (DisableFormat.getNumOccurrences() == 0 || !DisableFormat)
+    FormatChanges = reformat(*FormatStyle, *ChangedCode, Ranges, 
AssumedFileName, &Status);
   Replaces = Replaces.merge(FormatChanges);
   if (DryRun) {
     return Replaces.size() > (IsJson ? 1u : 0u) &&

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to