Language Server
@cosense-toolbox/lsp は .csn / .csnx を解析し、Language Server Protocol を通じてエディターに機能を提供します。記法の判定には同じリポジトリのパーサーを使うため、エディターの診断とサイトビルドで解釈がそろいます。
機能
Language Server は、semantic tokens による色付け、ページ名の補完、定義ジャンプ、リンク切れの診断を提供します。
単体で起動する場合は標準入出力モードを使います。
Shellcsn-lsp --stdioエディターがサーバーを起動する設定方法は VS Code 拡張 と Zed 拡張 をご覧ください。
エディターの設定
サーバーの設定は
initialization_options で渡します。
JSON{ "sources": ["src/content"], "unresolvedLinks": "warning", "frontmatter": true}sources はページを探すディレクトリで、省略するとワークスペース全体を対象にします。unresolvedLinks は off、hint、information、warning、error のいずれかです。frontmatter を true にすると、先頭の YAML frontmatter をページタイトルとして読みません。リンク切れを検査する
csn-lsp check は、エディターと同じ規則で指定ディレクトリ内のページを調べます。CI に組み込むと、存在しないページへのリンクを検出できます。
Shellcsn-lsp check src/content src/pages既定ではリンク切れが1件でもあると終了コード
1 になります。報告だけにしたい場合は --unresolved-links warning を指定します。コマンド固有の既定値は error です。ライブラリとして使う
semantic tokens の計算・エンコード機能は
@cosense-toolbox/lsp/tokens、補完と定義ジャンプの判定は @cosense-toolbox/lsp/completion から利用できます。設定項目、CLI オプション、API の全一覧は LSP パッケージの README をご覧ください。