thunder
thunder

Reputation: 343

Strange behaviour formatting a long string

Something must explain this, but for me this makes currently no sense :)

If you have this three variables:

(setf l '((( "NAME" "HASH-TABLE" )) ("&BODY") ("BODY")))
(setf fs "WITH-HASH-TABLE-ITERATOR")
(setf doc "V0lUSC1IQVNILVRBQkxFLUlURVJBVE9SICgobmFtZSBoYXNoLXRhYmxlKSAmYm9keSBib2R5KQoKUHJvdmlkZXMgYSBtZXRob2Qgb2YgbWFudWFsbHkgbG9vcGluZyBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIGhhc2gtdGFibGUuIE5BTUUKaXMgYm91bmQgdG8gYSBnZW5lcmF0b3ItbWFjcm8gdGhhdCwgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgaW52b2NhdGlvbiwKcmV0dXJucyBvbmUgb3IgdGhyZWUgdmFsdWVzLiBUaGUgZmlyc3QgdmFsdWUgdGVsbHMgd2hldGhlciBhbnkgb2JqZWN0cyByZW1haW4KaW4gdGhlIGhhc2ggdGFibGUuIFdoZW4gdGhlIGZpcnN0IHZhbHVlIGlzIG5vbi1OSUwsIHRoZSBzZWNvbmQgYW5kIHRoaXJkCnZhbHVlcyBhcmUgdGhlIGtleSBhbmQgdGhlIHZhbHVlIG9mIHRoZSBuZXh0IG9iamVjdC4KCkNvbnNlcXVlbmNlcyBhcmUgdW5kZWZpbmVkIGlmIEhBU0gtVEFCTEUgaXMgbXV0YXRlZCBkdXJpbmcgZXhlY3V0aW9uIG9mIEJPRFksCmV4Y2VwdCBmb3IgY2hhbmdpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBrZXkuIFRoZQphcHBsaWVzIHRvIGFsbCB0aHJlYWRzLCBub3QganVzdCB0aGUgY3VycmVudCBvbmUgLS0gZXZlbiBmb3Igc3luY2hyb25pemVkCmhhc2gtdGFibGVzLiBJZiB0aGUgdGFibGUgbWF5IGJlIG11dGF0ZWQgYnkgYW5vdGhlciB0aHJlYWQgZHVyaW5nIGl0ZXJhdGlvbiwKdXNlIGVnLiBTQi1FWFQ6V0lUSC1MT0NLRUQtSEFTSC1UQUJMRSB0byBwcm90ZWN0IHRoZSBXSVRILUhBU0gtVEFCTEUtSVRFUkFUT1IKZm9yLg==")

format it with this directive:

(format NIL "~a ~a ~a" fs doc l)

I get the output:

"WITH-HASH-TABLE-ITERATOR V0lUSC1IQVNILVRBQkxFLUlURVJBVE9SICgobmFtZSBoYXNoLXRhYmxlKSAmYm9keSBib2R5KQoKUHJvdmlkZXMgYSBtZXRob2Qgb2YgbWFudWFsbHkgbG9vcGluZyBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIGhhc2gtdGFibGUuIE5BTUUKaXMgYm91bmQgdG8gYSBnZW5lcmF0b3ItbWFjcm8gdGhhdCwgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgaW52b2NhdGlvbiwKcmV0dXJucyBvbmUgb3IgdGhyZWUgdmFsdWVzLiBUaGUgZmlyc3QgdmFsdWUgdGVsbHMgd2hldGhlciBhbnkgb2JqZWN0cyByZW1haW4KaW4gdGhlIGhhc2ggdGFibGUuIFdoZW4gdGhlIGZpcnN0IHZhbHVlIGlzIG5vbi1OSUwsIHRoZSBzZWNvbmQgYW5kIHRoaXJkCnZhbHVlcyBhcmUgdGhlIGtleSBhbmQgdGhlIHZhbHVlIG9mIHRoZSBuZXh0IG9iamVjdC4KCkNvbnNlcXVlbmNlcyBhcmUgdW5kZWZpbmVkIGlmIEhBU0gtVEFCTEUgaXMgbXV0YXRlZCBkdXJpbmcgZXhlY3V0aW9uIG9mIEJPRFksCmV4Y2VwdCBmb3IgY2hhbmdpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBrZXkuIFRoZQphcHBsaWVzIHRvIGFsbCB0aHJlYWRzLCBub3QganVzdCB0aGUgY3VycmVudCBvbmUgLS0gZXZlbiBmb3Igc3luY2hyb25pemVkCmhhc2gtdGFibGVzLiBJZiB0aGUgdGFibGUgbWF5IGJlIG11dGF0ZWQgYnkgYW5vdGhlciB0aHJlYWQgZHVyaW5nIGl0ZXJhdGlvbiwKdXNlIGVnLiBTQi1FWFQ6V0lUSC1MT0NLRUQtSEFTSC1UQUJM (((NAME
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         HASH-TABLE))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (&BODY)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (BODY))"

Note the line breaks at the end of the printed list. I expected one straight line without any line breaks. This must be coming from SBCL and is not some command line behaviour with long strings, since (format NIL ...) gives me a similar output in a string. The behaviour is also new in SBCL > 2.0.

Is there some control variable I'm missing, like *print-level*?

Sorry for the long outputs, but it happens only with long outputs.

Upvotes: 0

Views: 114

Answers (1)

Barmar
Barmar

Reputation: 781769

This is due to *PRINT-PRETTY* being set. This causes the printer to wrap lines and try to line up list elements.

Fix it with

(setq *print-pretty* nil)

Upvotes: 2

Related Questions