[slime-devel] Re: C-M-q not working in SLIME 2007-01-20

Ariel Badichi abadichi at bezeqint.net
Tue Jan 23 14:03:22 UTC 2007


Hello,

Jeffrey Cunningham <jeffrey at cunningham.net> writes:

> On Tue Jan 23, 2007 at 02:59:54PM +0200, Ariel Badichi wrote:
> > 
> > 
> > I think it's correct, and this seems to have fixed it:
> > 
> > (defvar slime-scratch-mode-map
> >   (let ((map (make-sparse-keymap)))
> >     (set-keymap-parents map (list slime-mode-map lisp-mode-map))
> >     map))
> > 
> 
> 
> I will update the documentation accordingly. 
> 

Not just yet :)

I realized, while taking a shower, that there's something fishy there;
I didn't know too much about keymaps, so I thought slime-mode-map
should already have lisp-mode-map as its parent, and so wondered why
this was needed.  I read bits of the manual and learned about global
keymaps, minor mode keymaps, and local keymaps.  The conclusion I
ended up with is this: the parent keymap shouldn't have been
slime-mode-map, but lisp-mode-map, and only that.  This is because
slime-mode-map is already active because of the Slime minor mode, yet
lisp-mode-map is a local map.  I tested this by evaluating
(current-local-map) in the SLIME scratch buffer and in an ordinary
Lisp Slime buffer, and the results seem to confirm this.  (Showers do
that, y'know.)

So a better fix is:

(defvar slime-scratch-mode-map
  (let ((map (make-sparse-keymap)))
    (set-keymap-parent map lisp-mode-map)
    map))

> -Jeff

Ariel




More information about the slime-devel mailing list