[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt f3fe3d24db 230/323: Don't use a timer for upd
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt f3fe3d24db 230/323: Don't use a timer for updating overlays |
Date: |
Thu, 9 Mar 2023 10:58:33 -0500 (EST) |
branch: externals/beardbolt
commit f3fe3d24dbc8f7d0a166385c8cdadc92e22575a7
Author: Erik Arvstedt <erik.arvstedt@gmail.com>
Commit: Erik Arvstedt <erik.arvstedt@gmail.com>
Don't use a timer for updating overlays
Instead, update overlays when the point has moved.
This avoids running a global timer (even while `rmsbolt-mode` is inactive)
and makes the UI much more responsive.
---
rmsbolt.el | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/rmsbolt.el b/rmsbolt.el
index abc0dd05fd..3086d08d7b 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -219,11 +219,11 @@ may not be cleared to default as variables are usually."
"Line mapping hashtable from source lines -> asm lines")
(defvar-local rmsbolt-current-line nil
"Current line for fontifier.")
+(defvar-local rmsbolt--last-point nil
+ "Used to detect when the point has moved.")
(defvar rmsbolt-overlays nil
"List of overlays to use.")
-(defvar rmsbolt-overlay-delay 0.125
- "Time in seconds to delay before showing overlays.")
(defvar rmsbolt-compile-delay 1
"Time in seconds to delay before recompiling if there is a change.")
(defvar rmsbolt--automated-compile nil
@@ -1384,12 +1384,7 @@ Argument OVERRIDE-BUFFER use this buffer instead of
reading from the output file
(rmsbolt-mode 1)
(setq rmsbolt-src-buffer src-buffer)
(display-buffer (current-buffer))
- ;; Attempt to replace overlays.
- ;; TODO find a way to do this without a timer hack
- (run-with-timer rmsbolt-overlay-delay nil
- (lambda ()
- (with-current-buffer src-buffer
- (rmsbolt-update-overlays)))))))
+ (run-at-time 0 nil (lambda () (rmsbolt-update-overlays))))))
((not rmsbolt--automated-compile)
;; Display compilation output
(display-buffer buffer)
@@ -1713,6 +1708,13 @@ Are you running two compilations at the same time?"))
(mapc #'delete-overlay rmsbolt-overlays)
(setq rmsbolt-overlays nil))
+(defun rmsbolt--post-command-hook ()
+ ;; Use (point) instead of (line-number-at-pos) to track movements because
+ ;; the former is faster (constant runtime)
+ (unless (eq (point) rmsbolt--last-point)
+ (setq rmsbolt--last-point (point))
+ (rmsbolt-update-overlays)))
+
(defun rmsbolt--on-kill-buffer ()
(let ((output-buffer (get-buffer rmsbolt-output-buffer)))
(when (or (eq (current-buffer) output-buffer)
@@ -1760,13 +1762,12 @@ This mode is enabled in both src and assembly output
buffers."
;; Init
(cond
(rmsbolt-mode
+ (setq rmsbolt--last-point (point))
+ (add-hook 'post-command-hook #'rmsbolt--post-command-hook nil t)
(add-hook 'kill-buffer-hook #'rmsbolt--on-kill-buffer nil t)
+
;; This idle timer always runs, even when we aren't in rmsbolt-mode
;; It won't do anything unless we are in rmsbolt-mode
- (unless rmsbolt--idle-timer
- (setq rmsbolt--idle-timer (run-with-idle-timer
- rmsbolt-overlay-delay t
- #'rmsbolt-update-overlays)))
(unless (or rmsbolt--compile-idle-timer
(not rmsbolt-automatic-recompile))
(setq rmsbolt--compile-idle-timer (run-with-idle-timer
@@ -1782,10 +1783,9 @@ This mode is enabled in both src and assembly output
buffers."
"Start a rmsbolt compilation and enable `rmsbolt-mode' for code region
highlighting and automatic recompilation."
(interactive)
- (if rmsbolt-mode
- (rmsbolt-compile)
- (rmsbolt-mode)
- (run-at-time 0 nil (lambda () (rmsbolt-compile)))))
+ (unless rmsbolt-mode
+ (rmsbolt-mode))
+ (rmsbolt-compile))
(provide 'rmsbolt)
- [elpa] externals/beardbolt 7a964319ba 213/323: Merge branch 'zig-0.9' into 'master', (continued)
- [elpa] externals/beardbolt 7a964319ba 213/323: Merge branch 'zig-0.9' into 'master', ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 981522dcaa 218/323: Improve `rmsbolt-mode` docstring, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 2e1ff0653e 216/323: Correct location of parse hook, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 345059d4f4 219/323: Set `defvar-local` vars with `setq`, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 4f6ffdd254 226/323: Rename rmsbolt-move-overlays -> rmsbolt-update-overlays, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 464b524e49 221/323: Remove redundant `and`, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 51ff24b3b1 217/323: Fix native-comp docstring warnings, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 0bc89903f1 231/323: on-kill-buffer: Fix error on missing output-buffer, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt d09d72f463 215/323: Add after-parse-hook, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt af37266681 227/323: Rename rmsbolt--cleanup-overlays -> rmsbolt--remove-overlays, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt f3fe3d24db 230/323: Don't use a timer for updating overlays,
ELPA Syncer <=
- [elpa] externals/beardbolt 6d0d799d44 233/323: Fix docstring warnings, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt b4f31813dc 240/323: Auto stop an existing compilation, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 50cd4c6d0c 234/323: Use setq for `rmsbolt-dir`, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9c56c62993 247/323: Update texi docs, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 3baf531b55 238/323: Refactor: Move let binding closer to point of usage, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 24ac775643 246/323: Support Nim 1.6.6, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt e634757395 235/323: Remove unneeded lambda, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 3514e6f288 237/323: rmsbolt-compile: Only ask to save the current buffer, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt ea22302660 258/323: Delete beardbolt-split.el, doesn't justify separate file, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 7619539a86 243/323: starters/elisp: Fix compiler warning, ELPA Syncer, 2023/03/09