From f87d993410e38fad12d69b2f18b0ee6f64cb3d78 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Fri, 1 Feb 2002 04:17:59 +0000 Subject: [PATCH] (hilit-chg-fixup): Don't alter overlay if not ours. (hilit-chg-set-face-on-change): Rename arg. (hilit-chg-make-ov): Detect error earlier. --- lisp/hilit-chg.el | 48 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el index 357b39b5b45..607f320894a 100644 --- a/lisp/hilit-chg.el +++ b/lisp/hilit-chg.el @@ -442,12 +442,12 @@ This is the opposite of `hilit-chg-hide-changes'." (defun hilit-chg-make-ov (prop start end) + (or prop + (error "hilit-chg-make-ov: prop is nil")) ;; for the region make change overlays corresponding to ;; the text property 'hilit-chg (let ((ov (make-overlay start end)) face) - (or prop - (error "hilit-chg-make-ov: prop is nil")) (if (eq prop 'hilit-chg-delete) (setq face 'highlight-changes-delete-face) (setq face (nth 1 (member prop hilit-chg-list)))) @@ -487,30 +487,28 @@ This is the opposite of `hilit-chg-display-changes'." Ensure the overlays agree with the changes as determined from the text properties of type `hilit-chg' ." ;; Remove or alter overlays in region beg..end - (let (p ov ov-start ov-end - props q) - (setq p (overlays-in beg end)) + (let (ov-start ov-end props q) ;; temp for debugging: ;; (or (eq highlight-changes-mode 'active) ;; (error "hilit-chg-fixup called but Highlight Changes mode not active")) - (while p - (setq ov (car p)) - (setq ov-start (overlay-start ov)) - (setq ov-end (overlay-end ov)) - (if (< ov-start beg) - (progn - (move-overlay ov ov-start beg) + (dolist (ov (overlays-in beg end)) + ;; Don't alter overlays that are not ours. + (when (overlay-get ov 'hilit-chg) + (let ((ov-start (overlay-start ov)) + (ov-end (overlay-end ov))) + (if (< ov-start beg) + (progn + (move-overlay ov ov-start beg) + (if (> ov-end end) + (progn + (setq props (overlay-properties ov)) + (setq ov (make-overlay end ov-end)) + (while props + (overlay-put ov (car props)(car (cdr props))) + (setq props (cdr (cdr props))))))) (if (> ov-end end) - (progn - (setq props (overlay-properties ov)) - (setq ov (make-overlay end ov-end)) - (while props - (overlay-put ov (car props)(car (cdr props))) - (setq props (cdr (cdr props))))))) - (if (> ov-end end) - (move-overlay ov end ov-end) - (delete-overlay ov))) - (setq p (cdr p))) + (move-overlay ov end ov-end) + (delete-overlay ov)))))) (hilit-chg-display-changes beg end))) ;;;###autoload @@ -523,7 +521,7 @@ This allows you to manually remove highlighting from uninteresting changes." (hilit-chg-fixup beg end))) (defun hilit-chg-set-face-on-change (beg end leng-before - &optional no-proerty-change) + &optional no-property-change) "Record changes and optionally display them in a distinctive face. `hilit-chg-set' adds this function to the `after-change-functions' hook." ;; @@ -569,9 +567,9 @@ This allows you to manually remove highlighting from uninteresting changes." (put-text-property end (+ end 1) 'hilit-chg 'hilit-chg) (if (eq highlight-changes-mode 'active) (hilit-chg-fixup beg (+ end 1)))))) - (unless no-proerty-change + (unless no-property-change (put-text-property beg end 'hilit-chg type)) - (if (or (eq highlight-changes-mode 'active) no-proerty-change) + (if (or (eq highlight-changes-mode 'active) no-property-change) (hilit-chg-make-ov type beg end)))))) (defun hilit-chg-set (value) -- 2.39.2