From: Nathan Bird Date: Mon, 20 Apr 2009 14:15:25 +0000 (-0400) Subject: new syntax macro (FILE-ENABLE-SQL-READER-SYNTAX) X-Git-Url: http://git.kpe.io/?a=commitdiff_plain;h=945ff67ce59c8be1bfdec385145a1d62fcad3352;p=clsql.git new syntax macro (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 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. --- diff --git a/sql/package.lisp b/sql/package.lisp index fbb67b4..c3c4a6d 100644 --- a/sql/package.lisp +++ b/sql/package.lisp @@ -391,6 +391,7 @@ #: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 diff --git a/sql/syntax.lisp b/sql/syntax.lisp index 436c224..1ce7e6b 100644 --- a/sql/syntax.lisp +++ b/sql/syntax.lisp @@ -66,6 +66,15 @@ the current syntax state." '(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*