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

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

[nongnu] elpa/iedit 1d32922c04 089/301: Run after-change-functions hook


From: ELPA Syncer
Subject: [nongnu] elpa/iedit 1d32922c04 089/301: Run after-change-functions hook for every occurrence
Date: Mon, 10 Jan 2022 22:58:53 -0500 (EST)

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

    Run after-change-functions hook for every occurrence
---
 iedit.el | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/iedit.el b/iedit.el
index 8d821ab485..bf0c39ab61 100644
--- a/iedit.el
+++ b/iedit.el
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 2010, 2011, 2012 Victor Ren
 
-;; Time-stamp: <2012-03-14 23:00:29 Victor Ren>
+;; Time-stamp: <2012-07-01 17:04:39 Victor Ren>
 ;; Author: Victor Ren <victorhge@gmail.com>
 ;; Keywords: occurrence region simultaneous rectangle refactoring
 ;; Version: 0.95
@@ -677,8 +677,22 @@ occurrence, it will exit Iedit mode."
                 (if (eq 0 change)
                     (dolist (another-occurrence (remove occurrence 
iedit-occurrences-overlays))
                       (progn
-                        (goto-char (+ (overlay-start another-occurrence) 
offset))
-                        (insert-and-inherit value)))
+                        (let ((beginning (+ (overlay-start another-occurrence) 
offset))
+                              (ending (+ beginning (- end beg))))
+                          (goto-char beginning)
+                          (insert-and-inherit value)
+                          ;; todo: reconsider this change
+                          ;; Quick fix for multi-occur  occur-edit-mode:
+                          ;; multi-occur depend on after-change-functions to
+                          ;; update original buffer. Since
+                          ;; inhibit-modification-hooks is set to non-nil,
+                          ;; after-change-functions hooks are not going to be
+                          ;; called for the changes of other occurrences.
+                          ;; So run the hook here.
+                          (run-hook-with-args 'after-change-functions
+                                              beginning
+                                              ending
+                                              change))))
                   ;; deletion
                   (dolist (another-occurrence (remove occurrence 
iedit-occurrences-overlays))
                     (let* ((beginning (+ (overlay-start another-occurrence) 
offset))
@@ -686,7 +700,11 @@ occurrence, it will exit Iedit mode."
                       (delete-region beginning ending)
                       (unless (eq beg end) ;; replacement
                         (goto-char beginning)
-                        (insert-and-inherit value)))))))))))))
+                        (insert-and-inherit value))
+                      (run-hook-with-args 'after-change-functions
+                                          beginning
+                                          ending
+                                          change))))))))))))
 
 (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]