From ea0e582d8a46b56eb5fd07838184223b54ffa704 Mon Sep 17 00:00:00 2001 From: bb2020 Date: Tue, 6 Apr 2021 00:26:20 +0300 Subject: zsh-clipboard: init at 1.0 (#115450) Co-authored-by: Sandro --- pkgs/shells/zsh/zsh-clipboard/clipboard.plugin.zsh | 40 ++++++++++++++++++++++ pkgs/shells/zsh/zsh-clipboard/default.nix | 27 +++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 pkgs/shells/zsh/zsh-clipboard/clipboard.plugin.zsh create mode 100644 pkgs/shells/zsh/zsh-clipboard/default.nix (limited to 'pkgs/shells/zsh') diff --git a/pkgs/shells/zsh/zsh-clipboard/clipboard.plugin.zsh b/pkgs/shells/zsh/zsh-clipboard/clipboard.plugin.zsh new file mode 100644 index 0000000000000..f1f190ec70c33 --- /dev/null +++ b/pkgs/shells/zsh/zsh-clipboard/clipboard.plugin.zsh @@ -0,0 +1,40 @@ +_cb-yank() { + AA=$(clippaste 2>/dev/null) && CUTBUFFER="$AA" + zle yank +} +_cb-kill-line() { + zle kill-line + printf "%s" "$CUTBUFFER" | clipcopy 2>/dev/null +} +_cb-kill-whole-line() { + zle kill-whole-line + printf "%s" "$CUTBUFFER" | clipcopy 2>/dev/null +} +_cb-kill-word() { + zle kill-word + printf "%s" "$CUTBUFFER" | clipcopy 2>/dev/null +} +_cb-backward-kill-word() { + zle backward-kill-word + printf "%s" "$CUTBUFFER" | clipcopy 2>/dev/null +} +_cb-copy-region-as-kill() { + ## https://unix.stackexchange.com/questions/19947/ + zle copy-region-as-kill + zle set-mark-command -n -1 + printf "%s" "$CUTBUFFER" | clipcopy 2>/dev/null +} + +zle -N _cb-yank +zle -N _cb-kill-line +zle -N _cb-kill-whole-line +zle -N _cb-kill-word +zle -N _cb-backward-kill-word +zle -N _cb-copy-region-as-kill + +bindkey '^y' _cb-yank +bindkey '^k' _cb-kill-line +bindkey '^u' _cb-kill-whole-line +bindkey '\ed' _cb-kill-word +bindkey '\e^?' _cb-backward-kill-word +bindkey '\ew' _cb-copy-region-as-kill diff --git a/pkgs/shells/zsh/zsh-clipboard/default.nix b/pkgs/shells/zsh/zsh-clipboard/default.nix new file mode 100644 index 0000000000000..114e0bfd7dc58 --- /dev/null +++ b/pkgs/shells/zsh/zsh-clipboard/default.nix @@ -0,0 +1,27 @@ +{ stdenv, lib }: + +stdenv.mkDerivation rec { + pname = "zsh-clipboard"; + version = "1.0"; + + src = ./.; + + dontBuild = true; + + installPhase = '' + install -D -m0444 -t $out/share/zsh/plugins/clipboard ./clipboard.plugin.zsh + ''; + + meta = with lib; { + description = "Ohmyzsh plugin that integrates kill-ring with system clipboard"; + longDescription = '' + Ohmyzsh plugin that integrates kill-ring with system clipboard. + + Key bindings for C-y, C-k, C-u, M-d, M-backspace and M-w are rebound. + Behaviour of these keys should not be changed. + ''; + license = licenses.mit; + maintainers = with maintainers; [ bb2020 ]; + platforms = platforms.unix; + }; +} -- cgit 1.4.1