From: Martin Rudalics Date: Thu, 17 May 2007 08:42:29 +0000 (+0000) Subject: (highlight-changes-rotate-faces): Don't set X-Git-Tag: emacs-pretest-23.0.90~12654 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=10e3e762bf0c91e3dbbbbc18a72c7e4a57ea118b;p=emacs.git (highlight-changes-rotate-faces): Don't set modified flag of buffer. Use `inhibit-modification-hooks'. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 679659bbe35..bca021e7add 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2007-05-17 Martin Rudalics + + * hilit-chg.el (highlight-changes-rotate-faces): Don't set + modified flag of buffer. Use `inhibit-modification-hooks'. + 2007-05-16 Richard Stallman * buff-menu.el (Buffer-menu-sort-column): Doc fix. diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el index c867bcfaf08..19cecb1c8be 100644 --- a/lisp/hilit-chg.el +++ b/lisp/hilit-chg.el @@ -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)