diff options
| -rw-r--r-- | evil-common.el | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/evil-common.el b/evil-common.el index 54ca731..db8c34f 100644 --- a/evil-common.el +++ b/evil-common.el @@ -1967,32 +1967,39 @@ The following special registers are supported. (remove-text-properties 0 (length text) '(foreign-selection nil) text)) text)))) ((eq register ?\C-W) - (unless (evil-ex-p) - (user-error "Register <C-w> is only available in Ex state")) - (with-current-buffer evil-ex-original-buffer + (with-current-buffer + (or evil-ex-original-buffer + (let ((w (minibuffer-selected-window))) (and w (window-buffer w))) + (user-error "Register <C-w> is only available in Ex state")) (thing-at-point 'evil-word))) ((eq register ?\C-A) - (unless (evil-ex-p) - (user-error "Register <C-a> is only available in Ex state")) - (with-current-buffer evil-ex-original-buffer + (with-current-buffer + (or evil-ex-original-buffer + (let ((w (minibuffer-selected-window))) (and w (window-buffer w))) + (user-error "Register <C-a> is only available in Ex state")) (thing-at-point 'evil-WORD))) ((eq register ?\C-O) - (unless (evil-ex-p) - (user-error "Register <C-o> is only available in Ex state")) - (with-current-buffer evil-ex-original-buffer + (with-current-buffer + (or evil-ex-original-buffer + (let ((w (minibuffer-selected-window))) (and w (window-buffer w))) + (user-error "Register <C-o> is only available in Ex state")) (thing-at-point 'evil-symbol))) ((eq register ?\C-F) - (unless (evil-ex-p) - (user-error "Register <C-f> is only available in Ex state")) - (with-current-buffer evil-ex-original-buffer + (with-current-buffer + (or evil-ex-original-buffer + (let ((w (minibuffer-selected-window))) (and w (window-buffer w))) + (user-error "Register <C-f> is only available in Ex state")) (thing-at-point 'filename))) ((eq register ?\C-L) - (unless (evil-ex-p) - (user-error "Register <C-l> is only available in Ex state")) - (with-current-buffer evil-ex-original-buffer + (with-current-buffer + (or evil-ex-original-buffer + (let ((w (minibuffer-selected-window))) (and w (window-buffer w))) + (user-error "Register <C-l> is only available in Ex state")) (replace-regexp-in-string "\n\\'" "" (thing-at-point 'line)))) ((eq register ?%) - (or (buffer-file-name evil-ex-original-buffer) + (or (buffer-file-name + (or evil-ex-original-buffer + (let ((w (minibuffer-selected-window))) (and w (window-buffer w))))) (user-error "No file name"))) ((= register ?#) (or (with-current-buffer (other-buffer) (buffer-file-name)) |
