Subject: RE: bug#8350: 24.0.50; wrong bindings for remapped keys

From: "Drew Adams" <[email-masked]>
Date: Sun, 27 Mar 2011 14:51:52 -0700

> > (define-key ctl-x-map [remap forward-char] 'backward-char)
> > C-x C-h (says C-x f is bound to `forward-char')
>  
> But ctl-x-map is never used as one of the active maps, it's always
> limited to being a prefix map bound to C-x, so the define-key 
> above will have pretty much no effect.

It was a simplified example.  And whether `ctl-x-map' is used as an active map
is irrelevant, I think, to the bugged behavior wrt `PREFIX-KEY C-h' described
here.

In any case, in my own use, where I uncovered this, the keymap is not
`ctl-x-map', just as the commands are not `forward-char' and `backward-char'.

In my use, `bmkp-this-buffer-jump', for example, is remapped to
`icicle-bookmark-this-buffer' in `icicle-mode-map' (a minor mode map).  And the
remapping works as expected - `icicle-bookmark-this-buffer' gets called.

And all of the help output is correct - except for `PREFIX-KEY C-h'.

`C-h w bmkp-this-buffer-jump' says:

"bmkp-this-buffer-jump is remapped to icicle-bookmark-this-buffer which is on
C-x j ."

`C-h w icicle-bookmark-this-buffer' says:

"icicle-bookmark-this-buffer is on C-x j ."

`C-h f bmkp-this-buffer-jump' says it is remapped to etc., etc.  All of the help
output is correct.  Except the output from `C-x j C-h', which shows this:

"C-x j .         bmkp-this-buffer-jump"

The code defining the initial binding of `bmkp-this-buffer-jump' includes this:

(define-prefix-command 'bmkp-jump-map)
(define-key ctl-x-map "j" bmkp-jump-map)
(define-key bmkp-jump-map "." 'bmkp-this-buffer-jump)