diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-05-25 12:29:47 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-25 12:29:47 +0000 |
| commit | 8686d0b0ac765c2144b22b897de1d8fda68ecc6e (patch) | |
| tree | 8cf69f49502a9f2b08d2d2975be79f54f9a04ccb /editors/code/src | |
| parent | e4f91bfa578e57c1ef4be3343ebb4e8950e5dae6 (diff) | |
| parent | 76e170c3d0d0784c0e612c5849798c65a2034f29 (diff) | |
| download | rust-8686d0b0ac765c2144b22b897de1d8fda68ecc6e.tar.gz rust-8686d0b0ac765c2144b22b897de1d8fda68ecc6e.zip | |
Merge #4607
4607: Less rust-analyzer specific onEnter r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Diffstat (limited to 'editors/code/src')
| -rw-r--r-- | editors/code/src/commands.ts | 10 | ||||
| -rw-r--r-- | editors/code/src/rust-analyzer-api.ts | 3 | ||||
| -rw-r--r-- | editors/code/src/snippets.ts | 3 |
3 files changed, 9 insertions, 7 deletions
diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts index 573af5aa580..e080301405d 100644 --- a/editors/code/src/commands.ts +++ b/editors/code/src/commands.ts @@ -3,7 +3,7 @@ import * as lc from 'vscode-languageclient'; import * as ra from './rust-analyzer-api'; import { Ctx, Cmd } from './ctx'; -import { applySnippetWorkspaceEdit } from './snippets'; +import { applySnippetWorkspaceEdit, applySnippetTextEdits } from './snippets'; import { spawnSync } from 'child_process'; import { RunnableQuickPick, selectRunnable, createTask } from './run'; import { AstInspector } from './ast_inspector'; @@ -102,7 +102,7 @@ export function onEnter(ctx: Ctx): Cmd { if (!editor || !client) return false; - const change = await client.sendRequest(ra.onEnter, { + const lcEdits = await client.sendRequest(ra.onEnter, { textDocument: { uri: editor.document.uri.toString() }, position: client.code2ProtocolConverter.asPosition( editor.selection.active, @@ -111,10 +111,10 @@ export function onEnter(ctx: Ctx): Cmd { // client.logFailedRequest(OnEnterRequest.type, error); return null; }); - if (!change) return false; + if (!lcEdits) return false; - const workspaceEdit = client.protocol2CodeConverter.asWorkspaceEdit(change); - await applySnippetWorkspaceEdit(workspaceEdit); + const edits = client.protocol2CodeConverter.asTextEdits(lcEdits); + await applySnippetTextEdits(editor, edits); return true; } diff --git a/editors/code/src/rust-analyzer-api.ts b/editors/code/src/rust-analyzer-api.ts index 900c5cd5bce..c10c0fa7894 100644 --- a/editors/code/src/rust-analyzer-api.ts +++ b/editors/code/src/rust-analyzer-api.ts @@ -67,8 +67,7 @@ export interface JoinLinesParams { } export const joinLines = new lc.RequestType<JoinLinesParams, lc.TextEdit[], unknown>('experimental/joinLines'); - -export const onEnter = request<lc.TextDocumentPositionParams, Option<lc.WorkspaceEdit>>("onEnter"); +export const onEnter = new lc.RequestType<lc.TextDocumentPositionParams, lc.TextEdit[], unknown>('experimental/onEnter'); export interface RunnablesParams { textDocument: lc.TextDocumentIdentifier; diff --git a/editors/code/src/snippets.ts b/editors/code/src/snippets.ts index 794530162dc..bcb3f2cc761 100644 --- a/editors/code/src/snippets.ts +++ b/editors/code/src/snippets.ts @@ -8,7 +8,10 @@ export async function applySnippetWorkspaceEdit(edit: vscode.WorkspaceEdit) { const editor = vscode.window.visibleTextEditors.find((it) => it.document.uri.toString() === uri.toString()); if (!editor) return; + await applySnippetTextEdits(editor, edits); +} +export async function applySnippetTextEdits(editor: vscode.TextEditor, edits: vscode.TextEdit[]) { let selection: vscode.Selection | undefined = undefined; let lineDelta = 0; await editor.edit((builder) => { |
