#pragma once #include "./basic_types.hpp" #include "./progress.hpp" namespace lsp::protocol { // Configuration struct ConfigurationItem { std::optional scopeUri; std::optional section; }; struct ConfigurationParams { std::vector items; }; struct DidChangeConfigurationClientCapabilities { std::optional dynamicRegistration; }; struct DidChangeConfigurationParams { LSPAny settings; }; // Command Execution struct ExecuteCommandClientCapabilities { std::optional dynamicRegistration; }; struct ExecuteCommandOptions : WorkDoneProgressOptions { std::vector commands; }; struct ExecuteCommandRegistrationOptions : ExecuteCommandOptions { }; struct ExecuteCommandParams : WorkDoneProgressParams { string command; std::optional> arguments; }; // Message enum class MessageType { kError = 1, kWarning = 2, kInfo = 3, kLog = 4, kDebug = 5 }; struct ShowMessageParams { MessageType type; string message; }; struct ShowMessageRequestClientCapabilities { struct MessageActionItem { std::optional additionalPropertiesSupport; }; std::optional messageActionItem; }; struct MessageActionItem { std::string title; }; struct ShowMessageRequestParams { MessageType type; string message; std::optional> actions; }; struct ShowDocumentClientCapabilities { boolean support; }; struct ShowDocumentParams { URI uri; std::optional external; std::optional takeFocus; std::optional selection; }; struct ShowDocumentResult { boolean success; }; struct LogMessageParams { MessageType type; string message; }; }