diff options
| author | Lukas Fürmetz <fuermetz@mailbox.org> | 2019-08-03 13:18:51 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-03 13:18:51 +0200 |
| commit | 13b732b11ce3dbb4f3194b1f23be98689ed3be51 (patch) | |
| tree | 1c8aaa9772ab22b8204ff5fa63a9f9d4cde2b081 | |
| parent | 54d53da48e57b7bb5a296975b7361e108dc7b49d (diff) | |
| parent | da121a44b79bef2f76a8fa0ee2606a12f604951a (diff) | |
Merge pull request #99 from jixiuf/support-yank-pop
support yank-pop
| -rw-r--r-- | vterm.el | 22 |
1 files changed, 17 insertions, 5 deletions
@@ -84,7 +84,7 @@ :type 'number :group 'vterm) -(defcustom vterm-keymap-exceptions '("C-c" "C-x" "C-u" "C-g" "C-h" "M-x" "M-o" "C-v" "M-v" "C-y") +(defcustom vterm-keymap-exceptions '("C-c" "C-x" "C-u" "C-g" "C-h" "M-x" "M-o" "C-v" "M-v" "C-y" "M-y") "Exceptions for vterm-keymap. If you use a keybinding with a prefix-key, add that prefix-key to @@ -274,6 +274,7 @@ If nil, never delay") (define-key vterm-mode-map [end] #'vterm--self-insert) (define-key vterm-mode-map [escape] #'vterm--self-insert) (define-key vterm-mode-map [remap yank] #'vterm-yank) +(define-key vterm-mode-map [remap yank-pop] #'vterm-yank-pop) (define-key vterm-mode-map (kbd "C-SPC") #'vterm--self-insert) (define-key vterm-mode-map (kbd "C-_") #'vterm--self-insert) (define-key vterm-mode-map (kbd "C-/") #'vterm-undo) @@ -391,11 +392,22 @@ If nil, never delay") (interactive) (vterm-send-key "_" nil nil t)) -(defun vterm-yank () +(defun vterm-yank (&optional arg) "Implementation of `yank' (paste) in vterm." - (interactive) - (vterm-send-string (current-kill 0) - (not current-prefix-arg))) + (interactive "P") + (let ((inhibit-read-only t)) + (cl-letf (((symbol-function 'insert-for-yank) + #'(lambda(str) (vterm-send-string str t)))) + (yank arg)))) + +(defun vterm-yank-pop(&optional arg) + "Implementation of `yank-pop' in vterm." + (interactive "p") + (let ((inhibit-read-only t) + (yank-undo-function #'(lambda(_start _end) (vterm-undo)))) + (cl-letf (((symbol-function 'insert-for-yank) + #'(lambda(str) (vterm-send-string str t)))) + (yank-pop arg)))) (defun vterm-send-string (string &optional paste-p) "Send the string STRING to vterm. |
