* '``(FOO ,@',@S)
``(FOO SB-IMPL::BACKQ-COMMA-AT S)
- b.
- * (write '`(, .ala.) :readably t :pretty t)
- `(,.ALA.)
-
- (note the space between the comma and the point)
-
143:
(reported by Jesse Bouwman 2001-10-24 through the unfortunately
prominent SourceForge web/db bug tracking system, which is
* fix bug 214: algorithm for noting rejected templates is now more
similar to that of template seletion. (also reported by rydis on
#lisp)
+ * fixed bug 141b: printing backquoted information readably and prettily
+ inserts a space where necessary.
* compiler enhancement: SIGNUM is now better able to derive the type
of its result.
* fixed some bugs revealed by Paul Dietz' test suite:
(princ ",@" stream))
(backq-comma-dot
(princ ",." stream)))
- (write (cadr form) :stream stream))
+ ;; Ha! an example of where the per-process specials for stream
+ ;; attributes rather than per-stream actually makes life easier.
+ ;; Since all of the attributes are shared in the dynamic state, we
+ ;; can do... -- CSR, 2003-09-30
+ (let ((output (with-output-to-string (s)
+ (write (cadr form) :stream s))))
+ (unless (= (length output) 0)
+ (when (and (eql (car form) 'backq-comma)
+ (or (char= (char output 0) #\.)
+ (char= (char output 0) #\@)))
+ (write-char #\Space stream))
+ (write-sequence output stream))))
;;; This is called by !PPRINT-COLD-INIT, fairly late, because
;;; SET-PPRINT-DISPATCH doesn't work until the compiler works.
return 0;
}
+/* These are not needed unless #+SB-THREAD, and since sigwaitinfo()
+ * doesn't seem to be easily available everywhere (OpenBSD...) it's
+ * more trouble than it's worth to compile it when not needed. */
+#if defined LISP_FEATURE_SB_THREAD
void block_sigcont(void)
{
/* don't allow ourselves to receive SIGCONT while we're in the
sigprocmask(SIG_BLOCK, &newset, 0);
}
-/* This is not needed unless #+SB-THREAD, and since sigwaitinfo()
- * doesn't seem to be easily available everywhere (OpenBSD...) it's
- * more trouble than it's worth to compile it when not needed. */
-#if defined LISP_FEATURE_SB_THREAD
void unblock_sigcont_and_sleep(void)
{
sigset_t set;
;2~%~
;3x"))))
+;;; bug 141b: not enough care taken to disambiguate ,.FOO and ,@FOO
+;;; from , .FOO and , @FOO
+(assert (equal
+ (with-output-to-string (s)
+ (write '`(, .foo) :stream s :pretty t :readably t))
+ "`(, .FOO)"))
+(assert (equal
+ (with-output-to-string (s)
+ (write '`(, @foo) :stream s :pretty t :readably t))
+ "`(, @FOO)"))
+(assert (equal
+ (with-output-to-string (s)
+ (write '`(, ?foo) :stream s :pretty t :readably t))
+ "`(,?FOO)"))
;;; success
(quit :unix-status 104)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.4.6"
+"0.8.4.7"