X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-format.lisp;h=a31bc5166c785438d8c2dbf86a8c83c61fd1813e;hb=15d6e7c9a2c3234f95dfe278046fa2fee1b0c007;hp=e3c44757ab8c38fa2befc1ccf5390ea1de1b5884;hpb=2f5aeff1d09f7a5a8a354ce71a9844bbbe0dffdd;p=sbcl.git diff --git a/src/code/target-format.lisp b/src/code/target-format.lisp index e3c4475..a31bc51 100644 --- a/src/code/target-format.lisp +++ b/src/code/target-format.lisp @@ -1022,8 +1022,8 @@ (*logical-block-popper* nil) (*outside-args* args)) (catch 'up-and-out - (do-guts arg arg) - args)) + (do-guts arg arg)) + args) (do-guts orig-args args))) (do-loop (orig-args args) (catch (if colonp 'up-up-and-out 'up-and-out) @@ -1067,7 +1067,8 @@ ;; situation. (error 'format-error :complaint "~D illegal directive~:P found inside justification block" - :args (list count))) + :args (list count) + :references (list '(:ansi-cl :section (22 3 5 2))))) (interpret-format-justification stream orig-args args segments colonp atsignp first-semi params)))) @@ -1112,8 +1113,6 @@ (defun format-justification (stream newline-prefix extra-space line-len strings pad-left pad-right mincol colinc minpad padchar) (setf strings (reverse strings)) - (when (and (not pad-left) (not pad-right) (null (cdr strings))) - (setf pad-left t)) (let* ((num-gaps (+ (1- (length strings)) (if pad-left 1 0) (if pad-right 1 0))) @@ -1124,18 +1123,19 @@ (length (if (> chars mincol) (+ mincol (* (ceiling (- chars mincol) colinc) colinc)) mincol)) - (padding (- length chars))) + (padding (+ (- length chars) (* num-gaps minpad)))) (when (and newline-prefix (> (+ (or (sb!impl::charpos stream) 0) length extra-space) line-len)) (write-string newline-prefix stream)) (flet ((do-padding () - (let ((pad-len (truncate padding num-gaps))) + (let ((pad-len + (if (zerop num-gaps) padding (truncate padding num-gaps)))) (decf padding pad-len) (decf num-gaps) (dotimes (i pad-len) (write-char padchar stream))))) - (when pad-left + (when (or pad-left (and (not pad-right) (null (cdr strings)))) (do-padding)) (when strings (write-string (car strings) stream)