hx-lsp 为 helix 提供 snippets 和 code-actions 功能

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

hx-lsp是一个提供自定义代码片段和Code Action的lsp工具,支持Completion和CodeAction功能。可以通过git clone安装,也可以在helix配置文件中进行配置。支持加载snippets和actions配置文件,格式兼容vscode。

🔎

延伸解读

与 Helix 内置 snippet 系统的关系

hx-lsp 通过 LSP 提供 snippets 补全,但文章提到建议合并 helix#9081 以支持 smart-tab。这意味着当前 hx-lsp 的 snippet 体验可能不如内置系统完整,smart-tab 功能需要额外合并补丁才能获得。读者需注意,若未合并该 PR,snippet 的触发和跳转可能受限。

配置文件格式的注意事项

hx-lsp 的配置文件支持 jsonc 格式,允许 //、/* */ 和 # 注释,但不支持多余的逗号。这与标准 JSON 不同,容易在编辑时因习惯性添加逗号而导致解析失败。修改配置文件后,需要执行 :lsp-restart 重启 LSP 才能重新加载,暂不支持动态加载。

snippets 与 actions 的加载机制

snippets 和 actions 配置文件在 textDocument/didOpen 时加载,且仅加载与 language id 同名的 lang_id.json 文件。加载路径包括全局配置目录和工作区目录。这意味着不同语言需要分别放置对应的 JSON 文件,且文件命名必须与 language id 一致,否则不会生效。

CodeAction 的 catch 字段与 shell 执行

CodeAction 配置中的 catch 字段是一个正则表达式,用于匹配文档内容以决定何时显示该 action。shell 字段支持字符串或字符串数组,执行 shell 脚本。这允许用户将自定义命令集成到编辑器中,但需注意 shell 命令的安全性,避免执行不可信脚本。

❓

Q&A

hx-lsp是什么工具?

hx-lsp是一个提供自定义代码片段和Code Action的LSP工具。

如何安装hx-lsp?

可以通过git clone命令安装hx-lsp,具体命令为:git clone https://github.com/erasin/hx-lsp.git。

hx-lsp支持哪些配置文件格式?

hx-lsp支持jsonc格式的配置文件,允许注释但不支持多余的逗号。

如何在helix中使用hx-lsp?

需要修改helix的语言配置文件languages.toml,添加hx-lsp作为语言服务器。

hx-lsp的snippets格式是什么样的?

snippets格式包括name、prefix、body和description,支持多种类型的内容。

hx-lsp的Code Action格式包含哪些内容?

Code Action格式包括title、catch、shell和description。

➡️

继续阅读