diff options
Diffstat (limited to 'editors/code')
-rw-r--r-- | editors/code/src/commands/index.ts | 2 | ||||
-rw-r--r-- | editors/code/src/commands/run_single.ts | 63 | ||||
-rw-r--r-- | editors/code/src/commands/runnables.ts | 16 | ||||
-rw-r--r-- | editors/code/src/extension.ts | 2 |
4 files changed, 17 insertions, 66 deletions
diff --git a/editors/code/src/commands/index.ts b/editors/code/src/commands/index.ts index c8bb55591..33e2b34a2 100644 --- a/editors/code/src/commands/index.ts +++ b/editors/code/src/commands/index.ts | |||
@@ -4,7 +4,6 @@ import * as joinLines from './join_lines'; | |||
4 | import * as matchingBrace from './matching_brace'; | 4 | import * as matchingBrace from './matching_brace'; |
5 | import * as onEnter from './on_enter'; | 5 | import * as onEnter from './on_enter'; |
6 | import * as parentModule from './parent_module'; | 6 | import * as parentModule from './parent_module'; |
7 | import * as runSingle from './run_single'; | ||
8 | import * as runnables from './runnables'; | 7 | import * as runnables from './runnables'; |
9 | import * as syntaxTree from './syntaxTree'; | 8 | import * as syntaxTree from './syntaxTree'; |
10 | 9 | ||
@@ -14,7 +13,6 @@ export { | |||
14 | joinLines, | 13 | joinLines, |
15 | matchingBrace, | 14 | matchingBrace, |
16 | parentModule, | 15 | parentModule, |
17 | runSingle, | ||
18 | runnables, | 16 | runnables, |
19 | syntaxTree, | 17 | syntaxTree, |
20 | onEnter | 18 | onEnter |
diff --git a/editors/code/src/commands/run_single.ts b/editors/code/src/commands/run_single.ts deleted file mode 100644 index 855bcdb06..000000000 --- a/editors/code/src/commands/run_single.ts +++ /dev/null | |||
@@ -1,63 +0,0 @@ | |||
1 | import * as vscode from 'vscode'; | ||
2 | import * as lc from 'vscode-languageclient'; | ||
3 | |||
4 | interface Runnable { | ||
5 | range: lc.Range; | ||
6 | label: string; | ||
7 | bin: string; | ||
8 | args: string[]; | ||
9 | env: { [index: string]: string }; | ||
10 | } | ||
11 | |||
12 | interface CargoTaskDefinition extends vscode.TaskDefinition { | ||
13 | type: 'cargo'; | ||
14 | label: string; | ||
15 | command: string; | ||
16 | args: string[]; | ||
17 | env?: { [key: string]: string }; | ||
18 | } | ||
19 | |||
20 | function createTask(spec: Runnable): vscode.Task { | ||
21 | const TASK_SOURCE = 'Rust'; | ||
22 | const definition: CargoTaskDefinition = { | ||
23 | type: 'cargo', | ||
24 | label: 'cargo', | ||
25 | command: spec.bin, | ||
26 | args: spec.args, | ||
27 | env: spec.env | ||
28 | }; | ||
29 | |||
30 | const execOption: vscode.ShellExecutionOptions = { | ||
31 | cwd: '.', | ||
32 | env: definition.env | ||
33 | }; | ||
34 | const exec = new vscode.ShellExecution(definition.command, definition.args, execOption); | ||
35 | |||
36 | const f = vscode.workspace.workspaceFolders![0]; | ||
37 | const t = new vscode.Task( | ||
38 | definition, | ||
39 | f, | ||
40 | definition.label, | ||
41 | TASK_SOURCE, | ||
42 | exec, | ||
43 | ['$rustc'] | ||
44 | ); | ||
45 | t.presentationOptions.clear = true | ||
46 | return t; | ||
47 | } | ||
48 | |||
49 | export async function handle(runnable: Runnable) { | ||
50 | const editor = vscode.window.activeTextEditor; | ||
51 | if (editor == null || editor.document.languageId !== 'rust') { | ||
52 | return; | ||
53 | } | ||
54 | |||
55 | const task = createTask(runnable); | ||
56 | task.group = vscode.TaskGroup.Build; | ||
57 | task.presentationOptions = { | ||
58 | reveal: vscode.TaskRevealKind.Always, | ||
59 | panel: vscode.TaskPanelKind.Dedicated, | ||
60 | }; | ||
61 | |||
62 | return vscode.tasks.executeTask(task); | ||
63 | } \ No newline at end of file | ||
diff --git a/editors/code/src/commands/runnables.ts b/editors/code/src/commands/runnables.ts index be17c8944..f9a4e2fc9 100644 --- a/editors/code/src/commands/runnables.ts +++ b/editors/code/src/commands/runnables.ts | |||
@@ -103,3 +103,19 @@ export async function handle() { | |||
103 | return await vscode.tasks.executeTask(task); | 103 | return await vscode.tasks.executeTask(task); |
104 | } | 104 | } |
105 | } | 105 | } |
106 | |||
107 | export async function handleSingle(runnable: Runnable) { | ||
108 | const editor = vscode.window.activeTextEditor; | ||
109 | if (editor == null || editor.document.languageId !== 'rust') { | ||
110 | return; | ||
111 | } | ||
112 | |||
113 | const task = createTask(runnable); | ||
114 | task.group = vscode.TaskGroup.Build; | ||
115 | task.presentationOptions = { | ||
116 | reveal: vscode.TaskRevealKind.Always, | ||
117 | panel: vscode.TaskPanelKind.Dedicated, | ||
118 | }; | ||
119 | |||
120 | return vscode.tasks.executeTask(task); | ||
121 | } \ No newline at end of file | ||
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts index acbb1f734..9edfb13b5 100644 --- a/editors/code/src/extension.ts +++ b/editors/code/src/extension.ts | |||
@@ -56,7 +56,7 @@ export function activate(context: vscode.ExtensionContext) { | |||
56 | overrideCommand('type', commands.onEnter.handle); | 56 | overrideCommand('type', commands.onEnter.handle); |
57 | 57 | ||
58 | // Unlike the above this does not send requests to the language server | 58 | // Unlike the above this does not send requests to the language server |
59 | registerCommand('ra-lsp.run-single', commands.runSingle.handle); | 59 | registerCommand('ra-lsp.run-single', commands.runnables.handleSingle); |
60 | 60 | ||
61 | // Notifications are events triggered by the language server | 61 | // Notifications are events triggered by the language server |
62 | const allNotifications: Iterable< | 62 | const allNotifications: Iterable< |