From 92718807dc442b36c4ec549e63166248d6c56c39 Mon Sep 17 00:00:00 2001 From: Nathan Bird Date: Mon, 20 Apr 2009 10:15:25 -0400 Subject: [PATCH] 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. --- sql/package.lisp | 1 + sql/syntax.lisp | 9 +++++++++ 2 files changed, 10 insertions(+) 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* -- 2.34.1