diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2019-01-16 09:37:54 +0100 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2019-01-22 09:52:15 +0000 |
commit | d7058e1afedfe609ff6e81222bd2137922bf7de3 (patch) | |
tree | 62d16136c8336646b8ef0ad4d220b7e0e8331203 /src/plugins/nim | |
parent | 8b5beeb952448540a3834333b694919563d81ee2 (diff) |
ClangFormat: Refactor indenter to allow ClangFormat unit-tests
We do not build texteditor files in unit-tests so some tricks
were required to make ClangFormatIndenter available.
First simple unit-test proofs it builds and runs.
Change-Id: I81d5ea099bd27fd1c1ed8b5b7877299dcc62a67f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/nim')
6 files changed, 22 insertions, 21 deletions
diff --git a/src/plugins/nim/editor/nimeditorfactory.cpp b/src/plugins/nim/editor/nimeditorfactory.cpp index 91a57adcb2d..c6f4f17dff3 100644 --- a/src/plugins/nim/editor/nimeditorfactory.cpp +++ b/src/plugins/nim/editor/nimeditorfactory.cpp @@ -60,8 +60,8 @@ NimEditorFactory::NimEditorFactory() setDocumentCreator([]() { return new TextDocument(Constants::C_NIMEDITOR_ID); }); - setIndenterCreator([]() { - return new NimIndenter; + setIndenterCreator([](QTextDocument *doc) { + return new NimIndenter(doc); }); setSyntaxHighlighterCreator([]() { return new NimHighlighter; @@ -80,7 +80,7 @@ Core::IEditor *NimEditorFactory::createEditor() void NimEditorFactory::decorateEditor(TextEditorWidget *editor) { editor->textDocument()->setSyntaxHighlighter(new NimHighlighter()); - editor->textDocument()->setIndenter(new NimIndenter()); + editor->textDocument()->setIndenter(new NimIndenter(editor->textDocument()->document())); } } diff --git a/src/plugins/nim/editor/nimindenter.cpp b/src/plugins/nim/editor/nimindenter.cpp index 8adf4a07308..0b61a4536b9 100644 --- a/src/plugins/nim/editor/nimindenter.cpp +++ b/src/plugins/nim/editor/nimindenter.cpp @@ -37,7 +37,8 @@ namespace Nim { -NimIndenter::NimIndenter() +NimIndenter::NimIndenter(QTextDocument *doc) + : TextEditor::TextIndenter(doc) {} bool NimIndenter::isElectricCharacter(const QChar &ch) const @@ -45,12 +46,10 @@ bool NimIndenter::isElectricCharacter(const QChar &ch) const return NimIndenter::electricCharacters().contains(ch); } -void NimIndenter::indentBlock(QTextDocument *document, - const QTextBlock &block, +void NimIndenter::indentBlock(const QTextBlock &block, const QChar &typedChar, const TextEditor::TabSettings &settings) { - Q_UNUSED(document); Q_UNUSED(typedChar); const QString currentLine = block.text(); diff --git a/src/plugins/nim/editor/nimindenter.h b/src/plugins/nim/editor/nimindenter.h index adf09c6a628..0342eda7531 100644 --- a/src/plugins/nim/editor/nimindenter.h +++ b/src/plugins/nim/editor/nimindenter.h @@ -25,23 +25,24 @@ #pragma once -#include <texteditor/indenter.h> +#include <texteditor/textindenter.h> -namespace TextEditor { class SimpleCodeStylePreferences; } +namespace TextEditor { +class SimpleCodeStylePreferences; +} namespace Nim { class NimLexer; -class NimIndenter : public TextEditor::Indenter +class NimIndenter : public TextEditor::TextIndenter { public: - NimIndenter(); + explicit NimIndenter(QTextDocument *doc); bool isElectricCharacter(const QChar &ch) const override; - void indentBlock(QTextDocument *document, - const QTextBlock &block, + void indentBlock(const QTextBlock &block, const QChar &typedChar, const TextEditor::TabSettings &settings) override; @@ -51,9 +52,11 @@ private: bool startsBlock(const QString &line, int state) const; bool endsBlock(const QString &line, int state) const; - int calculateIndentationDiff(const QString &previousLine, int previousState, int indentSize) const; + int calculateIndentationDiff(const QString &previousLine, + int previousState, + int indentSize) const; - static QString rightTrimmed(const QString& other); + static QString rightTrimmed(const QString &other); }; -} +} // namespace Nim diff --git a/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp b/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp index 997622278e3..299c6d13e58 100644 --- a/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp +++ b/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp @@ -67,9 +67,9 @@ QWidget *NimCodeStylePreferencesFactory::createEditor(TextEditor::ICodeStylePref return result; } -TextEditor::Indenter *NimCodeStylePreferencesFactory::createIndenter() const +TextEditor::Indenter *NimCodeStylePreferencesFactory::createIndenter(QTextDocument *doc) const { - return new NimIndenter(); + return new NimIndenter(doc); } QString NimCodeStylePreferencesFactory::snippetProviderGroupId() const diff --git a/src/plugins/nim/settings/nimcodestylepreferencesfactory.h b/src/plugins/nim/settings/nimcodestylepreferencesfactory.h index 987ad253e35..e3d7ce3251b 100644 --- a/src/plugins/nim/settings/nimcodestylepreferencesfactory.h +++ b/src/plugins/nim/settings/nimcodestylepreferencesfactory.h @@ -41,7 +41,7 @@ public: TextEditor::ICodeStylePreferences *createCodeStyle() const override; QWidget *createEditor(TextEditor::ICodeStylePreferences *settings, QWidget *parent) const override; - TextEditor::Indenter *createIndenter() const override; + TextEditor::Indenter *createIndenter(QTextDocument *doc) const override; QString snippetProviderGroupId() const override; QString previewText() const override; }; diff --git a/src/plugins/nim/settings/nimcodestylepreferenceswidget.cpp b/src/plugins/nim/settings/nimcodestylepreferenceswidget.cpp index 2f98932cc29..b4e735ff48d 100644 --- a/src/plugins/nim/settings/nimcodestylepreferenceswidget.cpp +++ b/src/plugins/nim/settings/nimcodestylepreferenceswidget.cpp @@ -96,8 +96,7 @@ void NimCodeStylePreferencesWidget::updatePreview() QTextCursor tc = m_ui->previewTextEdit->textCursor(); tc.beginEditBlock(); while (block.isValid()) { - m_ui->previewTextEdit->textDocument()->indenter() - ->indentBlock(doc, block, QChar::Null, ts); + m_ui->previewTextEdit->textDocument()->indenter()->indentBlock(block, QChar::Null, ts); block = block.next(); } tc.endEditBlock(); |