From 236abe2e60efd4b50ffe0bd0a9a40d9716c192d5 Mon Sep 17 00:00:00 2001 From: ivan770 Date: Thu, 18 Mar 2021 11:21:23 +0200 Subject: [PATCH] Improve cursor positioning after moving --- editors/code/src/commands.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts index 59ef98ecf9..1a0805bd37 100644 --- a/editors/code/src/commands.ts +++ b/editors/code/src/commands.ts @@ -156,12 +156,25 @@ export function moveItem(ctx: Ctx, direction: ra.Direction): Cmd { if (!edit) 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(() => { - editor.selection = new vscode.Selection(editor.selection.end, editor.selection.end); + const newPosition = cursor ?? editor.selection.start; + editor.selection = new vscode.Selection(newPosition, newPosition); }); }; }