TextEditor: get CompletionAssistProvider from editor.

And not from the global object pool. This way, the editors that have
different highlighters for various language dialects, or editors that
support multiple languages in a single editor, can decide themselves on
what CompletionAssistProvider to provide.

Change-Id: Ieebc4a8e7b3de6470fdb8103035aa3b8b2ba6598
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Erik Verbruggen
2013-08-30 12:55:06 +02:00
parent 33fd157b34
commit 7516ef4969
22 changed files with 116 additions and 26 deletions

View File

@@ -907,6 +907,13 @@ CppCompletionSupport *CppModelManager::completionSupport(Core::IEditor *editor)
return 0;
}
CppCompletionAssistProvider *CppModelManager::completionAssistProvider(Core::IEditor *editor) const
{
Q_UNUSED(editor);
return m_completionAssistProvider;
}
void CppModelManager::setCppCompletionAssistProvider(CppCompletionAssistProvider *completionAssistProvider)
{
ExtensionSystem::PluginManager::removeObject(m_completionAssistProvider);

View File

@@ -105,6 +105,7 @@ public:
void finishedRefreshingSourceFiles(const QStringList &files);
virtual CppCompletionSupport *completionSupport(Core::IEditor *editor) const;
virtual CppCompletionAssistProvider *completionAssistProvider(Core::IEditor *editor) const;
virtual void setCppCompletionAssistProvider(CppCompletionAssistProvider *completionAssistProvider);
virtual CppHighlightingSupport *highlightingSupport(Core::IEditor *editor) const;

View File

@@ -242,6 +242,7 @@ public:
const QList<TextEditor::BlockRange> &ifdeffedOutBlocks) = 0;
virtual CppTools::CppCompletionSupport *completionSupport(Core::IEditor *editor) const = 0;
virtual CppCompletionAssistProvider *completionAssistProvider(Core::IEditor *editor) const = 0;
virtual void setCppCompletionAssistProvider(CppTools::CppCompletionAssistProvider *completionAssistProvider) = 0;
virtual CppTools::CppHighlightingSupport *highlightingSupport(Core::IEditor *editor) const = 0;

View File

@@ -27,6 +27,7 @@
**
****************************************************************************/
#include "cppcompletionassistprovider.h"
#include "cpptoolseditorsupport.h"
#include "cppmodelmanager.h"
#include "cpplocalsymbols.h"
@@ -229,6 +230,11 @@ void CppEditorSupport::recalculateSemanticInfoDetached(bool force)
startHighlighting();
}
CppCompletionAssistProvider *CppEditorSupport::completionAssistProvider() const
{
return m_completionAssistProvider.data();
}
void CppEditorSupport::updateDocument()
{
m_revision = editorRevision();

View File

@@ -50,6 +50,8 @@ class ITextMark;
namespace CppTools {
class CppCompletionAssistProvider;
/**
* \brief The CppEditorSupport class oversees the actions that happen when a C++ text editor updates
* its document.
@@ -115,6 +117,8 @@ public:
/// \param force do not check if the old semantic info is still valid
void recalculateSemanticInfoDetached(bool force = false);
CppCompletionAssistProvider *completionAssistProvider() const;
signals:
void documentUpdated();
void diagnosticsChanged();
@@ -189,6 +193,9 @@ private:
unsigned m_lastHighlightRevision;
QFuture<TextEditor::HighlightingResult> m_highlighter;
QScopedPointer<CppTools::CppHighlightingSupport> m_highlightingSupport;
// Completion:
QScopedPointer<CppCompletionAssistProvider> m_completionAssistProvider;
};
} // namespace CppTools