forked from qt-creator/qt-creator
More work on `Quick Fix'.
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
#include "cppcodecompletion.h"
|
||||
#include "cppmodelmanager.h"
|
||||
#include "cppdoxygen.h"
|
||||
#include "cpptoolseditorsupport.h"
|
||||
|
||||
#include <Control.h>
|
||||
#include <AST.h>
|
||||
@@ -421,6 +422,59 @@ void FunctionArgumentWidget::updateHintText()
|
||||
m_popupFrame->move(pos);
|
||||
}
|
||||
|
||||
CppQuickFixCollector::CppQuickFixCollector(CppModelManager *modelManager)
|
||||
: _modelManager(modelManager), _editor(0)
|
||||
{ }
|
||||
|
||||
CppQuickFixCollector::~CppQuickFixCollector()
|
||||
{ }
|
||||
|
||||
bool CppQuickFixCollector::supportsEditor(TextEditor::ITextEditable *editor)
|
||||
{ return _modelManager->isCppEditor(editor); }
|
||||
|
||||
bool CppQuickFixCollector::triggersCompletion(TextEditor::ITextEditable *)
|
||||
{ return false; }
|
||||
|
||||
int CppQuickFixCollector::startCompletion(TextEditor::ITextEditable *editor)
|
||||
{
|
||||
_editor = editor;
|
||||
|
||||
if (CppEditorSupport *extra = _modelManager->editorSupport(editor)) {
|
||||
const QList<QuickFixOperationPtr> quickFixes = extra->quickFixes();
|
||||
if (! quickFixes.isEmpty()) {
|
||||
int i = 0;
|
||||
foreach (QuickFixOperationPtr op, quickFixes) {
|
||||
TextEditor::CompletionItem item(this);
|
||||
item.m_text = op->description();
|
||||
item.m_data = QVariant::fromValue(i);
|
||||
_completions.append(item);
|
||||
++i;
|
||||
}
|
||||
return editor->position();
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void CppQuickFixCollector::completions(QList<TextEditor::CompletionItem> *completions)
|
||||
{
|
||||
completions->append(_completions);
|
||||
}
|
||||
|
||||
void CppQuickFixCollector::complete(const TextEditor::CompletionItem &item)
|
||||
{
|
||||
CppEditorSupport *extra = _modelManager->editorSupport(_editor);
|
||||
const QList<QuickFixOperationPtr> quickFixes = extra->quickFixes();
|
||||
QuickFixOperationPtr quickFix = quickFixes.at(item.m_data.toInt());
|
||||
TextEditor::BaseTextEditor *ed = qobject_cast<TextEditor::BaseTextEditor *>(_editor->widget());
|
||||
quickFix->apply(ed->textCursor());
|
||||
}
|
||||
|
||||
void CppQuickFixCollector::cleanup()
|
||||
{
|
||||
_completions.clear();
|
||||
}
|
||||
|
||||
CppCodeCompletion::CppCodeCompletion(CppModelManager *manager)
|
||||
: ICompletionCollector(manager),
|
||||
m_manager(manager),
|
||||
|
||||
Reference in New Issue
Block a user