LspServer
コードインテリジェンスのための Language Server Protocol 機能を提供し、コード補完やシンボル検索など、IDEに近い機能を実現します。
Constructors
new LspServer()
new LspServer( languageId: LspLanguageId, pathToProject: string, toolboxApi: ToolboxApi, sandboxId: string): LspServer
Parameters:
languageId
LspLanguageIdpathToProject
stringtoolboxApi
ToolboxApisandboxId
string
Returns:
LspServer
Methods
completions()
completions(path: string, position: Position): Promise<CompletionList>
ファイル内の指定位置での補完候補を取得します。
Parameters:
path
string - ファイルパス。相対パスはLSPサーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。position
Position - 補完を要求したファイル内の位置
Returns:
Promise<CompletionList>
- 補完候補のリスト。次を含みます:- isIncomplete: さらに候補が存在する可能性があるかどうか
- items: 補完アイテムのリスト。各アイテムには以下が含まれます:
- label: 挿入するテキスト
- kind: 補完の種類
- detail: アイテムに関する追加情報
- documentation: アイテムのドキュメント
- sortText: リスト内でのソートに用いるテキスト
- filterText: フィルタに用いるテキスト
- insertText: 実際に挿入するテキスト(label と異なる場合)
Example:
// Get completions at a specific positionconst completions = await lsp.completions('workspace/project/src/index.ts', { line: 10, character: 15});completions.items.forEach(item => { console.log(`${item.label} (${item.kind}): ${item.detail}`);});
didClose()
didClose(path: string): Promise<void>
エディタでファイルが閉じられたことを言語サーバーに通知します。これにより、当該ファイルに関連するリソースをクリーンアップできます。
Parameters:
path
string - 閉じられたファイルのパス。相対パスはLSPサーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。
Returns:
Promise<void>
Example:
// When done editing a fileawait lsp.didClose('workspace/project/src/index.ts');
didOpen()
didOpen(path: string): Promise<void>
ファイルが開かれたことを言語サーバーに通知し、そのファイルに対する診断や補完などの言語機能を有効化します。サーバーはファイル内容の追跡を開始し、言語機能を提供します。
Parameters:
path
string - 開いたファイルのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
Returns:
Promise<void>
Example:
// When opening a file for editingawait lsp.didOpen('workspace/project/src/index.ts');// Now can get completions, symbols, etc. for this file
documentSymbols()
documentSymbols(path: string): Promise<LspSymbol[]>
ドキュメントからシンボル情報(関数、クラス、変数など)を取得します。
Parameters:
path
string - シンボルを取得するファイルのパス。相対パスはLSPサーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。
Returns:
Promise<LspSymbol[]>
- ドキュメント内のシンボルのリスト。各シンボルには以下が含まれます:- name: シンボル名
- kind: シンボルの種類(関数、クラス、変数など)
- location: ファイル内のシンボル位置
Example:
// Get all symbols in a fileconst symbols = await lsp.documentSymbols('workspace/project/src/index.ts');symbols.forEach(symbol => { console.log(`${symbol.kind} ${symbol.name}: ${symbol.location}`);});
sandboxSymbols()
sandboxSymbols(query: string): Promise<LspSymbol[]>
クエリ文字列に一致するシンボルをサンドボックス(Daytonaが管理する隔離された一時的な実行環境)全体から検索します。
パラメータ:
query
string - シンボル名に対して照合する検索クエリ
戻り値:
Promise<LspSymbol[]>
- すべてのファイルから一致したシンボルの一覧。各シンボルには以下が含まれます:- name: シンボル名
- kind: シンボルの種類(function、class、variable など)
- location: ファイル内でのシンボルの位置
例:
// "User" を含むすべてのシンボルを検索const symbols = await lsp.sandboxSymbols('User');symbols.forEach(symbol => { console.log(`${symbol.name} (${symbol.kind}) in ${symbol.location}`);});
start()
start(): Promise<void>
Language Server を起動します。ほかの LSP 機能を使う前に呼び出す必要があります。 指定した言語とプロジェクトのために Language Server を初期化します。
戻り値:
Promise<void>
例:
const lsp = await sandbox.createLspServer('typescript', 'workspace/project');await lsp.start(); // サーバーを初期化// これで LSP 操作の準備ができました
stop()
stop(): Promise<void>
Language Server を停止します。不要になったら呼び出して、 システムリソースを解放してください。
戻り値:
Promise<void>
例:
// LSP 機能の利用が終わったらawait lsp.stop(); // リソースをクリーンアップ
workspaceSymbols()
workspaceSymbols(query: string): Promise<LspSymbol[]>
クエリ文字列に一致するシンボルをサンドボックス(Daytonaが管理する隔離された一時的な実行環境)全体から検索します。
パラメータ:
query
string - シンボル名に対して照合する検索クエリ
戻り値:
Promise<LspSymbol[]>
- すべてのファイルから一致したシンボルの一覧。各シンボルには以下が含まれます:- name: シンボル名
- kind: シンボルの種類(function、class、variable など)
- location: ファイル内でのシンボルの位置
非推奨
代わりに sandboxSymbols
を使用してください。このメソッドは今後のバージョンで削除されます。
LspLanguageId
サポート対象の言語サーバータイプ。
列挙メンバー:
JAVASCRIPT
(“javascript”)PYTHON
(“python”)TYPESCRIPT
(“typescript”)
Position
テキストドキュメント内のゼロ基準の位置を表し、 行番号と文字オフセットで指定します。
プロパティ:
character
number - 行内のゼロ基準の文字オフセットline
number - ドキュメント内のゼロ基準の行番号
例:
const position: Position = { line: 10, // 11 行目(ゼロ基準) character: 15 // 行内の 16 文字目(ゼロ基準)};