Function: magit-call-smerge

magit-call-smerge is a byte-compiled function defined in magit-apply.el.

Signature

(magit-call-smerge FN)

Source Code

;; Defined in ~/.emacs.d/elpa/magit-20260411.1452/magit-apply.el
(defun magit-call-smerge (fn)
  (pcase-let* ((file (magit-file-at-point t t))
               (keep (get-file-buffer file))
               (`(,buf ,pos) (magit-diff-visit-file--noselect))
               (keep (eq keep buf)))
    (with-current-buffer buf
      (save-excursion
        (save-restriction
          (unless (<= (point-min) pos (point-max))
            (widen))
          (goto-char pos)
          (condition-case nil
              (smerge-match-conflict)
            (error
             (if (eq fn #'smerge-keep-current)
                 (when (eq this-command #'magit-discard)
                   (re-search-forward smerge-begin-re nil t)
                   (setq fn
                         (magit-read-char-case "Keep side: " t
                           (?o "[o]urs/upper"   #'smerge-keep-upper)
                           (?b "[b]ase"         #'smerge-keep-base)
                           (?t "[t]heirs/lower" #'smerge-keep-lower))))
               (re-search-forward smerge-begin-re nil t))))
          (funcall fn)))
      (when (and keep (magit-anything-unmerged-p file))
        (smerge-start-session))
      (save-buffer))
    (unless keep
      (kill-buffer buf))
    (magit-refresh)))