diff options
author | David Schulz <[email protected]> | 2023-03-20 16:29:51 +0100 |
---|---|---|
committer | David Schulz <[email protected]> | 2023-03-21 06:40:21 +0000 |
commit | 8e9b8933256c1483f1f72ade010ea879550d40d7 (patch) | |
tree | dbadb0fb689ecf0a79698d6b07a8dc8f429ead4a /src/plugins/languageclient/clientrequesttask.cpp | |
parent | 6dcc1771e3b69073a4560778b29b0ac3fa4d2c56 (diff) |
LanguageClient: Introduce ClientRequestTask
This class is going to be used inside TaskTree.
Change-Id: Ia227a8f41e4557b45053cb018497a7eca8f8ac6a
Reviewed-by: Jarek Kobus <[email protected]>
Reviewed-by: <[email protected]>
Reviewed-by: Qt CI Bot <[email protected]>
Diffstat (limited to 'src/plugins/languageclient/clientrequesttask.cpp')
-rw-r--r-- | src/plugins/languageclient/clientrequesttask.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/plugins/languageclient/clientrequesttask.cpp b/src/plugins/languageclient/clientrequesttask.cpp new file mode 100644 index 00000000000..c5503bd6947 --- /dev/null +++ b/src/plugins/languageclient/clientrequesttask.cpp @@ -0,0 +1,39 @@ +// 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 "clientrequesttask.h" + +#include <QScopeGuard> + +using namespace LanguageServerProtocol; + +namespace LanguageClient { + +ClientRequestTaskAdapter::ClientRequestTaskAdapter() +{ + task()->setResponseCallback([this](const WorkspaceSymbolRequest::Response &response){ + emit done(response.result().has_value()); + }); +} + +void ClientRequestTaskAdapter::start() +{ + task()->start(); +} + +bool WorkspaceSymbolRequestTask::preStartCheck() +{ + if (!ClientRequestTask::preStartCheck() || !client()->locatorsEnabled()) + 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 |