completion: enable multiple completors for different use cases.

Introduce CompletionPolicy enum, use 'TextCompletion' for the new plain
text completion, and 'SemanticCompletion' or 'QuickFixCompletion' for
the existing cases.

Reviewed-by: Erik Verbruggen
This commit is contained in:
hjk
2011-02-21 14:02:00 +01:00
parent 43c980e6a3
commit 9a6c4a42f7
25 changed files with 135 additions and 93 deletions

View File

@@ -653,8 +653,15 @@ static int startOfOperator(TextEditor::ITextEditable *editor,
return start;
}
bool CppCodeCompletion::supportsEditor(TextEditor::ITextEditable *editor)
{ return m_manager->isCppEditor(editor); }
bool CppCodeCompletion::supportsPolicy(TextEditor::CompletionPolicy policy) const
{
return policy == TextEditor::SemanticCompletion;
}
bool CppCodeCompletion::supportsEditor(TextEditor::ITextEditable *editor) const
{
return m_manager->isCppEditor(editor);
}
TextEditor::ITextEditable *CppCodeCompletion::editor() const
{ return m_editor; }

View File

@@ -79,7 +79,8 @@ public:
int startPosition() const;
bool shouldRestartCompletion();
QList<TextEditor::CompletionItem> getCompletions();
bool supportsEditor(TextEditor::ITextEditable *editor);
bool supportsEditor(TextEditor::ITextEditable *editor) const;
bool supportsPolicy(TextEditor::CompletionPolicy policy) const;
bool triggersCompletion(TextEditor::ITextEditable *editor);
int startCompletion(TextEditor::ITextEditable *editor);
void completions(QList<TextEditor::CompletionItem> *completions);