GNU bug report logs - #62626
29.0.60; describe-key errors on Edit → Paste from Kill Ring → [any item]

Previous Next

Package: emacs;

Reported by: Spencer Baugh <sbaugh <at> janestreet.com>

Date: Sun, 2 Apr 2023 18:50:01 UTC

Severity: normal

Found in version 29.0.60

To reply to this bug, email your comments to 62626 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Sun, 02 Apr 2023 18:50:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Spencer Baugh <sbaugh <at> janestreet.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 02 Apr 2023 18:50:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Spencer Baugh <sbaugh <at> janestreet.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.60; describe-key errors on Edit → Paste
 from Kill Ring → [any item]
Date: Sun, 02 Apr 2023 14:49:41 -0400
1. emacs -Q
2. C-h k and in the menu bar, click on "Edit", then "Paste from Kill
Menu", then "(any string)".
3. See error printed in *Messages*:
event-basic-type: Wrong type argument: integer-or-marker-p, "(any string)"
4. Type "foobar" and kill it
5. C-h k and in the menu bar, click on "Edit", then "Paste from Kill
Menu", then "foobar".
6. See error printed in *Messages*:
event-basic-type: Wrong type argument: integer-or-marker-p, #("foobar" 0 6 (fontified t))

This happens on both Emacs 28 and Emacs 29.

It looks like this is happening because help--read-key-sequence calls
event-basic-type on the last element of the key sequence returned from
read-key-sequence, which in this case is a string.

The following patch fixes it (that is, makes describe-key complete
successfully and show appropriate help), but I'm not sure if it's right.

diff --git a/lisp/help.el b/lisp/help.el
index 83be85b1ee4..73ac793f4aa 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1021,8 +1021,8 @@ help--read-key-sequence
                    (raw-seq (this-single-command-raw-keys))
                    (keyn (when (> (length seq) 0)
                            (aref seq (1- (length seq)))))
-                   (base (event-basic-type keyn))
-                   (modifiers (event-modifiers keyn)))
+                   (base (and (integer-or-marker-p keyn) (event-basic-type keyn)))
+                   (modifiers (and (integer-or-marker-p keyn) (event-modifiers keyn))))
               (cond
                ((zerop (length seq)))   ;FIXME: Can this happen?
                ((and no-mouse-movement (eq base 'mouse-movement)) nil)
--




In GNU Emacs 29.0.60 (build 3, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.15.12, Xaw scroll bars) of 2023-03-13 built on
 igm-qws-u22796a
Repository revision: e759905d2e0828eac4c8164b09113b40f6899656
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: CentOS Linux 7 (Core)

Configured using:
 'configure --with-x-toolkit=lucid --with-modules
 --with-gif=ifavailable'

Configured features:
CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM LUCID
ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  bug-reference-prog-mode: t
  jane-fe-minor-mode: t
  editorconfig-mode: t
  which-function-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  auto-revert-mode: t
  shell-dirtrack-mode: t
  windmove-mode: t
  savehist-mode: t
  save-place-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/csharp-mode hides /home/sbaugh/.local/src/emacs29/lisp/progmodes/csharp-mode
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/eldoc hides /home/sbaugh/.local/src/emacs29/lisp/emacs-lisp/eldoc
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/auctex/lpath hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dictionary/lpath
/home/sbaugh/.local/src/emacs29/lisp/net/dictionary hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dictionary/dictionary
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/caml-font hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/ocaml/caml-font
/home/sbaugh/.local/src/emacs29/lisp/org/org-version hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-version
/home/sbaugh/.local/src/emacs29/lisp/org/org-loaddefs hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-loaddefs
/home/sbaugh/.local/src/emacs29/lisp/org/org-keys hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-keys
/home/sbaugh/.local/src/emacs29/lisp/org/ol hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol
/home/sbaugh/.local/src/emacs29/lisp/org/ob-perl hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-perl
/home/sbaugh/.local/src/emacs29/lisp/org/ob-core hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-core
/home/sbaugh/.local/src/emacs29/lisp/org/ox hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox
/home/sbaugh/.local/src/emacs29/lisp/org/ol-rmail hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-rmail
/home/sbaugh/.local/src/emacs29/lisp/org/ob-octave hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-octave
/home/sbaugh/.local/src/emacs29/lisp/org/ob-comint hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-comint
/home/sbaugh/.local/src/emacs29/lisp/org/ol-w3m hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-w3m
/home/sbaugh/.local/src/emacs29/lisp/org/ob-org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-org
/home/sbaugh/.local/src/emacs29/lisp/org/ox-texinfo hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-texinfo
/home/sbaugh/.local/src/emacs29/lisp/org/org-inlinetask hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-inlinetask
/home/sbaugh/.local/src/emacs29/lisp/org/ol-mhe hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-mhe
/home/sbaugh/.local/src/emacs29/lisp/org/ob-ocaml hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ocaml
/home/sbaugh/.local/src/emacs29/lisp/org/ob-clojure hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-clojure
/home/sbaugh/.local/src/emacs29/lisp/org/ox-publish hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-publish
/home/sbaugh/.local/src/emacs29/lisp/org/ol-irc hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-irc
/home/sbaugh/.local/src/emacs29/lisp/org/ob-calc hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-calc
/home/sbaugh/.local/src/emacs29/lisp/org/ox-odt hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-odt
/home/sbaugh/.local/src/emacs29/lisp/org/org-id hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-id
/home/sbaugh/.local/src/emacs29/lisp/org/ol-gnus hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-gnus
/home/sbaugh/.local/src/emacs29/lisp/org/ob-matlab hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-matlab
/home/sbaugh/.local/src/emacs29/lisp/org/ox-icalendar hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-icalendar
/home/sbaugh/.local/src/emacs29/lisp/org/org-footnote hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-footnote
/home/sbaugh/.local/src/emacs29/lisp/org/ol-bibtex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-bibtex
/home/sbaugh/.local/src/emacs29/lisp/org/ob-lisp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lisp
/home/sbaugh/.local/src/emacs29/lisp/org/ob-C hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-C
/home/sbaugh/.local/src/emacs29/lisp/org/ox-org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-org
/home/sbaugh/.local/src/emacs29/lisp/org/org-indent hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-indent
/home/sbaugh/.local/src/emacs29/lisp/org/ol-info hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-info
/home/sbaugh/.local/src/emacs29/lisp/org/ob-maxima hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-maxima
/home/sbaugh/.local/src/emacs29/lisp/org/ob-awk hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-awk
/home/sbaugh/.local/src/emacs29/lisp/org/ox-man hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-man
/home/sbaugh/.local/src/emacs29/lisp/org/org-goto hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-goto
/home/sbaugh/.local/src/emacs29/lisp/org/ox-md hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-md
/home/sbaugh/.local/src/emacs29/lisp/org/ol-eshell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-eshell
/home/sbaugh/.local/src/emacs29/lisp/org/ob-lua hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lua
/home/sbaugh/.local/src/emacs29/lisp/org/org-habit hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-habit
/home/sbaugh/.local/src/emacs29/lisp/org/ob-R hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-R
/home/sbaugh/.local/src/emacs29/lisp/org/ol-eww hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-eww
/home/sbaugh/.local/src/emacs29/lisp/org/ob-makefile hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-makefile
/home/sbaugh/.local/src/emacs29/lisp/org/ox-latex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-latex
/home/sbaugh/.local/src/emacs29/lisp/org/ol-docview hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-docview
/home/sbaugh/.local/src/emacs29/lisp/org/ob-lob hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lob
/home/sbaugh/.local/src/emacs29/lisp/org/ox-beamer hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-beamer
/home/sbaugh/.local/src/emacs29/lisp/org/org-faces hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-faces
/home/sbaugh/.local/src/emacs29/lisp/org/ob hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob
/home/sbaugh/.local/src/emacs29/lisp/org/ox-html hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-html
/home/sbaugh/.local/src/emacs29/lisp/org/org-feed hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-feed
/home/sbaugh/.local/src/emacs29/lisp/org/ol-bbdb hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-bbdb
/home/sbaugh/.local/src/emacs29/lisp/org/ob-lilypond hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lilypond
/home/sbaugh/.local/src/emacs29/lisp/org/ox-ascii hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-ascii
/home/sbaugh/.local/src/emacs29/lisp/org/ob-latex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-latex
/home/sbaugh/.local/src/emacs29/lisp/org/org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org
/home/sbaugh/.local/src/emacs29/lisp/org/ob-tangle hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-tangle
/home/sbaugh/.local/src/emacs29/lisp/org/org-tempo hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-tempo
/home/sbaugh/.local/src/emacs29/lisp/org/org-duration hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-duration
/home/sbaugh/.local/src/emacs29/lisp/org/ob-sqlite hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sqlite
/home/sbaugh/.local/src/emacs29/lisp/org/org-entities hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-entities
/home/sbaugh/.local/src/emacs29/lisp/org/ob-table hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-table
/home/sbaugh/.local/src/emacs29/lisp/org/ob-js hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-js
/home/sbaugh/.local/src/emacs29/lisp/org/org-table hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-table
/home/sbaugh/.local/src/emacs29/lisp/org/ob-sql hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sql
/home/sbaugh/.local/src/emacs29/lisp/org/org-timer hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-timer
/home/sbaugh/.local/src/emacs29/lisp/org/org-element hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-element
/home/sbaugh/.local/src/emacs29/lisp/org/ob-java hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-java
/home/sbaugh/.local/src/emacs29/lisp/org/org-ctags hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-ctags
/home/sbaugh/.local/src/emacs29/lisp/org/ob-shell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-shell
/home/sbaugh/.local/src/emacs29/lisp/org/ob-groovy hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-groovy
/home/sbaugh/.local/src/emacs29/lisp/org/org-src hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-src
/home/sbaugh/.local/src/emacs29/lisp/org/org-datetree hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-datetree
/home/sbaugh/.local/src/emacs29/lisp/org/ob-haskell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-haskell
/home/sbaugh/.local/src/emacs29/lisp/org/org-plot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-plot
/home/sbaugh/.local/src/emacs29/lisp/org/org-compat hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-compat
/home/sbaugh/.local/src/emacs29/lisp/org/ob-screen hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-screen
/home/sbaugh/.local/src/emacs29/lisp/org/ob-fortran hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-fortran
/home/sbaugh/.local/src/emacs29/lisp/org/org-protocol hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-protocol
/home/sbaugh/.local/src/emacs29/lisp/org/org-crypt hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-crypt
/home/sbaugh/.local/src/emacs29/lisp/org/ob-sed hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sed
/home/sbaugh/.local/src/emacs29/lisp/org/ob-gnuplot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-gnuplot
/home/sbaugh/.local/src/emacs29/lisp/org/org-pcomplete hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-pcomplete
/home/sbaugh/.local/src/emacs29/lisp/org/org-colview hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-colview
/home/sbaugh/.local/src/emacs29/lisp/org/ob-scheme hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-scheme
/home/sbaugh/.local/src/emacs29/lisp/org/ob-forth hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-forth
/home/sbaugh/.local/src/emacs29/lisp/org/org-num hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-num
/home/sbaugh/.local/src/emacs29/lisp/org/org-clock hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-clock
/home/sbaugh/.local/src/emacs29/lisp/org/ob-exp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-exp
/home/sbaugh/.local/src/emacs29/lisp/org/org-mouse hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-mouse
/home/sbaugh/.local/src/emacs29/lisp/org/org-capture hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-capture
/home/sbaugh/.local/src/emacs29/lisp/org/ob-sass hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sass
/home/sbaugh/.local/src/emacs29/lisp/org/ob-eval hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-eval
/home/sbaugh/.local/src/emacs29/lisp/org/ob-ref hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ref
/home/sbaugh/.local/src/emacs29/lisp/org/ob-emacs-lisp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-emacs-lisp
/home/sbaugh/.local/src/emacs29/lisp/org/org-mobile hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-mobile
/home/sbaugh/.local/src/emacs29/lisp/org/ob-ruby hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ruby
/home/sbaugh/.local/src/emacs29/lisp/org/ob-eshell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-eshell
/home/sbaugh/.local/src/emacs29/lisp/org/org-lint hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-lint
/home/sbaugh/.local/src/emacs29/lisp/org/org-agenda hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-agenda
/home/sbaugh/.local/src/emacs29/lisp/org/org-macro hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-macro
/home/sbaugh/.local/src/emacs29/lisp/org/org-attach-git hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-attach-git
/home/sbaugh/.local/src/emacs29/lisp/org/ob-processing hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-processing
/home/sbaugh/.local/src/emacs29/lisp/org/ob-css hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-css
/home/sbaugh/.local/src/emacs29/lisp/org/ob-dot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-dot
/home/sbaugh/.local/src/emacs29/lisp/org/org-list hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-list
/home/sbaugh/.local/src/emacs29/lisp/org/org-macs hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-macs
/home/sbaugh/.local/src/emacs29/lisp/org/org-attach hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-attach
/home/sbaugh/.local/src/emacs29/lisp/org/org-archive hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-archive
/home/sbaugh/.local/src/emacs29/lisp/org/ob-python hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-python
/home/sbaugh/.local/src/emacs29/lisp/org/ob-plantuml hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-plantuml
/home/sbaugh/.local/src/emacs29/lisp/org/ob-ditaa hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ditaa
/home/sbaugh/.local/src/emacs29/lisp/org/ob-julia hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ob-julia
/home/sbaugh/.local/src/emacs29/lisp/org/ol-man hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ol-man
/home/sbaugh/.local/src/emacs29/lisp/org/ox-koma-letter hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ox-koma-letter
/home/sbaugh/.emacs.d/elpa/dash-2.19.1/dash hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dash/dash
/home/sbaugh/.emacs.d/elpa/dash-2.19.1/dash-functional hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dash/dash-functional

Features:
(quail emacs-news-mode descr-text magit-imenu git-rebase etags repeat
fileloop etrace elp two-column sml-mode sml-move sml-defs sml-util
sml-compat org-datetree completion diary-lib diary-loaddefs cal-iso
cal-move mule-diag ispell reveal semantic/symref/grep semantic/symref
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet reposition pulse mule-util ibuffer
ibuffer-loaddefs timezone face-remap url-http-ntlm ntlm hmac-md5
hex-util md4 man em-unix em-term term disp-table ehelp em-script
em-prompt em-ls em-hist em-pred em-glob em-extpipe em-cmpl em-dirs
esh-var em-basic em-banner em-alias esh-mode eshell esh-cmd esh-ext
esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util ediff
ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init
ediff-util make-mode pcmpl-unix pcmpl-gnu rect cus-edit cus-start
cus-load finder lisp-mnt url-misc network-stream url-cache debbugs-gnu
debbugs-compat debbugs soap-client url-http url-gw nsm rng-xsd
xsd-regexp textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check shadow mail-extr emacsbug sql tabify oc-basic org-capture
shortdoc dabbrev misc ob-ditaa ob-plantuml org-clock org-colview
org-crypt org-ctags org-habit org-mouse org-plot org-protocol ox-odt
rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse
nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda
ox-html table ox-ascii ox-publish ox org-element org-persist org-id
org-refile avl-tree generator cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs novice vc-hg sort ol-eww
eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range gnus-win gnus nnheader range wid-edit
ol-docview doc-view jka-compr image-mode exif ol-bibtex bibtex ol-bbdb
ol-w3m ol-doi org-link-doi log-view vc-git vc vc-dispatcher texinfo
texinfo-loaddefs misearch multi-isearch bug-reference dired-aux
sh-script treesit hl-line display-line-numbers executable cl-print
help-fns radix-tree find-dired goto-addr tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat parse-time iso8601 ls-lisp
jane-project jane-merlin merlin-imenu merlin-xref xref merlin-cap merlin
jane-async-merlin jane-completion jane-common jane-fe-menu ecaml_plugin
linum view gopcaml magit-bookmark bookmark image+ advice image-file
image-converter editorconfig editorconfig-core editorconfig-core-handle
editorconfig-fnmatch whitespace jane-auto-modes vba-mode markdown-mode
color jane jane-micro-features grep jane-diff unified-test-mode
shell-file core core-buffer core-error core-util ert pp ewoc debug
backtrace jane-sexp jane-ocaml jane-tuareg-theme tuareg tuareg-compat
tuareg-opam skeleton flymake-proc flymake warnings smie caml-types
caml-help caml-emacs find-file compile jane-cr jane-align
jane-deprecated jane-smerge gnu-elpa-keyring-update jane-ocp-indent
ocp-indent cl jane-util page-ext dired-x magit-extras project
magit-submodule magit-obsolete magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func imenu
magit-diff smerge-mode diff diff-mode git-commit log-edit message
sendmail yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa
derived epg rfc6068 epg-config gnus-util text-property-search mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util add-log magit-core magit-autorevert autorevert filenotify
magit-margin magit-transient magit-process with-editor shell server
magit-mode transient edmacro kmacro magit-git magit-section magit-utils
crm dash cl-extra help-mode windmove org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete
org-list org-footnote org-faces org-entities time-date noutline outline
icons ob-emacs-lisp ob-core ob-eval org-cycle org-table ol rx org-fold
org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar
cal-loaddefs org-version org-compat org-macs format-spec gdb-mi bindat
gud easy-mmode comint ansi-osc ansi-color ring ffap thingatpt vundo
pcase cyberpunk-theme savehist saveplace vundo-autoloads magit-autoloads
csv-mode-autoloads magit-section-autoloads cyberpunk-theme-autoloads
url-http-ntlm-autoloads url-auth git-commit-autoloads
with-editor-autoloads finder-inf info dash-autoloads package browse-url
url url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify dynamic-setting system-font-setting
font-render-setting cairo x-toolkit xinput2 x multi-tty
make-network-process emacs)

Memory information:
((conses 16 2222181 268198)
 (symbols 48 69243 2)
 (strings 32 319255 34424)
 (string-bytes 1 12232202)
 (vectors 16 139420)
 (vector-slots 8 5377201 353952)
 (floats 8 669 703)
 (intervals 56 254854 2268)
 (buffers 976 402)
 (heap 1024 865236 188241))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Sun, 02 Apr 2023 19:07:01 GMT) Full text and rfc822 format available.

Message #8 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Spencer Baugh <sbaugh <at> janestreet.com>
To: 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60; describe-key errors on Edit
 → Paste from
 Kill Ring → [any item]
Date: Sun, 02 Apr 2023 15:06:53 -0400
Spencer Baugh <sbaugh <at> janestreet.com> writes:
> 1. emacs -Q
> 2. C-h k and in the menu bar, click on "Edit", then "Paste from Kill
> Menu", then "(any string)".
> 3. See error printed in *Messages*:
> event-basic-type: Wrong type argument: integer-or-marker-p, "(any string)"

describe-key is also broken with context-menu-mode in a different way,
btw.  It generates the help buffer fine, but the last key in the
sequence is wrong.  It looks like read-key-sequence returns a numeric
index into the menu for that key, counting up from from the last menu
entry and starting at 1, and then the help buffer is interpreting that
number as a key.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Thu, 06 Apr 2023 11:48:02 GMT) Full text and rfc822 format available.

Message #11 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Spencer Baugh <sbaugh <at> janestreet.com>,
 Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60;
 describe-key errors on Edit → Paste from Kill
 Ring → [any item]
Date: Thu, 06 Apr 2023 14:47:58 +0300
> From: Spencer Baugh <sbaugh <at> janestreet.com>
> Date: Sun, 02 Apr 2023 14:49:41 -0400
> 
> 
> 1. emacs -Q
> 2. C-h k and in the menu bar, click on "Edit", then "Paste from Kill
> Menu", then "(any string)".
> 3. See error printed in *Messages*:
> event-basic-type: Wrong type argument: integer-or-marker-p, "(any string)"
> 4. Type "foobar" and kill it
> 5. C-h k and in the menu bar, click on "Edit", then "Paste from Kill
> Menu", then "foobar".
> 6. See error printed in *Messages*:
> event-basic-type: Wrong type argument: integer-or-marker-p, #("foobar" 0 6 (fontified t))
> 
> This happens on both Emacs 28 and Emacs 29.

AFAICT, this has been broken since Emacs 27.

> It looks like this is happening because help--read-key-sequence calls
> event-basic-type on the last element of the key sequence returned from
> read-key-sequence, which in this case is a string.

Yes.

> The following patch fixes it (that is, makes describe-key complete
> successfully and show appropriate help), but I'm not sure if it's right.
> 
> diff --git a/lisp/help.el b/lisp/help.el
> index 83be85b1ee4..73ac793f4aa 100644
> --- a/lisp/help.el
> +++ b/lisp/help.el
> @@ -1021,8 +1021,8 @@ help--read-key-sequence
>                     (raw-seq (this-single-command-raw-keys))
>                     (keyn (when (> (length seq) 0)
>                             (aref seq (1- (length seq)))))
> -                   (base (event-basic-type keyn))
> -                   (modifiers (event-modifiers keyn)))
> +                   (base (and (integer-or-marker-p keyn) (event-basic-type keyn)))
> +                   (modifiers (and (integer-or-marker-p keyn) (event-modifiers keyn))))
>                (cond
>                 ((zerop (length seq)))   ;FIXME: Can this happen?
>                 ((and no-mouse-movement (eq base 'mouse-movement)) nil)

Doesn't the above break "C-h c" and "C-h k" for mouse click events?
They yield a symbol like down-mouse-1 as KEYN, so are rejected by your
proposed condition.

I suggest the below instead.  I'm just not sure about what to do with
RAW-SEQ (which is returned as the cdr of the cons cell value of this
function).  Emacs 26 returned nil there, so we are "bug-compatible"
with it after applying the below.  But since this is a general-purpose
utility function, perhaps we should return the same value as SEQ
there?  I mean, what does "untranslated" mean for such "events"?

An alternative solution for the original problem would be to teach
event-basic-type and event-modifiers about "events" that happen to be
strings.

Stefan, any comments or better ideas?

diff --git a/lisp/help.el b/lisp/help.el
index 6eac037..299042f 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1012,7 +1012,7 @@ help--read-key-sequence
     (unwind-protect
         (let (last-modifiers key-list)
           ;; If yank-menu is empty, populate it temporarily, so that
-          ;; "Select and Paste" menu can generate a complete event.
+          ;; "Paste from Kill Menu" menu can generate a complete event.
           (when (null (cdr yank-menu))
             (setq saved-yank-menu (copy-sequence yank-menu))
             (menu-bar-update-yank-menu "(any string)" nil))
@@ -1031,8 +1031,14 @@ help--read-key-sequence
                    (raw-seq (this-single-command-raw-keys))
                    (keyn (when (> (length seq) 0)
                            (aref seq (1- (length seq)))))
-                   (base (event-basic-type keyn))
-                   (modifiers (event-modifiers keyn)))
+                   ;; The "Paste from Kill Menu" menu-bar item has the
+                   ;; text-to-yank, a string, as its last "event"
+                   ;; component, and those are not supported by
+                   ;; 'event-basic-type' and 'event-modifiers'.
+                   (str-from-menu (stringp keyn))
+                   (base (and (not str-from-menu) (event-basic-type keyn)))
+                   (modifiers (and (not str-from-menu)
+                                   (event-modifiers keyn))))
               (cond
                ((zerop (length seq)))   ;FIXME: Can this happen?
                ((and no-mouse-movement (eq base 'mouse-movement)) nil)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Thu, 06 Apr 2023 11:49:02 GMT) Full text and rfc822 format available.

Message #14 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Spencer Baugh <sbaugh <at> janestreet.com>
Cc: 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60;
 describe-key errors on Edit → Paste from Kill
 Ring → [any item]
Date: Thu, 06 Apr 2023 14:49:13 +0300
> From: Spencer Baugh <sbaugh <at> janestreet.com>
> Date: Sun, 02 Apr 2023 15:06:53 -0400
> 
> describe-key is also broken with context-menu-mode in a different way,
> btw.  It generates the help buffer fine, but the last key in the
> sequence is wrong.  It looks like read-key-sequence returns a numeric
> index into the menu for that key, counting up from from the last menu
> entry and starting at 1, and then the help buffer is interpreting that
> number as a key.

Please provide a recipe (and perhaps report this as a different bug,
unless my proposed solution happens to fix this one as well, by sheer
luck).

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Thu, 06 Apr 2023 13:08:01 GMT) Full text and rfc822 format available.

Message #17 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Spencer Baugh <sbaugh <at> janestreet.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60; describe-key errors on Edit
 → Paste from
 Kill Ring → [any item]
Date: Thu, 06 Apr 2023 09:07:46 -0400
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Spencer Baugh <sbaugh <at> janestreet.com>
>> Date: Sun, 02 Apr 2023 15:06:53 -0400
>> 
>> describe-key is also broken with context-menu-mode in a different way,
>> btw.  It generates the help buffer fine, but the last key in the
>> sequence is wrong.  It looks like read-key-sequence returns a numeric
>> index into the menu for that key, counting up from from the last menu
>> entry and starting at 1, and then the help buffer is interpreting that
>> number as a key.
>
> Please provide a recipe (and perhaps report this as a different bug,
> unless my proposed solution happens to fix this one as well, by sheer
> luck).
>
> Thanks.

Ah I wasn't clear, it's also an issue with yank-menu.  Probably
basically the same bug?  Recipe:

1. emacs -Q
2. M-x context-menu-mode RET
3. Type "foobar" and kill it
4. C-h k and right click, then "Paste from Kill Menu", then "(any string)".
5. Observe the help buffer claims the key sequence was:
<down-mouse-3> <paste-from-menu> C-a





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Thu, 06 Apr 2023 13:50:01 GMT) Full text and rfc822 format available.

Message #20 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Spencer Baugh <sbaugh <at> janestreet.com>
Cc: 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60; describe-key errors on Edit
 → Paste from
 Kill Ring → [any item]
Date: Thu, 06 Apr 2023 16:49:40 +0300
> From: Spencer Baugh <sbaugh <at> janestreet.com>
> Cc: 62626 <at> debbugs.gnu.org
> Date: Thu, 06 Apr 2023 09:07:46 -0400
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> > Please provide a recipe (and perhaps report this as a different bug,
> > unless my proposed solution happens to fix this one as well, by sheer
> > luck).
> >
> > Thanks.
> 
> Ah I wasn't clear, it's also an issue with yank-menu.  Probably
> basically the same bug?  Recipe:
> 
> 1. emacs -Q
> 2. M-x context-menu-mode RET
> 3. Type "foobar" and kill it
> 4. C-h k and right click, then "Paste from Kill Menu", then "(any string)".
> 5. Observe the help buffer claims the key sequence was:
> <down-mouse-3> <paste-from-menu> C-a

Thanks.  It's a separate issue, although most probably related.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Thu, 06 Apr 2023 14:09:01 GMT) Full text and rfc822 format available.

Message #23 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Spencer Baugh <sbaugh <at> janestreet.com>, 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60; describe-key errors on Edit
 → Paste from
 Kill Ring → [any item]
Date: Thu, 06 Apr 2023 10:07:47 -0400
> An alternative solution for the original problem would be to teach
> event-basic-type and event-modifiers about "events" that happen to be
> strings.

Since `read-key-sequence` returns those, we should probably teach
`event-*` functions to deal with them.

But since they don't agree with `eventp`, maybe we should also consider
deprecating such "weird keys".

FWIW, that very same "Paste from Kill Menu" is constructed differently in
`context-menu-region` where it doesn't suffer from this problem (it
uses integers instead of strings, as keys).


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Sat, 08 Apr 2023 12:44:02 GMT) Full text and rfc822 format available.

Message #26 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: sbaugh <at> janestreet.com, 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60; describe-key errors on Edit
 → Paste from
 Kill Ring → [any item]
Date: Sat, 08 Apr 2023 15:43:43 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: Spencer Baugh <sbaugh <at> janestreet.com>,  62626 <at> debbugs.gnu.org
> Date: Thu, 06 Apr 2023 10:07:47 -0400
> 
> > An alternative solution for the original problem would be to teach
> > event-basic-type and event-modifiers about "events" that happen to be
> > strings.
> 
> Since `read-key-sequence` returns those, we should probably teach
> `event-*` functions to deal with them.

Done.

> But since they don't agree with `eventp`, maybe we should also consider
> deprecating such "weird keys".

Patches welcome (and this is not for the release branch anyway).

> FWIW, that very same "Paste from Kill Menu" is constructed differently in
> `context-menu-region` where it doesn't suffer from this problem (it
> uses integers instead of strings, as keys).

Aren't those integer indices the reason why the recipe below:

  emacs -Q
  M-x context-menu-mode RET
  Type "foobar" and kill it
  C-h k and right click, then "Paste from Kill Menu", then select string
  Observe the help buffer claims the key sequence was:
    <down-mouse-3> <paste-from-menu> C-a
                                     ^^^
shows the bogus "C-a" at the end of the sequence?  I believe C-a comes
from the index 1 that read-key-sequence returns at the end of the
sequence:

  [(down-mouse-3 (#<window 3 on *scratch*> 146 (422 . 257) 1959895390 nil 146 (52 . 3) nil (422 . 209) (8 . 16))) paste-from-menu 1]




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Sat, 08 Apr 2023 15:43:01 GMT) Full text and rfc822 format available.

Message #29 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: sbaugh <at> janestreet.com, 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60; describe-key errors on Edit
 → Paste from
 Kill Ring → [any item]
Date: Sat, 08 Apr 2023 11:42:40 -0400
> Aren't those integer indices the reason why the recipe below:
>
>   emacs -Q
>   M-x context-menu-mode RET
>   Type "foobar" and kill it
>   C-h k and right click, then "Paste from Kill Menu", then select string
>   Observe the help buffer claims the key sequence was:
>     <down-mouse-3> <paste-from-menu> C-a
>                                      ^^^
> shows the bogus "C-a" at the end of the sequence?

Indeed.  We should probably use something
like (intern (format "entry-%d" i)) to avoid confusion.

`context-menu-mode` code has a few other differences with the "normal"
menu (e.g. it fails to truncate long strings, etc...), so we should
consolidate the two codes to keep the best of each.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#62626; Package emacs. (Sat, 08 Apr 2023 17:13:02 GMT) Full text and rfc822 format available.

Message #32 received at 62626 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: sbaugh <at> janestreet.com, 62626 <at> debbugs.gnu.org
Subject: Re: bug#62626: 29.0.60; describe-key errors on Edit
 → Paste from
 Kill Ring → [any item]
Date: Sat, 08 Apr 2023 20:13:25 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: sbaugh <at> janestreet.com,  62626 <at> debbugs.gnu.org
> Date: Sat, 08 Apr 2023 11:42:40 -0400
> 
> > Aren't those integer indices the reason why the recipe below:
> >
> >   emacs -Q
> >   M-x context-menu-mode RET
> >   Type "foobar" and kill it
> >   C-h k and right click, then "Paste from Kill Menu", then select string
> >   Observe the help buffer claims the key sequence was:
> >     <down-mouse-3> <paste-from-menu> C-a
> >                                      ^^^
> > shows the bogus "C-a" at the end of the sequence?
> 
> Indeed.  We should probably use something
> like (intern (format "entry-%d" i)) to avoid confusion.

Done.

> `context-menu-mode` code has a few other differences with the "normal"
> menu (e.g. it fails to truncate long strings, etc...), so we should
> consolidate the two codes to keep the best of each.

Well, each of these two approaches has its ugly aspects, so...




This bug report was last modified 355 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.