emacs: Display guix command errors in the minibuffer.

* emacs/guix-main.scm (output+error): New procedure.
  (guix-command-output): Use it.
* emacs/guix-base.el (guix-command-output): Display error output in the
  minibuffer.
This commit is contained in:
Alex Kost 2015-09-13 21:34:23 +03:00
parent 46e17df661
commit ea369ee1b0
2 changed files with 23 additions and 6 deletions

View File

@ -1134,9 +1134,12 @@ The function is called with a single argument - a command line string."
(defun guix-command-output (args)
"Return string with 'guix ARGS ...' output."
(guix-eval-read
(apply #'guix-make-guile-expression
'guix-command-output args)))
(cl-multiple-value-bind (output error)
(guix-eval (apply #'guix-make-guile-expression
'guix-command-output args))
;; Remove trailing new space from the error string.
(message (replace-regexp-in-string "\n\\'" "" (read error)))
(read output)))
(defun guix-help-string (&optional commands)
"Return string with 'guix COMMANDS ... --help' output."

View File

@ -71,6 +71,18 @@
(define (list-maybe obj)
(if (list? obj) obj (list obj)))
(define (output+error thunk)
"Call THUNK and return 2 values: output and error output as strings."
(let ((output-port (open-output-string))
(error-port (open-output-string)))
(with-output-to-port output-port
(lambda () (with-error-to-port error-port thunk)))
(let ((strings (list (get-output-string output-port)
(get-output-string error-port))))
(close-output-port output-port)
(close-output-port error-port)
(apply values strings))))
(define (full-name->name+version spec)
"Given package specification SPEC with or without output,
return two values: name and version. For example, for SPEC
@ -953,9 +965,11 @@ GENERATIONS is a list of generation numbers."
(const #t)))
(define (guix-command-output . args)
"Return string with 'guix ARGS ...' output."
(with-output-to-string
(lambda () (apply guix-command args))))
"Return 2 strings with 'guix ARGS ...' output and error output."
(output+error
(lambda ()
(parameterize ((guix-warning-port (current-error-port)))
(apply guix-command args)))))
(define (help-string . commands)
"Return string with 'guix COMMANDS ... --help' output."