編輯器整合與 LSP#
語言只是一半,另一半是編輯體驗。本章介紹 Veryl 的編輯器整合:官方的 VS Code 擴充與 anyeditor 皆可用的 LSP server(veryl-ls),並藉機回顧三十年來硬體工程師編輯體驗的變遷。
1990 年代的編輯體驗#
先做一個對照實驗。1990 年代的 Verilog 工程師的工具箱是什麼?vi 或 emacs,加上 grep。想找一個訊號在哪裡被改動,靠 grep -n signal_name *.v 一頁頁翻;想理解一個 module 的介面,打開檔案從頭讀 port list;語法錯誤要等模擬器跑完編譯才報出來,而且報錯訊息常常離真正的錯誤有好幾行;縮排與命名風格靠團隊的 style guide 手冊與 code review 的自律。在那個世界裡,「理解一個專案」的成本大部分花在文字搜尋與人腦索引上。商業 IDE(如 Cadence 自家環境)存在,但價格高昂且綁定特定工具鏈。這不是工程師不想用更好的工具,而是 HDL 的市場太小,軟體界投資在編輯器上的基礎建設從未溢出到硬體界。
LSP 改變了遊戲規則#
轉機來自軟體界的制度化發明。Microsoft 於 2016 年提出 Language Server Protocol:把語言智慧(解析、型別檢查、符號索引、補全)實作成一個獨立的 server 程序,編輯器透過 JSON-RPC 與它通訊。從此「做一個好編輯器」與「做一個語言前端」解耦:語言作者只需實作一次 language server,就能同時支援 VS Code、Neovim、Emacs、Zed 等所有支援 LSP 的編輯器。
Veryl 完整採用了這套制度。Veryl 專案內建 language server veryl-ls,它直接複用 veryl 編譯器的解析與型別檢查邏輯,因此編輯器裡看到的錯誤與命令列 veryl check 的結果完全一致——不會出現「編譯器過了但編輯器在亂報」的分裂體驗。
VS Code 設定#
VS Code 的路線最簡單:在擴充市集搜尋並安裝官方的 Veryl 擴充(Veryl — the Veryl language)。擴充會自動偵測 verylup 管理的 toolchain 並啟動 veryl-ls,通常開啟任何 .veryl 檔案即可運作,不需手寫設定。裝好後你立刻得到:
- 即時診斷:語法與型別錯誤在輸入當下以波浪線呈現,懸停顯示詳細訊息。
- 跳轉定義與參照:對任何 module、signal、function 按下 go-to-definition,直接跳到宣告處;find references 列出所有使用點。
- 自動補全:module 名稱、port 名稱、型別、enum variant 都會依上下文補全。
- 格式化:搭配
veryl fmt的同一套格式規則。 - 文件懸停:把游標放在識別字上顯示其型別與文件註解。
Neovim 設定#
Neovim 內建 LSP client,只需要設定 veryl-ls 為 Veryl 檔案的 server。veryl-ls 的執行檔由 verylup 管理,正確的路徑可用 verylup show 或 verylup 的環境確認;以 Neovim 內建 LSP 的 vim.lsp.config/lspconfig 機制,把 veryl_ls 註冊到 filetype veryl,並確保它以專案根目錄(含 Veryl.toml)為工作目錄,diagnostics、completion、definition 即可全部運作。各發行版(LazyVim、kickstart 等)的具體寫法不同,此處不給出可能過時的精確設定碼,讀者請以 Veryl 官方文件的 editor support 頁面為準。
為什麼值得強調#
LSP 對硬體開發的意義不只是「好用一點」。第一,錯誤前移:型別錯誤在敲鍵盤的瞬間被發現,而不是等十幾分鐘的綜合或模擬編譯,回饋迴路從分鐘級縮短到毫秒級。第二,程式碼即資料庫:跳轉與參照讓「理解大型專案」從 grep 體力活變成圖形化導航,這對接手他人 codebase 的工程師是質變。第三,體驗的公平化:過去頂級編輯體驗是商業工具的專利,LSP 把它變成開源生態的公共財——任何新 HDL 只要實作 LSP,就自動享有過去大廠才買得起的環境。Veryl 從第一年起就有完整的 LSP,這在 2010 年以前的新語言是難以想像的。
本章小結#
- Veryl 內建 language server veryl-ls,與編譯器共用同一套解析與型別檢查,診斷結果一致。
- VS Code 安裝官方 Veryl 擴充即可;Neovim 透過內建 LSP client 註冊 veryl-ls。
- 跳轉、補全、即時錯誤把回饋迴路從分鐘級縮到毫秒級。
- 從 vi + grep 的年代到 LSP,是開源公共財對商業專屬工具的取代,也是 HDL 工程文化的現代化。