|
|
@ -155,19 +155,20 @@ |
|
|
(file-writable-p buffer-file-name)) |
|
|
(file-writable-p buffer-file-name)) |
|
|
(save-buffer))) |
|
|
(save-buffer))) |
|
|
|
|
|
|
|
|
(defmacro advise-commands (advice-name commands &rest body) |
|
|
|
|
|
|
|
|
(defmacro advise-commands (advice-name commands class &rest body) |
|
|
"Apply advice named ADVICE-NAME to multiple COMMANDS. |
|
|
"Apply advice named ADVICE-NAME to multiple COMMANDS. |
|
|
|
|
|
|
|
|
The body of the advice is in BODY." |
|
|
The body of the advice is in BODY." |
|
|
`(progn |
|
|
`(progn |
|
|
,@(mapcar (lambda (command) |
|
|
,@(mapcar (lambda (command) |
|
|
`(defadvice ,command (before ,(intern (concat (symbol-name command) "-" advice-name)) activate) |
|
|
|
|
|
|
|
|
`(defadvice ,command (,class ,(intern (concat (symbol-name command) "-" advice-name)) activate) |
|
|
,@body)) |
|
|
,@body)) |
|
|
commands))) |
|
|
commands))) |
|
|
|
|
|
|
|
|
;; advise all window switching functions |
|
|
;; advise all window switching functions |
|
|
(advise-commands "auto-save" |
|
|
(advise-commands "auto-save" |
|
|
(switch-to-buffer other-window windmove-up windmove-down windmove-left windmove-right) |
|
|
(switch-to-buffer other-window windmove-up windmove-down windmove-left windmove-right) |
|
|
|
|
|
before |
|
|
(prelude-auto-save-command)) |
|
|
(prelude-auto-save-command)) |
|
|
|
|
|
|
|
|
(add-hook 'mouse-leave-buffer-hook 'prelude-auto-save-command) |
|
|
(add-hook 'mouse-leave-buffer-hook 'prelude-auto-save-command) |
|
|
@ -302,20 +303,10 @@ The body of the advice is in BODY." |
|
|
(if (<= (- end beg) prelude-yank-indent-threshold) |
|
|
(if (<= (- end beg) prelude-yank-indent-threshold) |
|
|
(indent-region beg end nil))) |
|
|
(indent-region beg end nil))) |
|
|
|
|
|
|
|
|
(defadvice yank (after yank-indent activate) |
|
|
|
|
|
"If current mode is one of 'prelude-yank-indent-modes, |
|
|
|
|
|
indent yanked text (with prefix arg don't indent)." |
|
|
|
|
|
(if (and (not (ad-get-arg 0)) |
|
|
|
|
|
(not (member major-mode prelude-indent-sensitive-modes)) |
|
|
|
|
|
(or (derived-mode-p 'prog-mode) |
|
|
|
|
|
(member major-mode prelude-yank-indent-modes))) |
|
|
|
|
|
(let ((transient-mark-mode nil)) |
|
|
|
|
|
(yank-advised-indent-function (region-beginning) (region-end))))) |
|
|
|
|
|
|
|
|
|
|
|
(defadvice yank-pop (after yank-pop-indent activate) |
|
|
|
|
|
|
|
|
(advise-commands "indent" (yank yank-pop) after |
|
|
"If current mode is one of `prelude-yank-indent-modes', |
|
|
"If current mode is one of `prelude-yank-indent-modes', |
|
|
indent yanked text (with prefix arg don't indent)." |
|
|
indent yanked text (with prefix arg don't indent)." |
|
|
(when (and (not (ad-get-arg 0)) |
|
|
|
|
|
|
|
|
(if (and (not (ad-get-arg 0)) |
|
|
(not (member major-mode prelude-indent-sensitive-modes)) |
|
|
(not (member major-mode prelude-indent-sensitive-modes)) |
|
|
(or (derived-mode-p 'prog-mode) |
|
|
(or (derived-mode-p 'prog-mode) |
|
|
(member major-mode prelude-yank-indent-modes))) |
|
|
(member major-mode prelude-yank-indent-modes))) |
|
|
|