mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +00:00
Move all commands to ctx
This commit is contained in:
parent
da80b6c1e1
commit
3d008a78d0
3 changed files with 26 additions and 22 deletions
|
@ -1,3 +1,6 @@
|
|||
import * as vscode from 'vscode';
|
||||
import * as lc from 'vscode-languageclient';
|
||||
|
||||
import { Ctx, Cmd } from '../ctx';
|
||||
|
||||
import { analyzerStatus } from './analyzer_status';
|
||||
|
@ -16,6 +19,17 @@ function collectGarbage(ctx: Ctx): Cmd {
|
|||
};
|
||||
}
|
||||
|
||||
function showReferences(ctx: Ctx): Cmd {
|
||||
return (uri: string, position: lc.Position, locations: lc.Location[]) => {
|
||||
vscode.commands.executeCommand(
|
||||
'editor.action.showReferences',
|
||||
vscode.Uri.parse(uri),
|
||||
ctx.client.protocol2CodeConverter.asPosition(position),
|
||||
locations.map(ctx.client.protocol2CodeConverter.asLocation),
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
analyzerStatus,
|
||||
expandMacro,
|
||||
|
@ -27,5 +41,6 @@ export {
|
|||
inlayHints,
|
||||
collectGarbage,
|
||||
run,
|
||||
runSingle
|
||||
runSingle,
|
||||
showReferences,
|
||||
};
|
||||
|
|
|
@ -8,7 +8,7 @@ export function run(ctx: Ctx): Cmd {
|
|||
|
||||
return async () => {
|
||||
const editor = ctx.activeRustEditor;
|
||||
if (!editor) return
|
||||
if (!editor) return;
|
||||
|
||||
const textDocument: lc.TextDocumentIdentifier = {
|
||||
uri: editor.document.uri.toString(),
|
||||
|
@ -43,13 +43,13 @@ export function run(ctx: Ctx): Cmd {
|
|||
prevRunnable = item;
|
||||
const task = createTask(item.runnable);
|
||||
return await vscode.tasks.executeTask(task);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export function runSingle(ctx: Ctx): Cmd {
|
||||
return async (runnable: Runnable) => {
|
||||
const editor = ctx.activeRustEditor;
|
||||
if (!editor) return
|
||||
if (!editor) return;
|
||||
|
||||
const task = createTask(runnable);
|
||||
task.group = vscode.TaskGroup.Build;
|
||||
|
@ -60,7 +60,7 @@ export function runSingle(ctx: Ctx): Cmd {
|
|||
};
|
||||
|
||||
return vscode.tasks.executeTask(task);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
interface RunnablesParams {
|
||||
|
|
|
@ -13,6 +13,8 @@ let ctx!: Ctx;
|
|||
|
||||
export async function activate(context: vscode.ExtensionContext) {
|
||||
ctx = new Ctx(context);
|
||||
|
||||
// Commands which invokes manually via command pallet, shortcut, etc.
|
||||
ctx.registerCommand('analyzerStatus', commands.analyzerStatus);
|
||||
ctx.registerCommand('collectGarbage', commands.collectGarbage);
|
||||
ctx.registerCommand('matchingBrace', commands.matchingBrace);
|
||||
|
@ -21,28 +23,15 @@ export async function activate(context: vscode.ExtensionContext) {
|
|||
ctx.registerCommand('syntaxTree', commands.syntaxTree);
|
||||
ctx.registerCommand('expandMacro', commands.expandMacro);
|
||||
ctx.registerCommand('run', commands.run);
|
||||
ctx.registerCommand('runSingle', commands.runSingle); // Internal action for lenses
|
||||
|
||||
// Internal commands which are invoked by the server.
|
||||
ctx.registerCommand('runSingle', commands.runSingle);
|
||||
ctx.registerCommand('showReferences', commands.showReferences);
|
||||
|
||||
function disposeOnDeactivation(disposable: vscode.Disposable) {
|
||||
context.subscriptions.push(disposable);
|
||||
}
|
||||
|
||||
function registerCommand(name: string, f: any) {
|
||||
disposeOnDeactivation(vscode.commands.registerCommand(name, f));
|
||||
}
|
||||
|
||||
registerCommand(
|
||||
'rust-analyzer.showReferences',
|
||||
(uri: string, position: lc.Position, locations: lc.Location[]) => {
|
||||
vscode.commands.executeCommand(
|
||||
'editor.action.showReferences',
|
||||
vscode.Uri.parse(uri),
|
||||
Server.client.protocol2CodeConverter.asPosition(position),
|
||||
locations.map(Server.client.protocol2CodeConverter.asLocation),
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
if (Server.config.enableEnhancedTyping) {
|
||||
ctx.overrideCommand('type', commands.onEnter);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue