aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/nim
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2019-01-16 09:37:54 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2019-01-22 09:52:15 +0000
commitd7058e1afedfe609ff6e81222bd2137922bf7de3 (patch)
tree62d16136c8336646b8ef0ad4d220b7e0e8331203 /src/plugins/nim
parent8b5beeb952448540a3834333b694919563d81ee2 (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')
-rw-r--r--src/plugins/nim/editor/nimeditorfactory.cpp6
-rw-r--r--src/plugins/nim/editor/nimindenter.cpp7
-rw-r--r--src/plugins/nim/editor/nimindenter.h21
-rw-r--r--src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp4
-rw-r--r--src/plugins/nim/settings/nimcodestylepreferencesfactory.h2
-rw-r--r--src/plugins/nim/settings/nimcodestylepreferenceswidget.cpp3
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();