Turns on the SQL reader syntax for the rest of the file.
The CL spec says that when finished loading a file the original
*readtable* is restored. clhs COMPILE-FILE
This is because we kept having problems with the read syntax
not being disabled. When clsql goes to enable the syntax it first
checks that it hasn't already done so. Clsql believed it had, but
the lisp had correctly disabled it and so we are left without the
syntax being enabled.
#:locally-disable-sql-reader-syntax
#:locally-enable-sql-reader-syntax
#:restore-sql-reader-syntax-state
#:locally-disable-sql-reader-syntax
#:locally-enable-sql-reader-syntax
#:restore-sql-reader-syntax-state
+ #:file-enable-sql-reader-syntax
;; SQL operations (operations.lisp)
#:sql-query
;; SQL operations (operations.lisp)
#:sql-query
'(eval-when (:compile-toplevel :load-toplevel :execute)
(%enable-sql-reader-syntax)))
'(eval-when (:compile-toplevel :load-toplevel :execute)
(%enable-sql-reader-syntax)))
+(defmacro file-enable-sql-reader-syntax ()
+ "Turns on the SQL reader syntax for the rest of the file.
+The CL spec says that when finished loading a file the original
+*readtable* is restored. clhs COMPILE-FILE"
+ '(eval-when (:compile-toplevel :load-toplevel :execute)
+ (setf *readtable* (copy-readtable))
+ (set-macro-character *sql-macro-open-char* #'sql-reader-open)
+ (set-macro-character *sql-macro-close-char* (get-macro-character #\)))))
+
(defun %enable-sql-reader-syntax ()
(unless *original-readtable*
(setf *original-readtable* *readtable*
(defun %enable-sql-reader-syntax ()
(unless *original-readtable*
(setf *original-readtable* *readtable*