branch: externals/aggressive-indent commit b0ec0047aaae071ad1647159613166a253410a63 Merge: 12a64b4 986df07 Author: Artur Malabarba <ar...@endlessparentheses.com> Commit: GitHub <nore...@github.com>
Merge pull request #139 from purcell/always-kill-timer Always kill timer --- aggressive-indent.el | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/aggressive-indent.el b/aggressive-indent.el index 3622a76..b32b587 100644 --- a/aggressive-indent.el +++ b/aggressive-indent.el @@ -5,7 +5,7 @@ ;; Author: Artur Malabarba <em...@endlessparentheses.com> ;; URL: https://github.com/Malabarba/aggressive-indent-mode ;; Version: 1.8.4 -;; Package-Requires: ((emacs "24.1") (cl-lib "0.5")) +;; Package-Requires: ((emacs "24.3")) ;; Keywords: indent lisp maint tools ;; Prefix: aggressive-indent ;; Separator: - @@ -390,7 +390,7 @@ or messages." "List of (left right) limit of regions changed in the last command loop.") (make-variable-buffer-local 'aggressive-indent--changed-list) -(defun aggressive-indent--proccess-changed-list-and-indent () +(defun aggressive-indent--process-changed-list-and-indent () "Indent the regions in `aggressive-indent--changed-list'." (unless (or (run-hook-wrapped 'aggressive-indent--internal-dont-indent-if #'eval) (aggressive-indent--run-user-hooks)) @@ -459,34 +459,32 @@ If BODY finishes, `while-no-input' returns whatever value BODY produced." nil) (t val))))))) +(defun aggressive-indent--maybe-cancel-timer () + "Cancel and remove the timer if it is set." + (when (timerp aggressive-indent--idle-timer) + (cancel-timer aggressive-indent--idle-timer) + (setq aggressive-indent--idle-timer nil))) + (defun aggressive-indent--indent-if-changed (buffer) "Indent any region that changed in BUFFER in the last command loop." (if (not (buffer-live-p buffer)) - (cancel-timer aggressive-indent--idle-timer) + (aggressive-indent--maybe-cancel-timer) (with-current-buffer buffer (when (and aggressive-indent-mode aggressive-indent--changed-list) (save-excursion (save-selected-window (aggressive-indent--while-no-input - (aggressive-indent--proccess-changed-list-and-indent)))) - (when (timerp aggressive-indent--idle-timer) - (cancel-timer aggressive-indent--idle-timer)))))) + (aggressive-indent--process-changed-list-and-indent)))) + (aggressive-indent--maybe-cancel-timer))))) (defun aggressive-indent--keep-track-of-changes (l r &rest _) "Store the limits (L and R) of each change in the buffer." (when aggressive-indent-mode (push (list l r) aggressive-indent--changed-list) - (when (timerp aggressive-indent--idle-timer) - (cancel-timer aggressive-indent--idle-timer)) + (aggressive-indent--maybe-cancel-timer) (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 @@ -516,16 +514,15 @@ 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 'kill-buffer-hook #'aggressive-indent--on-buffer-kill nil 'local)) + (add-hook 'before-save-hook #'aggressive-indent--process-changed-list-and-indent nil 'local) + (add-hook 'kill-buffer-hook #'aggressive-indent--maybe-cancel-timer nil 'local)) ;; Clean the hooks - (when (timerp aggressive-indent--idle-timer) - (cancel-timer aggressive-indent--idle-timer)) + (aggressive-indent--maybe-cancel-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 'before-save-hook #'aggressive-indent--process-changed-list-and-indent 'local) (remove-hook 'post-command-hook #'aggressive-indent--softly-indent-defun 'local) - (remove-hook 'kill-buffer-hook #'aggressive-indent--on-buffer-kill 'local))) + (remove-hook 'kill-buffer-hook #'aggressive-indent--maybe-cancel-timer 'local))) (defun aggressive-indent--local-electric (on) "Turn variable `electric-indent-mode' on or off locally, as per boolean ON."