emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/dslide df1fca1b87 167/230: animations are set up without r


From: ELPA Syncer
Subject: [nongnu] elpa/dslide df1fca1b87 167/230: animations are set up without restriction
Date: Sun, 7 Jul 2024 19:00:32 -0400 (EDT)

branch: elpa/dslide
commit df1fca1b873423dd39807412a664980a84a6d866
Author: Psionik K <73710933+psionic-k@users.noreply.github.com>
Commit: Psionik K <73710933+psionic-k@users.noreply.github.com>

    animations are set up without restriction
    
    this enables the newline search and other functions to succeed even though 
the
    animation might be added to a region that is outside the current 
restriction.
    
    Same with setting invisibility spec to nil, though that will only apply to
    folding iirc
    
    Signed-off-by: Psionik K <73710933+psionic-k@users.noreply.github.com>
---
 dslide.el | 53 +++++++++++++++++++++++++++--------------------------
 1 file changed, 27 insertions(+), 26 deletions(-)

diff --git a/dslide.el b/dslide.el
index ad9d3122c0..52aee22696 100644
--- a/dslide.el
+++ b/dslide.el
@@ -2260,32 +2260,33 @@ assumes the buffer is restricted and that there is a 
first tree."
 Everything after BEG will be animated.  The region between BEG
 and the value of `point-max' should contain a newline somewhere."
   (dslide--ensure-slide-buffer)
-  (let* ((timer (timer-create))
-         (goal-time (time-add (current-time)
-                              dslide-animation-duration))
-         (newline-region (save-match-data
-                           (save-excursion
-                             ;; TODO invalid search range (point in wrong 
place)
-                             (goto-char beg)
-                             (if (re-search-forward "\n" end t)
-                                 (list (match-beginning 0)
-                                       (match-end 0))
-                               (error "No newline in region")))))
-         (overlay (apply #'make-overlay newline-region))
-         (initial-line-height
-          (or (plist-get
-               (text-properties-at (car newline-region))
-               'line-height)
-              1.0)))
-    (overlay-put overlay 'line-height dslide-slide-in-blank-lines)
-    (overlay-put overlay 'priority 10)
-    (push timer dslide--animation-timers)
-    (push overlay dslide--animation-overlays)
-    (timer-set-time timer (current-time)
-                    dslide-animation-frame-duration)
-    (timer-set-function timer #'dslide--animate
-                        (list timer goal-time overlay initial-line-height))
-    (timer-activate timer)))
+  (without-restriction
+    (let* ((buffer-invisibility-spec nil)
+           (timer (timer-create))
+           (goal-time (time-add (current-time)
+                                dslide-animation-duration))
+           (newline-region (save-match-data
+                             (save-excursion
+                               (goto-char beg)
+                               (if (re-search-forward "\n" end t)
+                                   (list (match-beginning 0)
+                                         (match-end 0))
+                                 (error "No newline in region")))))
+           (overlay (apply #'make-overlay newline-region))
+           (initial-line-height
+            (or (plist-get
+                 (text-properties-at (car newline-region))
+                 'line-height)
+                1.0)))
+      (overlay-put overlay 'line-height dslide-slide-in-blank-lines)
+      (overlay-put overlay 'priority 10)
+      (push timer dslide--animation-timers)
+      (push overlay dslide--animation-overlays)
+      (timer-set-time timer (current-time)
+                      dslide-animation-frame-duration)
+      (timer-set-function timer #'dslide--animate
+                          (list timer goal-time overlay initial-line-height))
+      (timer-activate timer))))
 
 (defun dslide--animate (timer goal-time overlay initial-line-height)
   (if (time-less-p goal-time (current-time))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]