From 8648ea0314a76d213a28fdf160ff598816bafb90 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 17 May 2017 18:24:16 +0200 Subject: [PATCH] Make evil-delete invoke wgrep-mark-deletion on lines --- modules/feature/evil/autoload/evil.el | 17 +++++++++++++++++ modules/feature/evil/config.el | 7 ++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/modules/feature/evil/autoload/evil.el b/modules/feature/evil/autoload/evil.el index 94c9f625b..b920089bb 100644 --- a/modules/feature/evil/autoload/evil.el +++ b/modules/feature/evil/autoload/evil.el @@ -222,3 +222,20 @@ evil-window-move-* (e.g. `evil-window-move-far-left')" (+evil--ex-match-init hl-name) (let ((result (car-safe (evil-ex-parse-global arg)))) (+evil--ex-buffer-match result hl-name nil (point-min) (point-max)))))) + + +;; --- wgrep ------------------------------ + +;;;###autoload (autoload '+evil-delete "feature/evil/autoload/evil" nil t) +(evil-define-operator +evil-delete (beg end type register yank-handler) + "A wrapper around `evil-delete' for `wgrep' buffers that will invoke +`wgrep-mark-deletion' on lines you try to delete." + (interactive "") + (condition-case ex + (evil-delete beg end type register yank-handler) + ('text-read-only + (evil-apply-on-block + (lambda (beg _) + (goto-char beg) + (call-interactively #'wgrep-mark-deletion)) + beg (1- end) nil)))) diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index 91ef19c5b..aedc1fd67 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -87,7 +87,12 @@ ;; --- keybind fixes ---------------------- (map! ;; undo/redo for visual regions :v "C-u" #'undo-tree-undo - :v "C-r" #'undo-tree-redo) + :v "C-r" #'undo-tree-redo + + (:after wgrep + ;; a wrapper that invokes `wgrep-mark-deletion' across lines + ;; you use `evil-delete' on. + :map wgrep-mode-map :n "d" #'+evil-delete)) ;; --- evil hacks -------------------------