From 544a637d6916ca9ec6ae63cf5ad90656ebbcbdfa Mon Sep 17 00:00:00 2001 Message-Id: <544a637d6916ca9ec6ae63cf5ad90656ebbcbdfa.1715697230.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sat, 19 Apr 2008 22:33:08 +0100 Subject: [PATCH] optparse: Prettify the error reporting. Organization: Straylight/Edgeware From: Mark Wooding Rather than have enormous strings in the source, use #.(concatenate ...) to build them out of smaller bits. --- optparse.lisp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/optparse.lisp b/optparse.lisp index 6e06fc0..b490b37 100644 --- a/optparse.lisp +++ b/optparse.lisp @@ -74,7 +74,13 @@ (defstruct (option (:predicate optionp) (lambda (o s k) (declare (ignore k)) (format s - "#" + #.(concatenate 'string + "#") (opt-short-name o) (opt-long-name o) (opt-arg-name o) @@ -289,8 +295,10 @@ (defun option-parse-next (op) (option-parse-error "Unknown option `~A'" optname)) ((cdr matches) (option-parse-error - "~ -Ambiguous long option `~A' -- could be any of:~{~% --~A~}" + #.(concatenate 'string + "Ambiguous long option `~A' -- " + "could be any of:" + "~{~%~8T--~A~}") optname (mapcar #'opt-long-name matches)))) (process-option (car matches) @@ -565,7 +573,9 @@ (defopthandler int (var arg) (&key radix min max) (when (or (and min (< v min)) (and max (> v max))) (option-parse-error - "Integer ~A out of range (must have ~@[~D <= ~]x~@[ <= ~D~])" + #.(concatenate 'string + "Integer ~A out of range " + "(must have ~@[~D <= ~]x~@[ <= ~D~])") arg min max)) (setf var v))) @@ -596,14 +606,18 @@ (defopthandler keyword (var arg) (&optional (valid t)) (push k matches))))) (cond ((null matches) - (option-parse-error "Argument `~A' invalid: must be one of:~ - ~{~%~8T~(~A~)~}" + (option-parse-error #.(concatenate 'string + "Argument `~A' invalid: " + "must be one of:" + "~{~%~8T~(~A~)~}") arg valid)) ((null (cdr matches)) (setf var (car matches))) (t - (option-parse-error "Argument `~A' ambiguous: may be any of:~ - ~{~%~8T~(~A~)~}" + (option-parse-error #.(concatenate 'string + "Argument `~A' ambiguous: " + "may be any of:" + "~{~%~8T~(~A~)~}") arg matches))))))) (defopthandler list (var arg) (&optional handler &rest handler-args) -- [mdw]