diff --git a/modules/feature/evil/autoload.el b/modules/feature/evil/autoload.el index 544a39df6..41395c68d 100644 --- a/modules/feature/evil/autoload.el +++ b/modules/feature/evil/autoload.el @@ -141,3 +141,16 @@ evil-window-move-* (e.g. `evil-window-move-far-left')" (switch-to-buffer this-buffer)) (select-window that-window)))) +;;;###autoload (autoload '+evil:macro-on-all-lines "feature/evil/autoload" nil t) +(evil-define-operator +evil:macro-on-all-lines (beg end &optional macro) + "Apply macro to each line." + :motion nil + :move-point nil + (interactive "") + (unless (and beg end) + (setq beg (region-beginning) + end (region-end))) + (evil-ex-normal beg end + (concat "@" + (single-key-description + (or macro (read-char "@-")))))) diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index 015b4fa1d..2b397e63d 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -14,8 +14,7 @@ ;; evil-mode ;; -(use-package! evil - :demand t +(use-package! evil :demand t :init (setq evil-want-C-u-scroll t evil-want-visual-char-semi-exclusive t @@ -30,7 +29,7 @@ evil-insert-skip-empty-lines t) :config - (def-popup! + (set! :popup ("*evil-registers*" :size 0.3) ("*Command Line*" :size 8)) @@ -287,16 +286,14 @@ if on a delimiter, jump to the matching one (`evilmi-jump-items')." (+evil--textobj! "B" 'evil-textobj-anyblock-inner-block 'evil-textobj-anyblock-a-block)) -(use-package! evil-search-highlight-persist - :demand t +(use-package! evil-search-highlight-persist :demand t :commands (evil-textobj-anyblock-inner-block evil-textobj-anyblock-a-block) :config (global-evil-search-highlight-persist t) (advice-add 'evil-force-normal-state :after 'evil-search-highlight-persist-remove-all)) -(use-package! evil-snipe - :demand t +(use-package! evil-snipe :demand t :init (setq evil-snipe-smart-case t evil-snipe-repeat-keys nil ; using space to repeat