添加语言服务
语言配置
要添加一种新语言,需要在 languages.toml
中添加一项 [[language]]
,见 语言配置。
为现有语言添加新语言或语言服务器配置时,请在创建 PR 之前,运行 Cargo xtask docgen
,来将新配置添加到 语言支持 文档。
添加语言服务器配置时,请确保更新 语言服务器 Wiki。
语法配置
如果有适用于该语言的 tree-sitter 语法,请在 languages.toml
中添加一个新的 [[grammar]]
项。
你可以使用 source.path
键而不是指向本地语法仓库绝对路径的 source.git
来进行测试,但在提交 PR 之前,请切换到 source.git
。
查询
你必须对具有语法高亮和缩进等功能的语言添加查询。为此,添加一个目录,路径为 runtime/queries/<name>/
。
tree-sitter 网站提供了更多关于 如何编写查询 的信息。
注意:在计算查询时,第一个匹配的查询优先,这与 Neovim 等其他编辑器不同,在 Neovim 中,最后一个匹配的查询优先于它之前的查询。例子见 该 issue。
常见问题
- 如果在切换分支后运行时出错,则可能需要更新 tree-sitter 语法。运行
hx --grammar fetch
来获取语法,运行hx --grammar build
来构建任何过时的语法。 - 如果解析器出现分段错误(segfaulting),或者你想删除解析器,请确保在
runtime/grammar/<name>.so
中删除已编译的解析器。