branch: externals/aggressive-indent commit 58348d29adf8d2f23da2798badd7f89ff59cd7cc Merge: bfd04fc f611f31 Author: Artur Malabarba <ar...@endlessparentheses.com> Commit: GitHub <nore...@github.com>
Merge pull request #135 from leuven65/master Cancel the timer when buffer is killed --- aggressive-indent.el | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/aggressive-indent.el b/aggressive-indent.el index 09c9ffa..7107ef4 100644 --- a/aggressive-indent.el +++ b/aggressive-indent.el @@ -481,6 +481,12 @@ If BODY finishes, `while-no-input' returns whatever value BODY produced." (setq aggressive-indent--idle-timer (run-with-idle-timer aggressive-indent-sit-for-time t #'aggressive-indent--indent-if-changed (current-buffer))))) +(defun aggressive-indent--on-buffer-kill () + "Cancel the timer before buffer is killed" + (when (timerp aggressive-indent--idle-timer) + (cancel-timer aggressive-indent--idle-timer) + (setq aggressive-indent--idle-timer nil))) + ;;; Minor modes ;;;###autoload (define-minor-mode aggressive-indent-mode @@ -510,14 +516,16 @@ If BODY finishes, `while-no-input' returns whatever value BODY produced." (aggressive-indent--local-electric t)) (add-hook 'after-change-functions #'aggressive-indent--keep-track-of-changes nil 'local) (add-hook 'after-revert-hook #'aggressive-indent--clear-change-list nil 'local) - (add-hook 'before-save-hook #'aggressive-indent--proccess-changed-list-and-indent nil 'local)) + (add-hook 'before-save-hook #'aggressive-indent--proccess-changed-list-and-indent nil 'local) + (add-hook 'kill-buffer-hook #'aggressive-indent--on-buffer-kill nil 'local)) ;; Clean the hooks (when (timerp aggressive-indent--idle-timer) (cancel-timer aggressive-indent--idle-timer)) (remove-hook 'after-change-functions #'aggressive-indent--keep-track-of-changes 'local) (remove-hook 'after-revert-hook #'aggressive-indent--clear-change-list 'local) (remove-hook 'before-save-hook #'aggressive-indent--proccess-changed-list-and-indent 'local) - (remove-hook 'post-command-hook #'aggressive-indent--softly-indent-defun 'local))) + (remove-hook 'post-command-hook #'aggressive-indent--softly-indent-defun 'local) + (remove-hook 'kill-buffer-hook #'aggressive-indent--on-buffer-kill 'local))) (defun aggressive-indent--local-electric (on) "Turn variable `electric-indent-mode' on or off locally, as per boolean ON."