工程開發
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 查看