diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp index 59d2b8aa534..b19a479a3cc 100644 --- a/src/plugins/cpptools/cppcompletionassist.cpp +++ b/src/plugins/cpptools/cppcompletionassist.cpp @@ -639,6 +639,11 @@ CppCompletionAssistProcessor::CppCompletionAssistProcessor() CppCompletionAssistProcessor::~CppCompletionAssistProcessor() {} +IAssistProposal *CppCompletionAssistProcessor::immediateProposal(const IAssistInterface *) +{ + return 0; +} + IAssistProposal * CppCompletionAssistProcessor::perform(const IAssistInterface *interface) { m_interface.reset(static_cast(interface)); diff --git a/src/plugins/cpptools/cppcompletionassist.h b/src/plugins/cpptools/cppcompletionassist.h index 6345d895b25..1ec57cf4d8a 100644 --- a/src/plugins/cpptools/cppcompletionassist.h +++ b/src/plugins/cpptools/cppcompletionassist.h @@ -102,6 +102,7 @@ public: CppCompletionAssistProcessor(); virtual ~CppCompletionAssistProcessor(); + virtual TextEditor::IAssistProposal *immediateProposal(const TextEditor::IAssistInterface *); virtual TextEditor::IAssistProposal *perform(const TextEditor::IAssistInterface *interface); private: diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index f8e79162f2e..179dd86b714 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -808,6 +808,8 @@ public: : m_provider(static_cast(provider)) {} + IAssistProposal *immediateProposal(const IAssistInterface *) { return 0; } + IAssistProposal *perform(const IAssistInterface *interface) { const QString &needle = m_provider->needle(); diff --git a/src/plugins/glsleditor/glslcompletionassist.cpp b/src/plugins/glsleditor/glslcompletionassist.cpp index f5ecd2c9834..768bd0b149a 100644 --- a/src/plugins/glsleditor/glslcompletionassist.cpp +++ b/src/plugins/glsleditor/glslcompletionassist.cpp @@ -214,6 +214,11 @@ GLSLCompletionAssistProcessor::GLSLCompletionAssistProcessor() GLSLCompletionAssistProcessor::~GLSLCompletionAssistProcessor() {} +IAssistProposal *GLSLCompletionAssistProcessor::immediateProposal(const IAssistInterface *) +{ + return 0; +} + IAssistProposal *GLSLCompletionAssistProcessor::perform(const IAssistInterface *interface) { m_interface.reset(static_cast(interface)); diff --git a/src/plugins/glsleditor/glslcompletionassist.h b/src/plugins/glsleditor/glslcompletionassist.h index bf75cfe31fa..5d96452cc64 100644 --- a/src/plugins/glsleditor/glslcompletionassist.h +++ b/src/plugins/glsleditor/glslcompletionassist.h @@ -71,6 +71,7 @@ public: GLSLCompletionAssistProcessor(); virtual ~GLSLCompletionAssistProcessor(); + virtual TextEditor::IAssistProposal *immediateProposal(const TextEditor::IAssistInterface *); virtual TextEditor::IAssistProposal *perform(const TextEditor::IAssistInterface *interface); private: diff --git a/src/plugins/qmljseditor/qmljscompletionassist.cpp b/src/plugins/qmljseditor/qmljscompletionassist.cpp index 65a80f6d295..c3edc8394dc 100644 --- a/src/plugins/qmljseditor/qmljscompletionassist.cpp +++ b/src/plugins/qmljseditor/qmljscompletionassist.cpp @@ -510,6 +510,11 @@ QmlJSCompletionAssistProcessor::QmlJSCompletionAssistProcessor() QmlJSCompletionAssistProcessor::~QmlJSCompletionAssistProcessor() {} +IAssistProposal *QmlJSCompletionAssistProcessor::immediateProposal(const IAssistInterface *) +{ + return 0; +} + IAssistProposal *QmlJSCompletionAssistProcessor::createContentProposal() const { IGenericProposalModel *model = new QmlJSAssistProposalModel(m_completions); diff --git a/src/plugins/qmljseditor/qmljscompletionassist.h b/src/plugins/qmljseditor/qmljscompletionassist.h index a8437211e3e..40a4239a5ba 100644 --- a/src/plugins/qmljseditor/qmljscompletionassist.h +++ b/src/plugins/qmljseditor/qmljscompletionassist.h @@ -95,6 +95,7 @@ public: QmlJSCompletionAssistProcessor(); virtual ~QmlJSCompletionAssistProcessor(); + virtual TextEditor::IAssistProposal *immediateProposal(const TextEditor::IAssistInterface *); virtual TextEditor::IAssistProposal *perform(const TextEditor::IAssistInterface *interface); private: diff --git a/src/plugins/texteditor/circularclipboardassist.cpp b/src/plugins/texteditor/circularclipboardassist.cpp index 046f1b836d9..3370fa0faeb 100644 --- a/src/plugins/texteditor/circularclipboardassist.cpp +++ b/src/plugins/texteditor/circularclipboardassist.cpp @@ -86,6 +86,8 @@ private: class ClipboardAssistProcessor: public IAssistProcessor { public: + IAssistProposal *immediateProposal(const TextEditor::IAssistInterface *) { return 0; } + IAssistProposal *perform(const IAssistInterface *interface) { if (!interface) diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index 36762e4e586..9c8d342a162 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -259,6 +259,9 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason, return; if (provider->isAsynchronous()) { + if (IAssistProposal *newProposal = processor->immediateProposal(assistInterface)) + displayProposal(newProposal, reason); + m_requestProvider = provider; m_requestRunner = new ProcessorRunner; connect(m_requestRunner, SIGNAL(finished()), this, SLOT(proposalComputed())); @@ -305,7 +308,7 @@ void CodeAssistantPrivate::displayProposal(IAssistProposal *newProposal, AssistR QScopedPointer proposalCandidate(newProposal); if (isDisplayingProposal()) { - if (!m_proposal->isFragile() || proposalCandidate->isFragile()) + if (!m_proposal->isFragile()) return; destroyContext(); } diff --git a/src/plugins/texteditor/codeassist/iassistprocessor.h b/src/plugins/texteditor/codeassist/iassistprocessor.h index e3df25ebac0..3a66c0279d4 100644 --- a/src/plugins/texteditor/codeassist/iassistprocessor.h +++ b/src/plugins/texteditor/codeassist/iassistprocessor.h @@ -46,6 +46,7 @@ public: IAssistProcessor(); virtual ~IAssistProcessor(); + virtual IAssistProposal *immediateProposal(const IAssistInterface *interface) = 0; virtual IAssistProposal *perform(const IAssistInterface *interface) = 0; }; diff --git a/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp b/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp index e58f395f1b2..46b395b89c6 100644 --- a/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp +++ b/src/plugins/texteditor/codeassist/keywordscompletionassist.cpp @@ -177,6 +177,11 @@ KeywordsCompletionAssistProcessor::KeywordsCompletionAssistProcessor(Keywords ke KeywordsCompletionAssistProcessor::~KeywordsCompletionAssistProcessor() {} +IAssistProposal *KeywordsCompletionAssistProcessor::immediateProposal(const IAssistInterface *) +{ + return 0; +} + IAssistProposal *KeywordsCompletionAssistProcessor::perform(const IAssistInterface *interface) { m_interface.reset(interface); diff --git a/src/plugins/texteditor/codeassist/keywordscompletionassist.h b/src/plugins/texteditor/codeassist/keywordscompletionassist.h index 80aa1c8e04c..45e202429dc 100644 --- a/src/plugins/texteditor/codeassist/keywordscompletionassist.h +++ b/src/plugins/texteditor/codeassist/keywordscompletionassist.h @@ -88,6 +88,7 @@ public: KeywordsCompletionAssistProcessor(Keywords keywords); virtual ~KeywordsCompletionAssistProcessor(); + virtual TextEditor::IAssistProposal *immediateProposal(const TextEditor::IAssistInterface *); virtual TextEditor::IAssistProposal *perform(const TextEditor::IAssistInterface *interface); virtual QChar startOfCommentChar() const; diff --git a/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp b/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp index db90f5d4d1b..6fa8e7c4059 100644 --- a/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp +++ b/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp @@ -47,6 +47,11 @@ QuickFixAssistProcessor::QuickFixAssistProcessor() QuickFixAssistProcessor::~QuickFixAssistProcessor() {} +IAssistProposal *QuickFixAssistProcessor::immediateProposal(const IAssistInterface *) +{ + return 0; +} + IAssistProposal *QuickFixAssistProcessor::perform(const IAssistInterface *interface) { if (!interface) diff --git a/src/plugins/texteditor/codeassist/quickfixassistprocessor.h b/src/plugins/texteditor/codeassist/quickfixassistprocessor.h index 530d6357a50..a79a793c804 100644 --- a/src/plugins/texteditor/codeassist/quickfixassistprocessor.h +++ b/src/plugins/texteditor/codeassist/quickfixassistprocessor.h @@ -41,6 +41,8 @@ public: virtual ~QuickFixAssistProcessor(); virtual const IAssistProvider *provider() const = 0; + + virtual TextEditor::IAssistProposal *immediateProposal(const IAssistInterface *interface); virtual IAssistProposal *perform(const IAssistInterface *interface); };