forked from qt-creator/qt-creator
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:
@@ -594,18 +594,6 @@ Utils::Text::Replacements ClangFormatBaseIndenter::indentsFor(QTextBlock startBl
|
|||||||
const QByteArray buffer = m_doc->toPlainText().toUtf8();
|
const QByteArray buffer = m_doc->toPlainText().toUtf8();
|
||||||
|
|
||||||
ReplacementsToKeep replacementsToKeep = ReplacementsToKeep::OnlyIndent;
|
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,
|
return replacements(buffer,
|
||||||
startBlock,
|
startBlock,
|
||||||
endBlock,
|
endBlock,
|
||||||
|
@@ -471,7 +471,7 @@ void ClangFormatTest::testIndentAfterFunctionBodyAndNotFormatBefore()
|
|||||||
void ClangFormatTest::testReformatToEmptyFunction()
|
void ClangFormatTest::testReformatToEmptyFunction()
|
||||||
{
|
{
|
||||||
insertLines({"int foo(int a, int b, int c, int d)", "{", " ", "}"});
|
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) {}"}));
|
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) {", " ", "}"}));
|
QCOMPARE(documentLines(), (std::vector<QString>{"int foo(int a, int b) {", " ", "}"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangFormatTest::testIndentClosingScopeAndFormatBeforeIt()
|
void ClangFormatTest::testFormatClosingScope()
|
||||||
{
|
{
|
||||||
insertLines({"if(a && b", " &&c && d", " ) {", "", "}"});
|
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) {", "}"}));
|
QCOMPARE(documentLines(), (std::vector<QString>{"if (a && b && c && d) {", "}"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,17 +504,17 @@ void ClangFormatTest::testOnlyIndentIncompleteStatementOnElectricalCharacter()
|
|||||||
QCOMPARE(documentLines(), (std::vector<QString>{"{bar();", " foo()", "}"}));
|
QCOMPARE(documentLines(), (std::vector<QString>{"{bar();", " foo()", "}"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangFormatTest::testIndentAndFormatCompleteStatementOnSemicolon()
|
void ClangFormatTest::testFormatCompleteStatementOnSemicolon()
|
||||||
{
|
{
|
||||||
insertLines({"{bar();", "foo();", "}"});
|
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();", "}"}));
|
QCOMPARE(documentLines(), (std::vector<QString>{"{", " bar();", " foo();", "}"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangFormatTest::testIndentAndFormatCompleteStatementOnClosingScope()
|
void ClangFormatTest::testIndentAndFormatCompleteStatementOnClosingScope()
|
||||||
{
|
{
|
||||||
insertLines({"{bar();", "foo();", "}"});
|
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();", "}"}));
|
QCOMPARE(documentLines(), (std::vector<QString>{"{", " bar();", " foo();", "}"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -90,10 +90,10 @@ private slots:
|
|||||||
void testIndentAfterFunctionBodyAndNotFormatBefore();
|
void testIndentAfterFunctionBodyAndNotFormatBefore();
|
||||||
void testReformatToEmptyFunction();
|
void testReformatToEmptyFunction();
|
||||||
void testReformatToNonEmptyFunction();
|
void testReformatToNonEmptyFunction();
|
||||||
void testIndentClosingScopeAndFormatBeforeIt();
|
void testFormatClosingScope();
|
||||||
void testDoNotFormatAfterTheFirstColon();
|
void testDoNotFormatAfterTheFirstColon();
|
||||||
void testOnlyIndentIncompleteStatementOnElectricalCharacter();
|
void testOnlyIndentIncompleteStatementOnElectricalCharacter();
|
||||||
void testIndentAndFormatCompleteStatementOnSemicolon();
|
void testFormatCompleteStatementOnSemicolon();
|
||||||
void testIndentAndFormatCompleteStatementOnClosingScope();
|
void testIndentAndFormatCompleteStatementOnClosingScope();
|
||||||
void testOnlyIndentClosingParenthesis();
|
void testOnlyIndentClosingParenthesis();
|
||||||
void testEquallyIndentInsideParenthesis();
|
void testEquallyIndentInsideParenthesis();
|
||||||
|
Reference in New Issue
Block a user