[clang] clang-format: Add -disable-format option (PR #137617)
Daan De Meyer via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 28 04:11:26 PDT 2025
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.demeyer at 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) &&
More information about the cfe-commits
mailing list