diff options
Diffstat (limited to 'Build/source/utils/asymptote/LspCpp/LibLsp/lsp/language/language.h')
-rw-r--r-- | Build/source/utils/asymptote/LspCpp/LibLsp/lsp/language/language.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/LspCpp/LibLsp/lsp/language/language.h b/Build/source/utils/asymptote/LspCpp/LibLsp/lsp/language/language.h new file mode 100644 index 00000000000..b4c7829e95f --- /dev/null +++ b/Build/source/utils/asymptote/LspCpp/LibLsp/lsp/language/language.h @@ -0,0 +1,170 @@ +#pragma once + +#include "LibLsp/JsonRpc/RequestInMessage.h" +#include "LibLsp/JsonRpc/NotificationInMessage.h" + +#include "LibLsp/lsp/lsDocumentUri.h" +#include "LibLsp/lsp/lsCommand.h" + +#ifdef _WIN32 +#include <ppltasks.h> +#endif + +struct StatusReport { + + std::string ToString() const + { + std::string info; + info += "type:" + type + "\n"; + info += "message:" + message + "\n"; + return info; + } + /** + * The message type. See { + * + */ + + std::string type; + /** + * The actual message + * + */ + + std::string message; + MAKE_SWAP_METHOD(StatusReport, type, message); +}; +MAKE_REFLECT_STRUCT(StatusReport, type, message); + +/** + * The show message notification is sent from a server to a client to ask + * the client to display a particular message in the user interface. + */ +DEFINE_NOTIFICATION_TYPE(lang_status, StatusReport, "language/status"); + + +enum class MessageType { + + /** + * An error message. + */ + Error=(1), + + /** + * A warning message. + */ + Warning=(2), + + /** + * An information message. + */ + Info=(3), + + /** + * A log message. + */ + Log=(4) +}; +MAKE_REFLECT_TYPE_PROXY(MessageType); + + +struct ActionableNotification { + + + + /** + * The message type. See { + * + */ + + MessageType severity; + /** + * The actual message + * + */ + + std::string message; + + /** + * Optional data + * + */ + + boost::optional<lsp::Any> data; + + + /** + * Optional commands + * + */ + + std::vector<lsCommandWithAny> commands; + + MAKE_SWAP_METHOD(ActionableNotification, severity, message, data, commands) +}; +MAKE_REFLECT_STRUCT(ActionableNotification, severity, message, data, commands) + + +/** + * The actionable notification is sent from a server to a client to ask the + * client to display a particular message in the user interface, and possible + * commands to execute. The commands must be implemented on the client side. + */ +DEFINE_NOTIFICATION_TYPE(lang_actionableNotification, ActionableNotification, "language/actionableNotification"); + + + +struct ProgressReport { + std::string ToString() const; + + std::string id; + + + std::string task; + + + std::string subTask; + + + std::string status; + + int totalWork = 0; + + + int workDone = 0; + + + bool complete = false; + MAKE_SWAP_METHOD(ProgressReport, id, task, subTask, status, workDone, complete); +}; + + +MAKE_REFLECT_STRUCT(ProgressReport, id, task, subTask, status, workDone, complete); + +/** + * The progress report notification is sent from a server to be handled by the + * client. + */ +DEFINE_NOTIFICATION_TYPE(lang_progressReport, ProgressReport, "language/progressReport"); + +enum EventType { + /** + * classpath updated event. + */ + ClasspathUpdated = (100), + + /** + * projects imported event. + */ + ProjectsImported = (200) +}; + +struct EventNotification +{ + int eventType; + lsp::Any data; + std::string ToString() const; + MAKE_SWAP_METHOD(EventNotification, eventType, data) +}; +MAKE_REFLECT_STRUCT(EventNotification, eventType, data); + +DEFINE_NOTIFICATION_TYPE(lang_eventNotification, EventNotification, "language/eventNotification");
\ No newline at end of file |