aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/languageclient/languageclientmanager.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-01-25 09:48:44 +0100
committerDavid Schulz <david.schulz@qt.io>2019-01-31 14:20:44 +0000
commitaa2ad04e04e7720f1c75d4846f8be8e1717b2f41 (patch)
tree01b8778105dfe11e4772a4272fb9c644cc26007b /src/plugins/languageclient/languageclientmanager.cpp
parent54437cafc62bfe50adcfcc72f3ffc49ca3f9db58 (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.cpp10
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 &params)
+ const PublishDiagnosticsParams &params,
+ 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)