The package look up in the with-redirected-y-or-n-p was broken because allegro expects keyword package names instead of strings. I changed (symbol-function (find-symbol "y-or-n-p-in-emacs" :swank)) to (symbol-function 'swank:y-or-n-p-in-emacs) because the former did not find the function even after exporting it properly from the swank package. Not sure why that's broken but the latter works an is shorter. --- This has been tested with Franz Lisp 8.2 64bit on Emacs 23.3.1 on Mac OSX Snow Leopard.
swank-allegro.lisp | 5 ++--- swank.lisp | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/swank-allegro.lisp b/swank-allegro.lisp index 352859a..af6c54b 100644 --- a/swank-allegro.lisp +++ b/swank-allegro.lisp @@ -642,14 +642,13 @@ ;; As the CL:Y-OR-N-P question is (for some reason) not directly ;; sent to the Slime user, the function CL:Y-OR-N-P is temporarily ;; overruled. - `(let* ((pkg (find-package "common-lisp")) + `(let* ((pkg (find-package :common-lisp)) (saved-pdl (excl::package-definition-lock pkg)) (saved-ynp (symbol-function 'cl:y-or-n-p)))
(setf (excl::package-definition-lock pkg) nil (symbol-function 'cl:y-or-n-p) (symbol-function - (find-symbol "y-or-n-p-in-emacs" - "swank"))) + 'swank:y-or-n-p-in-emacs)) (unwind-protect (progn ,@body)
diff --git a/swank.lisp b/swank.lisp index 024903c..e3a5a6d 100644 --- a/swank.lisp +++ b/swank.lisp @@ -65,7 +65,8 @@ #:set-default-directory #:quit-lisp #:eval-for-emacs - #:eval-in-emacs)) + #:eval-in-emacs + #:y-or-n-p-in-emacs))
(in-package :swank)
--