Add eval-and-replace support to evil-mc

And refactor evil-mc-custom-known-commands init
This commit is contained in:
Henrik Lissner 2020-08-02 17:44:41 -04:00
parent c7513e4135
commit c3be74139a
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 23 additions and 11 deletions

View file

@ -120,3 +120,12 @@ FLAGS can be g and/or i; which mean the same thing they do in
:key #'evil-mc-get-cursor-start)) :key #'evil-mc-get-cursor-start))
(message "No cursors to undo in region")) (message "No cursors to undo in region"))
(evil-mc-undo-last-added-cursor))) (evil-mc-undo-last-added-cursor)))
;;;###autoload (autoload '+multiple-cursors-execute-default-operator-fn "editor/multiple-cursors/autoload/evil-mc" nil t)
(after! evil-mc
(evil-mc-define-handler +multiple-cursors-execute-default-operator-fn ()
:cursor-clear region
(evil-mc-with-region-or-execute-macro region t
(funcall (evil-mc-get-command-name) region-start region-end))))

View file

@ -64,23 +64,26 @@
;; Whitelist more commands ;; Whitelist more commands
(dolist (fn '((delete-char) (dolist (fn '((delete-char)
(backward-kill-word) (backward-kill-word)
(undo-fu-only-undo . evil-mc-execute-default-undo)
(undo-fu-only-redo . evil-mc-execute-default-redo)
(company-complete-common . evil-mc-execute-default-complete) (company-complete-common . evil-mc-execute-default-complete)
(doom/backward-to-bol-or-indent . evil-mc-execute-default-call) (doom/backward-to-bol-or-indent . evil-mc-execute-default-call)
(doom/forward-to-last-non-comment-or-eol . evil-mc-execute-default-call) (doom/forward-to-last-non-comment-or-eol . evil-mc-execute-default-call)
;; :editor evil
(evil-delete-back-to-indentation . evil-mc-execute-default-call) (evil-delete-back-to-indentation . evil-mc-execute-default-call)
;; Have evil-mc work with explicit `evil-escape' (on C-g) (evil-escape . evil-mc-execute-default-evil-normal-state) ; C-g
(evil-escape . evil-mc-execute-default-evil-normal-state) (evil-numbers/inc-at-pt-incremental)
;; Add `evil-org' support (evil-numbers/dec-at-pt-incremental)
;; :tools eval commands
(+eval:replace-region . +multiple-cursors-execute-default-operator-fn)
;; :lang org
(evil-org-delete . evil-mc-execute-default-evil-delete) (evil-org-delete . evil-mc-execute-default-evil-delete)
(evil-org-delete-char . evil-mc-execute-default-evil-delete) (evil-org-delete-char . evil-mc-execute-default-evil-delete)
(evil-org-delete-backward-char . evil-mc-execute-default-evil-delete) (evil-org-delete-backward-char . evil-mc-execute-default-evil-delete)))
;; `evil-numbers' (setf (alist-get (car fn) evil-mc-custom-known-commands)
(evil-numbers/inc-at-pt-incremental) (list (cons :default
(evil-numbers/dec-at-pt-incremental))) (or (cdr fn)
(cl-pushnew `(,(car fn) (:default . ,(or (cdr fn) #'evil-mc-execute-default-call-with-count))) #'evil-mc-execute-default-call-with-count)))))
evil-mc-custom-known-commands
:test #'eq
:key #'car))
;; HACK Allow these commands to be repeated by prefixing them with a numerical ;; HACK Allow these commands to be repeated by prefixing them with a numerical
;; argument. See gabesoft/evil-mc#110 ;; argument. See gabesoft/evil-mc#110