言語サーバー
言語サーバー
Section titled “言語サーバー”Wippyには、LuaコードのIDE機能を提供するビルトインLSP (Language Server Protocol) サーバーが含まれています。サーバーはWippyランタイムの一部として動作し、TCPまたはHTTP経由でエディタに接続します。
- 型認識による補完候補を含むコード補完
- 型とシグネチャを表示するホバー情報
- 定義へ移動
- 参照の検索
- ドキュメントおよびワークスペースシンボル
- コール階層 (呼び出し元と呼び出し先)
- リアルタイム診断 (パースエラー、型エラー)
- 関数パラメータのシグネチャヘルプ
.wippy.yaml でLSPサーバーを有効にします:
version: "1.0"
lua: type_system: enabled: true
lsp: enabled: true address: ":7777"設定フィールド
Section titled “設定フィールド”| フィールド | デフォルト | 説明 |
|---|---|---|
enabled | false | TCPサーバーを有効化 |
address | :7777 | TCPリッスンアドレス |
http_enabled | false | HTTPトランスポートを有効化 |
http_address | :7778 | HTTPリッスンアドレス |
http_path | /lsp | HTTPエンドポイントパス |
http_allow_origin | * | CORS許可オリジン |
max_message_bytes | 8388608 | 受信メッセージの最大サイズ (バイト) |
TCPトランスポート
Section titled “TCPトランスポート”TCPサーバーは、標準的なLSPメッセージフレーミング (Content-Lengthヘッダー) を持つJSON-RPC 2.0を使用します。これはエディタ統合の主要なトランスポートです。
HTTPトランスポート
Section titled “HTTPトランスポート”HTTPトランスポートはJSON-RPCペイロードを持つPOSTリクエストを受け付けます。ブラウザベースのエディタやWebツールに便利です。クロスオリジンアクセスのためにCORSヘッダーが含まれます。
lsp: enabled: true http_enabled: true http_address: ":7778" http_path: "/lsp" http_allow_origin: "*"ドキュメントURIスキーム
Section titled “ドキュメントURIスキーム”LSPサーバーはレジストリエントリを識別するために wippy:// URIスキームを使用します:
wippy://namespace:entry_nameエディタはこれらのURIをレジストリ内のエントリIDにマッピングします。wippy:// スキームと生の namespace:entry_name 形式の両方が受け付けられます。
インデクシング
Section titled “インデクシング”LSPサーバーは高速な検索のためにすべてのコードエントリのインデックスを維持します。インデクシングは複数のワーカーを使用してバックグラウンドで行われます。
主な動作:
- エントリは依存関係の順序でインデックスされます (依存先が先)
- 変更により影響を受けるエントリの再インデックスがトリガーされます
- 未保存のエディタの変更はオーバーレイに保存されます
- インデックスはインクリメンタルです - 変更されたエントリのみが再処理されます
サポートされるLSPメソッド
Section titled “サポートされるLSPメソッド”| メソッド | 説明 |
|---|---|
initialize | 機能ネゴシエーション |
textDocument/didOpen | 開いたドキュメントの追跡 |
textDocument/didChange | ドキュメント全体の同期 |
textDocument/didClose | ドキュメントの解放 |
textDocument/hover | カーソル位置の型情報 |
textDocument/definition | 定義へジャンプ |
textDocument/references | すべての参照を検索 |
textDocument/completion | コード補完 |
textDocument/signatureHelp | 関数シグネチャ |
textDocument/diagnostic | ファイル診断 |
textDocument/documentSymbol | ファイルシンボル |
workspace/symbol | グローバルシンボル検索 |
textDocument/prepareCallHierarchy | コール階層 |
callHierarchy/incomingCalls | 呼び出し元の検索 |
callHierarchy/outgoingCalls | 呼び出し先の検索 |
補完エンジンはコードグラフを通じて型を解決します。以下を提供します:
.および:の後のメンバー補完 (フィールド、メソッド)- ローカル変数の補完
- モジュールレベルのシンボル補完
- トリガー文字:
.、:
診断はインデクシング中に計算され、以下を含みます:
- パースエラー (構文の問題)
- 型チェックエラー (不一致、未定義のシンボル)
- 重大度レベル: error、warning、information、hint
診断はドキュメントオーバーレイシステムを通じて入力中にリアルタイムで更新されます。