diff options
author | Eike Ziller <eike.ziller@qt.io> | 2023-06-09 11:24:29 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2023-06-09 11:24:29 +0200 |
commit | 375db16ac431b326a7c87e009f861875050a4247 (patch) | |
tree | 8dd29c7f109cbab6af7522c1616b544ff3a865b8 /src/plugins/clangcodemodel/clangdclient.cpp | |
parent | 804ad5a7f646739839bb3d4ef62a4771ba6fa1e1 (diff) | |
parent | 45abf54a611ae6c5dbd997d0ad5ab0a943b90f5a (diff) |
Merge remote-tracking branch 'origin/11.0'
Change-Id: I87b22a73427cf9fc1b96075dc0db769ed3d3621c
Diffstat (limited to 'src/plugins/clangcodemodel/clangdclient.cpp')
-rw-r--r-- | src/plugins/clangcodemodel/clangdclient.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 070653c702a..49851b25b95 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -230,14 +230,22 @@ public: void enableCodeActionsInline() {insert(u"codeActionsInline", true);} }; +class InactiveRegionsCapabilities : public JsonObject +{ +public: + using JsonObject::JsonObject; + void enableInactiveRegionsSupport() { insert(u"inactiveRegions", true); } +}; + class ClangdTextDocumentClientCapabilities : public TextDocumentClientCapabilities { public: using TextDocumentClientCapabilities::TextDocumentClientCapabilities; - void setPublishDiagnostics(const DiagnosticsCapabilities &caps) { insert(u"publishDiagnostics", caps); } + void setInactiveRegionsCapabilities(const InactiveRegionsCapabilities &caps) + { insert(u"inactiveRegionsCapabilities", caps); } }; static qint64 getRevision(const TextDocument *doc) @@ -428,6 +436,9 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir, c diagnostics.enableCategorySupport(); diagnostics.enableCodeActionsInline(); clangdTextCaps.setPublishDiagnostics(diagnostics); + InactiveRegionsCapabilities inactiveRegions; + inactiveRegions.enableInactiveRegionsSupport(); + clangdTextCaps.setInactiveRegionsCapabilities(inactiveRegions); std::optional<TextDocumentClientCapabilities::CompletionCapabilities> completionCaps = textCaps->completion(); if (completionCaps) @@ -456,6 +467,9 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir, c const Utils::FilePath &filePath) { gatherHelpItemForTooltip(response, filePath); }); + registerCustomMethod(inactiveRegionsMethodName(), [this](const JsonRpcMessage &msg) { + handleInactiveRegions(this, msg); + }); connect(this, &Client::workDone, this, [this, p = QPointer(project)](const ProgressToken &token) { @@ -692,7 +706,8 @@ class ClangdDiagnosticManager : public LanguageClient::DiagnosticManager return Utils::filtered(diagnostics, [](const Diagnostic &diag){ const Diagnostic::Code code = diag.code().value_or(Diagnostic::Code()); const QString * const codeString = std::get_if<QString>(&code); - return !codeString || *codeString != "drv_unknown_argument"; + return !codeString || (*codeString != "drv_unknown_argument" + && !codeString->startsWith("drv_unsupported_opt")); }); } |