Improve cursor positioning after moving

This commit is contained in:
ivan770 2021-03-18 11:21:23 +02:00
parent f62944f416
commit 236abe2e60
No known key found for this signature in database
GPG key ID: D8C4BD5AE4D9CC4D

View file

@ -156,12 +156,25 @@ export function moveItem(ctx: Ctx, direction: ra.Direction): Cmd {
if (!edit) return; if (!edit) return;
let cursor: vscode.Position | null = null;
await editor.edit((builder) => { await editor.edit((builder) => {
client.protocol2CodeConverter.asTextEdits(edit.edits).forEach((edit: any) => { client.protocol2CodeConverter.asTextEdits(edit.edits).forEach((edit: any) => {
builder.replace(edit.range, edit.newText); 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(() => { }).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);
}); });
}; };
} }