diff options
| author | geetanshjuneja <ronitjuneja2002@gmail.com> | 2025-03-10 18:05:10 +0530 |
|---|---|---|
| committer | geetanshjuneja <ronitjuneja2002@gmail.com> | 2025-04-07 21:14:01 +0530 |
| commit | ac3a2b9ca931dad54a190df9bf91d193aaf9f67a (patch) | |
| tree | c091e61072131c5f2ff3f9d5232d9dbfd2c26d30 /src/tools/rust-analyzer/editors/code | |
| parent | 50f3e01399ca15ed582e62c040a21ad4aee494c8 (diff) | |
added children modules
Diffstat (limited to 'src/tools/rust-analyzer/editors/code')
4 files changed, 52 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/editors/code/package.json b/src/tools/rust-analyzer/editors/code/package.json index a04886270b4..daabab49ece 100644 --- a/src/tools/rust-analyzer/editors/code/package.json +++ b/src/tools/rust-analyzer/editors/code/package.json @@ -171,6 +171,11 @@ "category": "rust-analyzer" }, { + "command": "rust-analyzer.childrenModules", + "title": "Locate children modules", + "category": "rust-analyzer" + }, + { "command": "rust-analyzer.joinLines", "title": "Join lines", "category": "rust-analyzer" @@ -3374,6 +3379,10 @@ "when": "inRustProject" }, { + "command": "rust-analyzer.childrenModule", + "when": "inRustProject" + }, + { "command": "rust-analyzer.joinLines", "when": "inRustProject" }, diff --git a/src/tools/rust-analyzer/editors/code/src/commands.ts b/src/tools/rust-analyzer/editors/code/src/commands.ts index 4e614d32057..a78e935152c 100644 --- a/src/tools/rust-analyzer/editors/code/src/commands.ts +++ b/src/tools/rust-analyzer/editors/code/src/commands.ts @@ -266,6 +266,43 @@ export function parentModule(ctx: CtxInit): Cmd { }; } +export function childrenModules(ctx: CtxInit): Cmd { + return async () => { + const editor = vscode.window.activeTextEditor; + if (!editor) return; + if (!(isRustDocument(editor.document) || isCargoTomlDocument(editor.document))) return; + + const client = ctx.client; + + const locations = await client.sendRequest(ra.childrenModules, { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(editor.document), + position: client.code2ProtocolConverter.asPosition(editor.selection.active), + }); + if (!locations) return; + + if (locations.length === 1) { + const loc = unwrapUndefinable(locations[0]); + + const uri = client.protocol2CodeConverter.asUri(loc.targetUri); + const range = client.protocol2CodeConverter.asRange(loc.targetRange); + + const doc = await vscode.workspace.openTextDocument(uri); + const e = await vscode.window.showTextDocument(doc); + e.selection = new vscode.Selection(range.start, range.start); + e.revealRange(range, vscode.TextEditorRevealType.InCenter); + } else { + const uri = editor.document.uri.toString(); + const position = client.code2ProtocolConverter.asPosition(editor.selection.active); + await showReferencesImpl( + client, + uri, + position, + locations.map((loc) => lc.Location.create(loc.targetUri, loc.targetRange)), + ); + } + }; +} + export function openCargoToml(ctx: CtxInit): Cmd { return async () => { const editor = ctx.activeRustEditor; diff --git a/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts b/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts index af5129ac963..1cf55f6613a 100644 --- a/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts +++ b/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts @@ -194,6 +194,11 @@ export const parentModule = new lc.RequestType< lc.LocationLink[] | null, void >("experimental/parentModule"); +export const childrenModules = new lc.RequestType< + lc.TextDocumentPositionParams, + lc.LocationLink[] | null, + void +>("experimental/childrenModule"); export const runnables = new lc.RequestType<RunnablesParams, Runnable[], void>( "experimental/runnables", ); diff --git a/src/tools/rust-analyzer/editors/code/src/main.ts b/src/tools/rust-analyzer/editors/code/src/main.ts index 451294e26f6..95a52d710cc 100644 --- a/src/tools/rust-analyzer/editors/code/src/main.ts +++ b/src/tools/rust-analyzer/editors/code/src/main.ts @@ -158,6 +158,7 @@ function createCommands(): Record<string, CommandFactory> { matchingBrace: { enabled: commands.matchingBrace }, joinLines: { enabled: commands.joinLines }, parentModule: { enabled: commands.parentModule }, + childrenModules: { enabled: commands.childrenModules }, viewHir: { enabled: commands.viewHir }, viewMir: { enabled: commands.viewMir }, interpretFunction: { enabled: commands.interpretFunction }, |
