(in-package #:clsql-sys)
-(defvar *original-reader-enter* nil)
-
-(defvar *original-reader-exit* nil)
+(defvar *original-readtable* nil)
(defvar *sql-macro-open-char* #\[)
(%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))
(%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))