[Advanced-readtable-cvs] r8 -

rklochkov at common-lisp.net rklochkov at common-lisp.net
Sun Dec 9 09:12:41 UTC 2012


Author: rklochkov
Date: Sun Dec  9 01:12:39 2012
New Revision: 8

Log:
Fixed assoc check in handler

Modified:
   src.lisp

Modified: src.lisp
==============================================================================
--- src.lisp	Sat Dec  8 21:48:36 2012	(r7)
+++ src.lisp	Sun Dec  9 01:12:39 2012	(r8)
@@ -245,7 +245,7 @@
 (defmacro set-handler (handler-list key function)
   (let ((key-var (gensym "key")))
     `(let ((,key-var ,key))
-       (unless (assoc ,key-var ,handler-list)
+       (unless (assoc ,key-var ,handler-list :test #'equal)
          (push (cons ,key-var ,function)
                ,handler-list)))))
                       
@@ -272,7 +272,7 @@
 
 after that reducers:... will refer to new package, not com.clearly-useful.reducers.
 "
-  (%set-handler (package-finders package) (list :prefix prefix) name
+  (%set-handler (package-finders package) `(:prefix ,prefix) name
     (cl:find-package (concatenate 'string prefix "." name))))
 
 (defun push-local-nickname (long-package nick 
@@ -294,7 +294,7 @@
  (push-local-nickname :lib1 :lib :a)
 "
   (let ((dpackage (find-package long-package)))
-    (%set-handler (package-finders current-package) (list :nick long-package nick) name
+    (%set-handler (package-finders current-package) `(:nick ,long-package ,nick) name
       (when (string= name (string nick)) dpackage))))
 
 (defun push-local-package (symbol local-package)
@@ -311,7 +311,7 @@
 , because first for is in ITERATE package, but second -- is not.
 "
   (let ((dpackage (find-package local-package)))
-    (%set-handler (extra-finders symbol) (list :nick long-package nick) name
+    (%set-handler (extra-finders symbol) `(:local ,symbol ,local-package) name
       (multiple-value-bind (symbol status) (cl:find-symbol name dpackage)
         (when (eq status :external) symbol)))))
 




More information about the Advanced-readtable-cvs mailing list