summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/print.c8
-rw-r--r--test-suite/tests/print.test5
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)