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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
#pragma once
#include "LibLsp/lsp/lsDocumentUri.h"
#include "LibLsp/lsp/lsAny.h"
#include "lsClientCapabilities.h"
#include "LibLsp/lsp/workspace/workspaceFolders.h"
struct ClientInfo {
std::string name;
boost::optional<std::string> version;
MAKE_SWAP_METHOD(ClientInfo,name,version);
};
MAKE_REFLECT_STRUCT(ClientInfo,name,version);
struct lsInitializeParams {
// The process Id of the parent process that started
// the server. Is null if the process has not been started by another process.
// If the parent process is not alive then the server should exit (see exit
// notification) its process.
boost::optional<int> processId;
/**
* Information about the client
*
* @since 3.15.0
*/
boost::optional<ClientInfo> clientInfo;
/**
* The locale the client is currently showing the user interface
* in. This must not necessarily be the locale of the operating
* system.
*
* Uses IETF language tags as the value's syntax
* (See https://en.wikipedia.org/wiki/IETF_language_tag)
*
* @since 3.16.0
*/
boost::optional<std::string> locale;
// The rootPath of the workspace. Is null
// if no folder is open.
//
// @deprecated in favour of rootUri.
boost::optional<std::string> rootPath;
// The rootUri of the workspace. Is null if no
// folder is open. If both `rootPath` and `rootUri` are set
// `rootUri` wins.
boost::optional<lsDocumentUri> rootUri;
// User provided initialization options.
boost::optional<lsp::Any> initializationOptions;
// The capabilities provided by the client (editor or tool)
lsClientCapabilities capabilities;
/**
* An boost::optional extension to the protocol.
* To tell the server what client (editor) is talking to it.
*/
// @Deprecated
boost::optional< std::string >clientName;
enum class lsTrace {
// NOTE: serialized as a string, one of 'off' | 'messages' | 'verbose';
Off, // off
Messages, // messages
Verbose // verbose
};
// The initial trace setting. If omitted trace is disabled ('off').
lsTrace trace = lsTrace::Off;
/**
* The workspace folders configured in the client when the server starts.
* This property is only available if the client supports workspace folders.
* It can be `null` if the client supports workspace folders but none are
* configured.
*
* Since 3.6.0
*/
boost::optional< std::vector<WorkspaceFolder> > workspaceFolders;
MAKE_SWAP_METHOD(lsInitializeParams,
processId,
rootPath,
rootUri,
initializationOptions,
capabilities, clientName, clientInfo,
trace, workspaceFolders, locale)
};
void Reflect(Reader& reader, lsInitializeParams::lsTrace& value);
void Reflect(Writer& writer, lsInitializeParams::lsTrace& value);
MAKE_REFLECT_STRUCT(lsInitializeParams,
processId,
rootPath,
rootUri,
initializationOptions,
capabilities, clientName, clientInfo,
trace, workspaceFolders, locale)
struct lsInitializeError {
// Indicates whether the client should retry to send the
// initilize request after showing the message provided
// in the ResponseError.
bool retry;
void swap(lsInitializeError& arg) noexcept
{
auto tem = retry;
retry = arg.retry;
arg.retry = tem;
}
};
MAKE_REFLECT_STRUCT(lsInitializeError, retry);
|