From deb16892d23f3cce086f26042c70ab09c51923f6 Mon Sep 17 00:00:00 2001 From: York Zhao Date: Sat, 30 Jul 2011 22:30:42 -0400 Subject: [PATCH 3/3] Insert state paste Paste in insert state by "CTRL-R " --- evil-common.el | 18 ++++++++++++++++++ evil-insert.el | 8 ++++++++ evil-maps.el | 1 + 3 files changed, 27 insertions(+), 0 deletions(-) diff --git a/evil-common.el b/evil-common.el index f38287b..5eccdad 100644 --- a/evil-common.el +++ b/evil-common.el @@ -836,6 +836,24 @@ POS defaults to the current position of point." ("(\\(evil-\\(?:[-[:word:]]\\)*loop\\)\\>" 1 font-lock-keyword-face)))) +;;; Register + +;; Copied from `viper-util.el' +;; Check if arg is a valid character for register +;; TYPE is a list that can contain `letter', `Letter', and `digit'. +;; `letter' means lowercase letters, `Letter' means uppercase letters, and +;; `digit' means digits from 1 to 9. +;; If TYPE is nil, then down/uppercase letters and digits are allowed. +(defun evil-valid-register (reg &optional type) + (or type (setq type '(letter Letter digit))) + (or (if (memq 'letter type) + (and (<= ?a reg) (<= reg ?z))) + (if (memq 'digit type) + (and (<= ?1 reg) (<= reg ?9))) + (if (memq 'Letter type) + (and (<= ?A reg) (<= reg ?Z))) + )) + (provide 'evil-common) ;;; evil-common.el ends here diff --git a/evil-insert.el b/evil-insert.el index 2b5dc22..160ccb1 100644 --- a/evil-insert.el +++ b/evil-insert.el @@ -289,6 +289,14 @@ Search forward if a match isn't found." try-expand-line-all-buffers))) (hippie-expand arg))) +;; Paste in Insert state by pressing "C-r " +(defun evil-paste-in-insert (register) + "Paste in Insert state from REGISTER." + (interactive (list (read-char))) + (if (evil-valid-register register) + (evil-paste-before nil register) + (evil-paste-before nil))) + (provide 'evil-insert) ;;; evil-insert.el ends here diff --git a/evil-maps.el b/evil-maps.el index f53a0b0..aa0e410 100644 --- a/evil-maps.el +++ b/evil-maps.el @@ -269,6 +269,7 @@ (define-key evil-insert-state-map "\C-k" 'evil-insert-digraph) (define-key evil-insert-state-map "\C-o" 'evil-execute-in-normal-state) +(define-key evil-insert-state-map "\C-r" 'evil-paste-in-insert) (define-key evil-insert-state-map "\C-y" 'evil-copy-from-above) (define-key evil-insert-state-map "\C-e" 'evil-copy-from-below) (define-key evil-insert-state-map "\C-p" 'evil-complete) -- 1.7.5.GIT