From 82ff99666291c38f6fb42ff7aa41a02b57c6cf38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Wed, 7 Apr 2021 15:40:15 +0900 Subject: [PATCH] Yank selection when deleting. --- helix-term/src/commands.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index b79f3b793..0d5ffb9c0 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -707,6 +707,18 @@ pub fn extend_line(cx: &mut Context) { // heuristic: append changes to history after each command, unless we're in insert mode fn _delete_selection(doc: &mut Document, view_id: ViewId) { + // first yank the selection + let values: Vec = doc + .selection(view_id) + .fragments(doc.text().slice(..)) + .map(Cow::into_owned) + .collect(); + + // TODO: allow specifying reg + let reg = '"'; + register::set(reg, values); + + // then delete let transaction = Transaction::change_by_selection(doc.text(), doc.selection(view_id), |range| { (range.from(), range.to() + 1, None)