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

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

[nongnu] elpa/iedit 011e8d354c 016/301: Performance optimization of iedi


From: ELPA Syncer
Subject: [nongnu] elpa/iedit 011e8d354c 016/301: Performance optimization of iedit-occurrence-update
Date: Mon, 10 Jan 2022 22:58:46 -0500 (EST)

branch: elpa/iedit
commit 011e8d354c58194d04a9fd353d580aafdc0567bb
Author: Victor Ren <victorhge@gmail.com>
Commit: Victor Ren <victorhge@gmail.com>

    Performance optimization of iedit-occurrence-update
---
 iedit.el | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/iedit.el b/iedit.el
index f710989ab7..ab1c194dee 100644
--- a/iedit.el
+++ b/iedit.el
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 2010, 2011, 2012 Victor Ren
 
-;; Time-stamp: <2012-01-17 02:58:46 Victor Ren>
+;; Time-stamp: <2012-01-19 16:21:18 Victor Ren>
 ;; Author: Victor Ren <victorhge@gmail.com>
 ;; Keywords: occurrence region replace simultaneous
 ;; Version: 0.91
@@ -373,16 +373,19 @@ This modification hook is triggered when a user edits any
 occurrence and is responsible for updating all other
 occurrences."
   (when (and after (not undo-in-progress)) ; undo will do all the work
-    (let ((value (buffer-substring (overlay-start occurrence) (overlay-end 
occurrence)))
-          (inhibit-modification-hooks t))
+    (let ((inhibit-modification-hooks t)
+          (offset (- beg (overlay-start occurrence))))
       (save-excursion
-        (dolist (like-occurrence iedit-occurrences-overlays)
-          (if (not (eq like-occurrence occurrence))
-              (progn
-                (goto-char (overlay-start like-occurrence))
-                (delete-region (overlay-start like-occurrence)
-                               (overlay-end like-occurrence))
-                (insert value))))))))
+        (if (eq 0 change) ; insertion
+            (let ((value (buffer-substring beg end)))
+              (dolist (like-occurrence (remove occurrence 
iedit-occurrences-overlays))
+                (progn
+                  (goto-char (+ (overlay-start like-occurrence) offset))
+                  (insert value))))
+          (dolist (like-occurrence (remove occurrence 
iedit-occurrences-overlays))
+            (let* ((beginning (+ (overlay-start like-occurrence) offset))
+                   (ending (+ beginning change)))
+              (delete-region beginning ending))))))))
 
 (defun iedit-next-occurrence ()
   "Move forward to the next occurrence in the `iedit'.



reply via email to

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