]> git.eshelyaron.com Git - emacs.git/commitdiff
(highlight-changes-rotate-faces): Don't set
authorMartin Rudalics <rudalics@gmx.at>
Thu, 17 May 2007 08:42:29 +0000 (08:42 +0000)
committerMartin Rudalics <rudalics@gmx.at>
Thu, 17 May 2007 08:42:29 +0000 (08:42 +0000)
modified flag of buffer.  Use `inhibit-modification-hooks'.

lisp/ChangeLog
lisp/hilit-chg.el

index 679659bbe35317fdb632e6a707b56aa27d22a865..bca021e7addb96244071c7d6d81368b57ac8e355 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-17  Martin Rudalics  <rudalics@gmx.at>
+
+       * hilit-chg.el (highlight-changes-rotate-faces): Don't set
+       modified flag of buffer.  Use `inhibit-modification-hooks'.
+
 2007-05-16  Richard Stallman  <rms@gnu.org>
 
        * buff-menu.el (Buffer-menu-sort-column): Doc fix.
index c867bcfaf08f734104f547033ee682e61faef004..19cecb1c8be8ec7cbce838878af531f105487dd4 100644 (file)
@@ -790,17 +790,37 @@ this, eval the following in the buffer to be saved:
   (interactive)
   ;; If not in active mode do nothing but don't complain because this
   ;; may be bound to a hook.
-  (if (eq highlight-changes-mode 'active)
-      (let ((after-change-functions nil))
-       ;; ensure hilit-chg-list is made and up to date
-       (hilit-chg-make-list)
-       ;; remove our existing overlays
-       (hilit-chg-hide-changes)
-       ;; for each change text property, increment it
-       (hilit-chg-map-changes 'hilit-chg-bump-change)
-       ;; and display them all if active
-       (if (eq highlight-changes-mode 'active)
-           (hilit-chg-display-changes))))
+  (when (eq highlight-changes-mode 'active)
+    (let ((modified (buffer-modified-p))
+         (inhibit-modification-hooks t))
+      ;; The `modified' related code tries to combine two goals: (1) Record the
+      ;; rotation in `buffer-undo-list' and (2) avoid setting the modified flag
+      ;; of the current buffer due to the rotation.  We do this by inserting (in
+      ;; `buffer-undo-list') entries restoring buffer-modified-p to nil before
+      ;; and after the entry for the rotation.
+      (unless modified
+       ;; Install the "before" entry.
+       (setq buffer-undo-list
+             (cons '(apply restore-buffer-modified-p nil)
+                   buffer-undo-list)))
+      (unwind-protect
+         (progn
+           ;; ensure hilit-chg-list is made and up to date
+           (hilit-chg-make-list)
+           ;; remove our existing overlays
+           (hilit-chg-hide-changes)
+           ;; for each change text property, increment it
+           (hilit-chg-map-changes 'hilit-chg-bump-change)
+           ;; and display them all if active
+           (if (eq highlight-changes-mode 'active)
+               (hilit-chg-display-changes)))
+       (unless modified
+         ;; Install the "after" entry.
+         (setq buffer-undo-list
+               (cons '(apply restore-buffer-modified-p nil)
+                     buffer-undo-list))
+
+         (restore-buffer-modified-p nil)))))
   ;; This always returns nil so it is safe to use in write-file-functions
   nil)