wisp
 
(Arne Babenhauserheide)
2014-07-14: merge

merge

diff --git a/.hgsigs b/.hgsigs
--- a/.hgsigs
+++ b/.hgsigs
@@ -8,3 +8,4 @@ 1d95b99da08b25917847702a382c691b5bd1de69
 a41ca7bf033667a8dfeacd48be5caf315fabb020 0 iJwEAAEIAAYFAlL2Z+gACgkQ3M8NswvBBUisDgQAiHKSfcOdlWoin7wpHDVlyKhAxAIg5D9xwAGDj2CIVEu4cpw5HdZ8t8fjyrP6lMsAkHnCVNUlRjprdo7PR4al1uxNmz4H0mQMlDLxG4Sfj2x01w3DDgiNOfV/65lwNY9BNxULCjwBlHN5qzv9toLwZ29SLEZXvshuZBxe8qSfBy8=
 a2ae0f4d637ff5d615acc91d82d21259b0ec3b94 0 iJwEAAEIAAYFAlMJPXwACgkQ3M8NswvBBUjSEAP/bvPcy52p1mq4LuEkYxvj3UYnknT6g3yDCCXNEa2vuy6rkekZvbl6h9U2/FM37JEw2sgeqcp2P7epJzlxSpd9jIH+5/xT7R1FViOibLBumZ/5cQoMsthQyyrB2NhQbxtUf6fH5TnqZU/z9jdAZqBLABNaNeufetjGXbYmn4W7zk4=
 4e9a5aef2eb1307e082d4536afa5d4f47840b6ec 0 iQEcBAABAgAGBQJTIGw4AAoJEFyD82SnDaCeQw4IAKt5CZS8Jx4qyL3Zb8z0xjop461uDnEXyg0m+QL2fUgv3kpsZM5CqgZRm8mF3bnRTtmPwwvtD+mjkz+xCUhAWkqCMH+VusLnwfVAeOxAAvvXT+z8quh/Xt9qZ8J8VaWh6L1CrYl8xJFDJlymCe/2pcOn9OnWF3QeNuLswWllebGRXFHpeUs+JZKVxXhwSyGnfKOiboXfpkrW4VoyCuWR4Mz/KczohAj8dZYhD+gRjTUGLS64TJbaevmTnffexgqvM3KYj8hvwx4m1Iz95QLxcb09fRA9BoRPNvaOHUNMsPSlpoDEMI/pBBfWx0ALadaYTmJvG/jGeyYDCWQMAXUjMIs=
+a321c87fec27f184407da6a410c482a944074b7e 0 iQEcBAABAgAGBQJTw8CwAAoJEFyD82SnDaCeb/sH/374MNTwjx2LqBDAaK0jMHsFabm1/vZ99hlzNo0d7TPbl6/KkeicnluTpB+HVYtssMwHEFGiIWAY1xmX3rZKrYDpvCr2r15UZqqtyyeJxdDkqTQfsI7qwQy4FhZAfI9o948zYQ3z32TtsjPoyS6JDRZ1D0rBcU8/+K9AaYwl3QVsyxuvVwJK2Wb/Afn8CbG8xn0JtGNRbosfAAcgQDnV4MqA1p5MSDX3UaImWuVuBM9ejIvcyiBXxpwUb2DiEfFF8agsJoHQ/Vjy1j+IPE/mIa6nfV9I4Czb9wpItDXJe56wrsmGHEVVstnzys4DPiEWH57tG+iFgHXuw3gBJfySi2g=
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -16,3 +16,4 @@ bb1c4165b8a6d12929625e6518a5b1c727c75942
 0e1335f015a83c6c6616019189c665b3849269ce v0.5.10
 07ec05365e84d29d24ce5f476654f9542931ed2d v0.5.11
 9af37e8efa7a2674caec07c7d2339f136f380d37 wisp-mode-0.2
+5475d743562512c44d2cdd0bf534c78c88efb0f8 v0.6.0
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,14 @@
+wisp 0.6.0 (2014-07-14): 
+- Better performance
+- Support for SRFI-105
+- Working syntax highlighting in export via wisp-mode.el
+- Wisp can now execute wisp-files directly via `guile -L . --language=wisp file.w`.
+- Icosahedric Advection-Diffusion example: examples/d20world.w
+- Draft for an SRFI
+- Presentatien: Why Wisp?
+- Working autoreconf -i; ./configure; make distcheck
+- Real Testsuite (./runtests.sh . .)
+
 wisp 0.5.3 (2014-01-08): Started to use autotools to get make distcheck.
 
 wisp 0.5.2 (2014-01-07): Support general paren-prefixes for macros.
@@ -14,4 +25,4 @@ wisp 0.5 (2013-09-13): Wisp now has a RE
     Voilà, you have wisp at the REPL!
     Caveeat: the wisp-parser is still experimental and contains known bugs. Use it for testing, but please do not rely on it for important stuff, yet.
 
-wisp 0.4 (2013-09-10): wisp-guile.w can now parse itself! Bootstrapping: The magical feeling of seeing a language (dialect) grow up to live by itself: python3 wisp.py wisp-guile.w > 1 && guile 1 wisp-guile.w > 2 && guile 2 wisp-guile.w > 3 && diff 2 3. Starting today, wisp is implemented in wisp.
\ No newline at end of file
+wisp 0.4 (2013-09-10): wisp-guile.w can now parse itself! Bootstrapping: The magical feeling of seeing a language (dialect) grow up to live by itself: python3 wisp.py wisp-guile.w > 1 && guile 1 wisp-guile.w > 2 && guile 2 wisp-guile.w > 3 && diff 2 3. Starting today, wisp is implemented in wisp.
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 dnl run `autoreconf -i` to generate a configure script. 
 dnl Then run ./configure to generate a Makefile.
 dnl Finally run make to generate the project.
-AC_INIT([wisp], [0.5.9],
+AC_INIT([wisp], [0.6.0],
         [arne_bab@web.de])
 # Check for programs I need for my build
 AC_CANONICAL_TARGET
@@ -21,4 +21,4 @@ AS_IF([test "x$python3" = "xno"],
 AM_INIT_AUTOMAKE([gnu])
 AM_MAINTAINER_MODE([enable])
 AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
\ No newline at end of file
+AC_OUTPUT
diff --git a/wisp-multiline.sh b/wisp-multiline.sh
--- a/wisp-multiline.sh
+++ b/wisp-multiline.sh
@@ -41,7 +41,7 @@ else
 fi
 
 PROGNAME=`basename $0`
-ARGS=`getopt --name "$PN" --long help,lisp:,verbose,version,output:,wisp:interactive --options hl:vo:w:i -- "$@"`
+ARGS=`getopt --name "$PROGNAME" --long help,lisp:,verbose,version,output:,wisp:interactive --options hl:vo:w:i -- "$@"`
 if [ $? -ne 0 ]; then
   exit 1
 fi
diff --git a/wisp-reader.w b/wisp-reader.w
--- a/wisp-reader.w
+++ b/wisp-reader.w
@@ -15,6 +15,9 @@ define-module : language wisp spec
   . #:use-module : system base language
   . #:export : wisp
 
+; Set locale to something which supports unicode. Required to avoid using fluids.
+setlocale LC_ALL ""
+
 ;;;
 ;;; Language definition
 ;;;
@@ -30,10 +33,12 @@ define wisp-pending-port : make-object-p
 ; Code thanks to Mark Weaver
 define : read-one-wisp-sexp port env
   define : read-wisp-chunk
-    let : : s : wisp2lisp : wisp-chunkreader port
-       set! : wisp-pending-port port
-              open-input-string s
-       try-pending
+    if : eof-object? : peek-char port
+      read-char port ; return eof: we’re done
+      let : : s : wisp2lisp : wisp-chunkreader port
+        set! : wisp-pending-port port
+               open-input-string s
+        try-pending
   define : try-pending
     let : : pending-port : wisp-pending-port port
       if pending-port