[slime-devel] Re: Broken readtables

Alain.Picard at memetrics.com Alain.Picard at memetrics.com
Thu Jun 17 08:56:58 UTC 2004


Luke Gorrie writes:
 > Alain.Picard at 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!




More information about the slime-devel mailing list