Use wgrep and evil to replace text efficiently
In my previous article Emacs is easy if you read code, I proved ivy and wgrep is easy if you read code. You can even create your own plugin based on their APIs. For example, I define
my-grep-occur in init-ivy.el in order to search/replace text in project root directory.
My wgrep-mode enabled buffer is in evil-mode. I prefer pressing vi key binding
dd to remove lines in that buffer to tell wgrep skip them.
It turns out we need
M-x C-c C-p or
M-x wgrep-toggle-readonly-area before removing lines.
I'm too lazy to remember extra commands. So here is the workaround:
;; Press `dd' to delete lines in `wgrep-mode' in evil directly (defadvice evil-delete (around evil-delete-hack activate) ;; make buffer writable (if (and (boundp 'wgrep-prepared) wgrep-prepared) (wgrep-toggle-readonly-area)) ad-do-it ;; make buffer read-only (if (and (boundp 'wgrep-prepared) wgrep-prepared) (wgrep-toggle-readonly-area)))