summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcondy <condy0919@gmail.com>2022-04-17 19:15:21 +0800
committerYoumu <condy0919@gmail.com>2022-04-17 19:19:43 +0800
commit63c6fd00c23b91e6b84b735add756d6e4b5c3b86 (patch)
tree8e85bbcd7741acd9fc6fcaa54db5150072ee6d31
parent572de25f93752d806efa11bb80a641afd4c06e40 (diff)
minibuffer: cc fix
-rw-r--r--modes/minibuffer/evil-collection-minibuffer.el12
1 files changed, 12 insertions, 0 deletions
diff --git a/modes/minibuffer/evil-collection-minibuffer.el b/modes/minibuffer/evil-collection-minibuffer.el
index 879c896..e4a6997 100644
--- a/modes/minibuffer/evil-collection-minibuffer.el
+++ b/modes/minibuffer/evil-collection-minibuffer.el
@@ -52,6 +52,17 @@ it does not have a mode."
;; then it may conflict with other packages' if they do the same.
(evil-insert 1))
+(evil-define-operator evil-collection-change-in-minibuffer
+ (beg end type register yank-handler delete-func)
+ "A version of `evil-change' that won't insert a new line on buffers without one."
+ (interactive "<R><x><y>")
+ ;; If there was no new line before the change, there should be none after.
+ ;; Delete any new line that might have been inserted and ignore an error if
+ ;; one wasn't.
+ (let ((new-inserted (and (eq type 'line) (/= ?\n (char-before end)))))
+ (evil-change beg end type register yank-handler delete-func)
+ (when new-inserted (ignore-errors (delete-char 1)))))
+
;;;###autoload
(defun evil-collection-minibuffer-setup ()
"Initialize minibuffer for `evil'."
@@ -61,6 +72,7 @@ it does not have a mode."
minibuffer-local-completion-map
minibuffer-local-must-match-map
minibuffer-local-isearch-map))
+ (evil-collection-define-key 'normal map "c" 'evil-collection-change-in-minibuffer)
(evil-collection-define-key 'normal map (kbd "<escape>") 'abort-recursive-edit)
(evil-collection-define-key 'normal map (kbd "RET") 'exit-minibuffer))