Function: majutsu-conflict--match-line

majutsu-conflict--match-line is a natively compiled function defined in majutsu-conflict.el.

Signature

(majutsu-conflict--match-line LIMIT)

Documentation

Match any line within JJ conflict. Font-lock ANCHORED-MATCHER.

Sets match-data and updates state variables.

Source Code

;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-conflict.el
(defun majutsu-conflict--match-line (limit)
  "Match any line within JJ conflict.  Font-lock ANCHORED-MATCHER.
Sets match-data and updates state variables."
  (when (< (point) limit)
    (let* ((line-beg (line-beginning-position))
           (line-end (line-end-position))
           (line (buffer-substring-no-properties line-beg line-end))
           (expected-len (or majutsu-conflict--marker-len
                             majutsu-conflict-min-marker-len))
           (parsed (majutsu-conflict--parse-marker-line line expected-len))
           (kind (and parsed
                      (majutsu-conflict--marker-kind (plist-get parsed :char)))))
      (cond
       ;; Marker line
       ((memq kind '(begin end diff add remove))
        (pcase kind
          ('begin
           ;; Detect style from first body line using this conflict's marker length.
           (setq majutsu-conflict--marker-len (plist-get parsed :len)
                 majutsu-conflict--in-diff nil
                 majutsu-conflict--in-add nil
                 majutsu-conflict--in-remove nil
                 majutsu-conflict--add-count 0)
           (setq majutsu-conflict--style
                 (majutsu-conflict--detect-style line-beg majutsu-conflict--marker-len)))
          ('end
           (setq majutsu-conflict--in-diff nil
                 majutsu-conflict--in-add nil
                 majutsu-conflict--in-remove nil
                 majutsu-conflict--marker-len nil))
          ('diff
           (setq majutsu-conflict--in-diff t
                 majutsu-conflict--in-add nil
                 majutsu-conflict--in-remove nil))
          ('add
           (setq majutsu-conflict--in-diff nil
                 majutsu-conflict--in-add t
                 majutsu-conflict--in-remove nil)
           (cl-incf majutsu-conflict--add-count))
          ('remove
           (setq majutsu-conflict--in-diff nil
                 majutsu-conflict--in-add nil
                 majutsu-conflict--in-remove t)))
        (set-match-data (list line-beg (min (1+ line-end) (point-max))))
        (goto-char (min (1+ line-end) (point-max)))
        t)
       ;; Note marker
       ((eq kind 'note)
        (set-match-data (list line-beg (min (1+ line-end) (point-max))))
        (goto-char (min (1+ line-end) (point-max)))
        t)
       ;; Content line
       (t
        (set-match-data (list line-beg (min (1+ line-end) (point-max))))
        (goto-char (min (1+ line-end) (point-max)))
        t)))))