X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/1c1ea17d710f2e1d40fc1e48a354195303fd7d4f..7dd104a3fdcd6f0094ec2e0f8c6a18564949eb49:/src/optparse.lisp diff --git a/src/optparse.lisp b/src/optparse.lisp index 16b5b7b..5017fe4 100644 --- a/src/optparse.lisp +++ b/src/optparse.lisp @@ -83,9 +83,9 @@ #+ecl (loop for i from 1 below (ext:argc) collect (ext:argv i)))) - (error "Unsupported Lisp.")))))) + (error "Unsupported Lisp")))))) - *program-name* (pathname-name (car *command-line*)))) + *program-name* (pathname-name (car *command-line*)))) ;;;-------------------------------------------------------------------------- ;;; Fancy conditionals. @@ -165,7 +165,7 @@ (opt-long-name o) (opt-arg-optional-p o) (opt-arg-name o) - (opt-documentation o))))) + (opt-%documentation o))))) (:constructor %make-option (&key long-name tag negated-tag short-name arg-name arg-optional-p documentation @@ -207,7 +207,7 @@ wrapped. If nil, the option is omitted from the help text. - Usually, one won't use make-option, but use the option macro instead." + Usually, one won't use `make-option', but use the `option' macro instead." (long-name nil :type (or null string)) (tag nil :type t) (negated-tag nil :type t) @@ -896,11 +896,8 @@ ;;; Support stuff for help and usage messages. (defun print-text (string - &optional - (stream *standard-output*) - &key - (start 0) - (end nil)) + &optional (stream *standard-output*) + &key (start 0) (end nil)) "Prints STRING to a pretty-printed STREAM, breaking it at whitespace and newlines in the obvious way. Stuff between square brackets is not broken: this makes usage messages work better." @@ -1000,22 +997,25 @@ (dolist (o opts) (let ((doc (opt-documentation o))) (cond ((not o)) - ((not (opt-long-name o)) + ((not (or (opt-short-name o) + (opt-long-name o))) (when newlinep (terpri stream) (setf newlinep nil)) (pprint-logical-block (stream nil) (print-text doc stream)) (terpri stream)) - (t + (doc (setf newlinep t) (pprint-logical-block (stream nil :prefix " ") - (format stream "~:[ ~;-~:*~C,~] --~A" + (format stream "~:[ ~;-~:*~C~:[~;,~]~:*~]~@[ --~A~]" (opt-short-name o) (opt-long-name o)) (when (opt-arg-name o) - (format stream "~:[=~A~;[=~A]~]" + (format stream + "~:[~;[~]~:[~0@*~:[ ~;~]~*~;=~]~A~0@*~:[~;]~]" (opt-arg-optional-p o) + (opt-long-name o) (opt-arg-name o))) (write-string " " stream) (pprint-tab :line 30 1 stream)