aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangcodemodel/clangdclient.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2023-06-09 11:24:29 +0200
committerEike Ziller <eike.ziller@qt.io>2023-06-09 11:24:29 +0200
commit375db16ac431b326a7c87e009f861875050a4247 (patch)
tree8dd29c7f109cbab6af7522c1616b544ff3a865b8 /src/plugins/clangcodemodel/clangdclient.cpp
parent804ad5a7f646739839bb3d4ef62a4771ba6fa1e1 (diff)
parent45abf54a611ae6c5dbd997d0ad5ab0a943b90f5a (diff)
Merge remote-tracking branch 'origin/11.0'
Diffstat (limited to 'src/plugins/clangcodemodel/clangdclient.cpp')
-rw-r--r--src/plugins/clangcodemodel/clangdclient.cpp19
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"));
});
}