Luke Gorrie writes:
Alain.Picard@memetrics.com writes:
I have a file which defines a readtable so I can type things like #v(1 2). (Don't ask. :-)
When I hit M-. to find any definition in this file, emacs croaks and asks if I want to enter recursive edit. Saying yes yields a SLDB buffer like this:
The `with-standard-io-syntax' in dspec-stream-position looks suspicious to me (swank-lispworks.lisp). How about if you remove it?
If you remove it, it works. In fact, I think there are TWO bugs in that function; I think that *read-eval* needs to be set to T. I propose:
(defun dspec-stream-position (stream dspec) (let ((*read-eval* t)) (loop (let* ((pos (file-position stream)) (form (read stream nil '#1=#:eof))) (when (eq form '#1#) (return nil)) (labels ((check-dspec (form) (when (consp form) (let ((operator (car form))) (case operator ((progn) (mapcar #'check-dspec (cdr form))) ((eval-when locally macrolet symbol-macrolet) (mapcar #'check-dspec (cddr form))) ((in-package) (let ((package (find-package (second form)))) (when package (setq *package* package)))) (otherwise (let ((form-dspec (dspec:parse-form-dspec form))) (when (dspec:dspec-equal dspec form-dspec) (return pos))))))))) (check-dspec form))))))
in swank-lispworks.lisp.
Thanks!