mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 21:43:37 +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 { Ctx, Cmd } from '../ctx';
|
||||||
|
|
||||||
import { analyzerStatus } from './analyzer_status';
|
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 {
|
export {
|
||||||
analyzerStatus,
|
analyzerStatus,
|
||||||
expandMacro,
|
expandMacro,
|
||||||
|
@ -27,5 +41,6 @@ export {
|
||||||
inlayHints,
|
inlayHints,
|
||||||
collectGarbage,
|
collectGarbage,
|
||||||
run,
|
run,
|
||||||
runSingle
|
runSingle,
|
||||||
|
showReferences,
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,7 +8,7 @@ export function run(ctx: Ctx): Cmd {
|
||||||
|
|
||||||
return async () => {
|
return async () => {
|
||||||
const editor = ctx.activeRustEditor;
|
const editor = ctx.activeRustEditor;
|
||||||
if (!editor) return
|
if (!editor) return;
|
||||||
|
|
||||||
const textDocument: lc.TextDocumentIdentifier = {
|
const textDocument: lc.TextDocumentIdentifier = {
|
||||||
uri: editor.document.uri.toString(),
|
uri: editor.document.uri.toString(),
|
||||||
|
@ -43,13 +43,13 @@ export function run(ctx: Ctx): Cmd {
|
||||||
prevRunnable = item;
|
prevRunnable = item;
|
||||||
const task = createTask(item.runnable);
|
const task = createTask(item.runnable);
|
||||||
return await vscode.tasks.executeTask(task);
|
return await vscode.tasks.executeTask(task);
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function runSingle(ctx: Ctx): Cmd {
|
export function runSingle(ctx: Ctx): Cmd {
|
||||||
return async (runnable: Runnable) => {
|
return async (runnable: Runnable) => {
|
||||||
const editor = ctx.activeRustEditor;
|
const editor = ctx.activeRustEditor;
|
||||||
if (!editor) return
|
if (!editor) return;
|
||||||
|
|
||||||
const task = createTask(runnable);
|
const task = createTask(runnable);
|
||||||
task.group = vscode.TaskGroup.Build;
|
task.group = vscode.TaskGroup.Build;
|
||||||
|
@ -60,7 +60,7 @@ export function runSingle(ctx: Ctx): Cmd {
|
||||||
};
|
};
|
||||||
|
|
||||||
return vscode.tasks.executeTask(task);
|
return vscode.tasks.executeTask(task);
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
interface RunnablesParams {
|
interface RunnablesParams {
|
||||||
|
|
|
@ -13,6 +13,8 @@ let ctx!: Ctx;
|
||||||
|
|
||||||
export async function activate(context: vscode.ExtensionContext) {
|
export async function activate(context: vscode.ExtensionContext) {
|
||||||
ctx = new Ctx(context);
|
ctx = new Ctx(context);
|
||||||
|
|
||||||
|
// Commands which invokes manually via command pallet, shortcut, etc.
|
||||||
ctx.registerCommand('analyzerStatus', commands.analyzerStatus);
|
ctx.registerCommand('analyzerStatus', commands.analyzerStatus);
|
||||||
ctx.registerCommand('collectGarbage', commands.collectGarbage);
|
ctx.registerCommand('collectGarbage', commands.collectGarbage);
|
||||||
ctx.registerCommand('matchingBrace', commands.matchingBrace);
|
ctx.registerCommand('matchingBrace', commands.matchingBrace);
|
||||||
|
@ -21,28 +23,15 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||||
ctx.registerCommand('syntaxTree', commands.syntaxTree);
|
ctx.registerCommand('syntaxTree', commands.syntaxTree);
|
||||||
ctx.registerCommand('expandMacro', commands.expandMacro);
|
ctx.registerCommand('expandMacro', commands.expandMacro);
|
||||||
ctx.registerCommand('run', commands.run);
|
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) {
|
function disposeOnDeactivation(disposable: vscode.Disposable) {
|
||||||
context.subscriptions.push(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) {
|
if (Server.config.enableEnhancedTyping) {
|
||||||
ctx.overrideCommand('type', commands.onEnter);
|
ctx.overrideCommand('type', commands.onEnter);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue