about summary refs log tree commit diff
path: root/editors/code/src
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2021-05-11 16:15:31 +0200
committerJonas Schievink <jonasschievink@gmail.com>2021-05-11 16:15:31 +0200
commita85a2c4d151d9d2e8fb016d76aad99a6ca88bc75 (patch)
tree636c0727298fd9d60a7b2a639c49dca8ba73d813 /editors/code/src
parent9fa9d166d8141bb9ca4fcf0544c49b903fb85e09 (diff)
downloadrust-a85a2c4d151d9d2e8fb016d76aad99a6ca88bc75.tar.gz
rust-a85a2c4d151d9d2e8fb016d76aad99a6ca88bc75.zip
Allow viewing the crate graph in a webview
Diffstat (limited to 'editors/code/src')
-rw-r--r--editors/code/src/commands.ts8
-rw-r--r--editors/code/src/lsp_ext.ts2
-rw-r--r--editors/code/src/main.ts1
3 files changed, 11 insertions, 0 deletions
diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts
index 4092435dbe7..8ab259af221 100644
--- a/editors/code/src/commands.ts
+++ b/editors/code/src/commands.ts
@@ -429,6 +429,14 @@ export function viewHir(ctx: Ctx): Cmd {
     };
 }
 
+export function viewCrateGraph(ctx: Ctx): Cmd {
+    return async () => {
+        const panel = vscode.window.createWebviewPanel("rust-analyzer.crate-graph", "rust-analyzer crate graph", vscode.ViewColumn.Two);
+        const svg = await ctx.client.sendRequest(ra.viewCrateGraph);
+        panel.webview.html = svg;
+    };
+}
+
 // Opens the virtual file that will show the syntax tree
 //
 // The contents of the file come from the `TextDocumentContentProvider`
diff --git a/editors/code/src/lsp_ext.ts b/editors/code/src/lsp_ext.ts
index f78de894b54..aa745a65ce6 100644
--- a/editors/code/src/lsp_ext.ts
+++ b/editors/code/src/lsp_ext.ts
@@ -27,6 +27,8 @@ export const syntaxTree = new lc.RequestType<SyntaxTreeParams, string, void>("ru
 
 export const viewHir = new lc.RequestType<lc.TextDocumentPositionParams, string, void>("rust-analyzer/viewHir");
 
+export const viewCrateGraph = new lc.RequestType0<string, void>("rust-analyzer/viewCrateGraph");
+
 export interface ExpandMacroParams {
     textDocument: lc.TextDocumentIdentifier;
     position: lc.Position;
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index 643fb643f3a..516322d035d 100644
--- a/editors/code/src/main.ts
+++ b/editors/code/src/main.ts
@@ -106,6 +106,7 @@ async function tryActivate(context: vscode.ExtensionContext) {
     ctx.registerCommand('parentModule', commands.parentModule);
     ctx.registerCommand('syntaxTree', commands.syntaxTree);
     ctx.registerCommand('viewHir', commands.viewHir);
+    ctx.registerCommand('viewCrateGraph', commands.viewCrateGraph);
     ctx.registerCommand('expandMacro', commands.expandMacro);
     ctx.registerCommand('run', commands.run);
     ctx.registerCommand('copyRunCommandLine', commands.copyRunCommandLine);