Refactor LSP tools and add hover functionality

- 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 <noreply@opencode.ai>
This commit is contained in:
Dax Raad
2025-05-27 02:17:35 -04:00
parent 754cc66741
commit c040baae11
9 changed files with 117 additions and 15 deletions

View File

@@ -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<void>((resolve) => {
timeout = setTimeout(() => {
log.info("timed out refreshing diagnostics", input);
unsub?.();
resolve();
}, 5000);

View File

@@ -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<T>(
input: (client: LSPClient.Info) => Promise<T>,
): Promise<T[]> {