In-process EveScript language service used by eve language-server and by unit tests. Owns a dedicated Runtime so it can compile without a running game. JSON-RPC is optional; typed methods are the canonical API.
更多...
#include <LanguageServer.hpp>
类 | |
| struct | Impl |
Public 成员函数 | |
| LanguageServer (std::string projectRoot) | |
| ~LanguageServer () | |
| LanguageServer (const LanguageServer &)=delete | |
| LanguageServer & | operator= (const LanguageServer &)=delete |
| const std::string & | projectRoot () const noexcept |
Absolute project root used to resolve game:/ URIs. | |
| void | openDocument (std::string uri, std::string text) |
| void | changeDocument (std::string uri, std::string text) |
| Replaces the whole document (full sync). | |
| void | changeDocument (std::string uri, lsp::Range range, std::string text) |
| Applies one incremental LSP range edit, then re-indexes. | |
| void | closeDocument (std::string uri) |
| std::vector< script::ScriptDiagnostic > | diagnosticsFor (std::string_view uri) const |
| std::vector< script::ScriptCompletion > | complete (std::string_view uri, lsp::Position position) const |
| std::optional< script::ScriptHover > | hover (std::string_view uri, lsp::Position position) const |
| std::optional< lsp::Location > | definition (std::string_view uri, lsp::Position position) const |
| std::vector< lsp::Location > | references (std::string_view uri, lsp::Position position, bool includeDeclaration) const |
| std::optional< std::vector< lsp::TextEdit > > | rename (std::string_view uri, lsp::Position position, std::string_view newName) const |
| std::vector< script::ScriptSymbolMetadata > | documentSymbols (std::string_view uri) const |
| std::optional< LanguageSignatureHelp > | signatureHelp (std::string_view uri, lsp::Position position) const |
| std::vector< lsp::TextEdit > | formatDocument (std::string_view uri, lsp::FormatOptions options={}, const lsp::Range *range=nullptr) const |
| Formats an open document (brace/bracket indent, trailing whitespace). | |
| std::vector< lsp::FoldingRange > | foldingRanges (std::string_view uri) const |
| Foldable brace, bracket, and block-comment ranges in an open document. | |
| std::vector< lsp::SemanticToken > | semanticTokens (std::string_view uri) const |
| Semantic highlight tokens for an open document (class / function / variable / …). | |
| LspDispatch | handleMessage (std::string_view jsonBody, std::ostream &output) |
| Dispatches one LSP JSON-RPC body and appends Content-Length frames. | |
| int | runStdio (std::istream &input, std::ostream &output) |
| Stdio LSP host. Returns 0 after a clean shutdown. | |
静态 Public 成员函数 | |
| static std::string | fileUriFromPath (std::string_view path) |
Converts an on-disk path to the file:// URI the server expects. | |
详细描述
In-process EveScript language service used by eve language-server and by unit tests. Owns a dedicated Runtime so it can compile without a running game. JSON-RPC is optional; typed methods are the canonical API.
在文件 LanguageServer.hpp 第 51 行定义.
构造及析构函数说明
◆ LanguageServer() [1/2]
|
explicit |
在文件 LanguageServer.cpp 第 870 行定义.
◆ ~LanguageServer()
|
default |
◆ LanguageServer() [2/2]
|
delete |
成员函数说明
◆ changeDocument() [1/2]
| void eve::dev::LanguageServer::changeDocument | ( | std::string | uri, |
| lsp::Range | range, | ||
| std::string | text | ||
| ) |
Applies one incremental LSP range edit, then re-indexes.
在文件 LanguageServer.cpp 第 895 行定义.
引用了 eve::dev::lsp::applyIncremental(), found, range, text , 以及 uri.
◆ changeDocument() [2/2]
| void eve::dev::LanguageServer::changeDocument | ( | std::string | uri, |
| std::string | text | ||
| ) |
◆ closeDocument()
| void eve::dev::LanguageServer::closeDocument | ( | std::string | uri | ) |
◆ complete()
| std::vector< script::ScriptCompletion > eve::dev::LanguageServer::complete | ( | std::string_view | uri, |
| lsp::Position | position | ||
| ) | const |
◆ definition()
| std::optional< lsp::Location > eve::dev::LanguageServer::definition | ( | std::string_view | uri, |
| lsp::Position | position | ||
| ) | const |
◆ diagnosticsFor()
| std::vector< script::ScriptDiagnostic > eve::dev::LanguageServer::diagnosticsFor | ( | std::string_view | uri | ) | const |
◆ documentSymbols()
| std::vector< script::ScriptSymbolMetadata > eve::dev::LanguageServer::documentSymbols | ( | std::string_view | uri | ) | const |
◆ fileUriFromPath()
|
static |
Converts an on-disk path to the file:// URI the server expects.
在文件 LanguageServer.cpp 第 875 行定义.
被这些函数引用 eve::dev::LanguageServer::Impl::close() , 以及 eve::dev::LanguageServer::Impl::indexProject().
◆ foldingRanges()
| std::vector< lsp::FoldingRange > eve::dev::LanguageServer::foldingRanges | ( | std::string_view | uri | ) | const |
Foldable brace, bracket, and block-comment ranges in an open document.
在文件 LanguageServer.cpp 第 965 行定义.
引用了 eve::dev::lsp::foldingRanges(), source , 以及 uri.
被这些函数引用 handleMessage().
◆ formatDocument()
| std::vector< lsp::TextEdit > eve::dev::LanguageServer::formatDocument | ( | std::string_view | uri, |
| lsp::FormatOptions | options = {}, |
||
| const lsp::Range * | range = nullptr |
||
| ) | const |
Formats an open document (brace/bracket indent, trailing whitespace).
- 参数
-
range Borrowed; when set, the returned edit covers those lines. @lifetime rangeis used only for the call; it is not retained. @thread Caller thread; no shared mutable state.
在文件 LanguageServer.cpp 第 941 行定义.
引用了 eve::dev::lsp::coveringLines(), eve::dev::lsp::documentRange(), eve::dev::lsp::formatEveScript(), eve::dev::lsp::lastLineIndex(), eve::dev::lsp::TextEdit::location, eve::dev::lsp::TextEdit::newText, options, range, eve::dev::lsp::Location::range, eve::dev::lsp::sliceLines(), source, eve::dev::lsp::Location::uri , 以及 uri.
被这些函数引用 handleMessage().
◆ handleMessage()
| LspDispatch eve::dev::LanguageServer::handleMessage | ( | std::string_view | jsonBody, |
| std::ostream & | output | ||
| ) |
Dispatches one LSP JSON-RPC body and appends Content-Length frames.
- 返回
- LspDispatch::Exit after an
exitnotification; otherwise Continue.
在文件 LanguageServer.cpp 第 1003 行定义.
引用了 changeDocument(), closeDocument(), complete(), context, eve::dev::Continue, definition(), diagnosticsFor(), documentSymbols(), error, eve::script::Error, eve::dev::Exit, foldingRanges(), formatDocument(), hover(), index, line, method, openDocument(), options, output, params, position, range, references(), rename(), request, semantic, semanticTokens(), signatureHelp(), text, uri , 以及 value.
被这些函数引用 runStdio().
◆ hover()
| std::optional< script::ScriptHover > eve::dev::LanguageServer::hover | ( | std::string_view | uri, |
| lsp::Position | position | ||
| ) | const |
◆ openDocument()
| void eve::dev::LanguageServer::openDocument | ( | std::string | uri, |
| std::string | text | ||
| ) |
◆ operator=()
|
delete |
◆ projectRoot()
|
noexcept |
Absolute project root used to resolve game:/ URIs.
在文件 LanguageServer.cpp 第 873 行定义.
◆ references()
| std::vector< lsp::Location > eve::dev::LanguageServer::references | ( | std::string_view | uri, |
| lsp::Position | position, | ||
| bool | includeDeclaration | ||
| ) | const |
◆ rename()
| std::optional< std::vector< lsp::TextEdit > > eve::dev::LanguageServer::rename | ( | std::string_view | uri, |
| lsp::Position | position, | ||
| std::string_view | newName | ||
| ) | const |
◆ runStdio()
| int eve::dev::LanguageServer::runStdio | ( | std::istream & | input, |
| std::ostream & | output | ||
| ) |
Stdio LSP host. Returns 0 after a clean shutdown.
在文件 LanguageServer.cpp 第 1279 行定义.
引用了 body, eve::dev::Exit, handleMessage(), input , 以及 output.
被这些函数引用 eve::cmd::Cmdline::LanguageServer().
◆ semanticTokens()
| std::vector< lsp::SemanticToken > eve::dev::LanguageServer::semanticTokens | ( | std::string_view | uri | ) | const |
Semantic highlight tokens for an open document (class / function / variable / …).
在文件 LanguageServer.cpp 第 970 行定义.
引用了 bindings, eve::dev::lsp::SemanticTypes::Class, eve::dev::lsp::SemanticMods::DefaultLibrary, found, eve::dev::lsp::SemanticTypes::Function, eve::dev::lsp::SemanticTypes::Keyword, eve::dev::lsp::SemanticTypes::Method, eve::dev::lsp::SemanticTypes::Namespace, eve::dev::lsp::SemanticTypes::Property, token, tokens, uri , 以及 eve::dev::lsp::SemanticTypes::Variable.
被这些函数引用 handleMessage().
◆ signatureHelp()
| std::optional< LanguageSignatureHelp > eve::dev::LanguageServer::signatureHelp | ( | std::string_view | uri, |
| lsp::Position | position | ||
| ) | const |
该类的文档由以下文件生成:
- src/engine/devtools/LanguageServer.hpp
- src/engine/devtools/LanguageServer.cpp