介绍 minlsp
Source: Dev.to
什么是 minlsp?
minlsp 通过利用 ctags 实现快速且精准的符号索引,为 Nim 代码提供类似 IDE 的功能。不同于需要复杂 AST 分析的传统 LSP 服务器,我构建的 minlsp 采用基于标签的方式,实现快速的符号查找和导航。
通过使用 ntagger 直接提取符号,我创建了一个在保持速度和低内存占用的同时,不牺牲我们最常用功能的服务器。
主要特性
- 闪电般快速: 符号识别和导航几乎是瞬间完成。
- 低资源占用: 它不会干扰你的工作,也不会因为打开一个文件就让风扇狂转。
- 必备 IDE 支持: 包括代码补全、悬停信息、转到定义、查找引用、签名帮助和文档符号。
- 宏抗性: 它不会因为复杂的宏或模板而“卡住”,因为它不需要展开它们来查找符号。
限制与取舍
为了保持 minlsp 的轻量,我做了一些有意的设计选择:
- 无语义分析: 它不执行类型检查或实时错误报告(诊断)。
- 作用域限定的引用: “查找引用”目前只在打开的文件中搜索,而不是整个工作区。
- 无重构功能: 如 “重命名” 或自动代码格式化等功能目前不受支持。
选择合适的工具
如果你需要完整的编译器集成和深度重构,nimlangserver 仍是标准选择。但如果你想要一个响应迅速、“无卡顿”的工作流——尤其是在大型代码库或宏密集的项目中,其他服务器容易卡顿时——minlsp 提供了更快、更稳定的替代方案。
该项目仍在积极开发中。如果你对 LSP 的卡顿感到沮丧,欢迎尝试一下。
资源与链接
- 项目: minlsp on GitHub
- 引擎: ntagger
- 灵感来源: nimlsp Project
- 官方工具: nimlangserver