diff options
Diffstat (limited to 'editors/code/src')
-rw-r--r-- | editors/code/src/commands/index.ts | 4 | ||||
-rw-r--r-- | editors/code/src/commands/on_enter.ts | 17 | ||||
-rw-r--r-- | editors/code/src/extension.ts | 21 |
3 files changed, 28 insertions, 14 deletions
diff --git a/editors/code/src/commands/index.ts b/editors/code/src/commands/index.ts index d78a64c3e..33e2b34a2 100644 --- a/editors/code/src/commands/index.ts +++ b/editors/code/src/commands/index.ts | |||
@@ -2,7 +2,7 @@ import * as applySourceChange from './apply_source_change'; | |||
2 | import * as extendSelection from './extend_selection'; | 2 | import * as extendSelection from './extend_selection'; |
3 | import * as joinLines from './join_lines'; | 3 | import * as joinLines from './join_lines'; |
4 | import * as matchingBrace from './matching_brace'; | 4 | import * as matchingBrace from './matching_brace'; |
5 | import * as on_enter 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 runnables from './runnables'; | 7 | import * as runnables from './runnables'; |
8 | import * as syntaxTree from './syntaxTree'; | 8 | import * as syntaxTree from './syntaxTree'; |
@@ -15,5 +15,5 @@ export { | |||
15 | parentModule, | 15 | parentModule, |
16 | runnables, | 16 | runnables, |
17 | syntaxTree, | 17 | syntaxTree, |
18 | on_enter, | 18 | onEnter |
19 | }; | 19 | }; |
diff --git a/editors/code/src/commands/on_enter.ts b/editors/code/src/commands/on_enter.ts index 2666797fe..fe6aca63d 100644 --- a/editors/code/src/commands/on_enter.ts +++ b/editors/code/src/commands/on_enter.ts | |||
@@ -1,7 +1,10 @@ | |||
1 | import * as vscode from 'vscode'; | 1 | import * as vscode from 'vscode'; |
2 | import * as lc from 'vscode-languageclient'; | 2 | import * as lc from 'vscode-languageclient'; |
3 | import { Server } from '../server'; | 3 | import { Server } from '../server'; |
4 | import { handle as applySourceChange, SourceChange } from './apply_source_change'; | 4 | import { |
5 | handle as applySourceChange, | ||
6 | SourceChange | ||
7 | } from './apply_source_change'; | ||
5 | 8 | ||
6 | interface OnEnterParams { | 9 | interface OnEnterParams { |
7 | textDocument: lc.TextDocumentIdentifier; | 10 | textDocument: lc.TextDocumentIdentifier; |
@@ -10,12 +13,18 @@ interface OnEnterParams { | |||
10 | 13 | ||
11 | export async function handle(event: { text: string }): Promise<boolean> { | 14 | export async function handle(event: { text: string }): Promise<boolean> { |
12 | const editor = vscode.window.activeTextEditor; | 15 | const editor = vscode.window.activeTextEditor; |
13 | if (editor == null || editor.document.languageId !== 'rust' || event.text !== '\n') { | 16 | if ( |
17 | editor == null || | ||
18 | editor.document.languageId !== 'rust' || | ||
19 | event.text !== '\n' | ||
20 | ) { | ||
14 | return false; | 21 | return false; |
15 | } | 22 | } |
16 | const request: OnEnterParams = { | 23 | const request: OnEnterParams = { |
17 | textDocument: { uri: editor.document.uri.toString() }, | 24 | textDocument: { uri: editor.document.uri.toString() }, |
18 | position: Server.client.code2ProtocolConverter.asPosition(editor.selection.active), | 25 | position: Server.client.code2ProtocolConverter.asPosition( |
26 | editor.selection.active | ||
27 | ) | ||
19 | }; | 28 | }; |
20 | const change = await Server.client.sendRequest<undefined | SourceChange>( | 29 | const change = await Server.client.sendRequest<undefined | SourceChange>( |
21 | 'm/onEnter', | 30 | 'm/onEnter', |
@@ -25,5 +34,5 @@ export async function handle(event: { text: string }): Promise<boolean> { | |||
25 | return false; | 34 | return false; |
26 | } | 35 | } |
27 | await applySourceChange(change); | 36 | await applySourceChange(change); |
28 | return true | 37 | return true; |
29 | } | 38 | } |
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts index 3e5767535..ff8f23c7a 100644 --- a/editors/code/src/extension.ts +++ b/editors/code/src/extension.ts | |||
@@ -16,21 +16,26 @@ export function activate(context: vscode.ExtensionContext) { | |||
16 | disposeOnDeactivation(vscode.commands.registerCommand(name, f)); | 16 | disposeOnDeactivation(vscode.commands.registerCommand(name, f)); |
17 | } | 17 | } |
18 | function overrideCommand( | 18 | function overrideCommand( |
19 | |||
20 | name: string, | 19 | name: string, |
21 | f: (...args: any[]) => Promise<boolean>, | 20 | f: (...args: any[]) => Promise<boolean> |
22 | ) { | 21 | ) { |
23 | const defaultCmd = `default:${name}`; | 22 | const defaultCmd = `default:${name}`; |
24 | const original = async (...args: any[]) => await vscode.commands.executeCommand(defaultCmd, ...args); | 23 | const original = async (...args: any[]) => |
24 | await vscode.commands.executeCommand(defaultCmd, ...args); | ||
25 | |||
25 | registerCommand(name, async (...args: any[]) => { | 26 | registerCommand(name, async (...args: any[]) => { |
26 | const editor = vscode.window.activeTextEditor; | 27 | const editor = vscode.window.activeTextEditor; |
27 | if (!editor || !editor.document || editor.document.languageId !== 'rust') { | 28 | if ( |
29 | !editor || | ||
30 | !editor.document || | ||
31 | editor.document.languageId !== 'rust' | ||
32 | ) { | ||
28 | return await original(...args); | 33 | return await original(...args); |
29 | } | 34 | } |
30 | if (!await f(...args)) { | 35 | if (!(await f(...args))) { |
31 | return await original(...args); | 36 | return await original(...args); |
32 | } | 37 | } |
33 | }) | 38 | }); |
34 | } | 39 | } |
35 | 40 | ||
36 | // Commands are requests from vscode to the language server | 41 | // Commands are requests from vscode to the language server |
@@ -44,12 +49,12 @@ export function activate(context: vscode.ExtensionContext) { | |||
44 | 'ra-lsp.applySourceChange', | 49 | 'ra-lsp.applySourceChange', |
45 | commands.applySourceChange.handle | 50 | commands.applySourceChange.handle |
46 | ); | 51 | ); |
47 | overrideCommand('type', commands.on_enter.handle) | 52 | overrideCommand('type', commands.onEnter.handle); |
48 | 53 | ||
49 | // Notifications are events triggered by the language server | 54 | // Notifications are events triggered by the language server |
50 | const allNotifications: Iterable< | 55 | const allNotifications: Iterable< |
51 | [string, lc.GenericNotificationHandler] | 56 | [string, lc.GenericNotificationHandler] |
52 | > = [['m/publishDecorations', notifications.publishDecorations.handle]]; | 57 | > = [['m/publishDecorations', notifications.publishDecorations.handle]]; |
53 | 58 | ||
54 | // The events below are plain old javascript events, triggered and handled by vscode | 59 | // The events below are plain old javascript events, triggered and handled by vscode |
55 | vscode.window.onDidChangeActiveTextEditor( | 60 | vscode.window.onDidChangeActiveTextEditor( |