载入中...
搜索中...
未找到
eve::dev::LanguageServer类 参考

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]

eve::dev::LanguageServer::LanguageServer ( std::string  projectRoot)
explicit

在文件 LanguageServer.cpp 第 870 行定义.

◆ ~LanguageServer()

eve::dev::LanguageServer::~LanguageServer ( )
default

◆ LanguageServer() [2/2]

eve::dev::LanguageServer::LanguageServer ( const LanguageServer &  )
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 
)

Replaces the whole document (full sync).

在文件 LanguageServer.cpp 第 894 行定义.

引用了 text , 以及 uri.

被这些函数引用 handleMessage().

◆ closeDocument()

void eve::dev::LanguageServer::closeDocument ( std::string  uri)

在文件 LanguageServer.cpp 第 904 行定义.

引用了 uri.

被这些函数引用 handleMessage().

◆ complete()

std::vector< script::ScriptCompletion > eve::dev::LanguageServer::complete ( std::string_view  uri,
lsp::Position  position 
) const

在文件 LanguageServer.cpp 第 910 行定义.

引用了 position , 以及 uri.

被这些函数引用 handleMessage().

◆ definition()

std::optional< lsp::Location > eve::dev::LanguageServer::definition ( std::string_view  uri,
lsp::Position  position 
) const

在文件 LanguageServer.cpp 第 918 行定义.

引用了 position , 以及 uri.

被这些函数引用 handleMessage().

◆ diagnosticsFor()

std::vector< script::ScriptDiagnostic > eve::dev::LanguageServer::diagnosticsFor ( std::string_view  uri) const

在文件 LanguageServer.cpp 第 906 行定义.

引用了 uri.

被这些函数引用 handleMessage().

◆ documentSymbols()

std::vector< script::ScriptSymbolMetadata > eve::dev::LanguageServer::documentSymbols ( std::string_view  uri) const

在文件 LanguageServer.cpp 第 932 行定义.

引用了 uri.

被这些函数引用 handleMessage().

◆ fileUriFromPath()

std::string eve::dev::LanguageServer::fileUriFromPath ( std::string_view  path)
static

Converts an on-disk path to the file:// URI the server expects.

在文件 LanguageServer.cpp 第 875 行定义.

引用了 path , 以及 value.

被这些函数引用 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).

参数
rangeBorrowed; when set, the returned edit covers those lines. @lifetime range is 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 exit notification; 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

在文件 LanguageServer.cpp 第 914 行定义.

引用了 position , 以及 uri.

被这些函数引用 handleMessage().

◆ openDocument()

void eve::dev::LanguageServer::openDocument ( std::string  uri,
std::string  text 
)

在文件 LanguageServer.cpp 第 893 行定义.

引用了 text , 以及 uri.

被这些函数引用 handleMessage().

◆ operator=()

LanguageServer & eve::dev::LanguageServer::operator= ( const LanguageServer &  )
delete

◆ projectRoot()

const std::string & eve::dev::LanguageServer::projectRoot ( ) const
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

在文件 LanguageServer.cpp 第 922 行定义.

引用了 position , 以及 uri.

被这些函数引用 handleMessage().

◆ rename()

std::optional< std::vector< lsp::TextEdit > > eve::dev::LanguageServer::rename ( std::string_view  uri,
lsp::Position  position,
std::string_view  newName 
) const

在文件 LanguageServer.cpp 第 927 行定义.

引用了 position , 以及 uri.

被这些函数引用 handleMessage().

◆ 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

◆ signatureHelp()

std::optional< LanguageSignatureHelp > eve::dev::LanguageServer::signatureHelp ( std::string_view  uri,
lsp::Position  position 
) const

在文件 LanguageServer.cpp 第 937 行定义.

引用了 position , 以及 uri.

被这些函数引用 handleMessage().


该类的文档由以下文件生成: