Language Server


@cosense-toolbox/lsp は .csn / .csnx を解析し、Language Server Protocol を通じてエディターに機能を提供します。
記法の判定には同じリポジトリのパーサーを使うため、エディターの診断とサイトビルドで解釈がそろいます。

機能


Language Server は、semantic tokens による色付け、ページ名の補完、定義ジャンプ、リンク切れの診断を提供します。

単体で起動する場合は標準入出力モードを使います。

Shell
csn-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 に組み込むと、存在しないページへのリンクを検出できます。

Shell
csn-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 をご覧ください。