Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

YSSCore::Editor::LangServer Class

class YSSCore::Editor::LangServer

LangServer是一个插件模块,提供特定编程语言的辅助语言功能. 详情...

头文件: #include <LangServer>
自以下版本: YSS 0.13.0
继承自: Visindigo::General::PluginModule

公开成员函数

(自 YSS 0.13.0 引入) LangServer(const QString &name, const QString &id, YSSCore::Editor::EditorPlugin *plugin, const QString &lang_id, QStringList ext)
(自 YSS 0.13.0 引入) virtual ~LangServer()
(自 YSS 0.13.0 引入) virtual YSSCore::Editor::FormatNormalizer *createFormatNormalizer(YSSCore::Editor::TextEdit *doc)
(自 YSS 0.13.0 引入) virtual YSSCore::Editor::SyntaxHighlighter *createHighlighter(YSSCore::Editor::TextEdit *doc) = 0
(自 YSS 0.13.0 引入) virtual YSSCore::Editor::HoverInfoProvider *createHoverInfoProvider(YSSCore::Editor::TextEdit *doc)
(自 YSS 0.13.0 引入) virtual YSSCore::Editor::TabCompleterProvider *createTabCompleter(YSSCore::Editor::TextEdit *doc)
(自 YSS 0.13.0 引入) QStringList getLangExts()
(自 YSS 0.13.0 引入) QString getLangID()

详细说明

LangServer是一个插件模块,提供特定编程语言的辅助语言功能,如语法高亮、Tab补全、鼠标悬停提示等。 这个类本身主要作为记录类,如果需要实现特定的功能,你需要分别实现createHighlightercreateTabCompletercreateHoverInfoProvider等函数, 并且在这些函数中返回对应功能的实例。

所有虚函数中,只有createHighlighter强制要求实现。其他均默认返回nullptr,表示不提供该功能。 但如果确实不需要Highlighter,请在实现中返回nullptr。

成员函数文档

[since YSS 0.13.0] LangServer::LangServer(const QString &name, const QString &id, YSSCore::Editor::EditorPlugin *plugin, const QString &lang_id, QStringList ext)

name 模块名称 id 模块ID plugin 所属插件 lang_id 语言ID ext 支持的文件扩展名列表

构造函数需要提供语言服务器的名称、ID、所属插件、语言ID和支持的文件扩展名列表。 其中,语言ID是一个唯一标识符,用于区分不同的语言服务器;文件扩展名列表则用于指定该语言服务器支持哪些类型的文件。

这个function 从 YSS 0.13.0 开始支持。

[virtual noexcept, since YSS 0.13.0] LangServer::~LangServer()

析构函数

这个function 从 YSS 0.13.0 开始支持。

[virtual, since YSS 0.13.0] YSSCore::Editor::FormatNormalizer *LangServer::createFormatNormalizer(YSSCore::Editor::TextEdit *doc)

doc 需要格式化功能的文本编辑器

return 所创建的格式化规范提供者实例。默认实现返回nullptr,表示不提供格式化规范功能。

传入该函数的TextEdit将会接管FormatNormalizer的所有权,且独占使用。 因此,你应该为每一次调用都创建新的FormatNormalizer实例,而不是复用同一个实例。 如果你需要在不同的文档之间共享某些数据(如变量名称、函数定义等),请另外创建一个数据管理类,并在FormatNormalizer中引用它。

这个function 从 YSS 0.13.0 开始支持。

[pure virtual, since YSS 0.13.0] YSSCore::Editor::SyntaxHighlighter *LangServer::createHighlighter(YSSCore::Editor::TextEdit *doc)

doc 需要语法高亮功能的文本编辑器

return 所创建的语法高亮器实例。默认实现返回nullptr,表示不提供语法高亮功能。

传入该函数的TextEdit将会接管SyntaxHighlighter的所有权,且独占使用。 因此,你应该为每一次调用都创建新的SyntaxHighlighter实例,而不是复用同一个实例。 如果你需要在不同的文档之间共享某些数据(如变量名称、函数定义等),请另外创建一个数据管理类,并在SyntaxHighlighter中引用它。

这个function 从 YSS 0.13.0 开始支持。

[virtual, since YSS 0.13.0] YSSCore::Editor::HoverInfoProvider *LangServer::createHoverInfoProvider(YSSCore::Editor::TextEdit *doc)

doc 需要鼠标悬停提示功能的文本编辑器

return 所创建的鼠标悬停提示提供者实例。默认实现返回nullptr,表示不提供鼠标悬停提示功能。

传入该函数的TextEdit将会接管HoverInfoProvider的所有权,且独占使用。 因此,你应该为每一次调用都创建新的HoverInfoProvider实例,而不是复用同一个实例。 如果你需要在不同的文档之间共享某些数据(如变量名称、函数定义等),请另外创建一个数据管理类,并在HoverInfoProvider中引用它。

这个function 从 YSS 0.13.0 开始支持。

[virtual, since YSS 0.13.0] YSSCore::Editor::TabCompleterProvider *LangServer::createTabCompleter(YSSCore::Editor::TextEdit *doc)

doc 需要Tab补全功能的文本编辑器

return 所创建的Tab补全提供者实例。默认实现返回nullptr,表示不提供Tab补全功能。

传入该函数的TextEdit将会接管TabCompleterProvider的所有权,且独占使用。 因此,你应该为每一次调用都创建新的TabCompleterProvider实例,而不是复用同一个实例。 如果你需要在不同的文档之间共享某些数据(如变量名称、函数定义等),请另外创建一个数据管理类,并在TabCompleterProvider中引用它。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QStringList LangServer::getLangExts()

return 支持的文件扩展名列表

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString LangServer::getLangID()

return 语言ID

这个function 从 YSS 0.13.0 开始支持。