コンテンツにスキップ

LspServer

コードインテリジェンスのための Language Server Protocol 機能を提供し、コード補完やシンボル検索など、IDEに近い機能を実現します。

Constructors

new LspServer()

new LspServer(
languageId: LspLanguageId,
pathToProject: string,
toolboxApi: ToolboxApi,
sandboxId: string): LspServer

Parameters:

  • languageId LspLanguageId
  • pathToProject string
  • toolboxApi ToolboxApi
  • sandboxId 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 position
const 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 file
await 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 editing
await 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 file
const 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 文字目(ゼロ基準)
};