diff options
author | David Schulz <david.schulz@qt.io> | 2019-01-25 09:48:44 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-01-31 14:20:44 +0000 |
commit | aa2ad04e04e7720f1c75d4846f8be8e1717b2f41 (patch) | |
tree | 01b8778105dfe11e4772a4272fb9c644cc26007b /src/plugins/languageclient/languageclientmanager.cpp | |
parent | 54437cafc62bfe50adcfcc72f3ffc49ca3f9db58 (diff) |
LSP: add Command and CodeAction support to the language client
Change-Id: I9e86c17b87c6b6aef36bd0ca293d9db40c554aad
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientmanager.cpp')
-rw-r--r-- | src/plugins/languageclient/languageclientmanager.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index b3fe7b13c15..b4746b45ef4 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -40,6 +40,7 @@ #include <utils/theme/theme.h> #include <utils/utilsicons.h> +#include <QTextBlock> #include <QTimer> using namespace LanguageServerProtocol; @@ -75,6 +76,7 @@ public: LanguageClientManager::LanguageClientManager() { JsonRpcMessageHandler::registerMessageProvider<PublishDiagnosticsNotification>(); + JsonRpcMessageHandler::registerMessageProvider<ApplyWorkspaceEditRequest>(); JsonRpcMessageHandler::registerMessageProvider<LogMessageNotification>(); JsonRpcMessageHandler::registerMessageProvider<ShowMessageRequest>(); JsonRpcMessageHandler::registerMessageProvider<ShowMessageNotification>(); @@ -106,7 +108,8 @@ void LanguageClientManager::init() } void LanguageClientManager::publishDiagnostics(const Core::Id &id, - const PublishDiagnosticsParams ¶ms) + const PublishDiagnosticsParams ¶ms, + BaseClient *publishingClient) { const Utils::FileName fileName = params.uri().toFileName(); TextEditor::TextDocument *doc = textDocumentForFileName(fileName); @@ -115,11 +118,14 @@ void LanguageClientManager::publishDiagnostics(const Core::Id &id, removeMarks(fileName, id); managerInstance->m_marks[fileName][id].reserve(params.diagnostics().size()); - for (const Diagnostic& diagnostic : params.diagnostics()) { + QList<Diagnostic> diagnostics = params.diagnostics(); + for (const Diagnostic& diagnostic : diagnostics) { auto mark = new LanguageClientMark(fileName, diagnostic); managerInstance->m_marks[fileName][id].append(mark); doc->addMark(mark); } + + publishingClient->requestCodeActions(params.uri(), diagnostics); } void LanguageClientManager::removeMark(LanguageClientMark *mark) |