ClangFormat: Remove format while typing feature

Change-Id: I6737c429694218d39fc06c9ef3ce502228e26a2a
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Artem Sokolovskii
2022-05-16 13:57:20 +02:00
parent 6f7e7980d2
commit 323ba720db
3 changed files with 8 additions and 20 deletions

View File

@@ -594,18 +594,6 @@ Utils::Text::Replacements ClangFormatBaseIndenter::indentsFor(QTextBlock startBl
const QByteArray buffer = m_doc->toPlainText().toUtf8();
ReplacementsToKeep replacementsToKeep = ReplacementsToKeep::OnlyIndent;
if (formatCodeInsteadOfIndent()
&& (cursorPositionInEditor == -1 || cursorPositionInEditor >= startBlockPosition)
&& (typedChar == ';' || typedChar == '}')) {
// Format before current position only in case the cursor is inside the indented block.
// So if cursor position is less then the block position then the current line is before
// the indented block - don't trigger extra formatting in this case.
// cursorPositionInEditor == -1 means the condition matches automatically.
// Format only before complete statement not to break code.
replacementsToKeep = ReplacementsToKeep::IndentAndBefore;
}
return replacements(buffer,
startBlock,
endBlock,

View File

@@ -471,7 +471,7 @@ void ClangFormatTest::testIndentAfterFunctionBodyAndNotFormatBefore()
void ClangFormatTest::testReformatToEmptyFunction()
{
insertLines({"int foo(int a, int b, int c, int d)", "{", " ", "}"});
m_extendedIndenter->indentBlock(m_doc->findBlockByNumber(3), '}', TextEditor::TabSettings());
m_extendedIndenter->format({{1, 4}});
QCOMPARE(documentLines(), (std::vector<QString>{"int foo(int a, int b, int c, int d) {}"}));
}
@@ -483,10 +483,10 @@ void ClangFormatTest::testReformatToNonEmptyFunction()
QCOMPARE(documentLines(), (std::vector<QString>{"int foo(int a, int b) {", " ", "}"}));
}
void ClangFormatTest::testIndentClosingScopeAndFormatBeforeIt()
void ClangFormatTest::testFormatClosingScope()
{
insertLines({"if(a && b", " &&c && d", " ) {", "", "}"});
m_extendedIndenter->indentBlock(m_doc->findBlockByNumber(4), '}', TextEditor::TabSettings());
m_extendedIndenter->format({{1, 5}});
QCOMPARE(documentLines(), (std::vector<QString>{"if (a && b && c && d) {", "}"}));
}
@@ -504,17 +504,17 @@ void ClangFormatTest::testOnlyIndentIncompleteStatementOnElectricalCharacter()
QCOMPARE(documentLines(), (std::vector<QString>{"{bar();", " foo()", "}"}));
}
void ClangFormatTest::testIndentAndFormatCompleteStatementOnSemicolon()
void ClangFormatTest::testFormatCompleteStatementOnSemicolon()
{
insertLines({"{bar();", "foo();", "}"});
m_extendedIndenter->indentBlock(m_doc->findBlockByNumber(1), ';', TextEditor::TabSettings(), 14);
m_extendedIndenter->format({{1, 3}});
QCOMPARE(documentLines(), (std::vector<QString>{"{", " bar();", " foo();", "}"}));
}
void ClangFormatTest::testIndentAndFormatCompleteStatementOnClosingScope()
{
insertLines({"{bar();", "foo();", "}"});
m_extendedIndenter->indentBlock(m_doc->findBlockByNumber(1), '}', TextEditor::TabSettings(), 16);
m_extendedIndenter->format({{1, 3}});
QCOMPARE(documentLines(), (std::vector<QString>{"{", " bar();", " foo();", "}"}));
}

View File

@@ -90,10 +90,10 @@ private slots:
void testIndentAfterFunctionBodyAndNotFormatBefore();
void testReformatToEmptyFunction();
void testReformatToNonEmptyFunction();
void testIndentClosingScopeAndFormatBeforeIt();
void testFormatClosingScope();
void testDoNotFormatAfterTheFirstColon();
void testOnlyIndentIncompleteStatementOnElectricalCharacter();
void testIndentAndFormatCompleteStatementOnSemicolon();
void testFormatCompleteStatementOnSemicolon();
void testIndentAndFormatCompleteStatementOnClosingScope();
void testOnlyIndentClosingParenthesis();
void testEquallyIndentInsideParenthesis();