[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/6] ui: Define and honor '&error-location' and '&fix-hint' condi
From: |
Ludovic Courtès |
Subject: |
[PATCH 2/6] ui: Define and honor '&error-location' and '&fix-hint' conditions. |
Date: |
Wed, 8 Nov 2017 14:09:17 +0100 |
* 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'.
---
guix/ui.scm | 23 +++++++++++++++++++----
guix/utils.scm | 17 +++++++++++++++++
2 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/guix/ui.scm b/guix/ui.scm
index 40371e471..a1152605e 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~%")
diff --git a/guix/utils.scm b/guix/utils.scm
index eb1ec29b3..c0ffed172 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -28,6 +28,7 @@
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-35)
#:use-module (srfi srfi-39)
#:use-module (ice-9 binary-ports)
#:autoload (rnrs io ports) (make-custom-binary-input-port)
@@ -60,6 +61,14 @@
source-properties->location
location->source-properties
+ &error-location
+ error-location?
+ error-location
+
+ &fix-hint
+ fix-hint?
+ condition-fix-hint
+
nix-system->gnu-triplet
gnu-triplet->nix-system
%current-system
@@ -750,6 +759,14 @@ a location object."
(column . ,(location-column loc))
(filename . ,(location-file loc))))
+(define-condition-type &error-location &error
+ error-location?
+ (location error-location)) ;<location>
+
+(define-condition-type &fix-hint &condition
+ fix-hint?
+ (hint condition-fix-hint)) ;string
+
;;; Local Variables:
;;; eval: (put 'call-with-progress-reporter 'scheme-indent-function 1)
;;; End:
--
2.15.0
- Re: [PATCH] Re: The usability of Guix configurations, (continued)
- Re: [PATCH] Re: The usability of Guix configurations, myglc2, 2017/11/07
- Reporting module errors, Ludovic Courtès, 2017/11/07
- Re: Reporting module errors, myglc2, 2017/11/07
- Re: Reporting module errors, Hartmut Goebel, 2017/11/08
- Re: Reporting module errors, Ludovic Courtès, 2017/11/08
- [PATCH 0/6] Error reporting and hints for missing modules, Ludovic Courtès, 2017/11/08
- [PATCH 1/6] ui: Introduce (guix i18n)., Ludovic Courtès, 2017/11/08
- [PATCH 3/6] services: 'fold-service-types' honors its seed., Ludovic Courtès, 2017/11/08
- [PATCH 5/6] services: Add 'lookup-service-types'., Ludovic Courtès, 2017/11/08
- [PATCH 4/6] services: 'fold-service-types' includes (gnu services)., Ludovic Courtès, 2017/11/08
- [PATCH 2/6] ui: Define and honor '&error-location' and '&fix-hint' conditions.,
Ludovic Courtès <=
- [PATCH 6/6] gnu: Improve error reporting of the use-.*modules macros., Ludovic Courtès, 2017/11/08
- Re: [PATCH 6/6] gnu: Improve error reporting of the use-.*modules macros., Chris Marusich, 2017/11/10
- Re: [PATCH 6/6] gnu: Improve error reporting of the use-.*modules macros., Ludovic Courtès, 2017/11/11
- Re: [PATCH 6/6] gnu: Improve error reporting of the use-.*modules macros., Chris Marusich, 2017/11/11
- Re: [PATCH 0/6] Error reporting and hints for missing modules, julien lepiller, 2017/11/08
- Re: [PATCH 0/6] Error reporting and hints for missing modules, myglc2, 2017/11/08
- Re: [PATCH 0/6] Error reporting and hints for missing modules, myglc2, 2017/11/08
- Re: [PATCH 0/6] Error reporting and hints for missing modules, Ludovic Courtès, 2017/11/08
- Re: [PATCH 0/6] Error reporting and hints for missing modules, Ludovic Courtès, 2017/11/09
- Re: [PATCH 0/6] Error reporting and hints for missing modules, myglc2, 2017/11/10