From de2c26f7f589aea34afdb8bfce68ee60f8358389 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 5 Jul 2021 11:31:29 +0200 Subject: [PATCH] ClangFormat: Prevent adding/removing lines when indenting In indentation-only mode, any edit that adds or removes newlines is wrong by definition. Change-Id: Ida6e729f4d5e8dcd7893fb2bb9407e596661f942 Reviewed-by: Christian Stenger --- src/plugins/clangformat/clangformatbaseindenter.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp index 4a595dd4116..e210263770f 100644 --- a/src/plugins/clangformat/clangformatbaseindenter.cpp +++ b/src/plugins/clangformat/clangformatbaseindenter.cpp @@ -92,6 +92,11 @@ clang::tooling::Replacements filteredReplacements(const QByteArray &buffer, llvm::StringRef text = replacementsToKeep == ReplacementsToKeep::OnlyIndent ? clearExtraNewline(replacement.getReplacementText()) : replacement.getReplacementText(); + if (replacementsToKeep == ReplacementsToKeep::OnlyIndent && int(text.count('\n')) + != buffer.mid(replacementOffset, replacement.getLength()).count('\n')) { + continue; + } + llvm::Error error = filtered.add( clang::tooling::Replacement(replacement.getFilePath(),