Function: majutsu-process-finish

majutsu-process-finish is a natively compiled function defined in majutsu-process.el.

Signature

(majutsu-process-finish ARG &optional PROCESS-BUF COMMAND-BUF DEFAULT-DIR SECTION)

Documentation

Finalize a jj process log SECTION.

ARG may be a process object or an exit code. Return the exit code.

Source Code

;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-process.el
(defun majutsu-process-finish (arg &optional process-buf _command-buf default-dir section)
  "Finalize a jj process log SECTION.
ARG may be a process object or an exit code.  Return the exit code."
  (let ((process (unless (integerp arg) arg))
        exit-code)
    (unless (integerp arg)
      (setq process-buf (process-buffer arg))
      (setq default-dir (process-get arg 'default-dir))
      (setq section     (process-get arg 'section))
      (setq exit-code   (process-exit-status arg)))
    (when (integerp arg)
      (setq exit-code arg))

    (when (and (buffer-live-p process-buf) section (integerp exit-code))
      (with-current-buffer process-buf
        (majutsu--process-finish-section section exit-code)))

    (cond
     ((and (integerp exit-code) (= exit-code 0))
      (when-let* ((success-msg (and process (process-get process 'success-msg))))
        (message "%s" success-msg))
      (when-let* ((cb (and process (process-get process 'finish-callback))))
        (funcall cb process exit-code)))
     ((integerp exit-code)
      (let* ((msg (majutsu--process-error-summary process-buf section))
             (usage (majutsu--process--error-usage process-buf))
             (root default-dir))
        (when-let* ((log-buf (and root (majutsu--find-mode-buffer 'majutsu-log-mode root))))
          (with-current-buffer log-buf
            (setq-local majutsu-log--this-error (or msg "Command failed"))))
        (message "jj error: %s%s"
                 (or msg "Command failed")
                 (and usage (format " [%s]" usage))))))

    (when-let* ((cb (and process (process-get process 'finish-callback))))
      (unless (and (integerp exit-code) (= exit-code 0))
        (funcall cb process exit-code)))
    exit-code))