X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fsyntax.lisp;h=f00545e9c22d288fd2afffbf985790e1264195e5;hp=c0e8487ba1edc355e78303ff8260cad0d17143c7;hb=ace0f0f5b9311e10f4638a206e60f601554ee102;hpb=ef0416dafb56478c481275abc9325e1ba59ef22f diff --git a/sql/syntax.lisp b/sql/syntax.lisp index c0e8487..f00545e 100644 --- a/sql/syntax.lisp +++ b/sql/syntax.lisp @@ -16,9 +16,7 @@ (in-package #:clsql-sys) -(defvar *original-reader-enter* nil) - -(defvar *original-reader-exit* nil) +(defvar *original-readtable* nil) (defvar *sql-macro-open-char* #\[) @@ -45,10 +43,9 @@ the current syntax state." (%disable-sql-reader-syntax))) (defun %disable-sql-reader-syntax () - (when *original-reader-enter* - (set-macro-character *sql-macro-open-char* *original-reader-enter*)) - (when *original-reader-exit* - (set-macro-character *sql-macro-close-char* *original-reader-exit*)) + (when *original-readtable* + (setf *readtable* *original-readtable* + *original-readtable* nil)) (values)) @@ -70,12 +67,10 @@ the current syntax state." (%enable-sql-reader-syntax))) (defun %enable-sql-reader-syntax () - (unless (eq (get-macro-character *sql-macro-open-char*) #'sql-reader-open) - (setf *original-reader-enter* (get-macro-character *sql-macro-open-char*)) - (set-macro-character *sql-macro-open-char* #'sql-reader-open)) - (unless (eq (get-macro-character *sql-macro-close-char*) - (get-macro-character #\))) - (setf *original-reader-exit* (get-macro-character *sql-macro-close-char*)) + (unless *original-readtable* + (setf *original-readtable* *readtable* + *readtable* (copy-readtable)) + (set-macro-character *sql-macro-open-char* #'sql-reader-open) (set-macro-character *sql-macro-close-char* (get-macro-character #\)))) (values))