From 07380af81911619434687eca6a96c330c07b6e6d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 10 Oct 2019 12:32:33 -0400 Subject: [PATCH] Add gy operator for yanking without indentation Copies (a b c) As (a b c) --- modules/config/default/+evil-bindings.el | 1 + modules/editor/evil/autoload/evil.el | 13 +++++++++++++ modules/ui/ophints/config.el | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 84839f43b..98dd3e71b 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -109,6 +109,7 @@ :nv "g@" #'+evil:apply-macro :nv "gc" #'evil-commentary :nv "gx" #'evil-exchange + :nv "gy" #'+evil:yank-unindented :n "g=" #'evil-numbers/inc-at-pt :n "g-" #'evil-numbers/dec-at-pt :v "g=" #'evil-numbers/inc-at-pt-incremental diff --git a/modules/editor/evil/autoload/evil.el b/modules/editor/evil/autoload/evil.el index 183c82fae..250daaba4 100644 --- a/modules/editor/evil/autoload/evil.el +++ b/modules/editor/evil/autoload/evil.el @@ -217,6 +217,19 @@ See `+evil/next-preproc-directive' for details." (interactive "p") (+evil/next-comment (- count))) +;;;###autoload (autoload '+evil:yank-unindented "editor/evil/autoload/evil" nil t) +(evil-define-operator +evil:yank-unindented (beg end type register yank-handler) + "Saves the (reindented) characters in motion into the kill-ring." + :move-point nil + :repeat nil + (interactive "") + (let ((indent (save-excursion (goto-char beg) (current-indentation))) + (text (buffer-substring beg end))) + (with-temp-buffer + (insert text) + (indent-rigidly (point-min) (point-max) (- indent)) + (evil-yank (point-min) (point-max))))) + ;; ;;; wgrep diff --git a/modules/ui/ophints/config.el b/modules/ui/ophints/config.el index 4faf2f8da..8fcf65595 100644 --- a/modules/ui/ophints/config.el +++ b/modules/ui/ophints/config.el @@ -11,6 +11,11 @@ evil-goggles-enable-delete nil evil-goggles-enable-change nil) :config + (add-to-list 'evil-goggles--commands + '(+evil:yank-unindented + :face evil-goggles-yank-face + :switch evil-goggles-enable-yank + :advice evil-goggles--generic-async-advice)) (evil-goggles-mode +1))