LanguageClient: reset all assist providers

Instead of just unsetting the function assist provider and quick fix
assist provider reset it to the previous provider.

Change-Id: I46c5c2f14234e3da08480dd103e4634859447d57
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-09-10 08:03:36 +02:00
parent cd6b37d905
commit f0a3779513
7 changed files with 70 additions and 36 deletions

View File

@@ -193,6 +193,7 @@ private:
void showDiagnostics(const LanguageServerProtocol::DocumentUri &uri);
void removeDiagnostics(const LanguageServerProtocol::DocumentUri &uri);
void resetAssistProviders(TextEditor::TextDocument *document);
using ContentHandler = std::function<void(const QByteArray &, QTextCodec *, QString &,
LanguageServerProtocol::ResponseHandlers,
@@ -207,10 +208,15 @@ private:
Core::Id m_id;
LanguageServerProtocol::ServerCapabilities m_serverCapabilities;
DynamicCapabilities m_dynamicCapabilities;
LanguageClientCompletionAssistProvider m_completionProvider;
FunctionHintAssistProvider m_functionHintProvider;
LanguageClientQuickFixProvider m_quickFixProvider;
QMap<TextEditor::TextDocument *, QPointer<TextEditor::CompletionAssistProvider>> m_resetAssistProvider;
struct AssistProviders
{
QPointer<TextEditor::CompletionAssistProvider> completionAssistProvider;
QPointer<TextEditor::CompletionAssistProvider> functionHintProvider;
QPointer<TextEditor::IAssistProvider> quickFixAssistProvider;
};
AssistProviders m_clientProviders;
QMap<TextEditor::TextDocument *, AssistProviders> m_resetAssistProvider;
QHash<LanguageServerProtocol::DocumentUri, LanguageServerProtocol::MessageId> m_highlightRequests;
int m_restartsLeft = 5;
QScopedPointer<BaseClientInterface> m_clientInterface;