mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-08-21 19:04:24 +00:00
Allow locate parent module action in cargo toml
This commit is contained in:
parent
60c5449120
commit
39044fe39c
3 changed files with 83 additions and 8 deletions
|
@ -8,7 +8,7 @@ import { applySnippetWorkspaceEdit, applySnippetTextEdits } from './snippets';
|
|||
import { spawnSync } from 'child_process';
|
||||
import { RunnableQuickPick, selectRunnable, createTask, createArgs } from './run';
|
||||
import { AstInspector } from './ast_inspector';
|
||||
import { isRustDocument, sleep, isRustEditor } from './util';
|
||||
import { isRustDocument, isCargoTomlDocument, sleep, isRustEditor } from './util';
|
||||
import { startDebugSession, makeDebugConfig } from './debug';
|
||||
import { LanguageClient } from 'vscode-languageclient/node';
|
||||
|
||||
|
@ -185,10 +185,10 @@ export function onEnter(ctx: Ctx): Cmd {
|
|||
|
||||
export function parentModule(ctx: Ctx): Cmd {
|
||||
return async () => {
|
||||
const editor = ctx.activeRustEditor;
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
const client = ctx.client;
|
||||
if (!editor || !client) return;
|
||||
|
||||
if (!(isRustDocument(editor.document) || isCargoTomlDocument(editor.document))) return;
|
||||
const locations = await client.sendRequest(ra.parentModule, {
|
||||
textDocument: ctx.client.code2ProtocolConverter.asTextDocumentIdentifier(editor.document),
|
||||
position: client.code2ProtocolConverter.asPosition(
|
||||
|
|
|
@ -104,6 +104,11 @@ export function isRustDocument(document: vscode.TextDocument): document is RustD
|
|||
return document.languageId === 'rust' && document.uri.scheme === 'file';
|
||||
}
|
||||
|
||||
export function isCargoTomlDocument(document: vscode.TextDocument): document is RustDocument {
|
||||
// ideally `document.languageId` should be 'toml' but user maybe not have toml extension installed
|
||||
return document.uri.scheme === 'file' && document.fileName.endsWith('Cargo.toml');
|
||||
}
|
||||
|
||||
export function isRustEditor(editor: vscode.TextEditor): editor is RustEditor {
|
||||
return isRustDocument(editor.document);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue