diff options
| author | Zac Pullar-Strecker <zacmps@gmail.com> | 2020-08-30 20:02:29 +1200 |
|---|---|---|
| committer | Zac Pullar-Strecker <zacmps@gmail.com> | 2020-10-08 14:59:31 +1300 |
| commit | bfda0d25834250a3adbcd0d26953a1cdc6662e7f (patch) | |
| tree | 439fa97a999360cb5fe4602e7ab26d66aa6a3662 /editors/code/src | |
| parent | e95e666b106b2f63ab2b350e656c9e8b96441fa7 (diff) | |
| download | rust-bfda0d25834250a3adbcd0d26953a1cdc6662e7f.tar.gz rust-bfda0d25834250a3adbcd0d26953a1cdc6662e7f.zip | |
WIP: Command to open docs under cursor
Diffstat (limited to 'editors/code/src')
| -rw-r--r-- | editors/code/src/commands.ts | 25 | ||||
| -rw-r--r-- | editors/code/src/lsp_ext.ts | 11 | ||||
| -rw-r--r-- | editors/code/src/main.ts | 1 |
3 files changed, 35 insertions, 2 deletions
diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts index 1a90f1b7d9a..b22cd450b07 100644 --- a/editors/code/src/commands.ts +++ b/editors/code/src/commands.ts @@ -419,10 +419,31 @@ export function gotoLocation(ctx: Ctx): Cmd { }; } +export function openDocs(ctx: Ctx): Cmd { + return async () => { + console.log("running openDocs"); + + const client = ctx.client; + const editor = vscode.window.activeTextEditor; + if (!editor || !client) { + console.log("not yet ready"); + return + }; + + const position = editor.selection.active; + const textDocument = { uri: editor.document.uri.toString() }; + + const doclink = await client.sendRequest(ra.openDocs, { position, textDocument }); + + vscode.commands.executeCommand("vscode.open", vscode.Uri.parse(doclink.remote)); + }; + +} + export function resolveCodeAction(ctx: Ctx): Cmd { const client = ctx.client; - return async (params: ra.ResolveCodeActionParams) => { - const item: lc.WorkspaceEdit = await client.sendRequest(ra.resolveCodeAction, params); + return async () => { + const item: lc.WorkspaceEdit = await client.sendRequest(ra.resolveCodeAction, null); if (!item) { return; } diff --git a/editors/code/src/lsp_ext.ts b/editors/code/src/lsp_ext.ts index f286b68a685..569e747bd47 100644 --- a/editors/code/src/lsp_ext.ts +++ b/editors/code/src/lsp_ext.ts @@ -118,3 +118,14 @@ export interface CommandLinkGroup { title?: string; commands: CommandLink[]; } + +export interface DocumentationLink { + remote: string; +} + +export interface OpenDocsParams { + textDocument: lc.TextDocumentIdentifier; + position: lc.Position; +} + +export const openDocs = new lc.RequestType<OpenDocsParams, DocumentationLink, void>('rust-analyzer/openDocs'); diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 2896d90ac94..09543e348a8 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -110,6 +110,7 @@ async function tryActivate(context: vscode.ExtensionContext) { ctx.registerCommand('run', commands.run); ctx.registerCommand('debug', commands.debug); ctx.registerCommand('newDebugConfig', commands.newDebugConfig); + ctx.registerCommand('openDocs', commands.openDocs); defaultOnEnter.dispose(); ctx.registerCommand('onEnter', commands.onEnter); |
