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:
Subcharacter #\v not defined for dispatch char ##. [Condition of type CONDITIONS:SIMPLE-READER-ERROR]
Restarts: 0: [ABORT] Abort handling SLIME request. 1: [ABORT] Quit process.
Now, I grovelled a bit in the sources and found: (defvar *readtable-alist* '() "An alist mapping package names to readtables.")
I tried to use this thusly:
Try to add what I think is reasonable to this alist CL-USER> (push (cons "GRAPHICS" *readtable*) swank::*readtable-alist*) (("GRAPHICS" . #<READTABLE 202E1B84>))
Verify that it finds the right package CL-USER> (swank::guess-buffer-readtable "graphics") #<READTABLE 202E1B84>
Make sure the correct table is in place: CL-USER> (get-dispatch-macro-character ## #\v (swank::guess-buffer-readtable "graphics")) #<function GRAPHICS::VECTOR-READER 237CF9D2> (looks good).
However, the next M-. failed in exactly the same way.
Tracing GUESS-BUFFER-READTABLE, I found it was in fact calling it with argument ":graphics", which I thought sub-optimal, but, no matter: CL-USER> (push (cons ":graphics" *readtable*) swank::*readtable-alist*) ((":graphics" . #<READTABLE 202E1B84>) ("GRAPHICS" . #<READTABLE 202E1B84>))
Now, surely it will work, right? Nope. Any clues?
Cheers, --ap