diff --git a/include/Protocol/Basic.h b/include/Protocol/Basic.h index c0ee8ffa8..801a814a0 100644 --- a/include/Protocol/Basic.h +++ b/include/Protocol/Basic.h @@ -6,6 +6,8 @@ #include #include +#include "llvm/Support/JSON.h" + namespace clice::proto { using integer = std::int32_t; @@ -15,6 +17,8 @@ using decimal = double; using string = std::string; +using any = llvm::json::Value; + template using array = std::vector; diff --git a/include/Protocol/Feature/ExecuteCommand.h b/include/Protocol/Feature/ExecuteCommand.h new file mode 100644 index 000000000..6b0333f02 --- /dev/null +++ b/include/Protocol/Feature/ExecuteCommand.h @@ -0,0 +1,17 @@ +#pragma once + +#include "../Basic.h" + +namespace clice::proto { + +struct ExecuteCommandParams { + string command; + array arguments; +}; + +struct TextDocumentParams { + /// The text document. + TextDocumentIdentifier textDocument; +}; + +} // namespace clice::proto diff --git a/include/Protocol/TextDocument.h b/include/Protocol/TextDocument.h index b06621b55..a2f4e31af 100644 --- a/include/Protocol/TextDocument.h +++ b/include/Protocol/TextDocument.h @@ -11,6 +11,7 @@ #include "Feature/DocumentHighlight.h" #include "Feature/DocumentLink.h" #include "Feature/DocumentSymbol.h" +#include "Feature/ExecuteCommand.h" #include "Feature/FoldingRange.h" #include "Feature/Formatting.h" #include "Feature/Hover.h" diff --git a/include/Server/Server.h b/include/Server/Server.h index 9a2794fff..28b020630 100644 --- a/include/Server/Server.h +++ b/include/Server/Server.h @@ -192,6 +192,8 @@ class Server { private: using Result = async::Task; + auto on_execute_command(proto::ExecuteCommandParams params) -> Result; + auto on_completion(proto::CompletionParams params) -> Result; auto on_hover(proto::HoverParams params) -> Result; diff --git a/src/Server/Server.cpp b/src/Server/Server.cpp index 451ba367f..5c4f3c7ef 100644 --- a/src/Server/Server.cpp +++ b/src/Server/Server.cpp @@ -102,6 +102,8 @@ Server::Server() : indexer(database, config, kind) { register_callback<&Server::on_shutdown>("shutdown"); register_callback<&Server::on_exit>("exit"); + register_callback<&Server::on_execute_command>("workspace/executeCommand"); + register_callback<&Server::on_did_open>("textDocument/didOpen"); register_callback<&Server::on_did_change>("textDocument/didChange"); register_callback<&Server::on_did_save>("textDocument/didSave"); @@ -184,4 +186,8 @@ async::Task<> Server::on_receive(json::Value value) { co_return; } +async::Task Server::on_execute_command(proto::ExecuteCommandParams params) { + co_return json::Value{}; +} + } // namespace clice