summaryrefslogtreecommitdiff
path: root/graphics/asymptote/LspCpp/include/LibLsp/lsp/windows/MessageNotify.h
blob: 8499304f5582ee7ec798443dbbd00e190e8eb14b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#pragma once

#include "LibLsp/JsonRpc/NotificationInMessage.h"
#include "LibLsp/JsonRpc/RequestInMessage.h"
#include "LibLsp/JsonRpc/lsResponseMessage.h"

// Show a message to the user.
enum class lsMessageType : int { Error = 1, Warning = 2, Info = 3, Log = 4 };
MAKE_REFLECT_TYPE_PROXY(lsMessageType)
struct MessageParams {
/**
  * The message type.
 */
	
	lsMessageType type = lsMessageType::Error;
	
/**
 * The actual message.
 */
	std::string message;
	
	void swap(MessageParams& arg) noexcept {
		lsMessageType temp = type;
		type = arg.type;
		arg.type = temp;
		message.swap(arg.message);
	}
};
MAKE_REFLECT_STRUCT(MessageParams, type, message)

 /**
  * The log message notification is send from the server to the client to ask
  * the client to log a particular message.
  */
DEFINE_NOTIFICATION_TYPE(Notify_LogMessage, MessageParams, "window/logMessage")


/**
 * 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(Notify_ShowMessage, MessageParams, "window/showMessage")



/**
 * The show message request is sent from a server to a client to ask the client to display a particular message in the
 * user class. In addition to the show message notification the request allows to pass actions and to wait for an
 * answer from the client.
 */
struct MessageActionItem {
	/**
	 * A short title like 'Retry', 'Open Log' etc.
	 */

	std::string title;
	MAKE_SWAP_METHOD(MessageActionItem, title)
};
MAKE_REFLECT_STRUCT(MessageActionItem, title);


struct ShowMessageRequestParams :public MessageParams {
	/**
	 * The message action items to present.
	 */
	std::vector<MessageActionItem> actions;
	
	MAKE_SWAP_METHOD(ShowMessageRequestParams, type, message, actions)

};
MAKE_REFLECT_STRUCT(ShowMessageRequestParams, type, message, actions)

/**
* The show message request is sent from a server to a client to ask the
* client to display a particular message in the user interface. In addition
* to the show message notification the request allows to pass actions and
* to wait for an answer from the client.
*/

DEFINE_REQUEST_RESPONSE_TYPE(WindowShowMessage, ShowMessageRequestParams, MessageActionItem, "window/showMessage")