Add yank_to_clipboard commands, bind to `<space>y` by default

The clipboard special registers are able to retain multiple selections
and also join the value when copying it to the clipboard. So by default
we should yank regularly to the '*' and '+' registers. That will have
the same behavior for the clipboards but will allow pasting multiple
selections if the clipboard doesn't change between yanks.
pull/7793/head
Michael Davis 1 year ago committed by Blaž Hrastnik
parent 4555a6b433
commit d4f9716fbc

@ -291,7 +291,7 @@ This layer is a kludge of mappings, mostly pickers.
| `w` | Enter [window mode](#window-mode) | N/A | | `w` | Enter [window mode](#window-mode) | N/A |
| `p` | Paste system clipboard after selections | `paste_clipboard_after` | | `p` | Paste system clipboard after selections | `paste_clipboard_after` |
| `P` | Paste system clipboard before selections | `paste_clipboard_before` | | `P` | Paste system clipboard before selections | `paste_clipboard_before` |
| `y` | Join and yank selections to clipboard | `yank_joined_to_clipboard` | | `y` | Yank selections to clipboard | `yank_to_clipboard` |
| `Y` | Yank main selection to clipboard | `yank_main_selection_to_clipboard` | | `Y` | Yank main selection to clipboard | `yank_main_selection_to_clipboard` |
| `R` | Replace selections by clipboard contents | `replace_selections_with_clipboard` | | `R` | Replace selections by clipboard contents | `replace_selections_with_clipboard` |
| `/` | Global search in workspace folder | `global_search` | | `/` | Global search in workspace folder | `global_search` |

@ -375,6 +375,8 @@ impl MappableCommand {
later, "Move forward in history", later, "Move forward in history",
commit_undo_checkpoint, "Commit changes to new checkpoint", commit_undo_checkpoint, "Commit changes to new checkpoint",
yank, "Yank selection", yank, "Yank selection",
yank_to_clipboard, "Yank selections to clipboard",
yank_to_primary_clipboard, "Yank selections to primary clipboard",
yank_joined, "Join and yank selections", yank_joined, "Join and yank selections",
yank_joined_to_clipboard, "Join and yank selections to clipboard", yank_joined_to_clipboard, "Join and yank selections to clipboard",
yank_main_selection_to_clipboard, "Yank main selection to clipboard", yank_main_selection_to_clipboard, "Yank main selection to clipboard",
@ -3762,6 +3764,16 @@ fn yank(cx: &mut Context) {
exit_select_mode(cx); exit_select_mode(cx);
} }
fn yank_to_clipboard(cx: &mut Context) {
yank_impl(cx.editor, '*');
exit_select_mode(cx);
}
fn yank_to_primary_clipboard(cx: &mut Context) {
yank_impl(cx.editor, '+');
exit_select_mode(cx);
}
fn yank_impl(editor: &mut Editor, register: char) { fn yank_impl(editor: &mut Editor, register: char) {
let (view, doc) = current!(editor); let (view, doc) = current!(editor);
let text = doc.text().slice(..); let text = doc.text().slice(..);

@ -265,7 +265,7 @@ pub fn default() -> HashMap<Mode, KeyTrie> {
"C-v" | "v" => vsplit_new, "C-v" | "v" => vsplit_new,
}, },
}, },
"y" => yank_joined_to_clipboard, "y" => yank_to_clipboard,
"Y" => yank_main_selection_to_clipboard, "Y" => yank_main_selection_to_clipboard,
"p" => paste_clipboard_after, "p" => paste_clipboard_after,
"P" => paste_clipboard_before, "P" => paste_clipboard_before,

Loading…
Cancel
Save