aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/languageclient/clientrequest.cpp
diff options
context:
space:
mode:
authorJarek Kobus <[email protected]>2023-08-17 11:49:12 +0200
committerJarek Kobus <[email protected]>2023-08-17 11:04:58 +0000
commit0ffc4ac89ebe57eb3130a9ab10f60ff3f7e1cc07 (patch)
tree0130b0ddd6e6a87444f6d83038ff57884eab2b77 /src/plugins/languageclient/clientrequest.cpp
parent5b8600fd376334fbf3e3e1734a46af8fad7f7fb1 (diff)
LanguageClient: Rename clientrequesttask.{cpp,h} -> clientrequest.{cpp,h}
Change-Id: Ia6a1b65564795c8f2931efb1030d7a189a18d68b Reviewed-by: David Schulz <[email protected]>
Diffstat (limited to 'src/plugins/languageclient/clientrequest.cpp')
-rw-r--r--src/plugins/languageclient/clientrequest.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/plugins/languageclient/clientrequest.cpp b/src/plugins/languageclient/clientrequest.cpp
new file mode 100644
index 00000000000..630a1b01940
--- /dev/null
+++ b/src/plugins/languageclient/clientrequest.cpp
@@ -0,0 +1,37 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include "clientrequest.h"
+
+using namespace LanguageServerProtocol;
+
+namespace LanguageClient {
+
+ClientWorkspaceSymbolRequestTaskAdapter::ClientWorkspaceSymbolRequestTaskAdapter()
+{
+ task()->setResponseCallback([this](const WorkspaceSymbolRequest::Response &response){
+ emit done(response.result().has_value());
+ });
+}
+
+void ClientWorkspaceSymbolRequestTaskAdapter::start()
+{
+ task()->start();
+}
+
+bool ClientWorkspaceSymbolRequest::preStartCheck()
+{
+ if (!ClientRequest::preStartCheck())
+ return false;
+
+ const std::optional<std::variant<bool, WorkDoneProgressOptions>> capability
+ = client()->capabilities().workspaceSymbolProvider();
+ if (!capability.has_value())
+ return false;
+ if (std::holds_alternative<bool>(*capability) && !std::get<bool>(*capability))
+ return false;
+
+ return true;
+}
+
+} // namespace LanguageClient