about summary refs log tree commit diff
path: root/editors/code/src
diff options
context:
space:
mode:
authorZac Pullar-Strecker <zacmps@gmail.com>2020-08-30 20:02:29 +1200
committerZac Pullar-Strecker <zacmps@gmail.com>2020-10-08 14:59:31 +1300
commitbfda0d25834250a3adbcd0d26953a1cdc6662e7f (patch)
tree439fa97a999360cb5fe4602e7ab26d66aa6a3662 /editors/code/src
parente95e666b106b2f63ab2b350e656c9e8b96441fa7 (diff)
downloadrust-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.ts25
-rw-r--r--editors/code/src/lsp_ext.ts11
-rw-r--r--editors/code/src/main.ts1
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);