diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index d75fd694..507e5be6 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -1167,6 +1167,14 @@ pub fn keep_selections(cx: &mut Context) { cx.push_layer(Box::new(prompt)); } +pub fn keep_primary_selection(cx: &mut Context) { + let doc = cx.doc(); + + let range = doc.selection().primary(); + let selection = Selection::single(range.anchor, range.head); + doc.set_selection(selection); +} + // pub fn save(cx: &mut Context) { diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs index a365050f..35b83b1a 100644 --- a/helix-term/src/keymap.rs +++ b/helix-term/src/keymap.rs @@ -209,6 +209,9 @@ pub fn default() -> Keymaps { shift!('J') => commands::join_selections, // TODO: conflicts hover/doc shift!('K') => commands::keep_selections, + // TODO: and another method for inverse + + key!(' ') => commands::keep_primary_selection, // key!('q') => commands::record_macro, // key!('Q') => commands::replay_macro,