summaryrefslogtreecommitdiff
path: root/lisp/smerge-mode.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2005-09-23 18:15:20 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2005-09-23 18:15:20 +0000
commit6acb6996ad3f36875c37c954d55f91a170abd8ac (patch)
treea5540752d5bfa9facdcbd9bb8b77d49bed5edd1a /lisp/smerge-mode.el
parent24c7740c996b7c4bec9e3d69f1754a7b1f8a706b (diff)
downloademacs-6acb6996ad3f36875c37c954d55f91a170abd8ac.tar.gz
(smerge-remove-props): Cause re-highlighting of the whole conflict.
Diffstat (limited to 'lisp/smerge-mode.el')
-rw-r--r--lisp/smerge-mode.el12
1 files changed, 11 insertions, 1 deletions
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el
index 31c7c4f2f12..e777f3f8211 100644
--- a/lisp/smerge-mode.el
+++ b/lisp/smerge-mode.el
@@ -335,7 +335,17 @@ according to `smerge-match-conflict'.")
(defun smerge-remove-props (beg end)
(remove-overlays beg end 'smerge 'refine)
- (remove-overlays beg end 'smerge 'conflict))
+ (remove-overlays beg end 'smerge 'conflict)
+ ;; Now that we use overlays rather than text-properties, this function
+ ;; does not cause refontification any more. It can be seen very clearly
+ ;; in buffers where jit-lock-contextually is not t, in which case deleting
+ ;; the "<<<<<<< foobar" leading line leaves the rest of the conflict
+ ;; highlighted as if it were still a valid conflict. Note that in many
+ ;; important cases (such as the previous example) we're actually called
+ ;; during font-locking so inhibit-modification-hooks is non-nil, so we
+ ;; can't just modify the buffer and expect font-lock to be triggered as in:
+ ;; (put-text-property beg end 'smerge-force-highlighting nil)
+ (remove-text-properties beg end '(fontified nil)))
(defun smerge-popup-context-menu (event)
"Pop up the Smerge mode context menu under mouse."