diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-11-08 11:16:25 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-11-08 22:31:58 +0100 |
commit | 23735137eb666e9fe2e848563615bca5bcea1282 (patch) | |
tree | 5ce26b3954ef5401c1096bbce76fc2d65e3420cd /guix/ui.scm | |
parent | 37eed374d92e0fbb29701b072c3a39433fbba16d (diff) | |
download | gnu-guix-23735137eb666e9fe2e848563615bca5bcea1282.tar gnu-guix-23735137eb666e9fe2e848563615bca5bcea1282.tar.gz |
ui: Define and honor '&error-location' and '&fix-hint' conditions.
* guix/utils.scm (&error-location, &fix-hint): New condition types.
* guix/ui.scm (report-load-error): Handle them.
(call-with-error-handling): Honor '&error-location'.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r-- | guix/ui.scm | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/guix/ui.scm b/guix/ui.scm index 40371e4710..a1152605e6 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -251,10 +251,20 @@ ARGS is the list of arguments received by the 'throw' handler." (location->string loc) message))) (('srfi-34 obj) (if (message-condition? obj) - (report-error (G_ "~a~%") - (gettext (condition-message obj) - %gettext-domain)) - (report-error (G_ "exception thrown: ~s~%") obj))) + (if (error-location? obj) + (format (current-error-port) + (G_ "~a: error: ~a~%") + (location->string (error-location obj)) + (gettext (condition-message obj) + %gettext-domain)) + (report-error (G_ "~a~%") + (gettext (condition-message obj) + %gettext-domain))) + (report-error (G_ "exception thrown: ~s~%") obj)) + (when (fix-hint? obj) + (format (current-error-port) (G_ "hint: ~a~%") + (fill-paragraph (texi->plain-text (condition-fix-hint obj)) + (terminal-columns) 8)))) ((error args ...) (report-error (G_ "failed to load '~a':~%") file) (apply display-error frame (current-error-port) args)))) @@ -517,6 +527,11 @@ interpreted." directories:~{ ~a~}~%") (file-search-error-file-name c) (file-search-error-search-path c))) + ((and (error-location? c) (message-condition? c)) + (format (current-error-port) + (G_ "~a: error: ~a~%") + (location->string (error-location c)) + (gettext (condition-message c) %gettext-domain))) ((message-condition? c) ;; Normally '&message' error conditions have an i18n'd message. (leave (G_ "~a~%") |