diff options
-rw-r--r-- | libguile/print.c | 8 | ||||
-rw-r--r-- | test-suite/tests/print.test | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/libguile/print.c b/libguile/print.c index 4fe9b7770..4ad2a9572 100644 --- a/libguile/print.c +++ b/libguile/print.c @@ -503,8 +503,12 @@ print_r7rs_extended_symbol (SCM sym, SCM port) case '\\': scm_lfwrite_unlocked ("\\x5c;", 5, port); break; default: if (uc_is_general_category_withtable (c, - SUBSEQUENT_IDENTIFIER_MASK - | UC_CATEGORY_MASK_Zs)) + UC_CATEGORY_MASK_L + | UC_CATEGORY_MASK_M + | UC_CATEGORY_MASK_N + | UC_CATEGORY_MASK_P + | UC_CATEGORY_MASK_S) + || (c == ' ')) { if (!display_character (c, port, strategy)) scm_encoding_error ("print_r7rs_extended_symbol", errno, diff --git a/test-suite/tests/print.test b/test-suite/tests/print.test index 7269887d6..6ef0e9fc7 100644 --- a/test-suite/tests/print.test +++ b/test-suite/tests/print.test @@ -63,6 +63,11 @@ "bar | backslash \\ alarm \a backspace \b tab \t newline \n cr \r null \0 del " (string #\del))))) + (pass-if-equal "brackets" + "|()[]{}|" + (write-with-options '(r7rs-symbols) + (string->symbol "()[]{}"))) + (pass-if-equal "starts with bar" "|\\|foo|" (write-with-options '(r7rs-symbols) |