summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLe Wang <l26wang@gmail.com>2012-12-07 00:00:04 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2012-12-07 00:00:04 -0500
commit3a21537c13a64983fadbdf64c19b5822297e89cc (patch)
tree0af6d96b9793051036345844e2a757d88a18b78c
parent610251116cbe83cf8c56811f8e447a9b041ef24d (diff)
downloademacs-3a21537c13a64983fadbdf64c19b5822297e89cc.tar.gz
* lisp/hilit-chg.el (hilit-chg-set-face-on-change): Don't burp in
narrowed buffer. Fixes: debbugs:12361
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/hilit-chg.el64
2 files changed, 39 insertions, 32 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0c6093f5a9e..3b7b62badc2 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-07 Le Wang <l26wang@gmail.com>
+
+ * hilit-chg.el (hilit-chg-set-face-on-change): Don't burp in
+ narrowed buffer (bug#12361).
+
2012-12-07 Michael Heerdegen <michael_heerdegen@web.de>
* emacs-lisp/debug.el (debug): Fix hard-coded frame counts (bug#10025).
@@ -3341,7 +3346,7 @@
* calendar/cal-tex.el (cal-tex-weekly-common):
Restore leading blank page.
-2012-08-22 Le Wang <l26wang@gmail.com> (tiny change)
+2012-08-22 Le Wang <l26wang@gmail.com>
* misc.el (forward-to-word, backward-to-word): Activate or extend
the region under `shift-select-mode'. (Bug#12231)
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 0970ece9446..7b5e2b54300 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -569,37 +569,39 @@ This allows you to manually remove highlighting from uninteresting changes."
highlight-changes-visible-mode)
(hilit-chg-fixup beg end))
(highlight-save-buffer-state
- (if (and (= beg end) (> leng-before 0))
- ;; deletion
- (progn
- ;; The eolp and bolp tests are a kludge! But they prevent
- ;; rather nasty looking displays when deleting text at the end
- ;; of line, such as normal corrections as one is typing and
- ;; immediately makes a correction, and when deleting first
- ;; character of a line.
- ;; (if (= leng-before 1)
- ;; (if (eolp)
- ;; (setq beg-decr 0 end-incr 0)
- ;; (if (bolp)
- ;; (setq beg-decr 0))))
- ;; (setq beg (max (- beg beg-decr) (point-min)))
- (setq end (min (+ end end-incr) (point-max)))
- (setq type 'hilit-chg-delete))
- ;; Not a deletion.
- ;; Most of the time the following is not necessary, but
- ;; if the current text was marked as a deletion then
- ;; the old overlay is still in effect, so if we add some
- ;; text then remove the deletion marking, but set it to
- ;; changed otherwise its highlighting disappears.
- (if (eq (get-text-property end 'hilit-chg) 'hilit-chg-delete)
- (progn
- (put-text-property end (+ end 1) 'hilit-chg 'hilit-chg)
- (if highlight-changes-visible-mode
- (hilit-chg-fixup beg (+ end 1))))))
- (unless no-property-change
- (put-text-property beg end 'hilit-chg type))
- (if (or highlight-changes-visible-mode no-property-change)
- (hilit-chg-make-ov type beg end)))))))
+ (if (and (= beg end) (> leng-before 0))
+ ;; deletion
+ (progn
+ ;; The eolp and bolp tests are a kludge! But they prevent
+ ;; rather nasty looking displays when deleting text at the end
+ ;; of line, such as normal corrections as one is typing and
+ ;; immediately makes a correction, and when deleting first
+ ;; character of a line.
+ ;; (if (= leng-before 1)
+ ;; (if (eolp)
+ ;; (setq beg-decr 0 end-incr 0)
+ ;; (if (bolp)
+ ;; (setq beg-decr 0))))
+ ;; (setq beg (max (- beg beg-decr) (point-min)))
+ (setq end (min (+ end end-incr) (point-max)))
+ (setq type 'hilit-chg-delete))
+ ;; Not a deletion.
+ ;; Most of the time the following is not necessary, but
+ ;; if the current text was marked as a deletion then
+ ;; the old overlay is still in effect. So if the user adds some
+ ;; text where she earlier deleted text, we have to remove the
+ ;; deletion marking, and replace it explicitly with a `changed'
+ ;; marking, otherwise its highlighting would disappear.
+ (if (eq (get-text-property end 'hilit-chg) 'hilit-chg-delete)
+ (save-restriction
+ (widen)
+ (put-text-property end (+ end 1) 'hilit-chg 'hilit-chg)
+ (if highlight-changes-visible-mode
+ (hilit-chg-fixup beg (+ end 1))))))
+ (unless no-property-change
+ (put-text-property beg end 'hilit-chg type))
+ (if (or highlight-changes-visible-mode no-property-change)
+ (hilit-chg-make-ov type beg end)))))))
(defun hilit-chg-update ()
"Update a buffer's highlight changes when visibility changed."