From c040baae118787cd0573e5b674a2a225f36d898c Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 27 May 2025 02:17:35 -0400 Subject: Refactor LSP tools and add hover functionality MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Split diagnostics tool into separate lsp-diagnostics.ts file - Add new lsp-hover.ts tool for LSP hover information - Update tool exports and session integration - Remove old diagnostics.ts file 🤖 Generated with opencode Co-Authored-By: opencode --- js/src/lsp/client.ts | 7 ++++--- js/src/lsp/index.ts | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) (limited to 'js/src/lsp') diff --git a/js/src/lsp/client.ts b/js/src/lsp/client.ts index e8e7d694e..1de187a94 100644 --- a/js/src/lsp/client.ts +++ b/js/src/lsp/client.ts @@ -144,7 +144,7 @@ export namespace LSPClient { textDocument: { uri: `file://` + input.path, languageId, - version: ++version, + version: Date.now(), text, }, }); @@ -157,7 +157,7 @@ export namespace LSPClient { await connection.sendNotification("textDocument/didChange", { textDocument: { uri: `file://` + input.path, - version: ++version, + version: Date.now(), }, contentChanges: [ { @@ -181,7 +181,7 @@ export namespace LSPClient { event.properties.path === input.path && event.properties.serverID === result.clientID ) { - log.info("refreshed diagnostics", input); + log.info("got diagnostics", input); clearTimeout(timeout); unsub?.(); resolve(); @@ -190,6 +190,7 @@ export namespace LSPClient { }), new Promise((resolve) => { timeout = setTimeout(() => { + log.info("timed out refreshing diagnostics", input); unsub?.(); resolve(); }, 5000); diff --git a/js/src/lsp/index.ts b/js/src/lsp/index.ts index f9d48e7bf..2294d439f 100644 --- a/js/src/lsp/index.ts +++ b/js/src/lsp/index.ts @@ -54,6 +54,24 @@ export namespace LSP { return results; } + export async function hover(input: { + file: string; + line: number; + character: number; + }) { + return run((client) => { + return client.connection.sendRequest("textDocument/hover", { + textDocument: { + uri: `file://${input.file}`, + }, + position: { + line: input.line, + character: input.character, + }, + }); + }); + } + async function run( input: (client: LSPClient.Info) => Promise, ): Promise { -- cgit v1.2.3