Function: majutsu-ediff--control-packet-spec

majutsu-ediff--control-packet-spec is a natively compiled function defined in majutsu-ediff.el.

Signature

(majutsu-ediff--control-packet-spec LINE)

Documentation

Parse Majutsu Ediff control packet LINE into a plist spec.

Return nil when LINE is not a valid control packet.

Source Code

;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-ediff.el
(defun majutsu-ediff--control-packet-spec (line)
  "Parse Majutsu Ediff control packet LINE into a plist spec.
Return nil when LINE is not a valid control packet."
  (when (string-match
         (format "^%s: \\([0-9]+\\) \\(DIFF\\|MERGE\\) \\(.*\\)\\(?:\\r\\)?$"
                 majutsu-ediff--control-packet-prefix)
         line)
    (let* ((pid (match-string 1 line))
           (kind (downcase (match-string 2 line)))
           (fields (split-string (match-string 3 line) "\x1f" nil)))
      (pcase kind
        ("diff"
         (pcase fields
           (`(,left ,right ,file)
            (let ((spec (list :pid pid
                              :type 'diff
                              :left left
                              :right right)))
              (if (string-empty-p file)
                  spec
                (append spec (list :file file)))))
           (`(,left ,right)
            (list :pid pid :type 'diff :left left :right right))
           (_ nil)))
        ("merge"
         (pcase fields
           (`(,left ,base ,right ,output ,marker)
            (list :pid pid
                  :type 'merge
                  :left left
                  :base base
                  :right right
                  :output output
                  :marker marker))
           (_ nil)))
        (_ nil)))))