1 import * as vscode from 'vscode';
3 import * as lc from 'vscode-languageclient';
4 import { Ctx, Cmd } from '../ctx';
6 export function parentModule(ctx: Ctx): Cmd {
8 const editor = ctx.activeRustEditor;
11 const request: lc.TextDocumentPositionParams = {
12 textDocument: { uri: editor.document.uri.toString() },
13 position: ctx.client.code2ProtocolConverter.asPosition(
14 editor.selection.active,
17 const response = await ctx.client.sendRequest<lc.Location[]>(
18 'rust-analyzer/parentModule',
21 const loc = response[0];
22 if (loc == null) return;
24 const uri = ctx.client.protocol2CodeConverter.asUri(loc.uri);
25 const range = ctx.client.protocol2CodeConverter.asRange(loc.range);
27 const doc = await vscode.workspace.openTextDocument(uri);
28 const e = await vscode.window.showTextDocument(doc);
29 e.selection = new vscode.Selection(range.start, range.start);
30 e.revealRange(range, vscode.TextEditorRevealType.InCenter);