forked from qt-creator/qt-creator
TextEditor: Make completion assist provider a data member
In case of the CppEditor a direct member is not possible due to setup restrictions inside the CppEditor machinery. I'd expect that to be fixable when the editor base system is in good shape. Change-Id: I184e219ca2dff6f67c9b58c182212eb12972cc84 Reviewed-by: Christian Stenger <christian.stenger@digia.com>
This commit is contained in:
@@ -56,6 +56,7 @@ JavaEditor::JavaEditor(JavaEditorWidget *editor)
|
|||||||
TextEditor::Constants::C_TEXTEDITOR));
|
TextEditor::Constants::C_TEXTEDITOR));
|
||||||
setDuplicateSupported(true);
|
setDuplicateSupported(true);
|
||||||
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
||||||
|
setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject<JavaCompletionAssistProvider>());
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::IEditor *JavaEditor::duplicate()
|
Core::IEditor *JavaEditor::duplicate()
|
||||||
@@ -66,11 +67,6 @@ Core::IEditor *JavaEditor::duplicate()
|
|||||||
return ret->editor();
|
return ret->editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *JavaEditor::completionAssistProvider()
|
|
||||||
{
|
|
||||||
return ExtensionSystem::PluginManager::getObject<JavaCompletionAssistProvider>();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// JavaEditorWidget
|
// JavaEditorWidget
|
||||||
//
|
//
|
||||||
|
@@ -63,6 +63,7 @@ CMakeEditor::CMakeEditor(CMakeEditorWidget *editor)
|
|||||||
TextEditor::Constants::C_TEXTEDITOR));
|
TextEditor::Constants::C_TEXTEDITOR));
|
||||||
setDuplicateSupported(true);
|
setDuplicateSupported(true);
|
||||||
setCommentStyle(Utils::CommentDefinition::HashStyle);
|
setCommentStyle(Utils::CommentDefinition::HashStyle);
|
||||||
|
setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject<CMakeFileCompletionAssistProvider>());
|
||||||
connect(document(), SIGNAL(changed()), this, SLOT(markAsChanged()));
|
connect(document(), SIGNAL(changed()), this, SLOT(markAsChanged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,11 +75,6 @@ Core::IEditor *CMakeEditor::duplicate()
|
|||||||
return ret->editor();
|
return ret->editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *CMakeEditor::completionAssistProvider()
|
|
||||||
{
|
|
||||||
return ExtensionSystem::PluginManager::getObject<CMakeFileCompletionAssistProvider>();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMakeEditor::markAsChanged()
|
void CMakeEditor::markAsChanged()
|
||||||
{
|
{
|
||||||
if (!document()->isModified())
|
if (!document()->isModified())
|
||||||
|
@@ -53,7 +53,6 @@ public:
|
|||||||
CMakeEditor(CMakeEditorWidget *);
|
CMakeEditor(CMakeEditorWidget *);
|
||||||
|
|
||||||
Core::IEditor *duplicate();
|
Core::IEditor *duplicate();
|
||||||
TextEditor::CompletionAssistProvider *completionAssistProvider();
|
|
||||||
|
|
||||||
QString contextHelpId() const;
|
QString contextHelpId() const;
|
||||||
|
|
||||||
|
@@ -114,6 +114,9 @@ CPPEditor::CPPEditor(CppEditorWidget *editor)
|
|||||||
m_context.add(TextEditor::Constants::C_TEXTEDITOR);
|
m_context.add(TextEditor::Constants::C_TEXTEDITOR);
|
||||||
setDuplicateSupported(true);
|
setDuplicateSupported(true);
|
||||||
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
||||||
|
setCompletionAssistProvider([this] () -> TextEditor::CompletionAssistProvider * {
|
||||||
|
return CppModelManagerInterface::instance()->cppEditorSupport(this)->completionAssistProvider();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_GLOBAL_STATIC(CppTools::SymbolFinder, symbolFinder)
|
Q_GLOBAL_STATIC(CppTools::SymbolFinder, symbolFinder)
|
||||||
@@ -797,11 +800,6 @@ bool CPPEditor::open(QString *errorString, const QString &fileName, const QStrin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *CPPEditor::completionAssistProvider()
|
|
||||||
{
|
|
||||||
return CppModelManagerInterface::instance()->cppEditorSupport(this)->completionAssistProvider();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CppEditorWidget::applyFontSettings()
|
void CppEditorWidget::applyFontSettings()
|
||||||
{
|
{
|
||||||
const TextEditor::FontSettings &fs = baseTextDocument()->fontSettings();
|
const TextEditor::FontSettings &fs = baseTextDocument()->fontSettings();
|
||||||
|
@@ -66,8 +66,6 @@ public:
|
|||||||
bool open(QString *errorString,
|
bool open(QString *errorString,
|
||||||
const QString &fileName,
|
const QString &fileName,
|
||||||
const QString &realFileName) QTC_OVERRIDE;
|
const QString &realFileName) QTC_OVERRIDE;
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *completionAssistProvider() QTC_OVERRIDE;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CppEditorWidget : public TextEditor::BaseTextEditorWidget
|
class CppEditorWidget : public TextEditor::BaseTextEditorWidget
|
||||||
|
@@ -214,11 +214,6 @@ bool GlslEditor::open(QString *errorString, const QString &fileName, const QStri
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *GlslEditor::completionAssistProvider()
|
|
||||||
{
|
|
||||||
return ExtensionSystem::PluginManager::getObject<GLSLCompletionAssistProvider>();
|
|
||||||
}
|
|
||||||
|
|
||||||
QString GlslEditorWidget::wordUnderCursor() const
|
QString GlslEditorWidget::wordUnderCursor() const
|
||||||
{
|
{
|
||||||
QTextCursor tc = textCursor();
|
QTextCursor tc = textCursor();
|
||||||
|
@@ -28,17 +28,14 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "glsleditoreditable.h"
|
#include "glsleditoreditable.h"
|
||||||
#include "glsleditor.h"
|
|
||||||
#include "glsleditorconstants.h"
|
#include "glsleditorconstants.h"
|
||||||
|
#include "glslcompletionassist.h"
|
||||||
|
|
||||||
#include <texteditor/texteditorconstants.h>
|
#include <texteditor/texteditorconstants.h>
|
||||||
#include <qmldesigner/qmldesignerconstants.h>
|
|
||||||
|
|
||||||
#include <coreplugin/mimedatabase.h>
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/designmode.h>
|
|
||||||
#include <coreplugin/modemanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
#include <coreplugin/coreconstants.h>
|
|
||||||
|
|
||||||
namespace GLSLEditor {
|
namespace GLSLEditor {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -50,6 +47,7 @@ GlslEditor::GlslEditor(GlslEditorWidget *editor)
|
|||||||
TextEditor::Constants::C_TEXTEDITOR));
|
TextEditor::Constants::C_TEXTEDITOR));
|
||||||
setDuplicateSupported(true);
|
setDuplicateSupported(true);
|
||||||
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
||||||
|
setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject<GLSLCompletionAssistProvider>());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -46,7 +46,6 @@ public:
|
|||||||
|
|
||||||
Core::IEditor *duplicate();
|
Core::IEditor *duplicate();
|
||||||
bool open(QString *errorString, const QString &fileName, const QString &realFileName);
|
bool open(QString *errorString, const QString &fileName, const QString &realFileName);
|
||||||
TextEditor::CompletionAssistProvider *completionAssistProvider();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -59,6 +59,7 @@ ProFileEditor::ProFileEditor(ProFileEditorWidget *editor)
|
|||||||
TextEditor::Constants::C_TEXTEDITOR));
|
TextEditor::Constants::C_TEXTEDITOR));
|
||||||
setDuplicateSupported(true);
|
setDuplicateSupported(true);
|
||||||
setCommentStyle(Utils::CommentDefinition::HashStyle);
|
setCommentStyle(Utils::CommentDefinition::HashStyle);
|
||||||
|
setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject<ProFileCompletionAssistProvider>());
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::IEditor *ProFileEditor::duplicate()
|
Core::IEditor *ProFileEditor::duplicate()
|
||||||
@@ -69,11 +70,6 @@ Core::IEditor *ProFileEditor::duplicate()
|
|||||||
return ret->editor();
|
return ret->editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *ProFileEditor::completionAssistProvider()
|
|
||||||
{
|
|
||||||
return ExtensionSystem::PluginManager::getObject<ProFileCompletionAssistProvider>();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// ProFileEditorWidget
|
// ProFileEditorWidget
|
||||||
//
|
//
|
||||||
|
@@ -48,7 +48,6 @@ public:
|
|||||||
ProFileEditor(ProFileEditorWidget *);
|
ProFileEditor(ProFileEditorWidget *);
|
||||||
|
|
||||||
Core::IEditor *duplicate();
|
Core::IEditor *duplicate();
|
||||||
TextEditor::CompletionAssistProvider *completionAssistProvider();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProFileEditorWidget : public TextEditor::BaseTextEditorWidget
|
class ProFileEditorWidget : public TextEditor::BaseTextEditorWidget
|
||||||
|
@@ -55,6 +55,7 @@ QmlJSEditor::QmlJSEditor(QmlJSTextEditorWidget *editor)
|
|||||||
m_context.add(ProjectExplorer::Constants::LANG_QMLJS);
|
m_context.add(ProjectExplorer::Constants::LANG_QMLJS);
|
||||||
setDuplicateSupported(true);
|
setDuplicateSupported(true);
|
||||||
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
setCommentStyle(Utils::CommentDefinition::CppStyle);
|
||||||
|
setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject<Internal::QmlJSCompletionAssistProvider>());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlJSEditor::isDesignModePreferred() const
|
bool QmlJSEditor::isDesignModePreferred() const
|
||||||
@@ -66,10 +67,5 @@ bool QmlJSEditor::isDesignModePreferred() const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *QmlJSEditor::completionAssistProvider()
|
|
||||||
{
|
|
||||||
return ExtensionSystem::PluginManager::getObject<Internal::QmlJSCompletionAssistProvider>();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace QmlJSEditor
|
} // namespace QmlJSEditor
|
||||||
|
@@ -49,8 +49,6 @@ public:
|
|||||||
Core::IEditor *duplicate();
|
Core::IEditor *duplicate();
|
||||||
bool open(QString *errorString, const QString &fileName, const QString &realFileName);
|
bool open(QString *errorString, const QString &fileName, const QString &realFileName);
|
||||||
bool isDesignModePreferred() const;
|
bool isDesignModePreferred() const;
|
||||||
|
|
||||||
TextEditor::CompletionAssistProvider *completionAssistProvider();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -198,6 +198,7 @@ public:
|
|||||||
QAction *m_fileEncodingLabelAction;
|
QAction *m_fileEncodingLabelAction;
|
||||||
Utils::LineColumnLabel *m_fileEncodingLabel;
|
Utils::LineColumnLabel *m_fileEncodingLabel;
|
||||||
CommentDefinition m_commentDefinition;
|
CommentDefinition m_commentDefinition;
|
||||||
|
std::function<CompletionAssistProvider *()> m_completionAssistProvider;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BaseTextEditorWidgetPrivate
|
class BaseTextEditorWidgetPrivate
|
||||||
@@ -6447,6 +6448,8 @@ BaseTextEditor::BaseTextEditor(BaseTextEditorWidget *editor)
|
|||||||
d->m_cursorPositionLabelAction = d->m_toolBar->addWidget(d->m_cursorPositionLabel);
|
d->m_cursorPositionLabelAction = d->m_toolBar->addWidget(d->m_cursorPositionLabel);
|
||||||
d->m_fileEncodingLabelAction = d->m_toolBar->addWidget(d->m_fileEncodingLabel);
|
d->m_fileEncodingLabelAction = d->m_toolBar->addWidget(d->m_fileEncodingLabel);
|
||||||
|
|
||||||
|
d->m_completionAssistProvider = [] () -> CompletionAssistProvider * { return 0; };
|
||||||
|
|
||||||
setFileEncodingLabelVisible(editor->displaySettings().m_displayFileEncoding);
|
setFileEncodingLabelVisible(editor->displaySettings().m_displayFileEncoding);
|
||||||
connect(editor, SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition()));
|
connect(editor, SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition()));
|
||||||
connect(d->m_cursorPositionLabel, SIGNAL(clicked()), this, SLOT(openGotoLocator()));
|
connect(d->m_cursorPositionLabel, SIGNAL(clicked()), this, SLOT(openGotoLocator()));
|
||||||
@@ -6587,7 +6590,17 @@ void BaseTextEditor::setCommentStyle(CommentDefinition::Style style)
|
|||||||
|
|
||||||
CompletionAssistProvider *BaseTextEditor::completionAssistProvider()
|
CompletionAssistProvider *BaseTextEditor::completionAssistProvider()
|
||||||
{
|
{
|
||||||
return 0;
|
return d->m_completionAssistProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BaseTextEditor::setCompletionAssistProvider(CompletionAssistProvider *provider)
|
||||||
|
{
|
||||||
|
d->m_completionAssistProvider = [provider] () -> CompletionAssistProvider * { return provider; };
|
||||||
|
}
|
||||||
|
|
||||||
|
void BaseTextEditor::setCompletionAssistProvider(const std::function<CompletionAssistProvider *()> &provider)
|
||||||
|
{
|
||||||
|
d->m_completionAssistProvider = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject *BaseTextEditor::fileEncodingLabel() const
|
QObject *BaseTextEditor::fileEncodingLabel() const
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
#include <utils/uncommentselection.h>
|
#include <utils/uncommentselection.h>
|
||||||
|
|
||||||
#include <QPlainTextEdit>
|
#include <QPlainTextEdit>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QToolBar;
|
class QToolBar;
|
||||||
@@ -185,7 +186,12 @@ public:
|
|||||||
/*! Convenience style setter. */
|
/*! Convenience style setter. */
|
||||||
void setCommentStyle(Utils::CommentDefinition::Style style);
|
void setCommentStyle(Utils::CommentDefinition::Style style);
|
||||||
|
|
||||||
virtual CompletionAssistProvider *completionAssistProvider();
|
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<CompletionAssistProvider *()> &provider);
|
||||||
|
|
||||||
QObject *fileEncodingLabel() const; // FIXME: Remove
|
QObject *fileEncodingLabel() const; // FIXME: Remove
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user