Fix named-readtables support.
authorFrancois-Rene Rideau <fare@tunes.org>
Tue, 19 Jun 2012 06:04:43 +0000 (02:04 -0400)
committerFrancois-Rene Rideau <fare@tunes.org>
Tue, 19 Jun 2012 06:04:43 +0000 (02:04 -0400)
meta-src.lisp

index ae14415..fbfbb8c 100644 (file)
              x
              :source-symbol source-symbol))))
 
-(eval-when (:compile-toplevel :load-toplevel :execute)
-(defparameter *saved-readtable* (copy-readtable))
-(defparameter *meta-readtable* (copy-readtable)))
-
 (defun meta-reader (s c)
   (make-meta :char c :form (read s)))
 (defun meta-curly-bracket (s c)
 (defun meta-square-bracket (s c)
   (make-meta :char c :form (read-delimited-list #\] s t)))
 
-(mapc #'(lambda (c) (set-macro-character c #'meta-reader nil *meta-readtable*)) '(#\@ #\$ #\!))
-
-(set-macro-character #\{ #'meta-curly-bracket nil *meta-readtable*)
-(set-macro-character #\[ #'meta-square-bracket nil *meta-readtable*)
-(mapc #'(lambda (c) (set-macro-character c (get-macro-character #\)) nil *meta-readtable*))
-  '(#\] #\}))
-
 (defreadtable :meta-mixin
   (:macro-char #\[ #'meta-square-bracket)
+  (:macro-char #\{ #'meta-curly-bracket)
   (:syntax-from :standard #\) #\])
-  (:macro-char #\[ #'meta-curly-bracket)
   (:syntax-from :standard #\) #\})
   (:macro-char #\@ #'meta-reader)
   (:macro-char #\$ #'meta-reader)
   (:macro-char #\! #'meta-reader))
 
 (defreadtable :meta
-  (:fuze :standard :meta))
+  (:fuze :standard :meta-mixin))
+
+(defparameter *saved-readtable* (find-readtable :standard))
+(defparameter *meta-readtable* (find-readtable :meta))
 
 (defmacro with-stream-meta ((source-symbol stream) &body body)
   `(let ((,source-symbol ,stream))
 (defun enable-meta-syntax ()
   (setf *readtable* *meta-readtable*))
 
-(defun disable-meta-syntax()
+(defun disable-meta-syntax ()
   (setf *readtable* *saved-readtable*))
 
-
 (provide 'meta)
 
 #|