diff --git a/core/core-cli.el b/core/core-cli.el index 77ec13938..1124cff20 100644 --- a/core/core-cli.el +++ b/core/core-cli.el @@ -255,39 +255,42 @@ BODY will be run when this dispatcher is called." (cl-incf num-nonmacro-input-events) (cl-destructuring-bind (backtrace &optional type data . _) (cons (doom-cli--backtrace) data) - (cond - ((and (bound-and-true-p straight-process-buffer) - (stringp data) - (string-match-p (regexp-quote straight-process-buffer) - data)) - (print! (error "There was an unexpected package error")) - (when-let (output (straight--process-get-output)) + (let ((straight-error-p + (and (bound-and-true-p straight-process-buffer) + (string-match-p (regexp-quote straight-process-buffer) + (or (get type 'error-message) ""))))) + (cond + (straight-error-p + (print! (error "There was an unexpected package error")) + (when-let (output (straight--process-get-output)) + (print-group! + (print! "%s" (string-trim-right output))))) + ((print! (error "There was an unexpected error")) (print-group! - (print! "%s" (string-trim-right output))))) - ((print! (error "There was an unexpected error")) - (print-group! - (print! "%s %s" (bold "Message:") (get type 'error-message)) - (print! "%s %S" (bold "Data:") (cons type data)) - (when backtrace - (print! (bold "Backtrace:")) - (print-group! - (dolist (frame (seq-take backtrace 10)) - (print! - "%0.74s" (replace-regexp-in-string - "[\n\r]" "\\\\n" (format "%S" frame))))))))) - (when backtrace - (with-temp-file doom-cli-log-error-file - (insert "# -*- lisp-interaction -*-\n") - (insert "# vim: set ft=lisp:\n") - (let ((standard-output (current-buffer)) - (print-quoted t) - (print-escape-newlines t) - (print-escape-control-characters t) - (print-level nil) - (print-circle nil)) - (mapc #'print (cons (list type data) backtrace))) - (print! (warn "Extended backtrace logged to %s") - (relpath doom-cli-log-error-file))))) + (print! "%s %s" (bold "Message:") (get type 'error-message)) + (print! "%s %S" (bold "Data:") (cons type data)) + (when backtrace + (print! (bold "Backtrace:")) + (print-group! + (dolist (frame (seq-take backtrace 10)) + (print! + "%0.74s" (replace-regexp-in-string + "[\n\r]" "\\\\n" (format "%S" frame))))))))) + (when backtrace + (with-temp-file doom-cli-log-error-file + (insert "# -*- lisp-interaction -*-\n") + (insert "# vim: set ft=lisp:\n") + (let ((standard-output (current-buffer)) + (print-quoted t) + (print-escape-newlines t) + (print-escape-control-characters t) + (print-level nil) + (print-circle nil)) + (when straight-error-p + (print (string-trim (or (straight--process-get-output) "")))) + (mapc #'print (cons (list type data) backtrace))) + (print! (warn "Extended backtrace logged to %s") + (relpath doom-cli-log-error-file)))))) (throw 'exit 255)) (defun doom-cli--backtrace ()