Subject: bug#42207: 28.0.50; (where-is-internal) reports incorrect binding

From: Dima Kogan <[email-masked]>
Date: Sat, 04 Jul 2020 16:01:50 -0700

Hi. I'm using a pretty recent emacs built from git, although I don't
think this bug is a recent regression. From a user perspective, the
issue looks like this:

1. emacs -Q
2. Open any .py file, or just M-x python mode
3. M-x forward-se [TAB]

Step 3 asks emacs to complete. There're two matches: forward-sexp and
forward-sentence. Emacs also helpfully reports the associated bindings
with each command because suggest-key-bindings is not nil. It says
that the binding for forward-sentence is M-e, which is NOT the case
here: M-e is python-nav-forward-block.

Digging a bit, I see that the issue is that we call (where-is-internal)
in simple.el, and this is the issue:

  (key-description (where-is-internal 'forward-sentence nil t))

returns

  "M-e", even in python-mode

This maybe is related to the way this keymap is defined. python-mode-map is

  (keymap
   .... keys keys keys ...
   (remap keymap
          (mark-defun . python-mark-defun)
          (backward-up-list . python-nav-backward-up-list)
          (forward-sentence . python-nav-forward-block)
          (backward-sentence . python-nav-backward-block))
   ...
  )

I haven't read about this remap thing yet, and the docstring for
(where-is-internal) does have a NO-REMAP option, but "M-e" is reported
regardless of the value of NO-REMAP.

Thanks.

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/28.0.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.0.50/site-lisp:/usr/share/emacs/site-lisp
 --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/28.0.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.0.50/site-lisp:/usr/share/emacs/site-lisp
 --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars
 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs-snapshot-MVBGWo/emacs-snapshot-20200426+emacs-27.0.91-703-g453ada0309d=.
 -fstack-protector-strong -Wformat -Werror=format-security -Wall
 -fno-omit-frame-pointer' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
 LDFLAGS=-Wl,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS JSON PDUMPER
LCMS2 GMP

Important settings:
  value of $LC_ALL: C
  value of $LANG: C
  locale-coding-system: nil