From 30aae2cefb9d068055ca8d250d04a288e3684394 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 13 Apr 2021 20:32:45 +0200 Subject: Move cursor position when using item movers --- editors/code/src/commands.ts | 26 ++++---------------------- editors/code/src/lsp_ext.ts | 2 +- 2 files changed, 5 insertions(+), 23 deletions(-) (limited to 'editors/code/src') diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts index 1a0805bd3..4092435db 100644 --- a/editors/code/src/commands.ts +++ b/editors/code/src/commands.ts @@ -148,34 +148,16 @@ export function moveItem(ctx: Ctx, direction: ra.Direction): Cmd { const client = ctx.client; if (!editor || !client) return; - const edit = await client.sendRequest(ra.moveItem, { + const lcEdits = await client.sendRequest(ra.moveItem, { range: client.code2ProtocolConverter.asRange(editor.selection), textDocument: ctx.client.code2ProtocolConverter.asTextDocumentIdentifier(editor.document), direction }); - if (!edit) return; + if (!lcEdits) return; - let cursor: vscode.Position | null = null; - - await editor.edit((builder) => { - client.protocol2CodeConverter.asTextEdits(edit.edits).forEach((edit: any) => { - builder.replace(edit.range, edit.newText); - - if (direction === ra.Direction.Up) { - if (!cursor || edit.range.end.isBeforeOrEqual(cursor)) { - cursor = edit.range.end; - } - } else { - if (!cursor || edit.range.end.isAfterOrEqual(cursor)) { - cursor = edit.range.end; - } - } - }); - }).then(() => { - const newPosition = cursor ?? editor.selection.start; - editor.selection = new vscode.Selection(newPosition, newPosition); - }); + const edits = client.protocol2CodeConverter.asTextEdits(lcEdits); + await applySnippetTextEdits(editor, edits); }; } diff --git a/editors/code/src/lsp_ext.ts b/editors/code/src/lsp_ext.ts index e453bb9e0..f78de894b 100644 --- a/editors/code/src/lsp_ext.ts +++ b/editors/code/src/lsp_ext.ts @@ -129,7 +129,7 @@ export interface OpenCargoTomlParams { textDocument: lc.TextDocumentIdentifier; } -export const moveItem = new lc.RequestType("experimental/moveItem"); +export const moveItem = new lc.RequestType("experimental/moveItem"); export interface MoveItemParams { textDocument: lc.TextDocumentIdentifier; -- cgit v1.2.3