From e3bc7d19cf201ae3c1039695ba01dc494848404f Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 3 Sep 2014 10:57:51 +0200 Subject: [PATCH] TextEditor: Move CompletionAssistProvider to *Widget All the others live there, too. Change-Id: I0a418bf235343d40a53fbee089234765386ee05d Reviewed-by: Christian Stenger --- src/plugins/android/javaeditor.cpp | 16 +++++++++++- .../cmakeprojectmanager/cmakeeditor.cpp | 2 +- src/plugins/cppeditor/cppeditor.cpp | 14 +++++----- src/plugins/cppeditor/cppeditor.h | 1 + src/plugins/glsleditor/glsleditor.cpp | 2 +- .../qmakeprojectmanager/profileeditor.cpp | 6 +++-- src/plugins/qmljseditor/qmljseditor.cpp | 2 +- src/plugins/texteditor/basetexteditor.cpp | 26 +++++++------------ src/plugins/texteditor/basetexteditor.h | 10 +++---- .../texteditor/codeassist/codeassistant.cpp | 4 +-- 10 files changed, 46 insertions(+), 37 deletions(-) diff --git a/src/plugins/android/javaeditor.cpp b/src/plugins/android/javaeditor.cpp index d1035bc197..a9a9faa993 100644 --- a/src/plugins/android/javaeditor.cpp +++ b/src/plugins/android/javaeditor.cpp @@ -58,6 +58,19 @@ public: JavaEditor() { setDuplicateSupported(true); + } +}; + + +// +// JavaEditorWidget +// + +class JavaEditorWidget : public TextEditor::BaseTextEditorWidget +{ +public: + JavaEditorWidget() + { setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); } }; @@ -106,8 +119,9 @@ JavaEditorFactory::JavaEditorFactory() setDisplayName(tr("Java Editor")); addMimeType(Constants::JAVA_MIMETYPE); - setEditorCreator([]() { return new JavaEditor; }); setDocumentCreator([]() { return new JavaDocument; }); + setEditorWidgetCreator([]() { return new JavaEditorWidget; }); + setEditorCreator([]() { return new JavaEditor; }); setAutoCompleterCreator([]() { return new JavaAutoCompleter; }); setGenericSyntaxHighlighter(QLatin1String(Constants::JAVA_MIMETYPE)); setCommentStyle(Utils::CommentDefinition::CppStyle); diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index df541f9abf..adf4e4728c 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -66,7 +66,6 @@ namespace Internal { CMakeEditor::CMakeEditor() { setDuplicateSupported(true); - setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); } void CMakeEditor::finalizeInitialization() @@ -159,6 +158,7 @@ private: CMakeEditorWidget::CMakeEditorWidget() { setCodeFoldingSupported(true); + setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); } void CMakeEditorWidget::contextMenuEvent(QContextMenuEvent *e) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index d385dcdde4..19068b8b43 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -85,7 +85,7 @@ enum { UPDATE_FUNCTION_DECL_DEF_LINK_INTERVAL = 200 }; using namespace CPlusPlus; using namespace CppTools; -using namespace CppEditor::Internal; +using namespace TextEditor; namespace CppEditor { namespace Internal { @@ -95,11 +95,6 @@ CppEditor::CppEditor() m_context.add(ProjectExplorer::Constants::LANG_CXX); m_context.add(TextEditor::Constants::C_TEXTEDITOR); setDuplicateSupported(true); - setCompletionAssistProvider([this] () -> TextEditor::CompletionAssistProvider * { - if (CppEditorDocument *document = qobject_cast(textDocument())) - return document->completionAssistProvider(); - return 0; - }); } Q_GLOBAL_STATIC(CppTools::SymbolFinder, symbolFinder) @@ -764,6 +759,13 @@ FollowSymbolUnderCursor *CppEditorWidget::followSymbolUnderCursorDelegate() return d->m_followSymbolUnderCursor.data(); } +CompletionAssistProvider *CppEditorWidget::completionAssistProvider() const +{ + auto document = qobject_cast(textDocument()); + QTC_ASSERT(document, return 0); + return document->completionAssistProvider(); +} + void CppEditorWidget::abortDeclDefLink() { if (!d->m_declDefLink) diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 19ff26c3a7..36cfa933dc 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -88,6 +88,7 @@ public: TextEditor::AssistReason reason) const QTC_OVERRIDE; FollowSymbolUnderCursor *followSymbolUnderCursorDelegate(); // exposed for tests + TextEditor::CompletionAssistProvider *completionAssistProvider() const QTC_OVERRIDE; public slots: void paste() QTC_OVERRIDE; diff --git a/src/plugins/glsleditor/glsleditor.cpp b/src/plugins/glsleditor/glsleditor.cpp index 52b0fac703..91afbf8e48 100644 --- a/src/plugins/glsleditor/glsleditor.cpp +++ b/src/plugins/glsleditor/glsleditor.cpp @@ -136,6 +136,7 @@ private: GlslEditorWidget::GlslEditorWidget() { + setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); setAutoCompleter(new GlslCompleter); m_outlineCombo = 0; setParenthesesMatchingEnabled(true); @@ -335,7 +336,6 @@ public: GlslEditor() { setDuplicateSupported(true); - setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); } bool open(QString *errorString, const QString &fileName, const QString &realFileName) diff --git a/src/plugins/qmakeprojectmanager/profileeditor.cpp b/src/plugins/qmakeprojectmanager/profileeditor.cpp index 0e8e6240c0..e86c62ccbb 100644 --- a/src/plugins/qmakeprojectmanager/profileeditor.cpp +++ b/src/plugins/qmakeprojectmanager/profileeditor.cpp @@ -61,7 +61,6 @@ public: ProFileEditor() { setDuplicateSupported(true); - setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); } }; @@ -72,7 +71,10 @@ public: class ProFileEditorWidget : public BaseTextEditorWidget { public: - ProFileEditorWidget() {} + ProFileEditorWidget() + { + setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); + } protected: virtual Link findLinkAt(const QTextCursor &, bool resolveTarget = true, diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index ebd7065419..ce46dffc61 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -116,6 +116,7 @@ QmlJSEditorWidget::QmlJSEditorWidget() setMarksVisible(true); setCodeFoldingSupported(true); setLanguageSettingsId(QmlJSTools::Constants::QML_JS_SETTINGS_ID); + setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); } void QmlJSEditorWidget::finalizeInitialization() @@ -879,7 +880,6 @@ QmlJSEditor::QmlJSEditor() { addContext(ProjectExplorer::Constants::LANG_QMLJS); setDuplicateSupported(true); - setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject()); } bool QmlJSEditor::isDesignModePreferred() const diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 1df8e537b1..0a2925d468 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -230,8 +230,6 @@ class BaseTextEditorPrivate public: BaseTextEditorPrivate() {} - std::function m_completionAssistProvider; - QPointer m_origin; }; @@ -435,6 +433,7 @@ public: QScopedPointer m_autoCompleter; CommentDefinition m_commentDefinition; + CompletionAssistProvider *m_completionAssistProvider; }; BaseTextEditorWidgetPrivate::BaseTextEditorWidgetPrivate(BaseTextEditorWidget *parent) @@ -486,7 +485,8 @@ BaseTextEditorWidgetPrivate::BaseTextEditorWidgetPrivate(BaseTextEditorWidget *p m_markDragging(false), m_clipboardAssistProvider(new Internal::ClipboardAssistProvider), m_isMissingSyntaxDefinition(false), - m_autoCompleter(new AutoCompleter) + m_autoCompleter(new AutoCompleter), + m_completionAssistProvider(0) { Aggregation::Aggregate *aggregate = new Aggregation::Aggregate; BaseTextFind *baseTextFind = new BaseTextFind(q); @@ -6552,7 +6552,6 @@ void BaseTextEditorWidget::appendStandardContextMenuActions(QMenu *menu) BaseTextEditor::BaseTextEditor() : d(new BaseTextEditorPrivate) { - d->m_completionAssistProvider = [] () -> CompletionAssistProvider * { return 0; }; addContext(TextEditor::Constants::C_TEXTEDITOR); setDuplicateSupported(true); } @@ -6696,19 +6695,9 @@ void BaseTextEditor::select(int toPos) editorWidget()->setTextCursor(tc); } -CompletionAssistProvider *BaseTextEditor::completionAssistProvider() -{ - return d->m_completionAssistProvider(); -} - -void BaseTextEditor::setCompletionAssistProvider(CompletionAssistProvider *provider) -{ - d->m_completionAssistProvider = [provider] () -> CompletionAssistProvider * { return provider; }; -} - -void BaseTextEditor::setCompletionAssistProvider(const std::function &provider) +CompletionAssistProvider *BaseTextEditorWidget::completionAssistProvider() const { - d->m_completionAssistProvider = provider; + return d->m_completionAssistProvider; } void BaseTextEditorWidgetPrivate::updateCursorPosition() @@ -7008,6 +6997,11 @@ void BaseTextEditorWidget::inSnippetMode(bool *active) *active = d->m_snippetOverlay->isVisible(); } +void BaseTextEditorWidget::setCompletionAssistProvider(CompletionAssistProvider *provider) +{ + d->m_completionAssistProvider = provider; +} + void BaseTextEditorWidget::invokeAssist(AssistKind kind, IAssistProvider *provider) { bool previousMode = overwriteMode(); diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index 5f084579db..37a88a5abb 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -193,13 +193,6 @@ public: /*! Selects text between current cursor position and \a toPos. */ virtual void select(int toPos); - CompletionAssistProvider *completionAssistProvider(); - void setCompletionAssistProvider(CompletionAssistProvider *provider); // Not owned. - - // FIXME: Only used to delay initialization from CppEditor. - // There should be something simpler. - void setCompletionAssistProvider(const std::function &provider); - signals: void markRequested(TextEditor::BaseTextEditor *editor, int line, TextEditor::BaseTextEditor::MarkRequestKind kind); void markContextMenuRequested(TextEditor::BaseTextEditor *editor, int line, QMenu *menu); @@ -482,6 +475,9 @@ public: Q_INVOKABLE void inSnippetMode(bool *active); // Used by FakeVim. + void setCompletionAssistProvider(CompletionAssistProvider *provider); + virtual CompletionAssistProvider *completionAssistProvider() const; + signals: void assistFinished(); void readOnlyChanged(); diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index d369638369..7c6977781e 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -179,7 +179,7 @@ void CodeAssistantPrivate::configure(BaseTextEditor *textEditor) // completion and quick-fix provider (getting rid of the list). m_textEditor = textEditor; - m_completionProvider = textEditor->completionAssistProvider(); + m_completionProvider = textEditor->editorWidget()->completionAssistProvider(); m_quickFixProviders = ExtensionSystem::PluginManager::getObjects(); filterEditorSpecificProviders(&m_quickFixProviders, m_textEditor->document()->id()); @@ -192,7 +192,7 @@ void CodeAssistantPrivate::configure(BaseTextEditor *textEditor) void CodeAssistantPrivate::reconfigure() { if (isConfigured()) - m_completionProvider = m_textEditor->completionAssistProvider(); + m_completionProvider = m_textEditor->editorWidget()->completionAssistProvider(); } bool CodeAssistantPrivate::isConfigured() const -- GitLab