[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/aggressive-indent 2f54a58 03/43: Use an idle-timer inst
From: |
Stefan Monnier |
Subject: |
[elpa] externals/aggressive-indent 2f54a58 03/43: Use an idle-timer instead of sit-for+redisplay |
Date: |
Wed, 7 Jul 2021 22:49:39 -0400 (EDT) |
branch: externals/aggressive-indent
commit 2f54a587ce2c7fdf48a2335b6a58172b66f9a581
Author: Artur Malabarba <bruce.connor.am@gmail.com>
Commit: Artur Malabarba <bruce.connor.am@gmail.com>
Use an idle-timer instead of sit-for+redisplay
---
aggressive-indent.el | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/aggressive-indent.el b/aggressive-indent.el
index df04cb9..9679e92 100644
--- a/aggressive-indent.el
+++ b/aggressive-indent.el
@@ -417,22 +417,29 @@ If you feel aggressive-indent is causing Emacs to hang
while
typing, try tweaking this number."
:type 'float)
+(defvar-local aggressive-indent--idle-timer nil
+ "Idle timer used for indentation")
+
(defun aggressive-indent--indent-if-changed ()
"Indent any region that changed in the last command loop."
- (when aggressive-indent--changed-list
+ (when (and aggressive-indent-mode aggressive-indent--changed-list)
(save-excursion
(save-selected-window
(unless (or (run-hook-wrapped
'aggressive-indent--internal-dont-indent-if #'eval)
(aggressive-indent--run-user-hooks))
(while-no-input
- (sit-for aggressive-indent-sit-for-time t)
- (redisplay)
- (aggressive-indent--proccess-changed-list-and-indent)))))))
+ (aggressive-indent--proccess-changed-list-and-indent)))))
+ (when (timerp aggressive-indent--idle-timer)
+ (cancel-timer aggressive-indent--idle-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)))
+ (push (list l r) aggressive-indent--changed-list)
+ (when (timerp aggressive-indent--idle-timer)
+ (cancel-timer aggressive-indent--idle-timer))
+ (setq aggressive-indent--idle-timer
+ (run-with-idle-timer aggressive-indent-sit-for-time t
#'aggressive-indent--indent-if-changed))))
;;; Minor modes
;;;###autoload
@@ -460,12 +467,12 @@ typing, try tweaking this number."
(aggressive-indent--local-electric nil)
(aggressive-indent--local-electric t))
(add-hook 'after-change-functions
#'aggressive-indent--keep-track-of-changes nil 'local)
- (add-hook 'before-save-hook
#'aggressive-indent--proccess-changed-list-and-indent nil 'local)
- (add-hook 'post-command-hook #'aggressive-indent--indent-if-changed
nil 'local))
+ (add-hook 'before-save-hook
#'aggressive-indent--proccess-changed-list-and-indent 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 'before-save-hook
#'aggressive-indent--proccess-changed-list-and-indent 'local)
- (remove-hook 'post-command-hook #'aggressive-indent--indent-if-changed
'local)
(remove-hook 'post-command-hook #'aggressive-indent--softly-indent-defun
'local)))
(defun aggressive-indent--local-electric (on)
- [elpa] externals/aggressive-indent updated (7e65c9e -> cb416fa), Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 7653dd5 01/43: Improve the logic for deciding how far to indent beyond changed region, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent a8c462f 04/43: Add def to the list of ruby-mode exceptions, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 86d5643 05/43: Fix `aggressive-indent-protected-commands', Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 2f54a58 03/43: Use an idle-timer instead of sit-for+redisplay,
Stefan Monnier <=
- [elpa] externals/aggressive-indent 43bce89 02/43: Fix #92 - Define aggressive-indent-stop-here-hook, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent dfdf3b2 06/43: Merge pull request #102 from raxod502/fix-protected-commands, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 893dae0 10/43: Add some modes to excluded modes, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 8324b88 08/43: Merge pull request #103 from peterwvj/master, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent e3c41af 11/43: New variable: aggressive-indent-protected-current-commands, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 5959b48 09/43: Experiment with testing `indent-line-function` instead of excluded-modes, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 4b01402 07/43: Fix typo in README, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 450fe20 18/43: Check no-indent conditions at lower level, so they work on save, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 8e70039 19/43: Merge pull request #115 from joaotavora/master, Stefan Monnier, 2021/07/07
- [elpa] externals/aggressive-indent 9dfde9c 14/43: Don't enable in modes that derive from text-mode, Stefan Monnier, 2021/07/07