summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emacs/init.el10
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))