branch: elpa/isl
commit c101831646a665e071696f4b9c3ac39a02f3e66d
Author: Thierry Volpiatto <[email protected]>
Commit: Thierry Volpiatto <[email protected]>

    Update iterator instead of recreating
    
    at each update.
---
 isl.el | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/isl.el b/isl.el
index a8e9414f323..c907d76a59e 100644
--- a/isl.el
+++ b/isl.el
@@ -846,7 +846,12 @@ you try to modify other elements externally."
   (let* ((queue (memql isl--last-overlay isl--item-overlays))
          (index (- (length isl--item-overlays) (length queue)))
          (ovs   (append queue (take index isl--item-overlays))))
-    (setq isl--iterator (isl-iter-circular ovs))))
+    (if isl--iterator
+        (setf (isl-iterator--seq isl--iterator) ovs
+              (isl-iterator--tmp-seq isl--iterator) ovs
+              (isl-iterator--element isl--iterator) isl--last-overlay
+              (isl-iterator--direction isl--iterator) 'right)
+      (setq isl--iterator (isl-iter-circular ovs)))))
 
 (defun isl-delete-overlays ()
   "Cleanup ovelays."

Reply via email to