工程开发
lsp avatar

lsp

atopile 语言服务器 (LSP) 的实现与维护指南,为电子电路设计提供自动完成、代码导航与错误诊断等 IDE 功能。

简介

atopile LSP 模块为 VS Code 和 Cursor 等编辑器提供了即时语言支持,使硬件工程师能透过代码进行电路板设计。它作为 atopile 编译器与编辑器之间的桥梁,确保 .ato 文件中表达的设计意图能透过标准 LSP 接口进行验证与呈现。利用 pygls 框架,该服务器能提供快速的回馈,包含自动完成、跳转至定义、以及错误诊断报告,大幅缩短了硬件开发的迭代周期。

  • 为 .ato 文件提供即时的 IDE 整合功能,包括自动完成、悬停文件与跳转至定义。

  • 具备容错功能的局部编译架构,即使在编辑过程中遇到损坏或不完整的代码,也能确保服务器不会崩溃。

  • 采用基于 GraphView 与 TypeGraph 的每份文件状态管理 (DocumentState),即使在编辑隔离模块时也能维持项目上下文。

  • 高效的缓存机制,储存上一次成功的 BuildFileResult,确保在编辑过程中 UI 界面依然保持响应。

  • 与核心 atopile 编译器及基于 ANTLR 的解析器整合,提供强大的错误报告与诊断功能。

  • 透过标准输入/输出 (stdio) 运行,确保与各编辑器的无缝相容性。

  • 性能标准要求输入响应时间小于 50ms,补全响应时间小于 200ms,以维护流畅的使用体验。

  • 实作严谨的稳健性模式,包括昂贵操作的去抖动 (debouncing) 与重建或重设时 GraphView 资源的系统性清理。

  • 开发者应使用 ato dev test 指令针对 lsp_completion.py 进行整合测试,以获取快速的反馈循环。

  • 主要开发入口位于 src/atopile/lsp/lsp_server.py,辅助工具位于 lsp_utils.py。

  • 请确保所有 LSP 处理程序皆实作全面的异常捕获,以保证服务器在遇到语法错误或延迟执行失败时绝不崩溃。

仓库统计

Star 数
3,312
Fork 数
184
Open Issue 数
138
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年5月1日 09:33
在 GitHub 查看