5#ifndef HOSHI_LANG_LSP_PROTOCOL_H
6#define HOSHI_LANG_LSP_PROTOCOL_H
15using json = nlohmann::json;
35 j.at(
"line").get_to(p.
line);
49 j.at(
"start").get_to(r.
start);
50 j.at(
"end").get_to(r.
end);
63 j.at(
"uri").get_to(l.
uri);
64 j.at(
"range").get_to(l.
range);
80 j.at(
"uri").get_to(t.
uri);
93 j.at(
"uri").get_to(t.
uri);
94 j.at(
"version").get_to(t.
version);
105 j.at(
"uri").get_to(t.
uri);
107 j.at(
"version").get_to(t.
version);
108 j.at(
"text").get_to(t.
text);
118 if (j.contains(
"range") && !j[
"range"].is_null())
120 if (j.contains(
"rangeLength") && !j[
"rangeLength"].is_null())
122 j.at(
"text").get_to(t.
text);
166 j.at(
"position").get_to(p.
position);
207 j =
json{{
"label", c.
label}, {
"kind",
static_cast<int>(c.
kind)}};
234 j.at(
"position").get_to(p.
position);
267 j.at(
"position").get_to(p.
position);
292 j.at(
"position").get_to(p.
position);
293 if (j.contains(
"context") && j[
"context"].contains(
"includeDeclaration"))
343 {
"kind",
static_cast<int>(s.
kind)},
372 {
"severity",
static_cast<int>(d.
severity)},
446 std::string
name =
"hoshi-lsp";
void to_json(json &j, const Position &p)
void from_json(const json &j, Position &p)
std::vector< Location > DefinitionResult
std::optional< std::string > sortText
std::optional< std::string > detail
std::optional< std::string > insertText
std::optional< std::string > documentation
std::vector< CompletionItem > items
std::vector< std::string > triggerCharacters
TextDocumentIdentifier textDocument
TextDocumentIdentifier textDocument
std::vector< TextDocumentContentChangeEvent > contentChanges
VersionedTextDocumentIdentifier textDocument
TextDocumentIdentifier textDocument
TextDocumentItem textDocument
std::vector< DocumentSymbol > children
TextDocumentIdentifier textDocument
std::optional< Range > range
ServerCapabilities capabilities
DiagnosticSeverity severity
std::optional< std::string > source
std::vector< LspDiagnostic > diagnostics
TextDocumentIdentifier textDocument
bool documentSymbolProvider
CompletionOptions completionProvider
TextDocumentSyncOptions textDocumentSync
std::optional< Range > range
std::optional< int > rangeLength