(Arne Babenhauserheide)
2017-11-11: use ## for literal arrays in wisp to avoid stumbling over newline use ## for literal arrays in wisp to avoid stumbling over newline issues
diff --git a/tests/literalarray.scm b/tests/literalarray.scm
--- a/tests/literalarray.scm
+++ b/tests/literalarray.scm
@@ -1,1 +1,4 @@
#(a b)
+
+#(
+ (a b))
diff --git a/tests/literalarray.w b/tests/literalarray.w
--- a/tests/literalarray.w
+++ b/tests/literalarray.w
@@ -1,1 +1,4 @@
-# a b
+## a b
+
+##
+ a b
diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -494,12 +494,6 @@ Also unescape \\: to :.
linebracketizer instring inbrackets bracketstoadd
. (string-append (string-drop-right unprocessed 2) "`")
. processed
- ;; literal array #(...)
- : and (string-prefix? "(" processed) : equal? " # " lastupto3
- ; leave out the second space
- linebracketizer instring inbrackets bracketstoadd
- . (string-append (string-drop-right unprocessed 2) "#")
- . processed
: and (string-prefix? "(" processed) : equal? " #` " lastupto4
; leave out the second space
linebracketizer instring inbrackets bracketstoadd
@@ -515,6 +509,12 @@ Also unescape \\: to :.
linebracketizer instring inbrackets bracketstoadd
. (string-append (string-drop-right unprocessed 3) "#,")
. processed
+ ;; literal array #(...)
+ : and (string-prefix? "(" processed) : equal? " ## " lastupto4
+ ; leave out the second space
+ linebracketizer instring inbrackets bracketstoadd
+ . (string-append (string-drop-right unprocessed 3) "#")
+ . processed
: and (string-prefix? "(" processed) : equal? " #,@, " lastupto6
; leave out the second space
linebracketizer instring inbrackets bracketstoadd
@@ -544,7 +544,7 @@ The line *must* have a whitespace after
line-indent line
string-append "(" : string-drop (line-content line) 1 ; keep whitespace
line-comment line
- let loop : : paren-prefixes : list "' " ", " "` " "#` " "#' " "#, " "#,@, " "# "
+ let loop : : paren-prefixes : list "' " ", " "` " "#` " "#' " "#, " "#,@, " "## "
; first check whether we are done checking
if : null-list? paren-prefixes
; construct the line structure: '(indentation-depth content comment)
@@ -563,14 +563,18 @@ The line *must* have a whitespace after
list
line-indent line
string-append
- . prefix-no-space "("
+ ;; special case for literal arrays, clean in wisp-scheme.w
+ if (equal? prefix-no-space "##") "#" prefix-no-space
+ . "("
string-drop (line-content line) : string-length prefix
line-comment line
: line-only-prefix? line prefix-no-space
list
line-indent line
string-append
- . (string-drop-right prefix 1) "("
+ ;; special case for literal arrays, clean in wisp-scheme.w
+ if (equal? prefix-no-space "##") "#" (string-drop-right prefix 1)
+ . "("
string-drop (line-content line) : string-length prefix-no-space
line-comment line
else
diff --git a/wisp-reader.w b/wisp-reader.w
--- a/wisp-reader.w
+++ b/wisp-reader.w
@@ -37,7 +37,7 @@ define wisp-pending-sexps : list
define : read-one-wisp-sexp port env
;; allow using "# foo" as #(foo).
- read-hash-extend #\space : λ (chr port) #\#
+ read-hash-extend #\# : λ (chr port) #\#
cond
: eof-object? : peek-char port
read-char port ; return eof: we’re done