diff options
| -rw-r--r-- | emacs/init.el | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/emacs/init.el b/emacs/init.el index 4feecf8..a858583 100644 --- a/emacs/init.el +++ b/emacs/init.el @@ -839,13 +839,15 @@ changes." (erc-track-priority-faces-only 'all)) (progn ; indent code when pasting - (defvar yank-indent-modes (mapcan 'derived-mode-all-parents - '(prog-mode LaTeX-mode TeX-mode)) + (defvar yank-indent-modes '(prog-mode LaTeX-mode TeX-mode) "Modes in which to indent regions that are yanked (or yank-popped).") (defun yank-indent-func (&optional arg) - (when (and (not arg) (member major-mode yank-indent-modes)) - (indent-region (region-beginning) (region-end)))) + (let* ((parents (derived-mode-all-parents major-mode)) + (helper (lambda (acc v) (or acc (member v yank-indent-modes)))) + (included (-reduce helper parents))) + (when (and (not arg) included) + (indent-region (region-beginning) (region-end))))) (advice-add 'yank :after 'yank-indent-func) (advice-add 'yank-pop :after 'yank-indent-func)) |
