diff --git a/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp b/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp index 3c2ff5a1fc59615570cea0a5e02f1758fdb3967b..25553033cd5f2112442ce22671e78fd34dc34f34 100644 --- a/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp +++ b/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp @@ -31,6 +31,7 @@ #include <texteditor/codeassist/genericproposalmodel.h> #include <texteditor/completionsettings.h> #include <texteditor/texteditorsettings.h> +#include <texteditor/texteditorconstants.h> #include <texteditor/texteditor.h> #include <utils/algorithm.h> @@ -243,4 +244,22 @@ KeywordsCompletionAssistProcessor::generateProposalList(const QStringList &words }); } +KeywordsCompletionAssistProvider::KeywordsCompletionAssistProvider(const Keywords &keyWords, + const QString &snippetGroup) + : m_keyWords(keyWords) + , m_snippetGroup(snippetGroup) +{ } + +IAssistProvider::RunType KeywordsCompletionAssistProvider::runType() const +{ + return Synchronous; +} + +IAssistProcessor *KeywordsCompletionAssistProvider::createProcessor() const +{ + auto processor = new KeywordsCompletionAssistProcessor(m_keyWords); + processor->setSnippetGroup(m_snippetGroup); + return processor; +} + } // namespace TextEditor diff --git a/src/plugins/texteditor/codeassist/keywordscompletionassist.h b/src/plugins/texteditor/codeassist/keywordscompletionassist.h index f65e726022a6fda6cce74c35e858d078949f9f9b..f14b33cc5841468298bea15da2e7cb1e1abf3b47 100644 --- a/src/plugins/texteditor/codeassist/keywordscompletionassist.h +++ b/src/plugins/texteditor/codeassist/keywordscompletionassist.h @@ -28,8 +28,11 @@ #include "iassistprocessor.h" #include "assistproposalitem.h" #include "ifunctionhintproposalmodel.h" +#include "completionassistprovider.h" #include "../snippets/snippetassistcollector.h" +#include "texteditor/texteditorconstants.h" + namespace TextEditor { class AssistInterface; @@ -38,8 +41,8 @@ class TEXTEDITOR_EXPORT Keywords { public: Keywords() = default; - Keywords(const QStringList &variables, const QStringList &functions, - const QMap<QString, QStringList> &functionArgs); + Keywords(const QStringList &variables, const QStringList &functions = QStringList(), + const QMap<QString, QStringList> &functionArgs = QMap<QString, QStringList>()); bool isVariable(const QString &word) const; bool isFunction(const QString &word) const; @@ -79,6 +82,21 @@ private: QStringList m_functionSymbols; }; +class TEXTEDITOR_EXPORT KeywordsCompletionAssistProvider : public CompletionAssistProvider +{ +public: + KeywordsCompletionAssistProvider(const Keywords &keyWords = Keywords(), + const QString &snippetGroup = Constants::TEXT_SNIPPET_GROUP_ID); + + // IAssistProvider interface + RunType runType() const override; + IAssistProcessor *createProcessor() const override; + +private: + Keywords m_keyWords; + QString m_snippetGroup; +}; + class TEXTEDITOR_EXPORT KeywordsCompletionAssistProcessor : public IAssistProcessor { public: diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index d2990d1f2ac8de97712042f6f7f3c1a042ae1b41..d395656da66845a48f4258377e098f80486b5532 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -57,6 +57,7 @@ #include <texteditor/codeassist/assistinterface.h> #include <texteditor/codeassist/codeassistant.h> #include <texteditor/codeassist/completionassistprovider.h> +#include <texteditor/codeassist/keywordscompletionassist.h> #include <texteditor/generichighlighter/context.h> #include <texteditor/generichighlighter/highlightdefinition.h> #include <texteditor/generichighlighter/highlighter.h> @@ -8263,6 +8264,7 @@ void TextEditorFactory::setParenthesesMatchingEnabled(bool on) IEditor *TextEditorFactory::createEditor() { + static KeywordsCompletionAssistProvider basicSnippetProvider; TextDocumentPtr doc(d->m_documentCreator()); if (d->m_indenterCreator) @@ -8271,7 +8273,8 @@ IEditor *TextEditorFactory::createEditor() if (d->m_syntaxHighlighterCreator) doc->setSyntaxHighlighter(d->m_syntaxHighlighterCreator()); - doc->setCompletionAssistProvider(d->m_completionAssistProvider); + doc->setCompletionAssistProvider(d->m_completionAssistProvider ? d->m_completionAssistProvider + : &basicSnippetProvider); return d->createEditorHelper(doc); }