Function: smerge-find-conflict
smerge-find-conflict is a byte-compiled function defined in
smerge-mode.el.gz.
Signature
(smerge-find-conflict &optional LIMIT)
Documentation
Find and match a conflict region. Intended as a font-lock MATCHER.
The submatches are the same as in smerge-match-conflict.
Returns non-nil if a match is found between point and LIMIT.
Point is moved to the end of the conflict.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/smerge-mode.el.gz
(defun smerge-find-conflict (&optional limit)
"Find and match a conflict region. Intended as a font-lock MATCHER.
The submatches are the same as in `smerge-match-conflict'.
Returns non-nil if a match is found between point and LIMIT.
Point is moved to the end of the conflict."
(let ((found nil)
(pos (point))
conflict)
;; First check to see if point is already inside a conflict, using
;; the conflict overlays.
(while (and (not found) (setq conflict (smerge-conflict-overlay pos)))
;; Check the overlay's validity and kill it if it's out of date.
(condition-case nil
(progn
(goto-char (overlay-start conflict))
(smerge-match-conflict)
(goto-char (match-end 0))
(if (<= (point) pos)
(error "Matching backward!")
(setq found t)))
(error (smerge-remove-props
(overlay-start conflict) (overlay-end conflict))
(goto-char pos))))
;; If we're not already inside a conflict, look for the next conflict
;; and add/update its overlay.
(while (and (not found) (re-search-forward smerge-begin-re limit t))
(condition-case nil
(progn
(smerge-match-conflict)
(goto-char (match-end 0))
(let ((conflict (smerge-conflict-overlay (1- (point)))))
(if conflict
;; Update its location, just in case it got messed up.
(move-overlay conflict (match-beginning 0) (match-end 0))
(setq conflict (make-overlay (match-beginning 0) (match-end 0)
nil 'front-advance nil))
(overlay-put conflict 'evaporate t)
(overlay-put conflict 'smerge 'conflict)
(let ((props smerge-text-properties))
(while props
(overlay-put conflict (pop props) (pop props))))))
(setq found t))
(error nil)))
found))