e0213342d12808e916dd02f8ac28509e71dc3283

Author
Þórhallur Sverrisson <toti@toti.is>
Committer
GitHub <noreply@github.com>
Date

Message

feat(vi-mode): add option to disable clipboard (#12037)

Diff

 1diff --git a/plugins/vi-mode/README.md b/plugins/vi-mode/README.md
 2index 821c12adbc5b63191db421526ed3b8e130a8ab88..84ba301052b858463293c8d06933e3942c2dead5 100644
 3--- a/plugins/vi-mode/README.md
 4+++ b/plugins/vi-mode/README.md
 5@@ -37,6 +37,8 @@ plugins=(... vi-mode)
 6 - `INSERT_MODE_INDICATOR`: controls the string displayed when the shell is in insert mode.
 7   See [Mode indicators](#mode-indicators) for details.
 8 
 9+- `VI_MODE_DISABLE_CLIPBOARD`: If set, disables clipboard integration on yank/paste
10+
11 ## Mode indicators
12 
13 *Normal mode* is indicated with a red `<<<` mark at the right prompt, when it
14diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh
15index 8fefaf86c6756922ea6762f369f90a078e24b2fe..5c104f7bb5d240ecbac93daf9ea97376c056e152 100644
16--- a/plugins/vi-mode/vi-mode.plugin.zsh
17+++ b/plugins/vi-mode/vi-mode.plugin.zsh
18@@ -147,17 +147,19 @@ function wrap_clipboard_widgets() {
19   done
20 }
21 
22-wrap_clipboard_widgets copy \
23-    vi-yank vi-yank-eol vi-yank-whole-line \
24-    vi-change vi-change-eol vi-change-whole-line \
25-    vi-kill-line vi-kill-eol vi-backward-kill-word \
26-    vi-delete vi-delete-char vi-backward-delete-char
27-
28-wrap_clipboard_widgets paste \
29-    vi-put-{before,after} \
30-    put-replace-selection
31-
32-unfunction wrap_clipboard_widgets
33+if [[ -z "${VI_MODE_DISABLE_CLIPBOARD:-}" ]]; then
34+  wrap_clipboard_widgets copy \
35+      vi-yank vi-yank-eol vi-yank-whole-line \
36+      vi-change vi-change-eol vi-change-whole-line \
37+      vi-kill-line vi-kill-eol vi-backward-kill-word \
38+      vi-delete vi-delete-char vi-backward-delete-char
39+
40+  wrap_clipboard_widgets paste \
41+      vi-put-{before,after} \
42+      put-replace-selection
43+
44+  unfunction wrap_clipboard_widgets
45+fi
46 
47 # if mode indicator wasn't setup by theme, define default, we'll leave INSERT_MODE_INDICATOR empty by default
48 if [[ -z "$MODE_INDICATOR" ]]; then