Package: emacs;
Reported by: StrawberryTea <look <at> strawberrytea.xyz>
Date: Wed, 21 Feb 2024 23:31:01 UTC
Severity: normal
Found in version 30.0.50
To reply to this bug, email your comments to 69306 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
bug-gnu-emacs <at> gnu.org
:bug#69306
; Package emacs
.
(Wed, 21 Feb 2024 23:31:02 GMT) Full text and rfc822 format available.StrawberryTea <look <at> strawberrytea.xyz>
:bug-gnu-emacs <at> gnu.org
.
(Wed, 21 Feb 2024 23:31:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: StrawberryTea <look <at> strawberrytea.xyz> To: bug-gnu-emacs <at> gnu.org Subject: 30.0.50; defining menu-items with :enable enables them unconditionally Date: Wed, 21 Feb 2024 17:26:02 -0600
Hi. I am not sure if I open a vanilla Emacs session and evaluate: (defvar hello nil) (setq hello nil) (define-key global-map (kbd "C-M-S-f") '(menu-item "" delete-backward-char :enable hello)) and then press C-M-S-f, the delete-backward-char menu item will be enabled, even though hello is nil. In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.18.0) of 2024-02-20 built on localhost Repository revision: 167d9b9040333a5bff64325423750243c60edfa1 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101011 System Description: Gentoo Linux Configured using: 'configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --datarootdir=/usr/share --disable-silent-rules --docdir=/usr/share/doc/emacs-30.0.9999 --htmldir=/usr/share/doc/emacs-30.0.9999/html --libdir=/usr/lib64 --program-suffix=-emacs-30-vcs --includedir=/usr/include/emacs-30-vcs --infodir=/usr/share/info/emacs-30-vcs --localstatedir=/var --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp --without-compress-install --without-hesiod --without-pop --with-file-notification=inotify --with-pdumper --enable-acl --enable-xattr --with-dbus --with-modules --with-gameuser=:gamestat --with-libgmp --with-gpm --with-native-compilation=aot --with-json --without-kerberos --without-kerberos5 --with-lcms2 --with-xml2 --with-mailutils --without-selinux --with-sqlite3 --with-gnutls --with-libsystemd --with-threads --with-tree-sitter --without-wide-int --with-sound=oss --with-zlib --with-x --without-pgtk --without-ns --without-gconf --without-gsettings --without-toolkit-scroll-bars --with-xpm --with-xft --with-cairo --with-harfbuzz --with-libotf --with-m17n-flt --with-x-toolkit=lucid --with-xaw3d --with-gif --with-jpeg --with-png --with-rsvg --with-tiff --with-webp --with-imagemagick --with-dumping=pdumper 'CFLAGS=-march=native -Ofast -fno-stack-protector -fno-finite-math-only -pipe -fno-lto -Wno-error=odr -Wno-error=lto-type-mismatch -Wno-error=strict-aliasing' 'LDFLAGS=-Wl,--as-needed -Wl,-Ofast -Wl,--sort-common'' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB Important settings: value of $LANG: C.utf8 locale-coding-system: utf-8-unix Major mode: mu4e:main Minor modes in effect: parrot-mode: t isearch-mb-mode: t midnight-mode: t pomm-mode-line-mode: t dap-tooltip-mode: t dap-ui-mode: t lsp-treemacs-sync-mode: t dap-mode: t treemacs-filewatch-mode: t treemacs-git-mode: t treemacs-fringe-indicator-mode: t pdf-occur-global-minor-mode: t org-ai-global-mode: t diff-hl-flydiff-mode: t async-bytecomp-package-mode: t mu4e-search-minor-mode: t mu4e-update-minor-mode: t mu4e-context-minor-mode: t mu4e-modeline-mode: t eat-eshell-visual-command-mode: t eat-eshell-mode: t auto-sudoedit-mode: t abridge-diff-mode: t yas-global-mode: t yas-minor-mode: t winum-mode: t recentf-mode: t save-place-mode: t global-so-long-mode: t envrc-global-mode: t envrc-mode: t magit-wip-initial-backup-mode: t magit-wip-before-change-mode: t magit-wip-after-apply-mode: t magit-wip-after-save-mode: t magit-wip-mode: t global-git-commit-mode: t beacon-mode: t wakatime-ui-mode: t global-wakatime-mode: t wakatime-mode: t savehist-mode: t better-jumper-mode: t better-jumper-local-mode: t vertico-multiform-mode: t vertico-mouse-mode: t vertico-mode: t nerd-icons-completion-mode: t marginalia-mode: t corfu-history-mode: t corfu-popupinfo-mode: t global-corfu-mode: t corfu-mode: t evil-goggles-mode: t evil-snipe-override-mode: t evil-snipe-mode: t evil-owl-mode: t repeat-mode: t restore-point-mode: t kill-ring-deindent-mode: t aas-global-mode: t aas-mode: t beginend-global-mode: t gcmh-mode: t winner-mode: t undo-fu-session-global-mode: t undo-fu-mode: t global-flycheck-mode: t which-key-mode: t delete-selection-mode: t org-roam-db-autosync-mode: t smartparens-global-mode: t eros-mode: t projectile-mode: t fancy-compilation-mode: t ws-butler-global-mode: t editorconfig-mode: t global-yank-indent-mode: t exwm-mff-mode: t persp-mode: t minions-mode: t mlscroll-mode: t server-mode: t evil-mode: t evil-local-mode: t +popup-mode: t override-global-mode: t general-override-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t window-divider-mode: t undelete-frame-mode: t minibuffer-regexp-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t abbrev-mode: t Load-path shadows: /home/st/.config/emacs/.local/straight/build-30.0.50/ivy/elpa hides /home/st/.config/emacs/.local/straight/build-30.0.50/lispy/elpa /home/st/.config/emacs/.local/straight/build-30.0.50/ef-themes/theme-loaddefs hides /home/st/.config/emacs/.local/straight/build-30.0.50/standard-themes/theme-loaddefs /home/st/.config/emacs/.local/straight/build-30.0.50/ef-themes/theme-loaddefs hides /home/st/.config/emacs/.local/straight/build-30.0.50/modus-themes/theme-loaddefs /home/st/.config/emacs/.local/straight/build-30.0.50/cmake-mode/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode /usr/share/emacs/site-lisp/ratpoison hides /usr/share/emacs/site-lisp/ratpoison/ratpoison /home/st/.config/emacs/.local/straight/build-30.0.50/bind-key/bind-key hides /usr/share/emacs/30.0.50/lisp/bind-key /home/st/.config/emacs/.local/straight/build-30.0.50/jsonrpc/jsonrpc hides /usr/share/emacs/30.0.50/lisp/jsonrpc /home/st/.config/emacs/.local/straight/build-30.0.50/ef-themes/theme-loaddefs hides /usr/share/emacs/30.0.50/lisp/theme-loaddefs /home/st/.config/emacs/.local/straight/build-30.0.50/transient/transient hides /usr/share/emacs/30.0.50/lisp/transient /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package-bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-bind-key /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package-core hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-core /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package-delight hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-delight /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package-diminish hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-diminish /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package-ensure hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-ensure /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package-jump hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-jump /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package-lint hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-lint /home/st/.config/emacs/.local/straight/build-30.0.50/use-package/use-package hides /usr/share/emacs/30.0.50/lisp/use-package/use-package /home/st/.config/emacs/.local/straight/build-30.0.50/project/project hides /usr/share/emacs/30.0.50/lisp/progmodes/project /home/st/.config/emacs/.local/straight/build-30.0.50/xref/xref hides /usr/share/emacs/30.0.50/lisp/progmodes/xref /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-C hides /usr/share/emacs/30.0.50/lisp/org/ob-C /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-awk hides /usr/share/emacs/30.0.50/lisp/org/ob-awk /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-calc hides /usr/share/emacs/30.0.50/lisp/org/ob-calc /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-clojure hides /usr/share/emacs/30.0.50/lisp/org/ob-clojure /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-core hides /usr/share/emacs/30.0.50/lisp/org/ob-core /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-ditaa hides /usr/share/emacs/30.0.50/lisp/org/ob-ditaa /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-dot hides /usr/share/emacs/30.0.50/lisp/org/ob-dot /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-emacs-lisp hides /usr/share/emacs/30.0.50/lisp/org/ob-emacs-lisp /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-eshell hides /usr/share/emacs/30.0.50/lisp/org/ob-eshell /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-exp hides /usr/share/emacs/30.0.50/lisp/org/ob-exp /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-forth hides /usr/share/emacs/30.0.50/lisp/org/ob-forth /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-gnuplot hides /usr/share/emacs/30.0.50/lisp/org/ob-gnuplot /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-haskell hides /usr/share/emacs/30.0.50/lisp/org/ob-haskell /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-julia hides /usr/share/emacs/30.0.50/lisp/org/ob-julia /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-lilypond hides /usr/share/emacs/30.0.50/lisp/org/ob-lilypond /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-lisp hides /usr/share/emacs/30.0.50/lisp/org/ob-lisp /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-lob hides /usr/share/emacs/30.0.50/lisp/org/ob-lob /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-makefile hides /usr/share/emacs/30.0.50/lisp/org/ob-makefile /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-octave hides /usr/share/emacs/30.0.50/lisp/org/ob-octave /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-perl hides /usr/share/emacs/30.0.50/lisp/org/ob-perl /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-plantuml hides /usr/share/emacs/30.0.50/lisp/org/ob-plantuml /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-processing hides /usr/share/emacs/30.0.50/lisp/org/ob-processing /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-python hides /usr/share/emacs/30.0.50/lisp/org/ob-python /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-ref hides /usr/share/emacs/30.0.50/lisp/org/ob-ref /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-ruby hides /usr/share/emacs/30.0.50/lisp/org/ob-ruby /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-R hides /usr/share/emacs/30.0.50/lisp/org/ob-R /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-comint hides /usr/share/emacs/30.0.50/lisp/org/ob-comint /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-css hides /usr/share/emacs/30.0.50/lisp/org/ob-css /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-eval hides /usr/share/emacs/30.0.50/lisp/org/ob-eval /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-fortran hides /usr/share/emacs/30.0.50/lisp/org/ob-fortran /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-groovy hides /usr/share/emacs/30.0.50/lisp/org/ob-groovy /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-java hides /usr/share/emacs/30.0.50/lisp/org/ob-java /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-latex hides /usr/share/emacs/30.0.50/lisp/org/ob-latex /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-lua hides /usr/share/emacs/30.0.50/lisp/org/ob-lua /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-matlab hides /usr/share/emacs/30.0.50/lisp/org/ob-matlab /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-maxima hides /usr/share/emacs/30.0.50/lisp/org/ob-maxima /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-ocaml hides /usr/share/emacs/30.0.50/lisp/org/ob-ocaml /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-org hides /usr/share/emacs/30.0.50/lisp/org/ob-org /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-js hides /usr/share/emacs/30.0.50/lisp/org/ob-js /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-sass hides /usr/share/emacs/30.0.50/lisp/org/ob-sass /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-scheme hides /usr/share/emacs/30.0.50/lisp/org/ob-scheme /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-screen hides /usr/share/emacs/30.0.50/lisp/org/ob-screen /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-sed hides /usr/share/emacs/30.0.50/lisp/org/ob-sed /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-shell hides /usr/share/emacs/30.0.50/lisp/org/ob-shell /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-sql hides /usr/share/emacs/30.0.50/lisp/org/ob-sql /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-sqlite hides /usr/share/emacs/30.0.50/lisp/org/ob-sqlite /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-table hides /usr/share/emacs/30.0.50/lisp/org/ob-table /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob-tangle hides /usr/share/emacs/30.0.50/lisp/org/ob-tangle /home/st/.config/emacs/.local/straight/build-30.0.50/org/ob hides /usr/share/emacs/30.0.50/lisp/org/ob /home/st/.config/emacs/.local/straight/build-30.0.50/org/oc-basic hides /usr/share/emacs/30.0.50/lisp/org/oc-basic /home/st/.config/emacs/.local/straight/build-30.0.50/org/oc-biblatex hides /usr/share/emacs/30.0.50/lisp/org/oc-biblatex /home/st/.config/emacs/.local/straight/build-30.0.50/org/oc-bibtex hides /usr/share/emacs/30.0.50/lisp/org/oc-bibtex /home/st/.config/emacs/.local/straight/build-30.0.50/org/oc-csl hides /usr/share/emacs/30.0.50/lisp/org/oc-csl /home/st/.config/emacs/.local/straight/build-30.0.50/org/oc-natbib hides /usr/share/emacs/30.0.50/lisp/org/oc-natbib /home/st/.config/emacs/.local/straight/build-30.0.50/org/oc hides /usr/share/emacs/30.0.50/lisp/org/oc /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-bbdb hides /usr/share/emacs/30.0.50/lisp/org/ol-bbdb /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-bibtex hides /usr/share/emacs/30.0.50/lisp/org/ol-bibtex /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-docview hides /usr/share/emacs/30.0.50/lisp/org/ol-docview /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-doi hides /usr/share/emacs/30.0.50/lisp/org/ol-doi /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-eshell hides /usr/share/emacs/30.0.50/lisp/org/ol-eshell /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-eww hides /usr/share/emacs/30.0.50/lisp/org/ol-eww /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-gnus hides /usr/share/emacs/30.0.50/lisp/org/ol-gnus /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-info hides /usr/share/emacs/30.0.50/lisp/org/ol-info /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-irc hides /usr/share/emacs/30.0.50/lisp/org/ol-irc /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-man hides /usr/share/emacs/30.0.50/lisp/org/ol-man /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-mhe hides /usr/share/emacs/30.0.50/lisp/org/ol-mhe /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-rmail hides /usr/share/emacs/30.0.50/lisp/org/ol-rmail /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol-w3m hides /usr/share/emacs/30.0.50/lisp/org/ol-w3m /home/st/.config/emacs/.local/straight/build-30.0.50/org/ol hides /usr/share/emacs/30.0.50/lisp/org/ol /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-agenda hides /usr/share/emacs/30.0.50/lisp/org/org-agenda /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-archive hides /usr/share/emacs/30.0.50/lisp/org/org-archive /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-attach-git hides /usr/share/emacs/30.0.50/lisp/org/org-attach-git /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-attach hides /usr/share/emacs/30.0.50/lisp/org/org-attach /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-capture hides /usr/share/emacs/30.0.50/lisp/org/org-capture /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-clock hides /usr/share/emacs/30.0.50/lisp/org/org-clock /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-colview hides /usr/share/emacs/30.0.50/lisp/org/org-colview /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-compat hides /usr/share/emacs/30.0.50/lisp/org/org-compat /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-crypt hides /usr/share/emacs/30.0.50/lisp/org/org-crypt /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-ctags hides /usr/share/emacs/30.0.50/lisp/org/org-ctags /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-cycle hides /usr/share/emacs/30.0.50/lisp/org/org-cycle /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-datetree hides /usr/share/emacs/30.0.50/lisp/org/org-datetree /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-duration hides /usr/share/emacs/30.0.50/lisp/org/org-duration /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-element hides /usr/share/emacs/30.0.50/lisp/org/org-element /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-entities hides /usr/share/emacs/30.0.50/lisp/org/org-entities /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-faces hides /usr/share/emacs/30.0.50/lisp/org/org-faces /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-feed hides /usr/share/emacs/30.0.50/lisp/org/org-feed /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-fold-core hides /usr/share/emacs/30.0.50/lisp/org/org-fold-core /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-fold hides /usr/share/emacs/30.0.50/lisp/org/org-fold /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-footnote hides /usr/share/emacs/30.0.50/lisp/org/org-footnote /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-goto hides /usr/share/emacs/30.0.50/lisp/org/org-goto /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-habit hides /usr/share/emacs/30.0.50/lisp/org/org-habit /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-id hides /usr/share/emacs/30.0.50/lisp/org/org-id /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-indent hides /usr/share/emacs/30.0.50/lisp/org/org-indent /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-inlinetask hides /usr/share/emacs/30.0.50/lisp/org/org-inlinetask /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-keys hides /usr/share/emacs/30.0.50/lisp/org/org-keys /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-lint hides /usr/share/emacs/30.0.50/lisp/org/org-lint /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-list hides /usr/share/emacs/30.0.50/lisp/org/org-list /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-macro hides /usr/share/emacs/30.0.50/lisp/org/org-macro /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-macs hides /usr/share/emacs/30.0.50/lisp/org/org-macs /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-mobile hides /usr/share/emacs/30.0.50/lisp/org/org-mobile /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-mouse hides /usr/share/emacs/30.0.50/lisp/org/org-mouse /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-num hides /usr/share/emacs/30.0.50/lisp/org/org-num /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-pcomplete hides /usr/share/emacs/30.0.50/lisp/org/org-pcomplete /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-persist hides /usr/share/emacs/30.0.50/lisp/org/org-persist /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-plot hides /usr/share/emacs/30.0.50/lisp/org/org-plot /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-protocol hides /usr/share/emacs/30.0.50/lisp/org/org-protocol /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-refile hides /usr/share/emacs/30.0.50/lisp/org/org-refile /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-src hides /usr/share/emacs/30.0.50/lisp/org/org-src /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-table hides /usr/share/emacs/30.0.50/lisp/org/org-table /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-tempo hides /usr/share/emacs/30.0.50/lisp/org/org-tempo /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-timer hides /usr/share/emacs/30.0.50/lisp/org/org-timer /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-version hides /usr/share/emacs/30.0.50/lisp/org/org-version /home/st/.config/emacs/.local/straight/build-30.0.50/org/org hides /usr/share/emacs/30.0.50/lisp/org/org /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-ascii hides /usr/share/emacs/30.0.50/lisp/org/ox-ascii /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-beamer hides /usr/share/emacs/30.0.50/lisp/org/ox-beamer /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-html hides /usr/share/emacs/30.0.50/lisp/org/ox-html /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-icalendar hides /usr/share/emacs/30.0.50/lisp/org/ox-icalendar /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-koma-letter hides /usr/share/emacs/30.0.50/lisp/org/ox-koma-letter /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-latex hides /usr/share/emacs/30.0.50/lisp/org/ox-latex /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-man hides /usr/share/emacs/30.0.50/lisp/org/ox-man /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-md hides /usr/share/emacs/30.0.50/lisp/org/ox-md /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-odt hides /usr/share/emacs/30.0.50/lisp/org/ox-odt /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-org hides /usr/share/emacs/30.0.50/lisp/org/ox-org /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-publish hides /usr/share/emacs/30.0.50/lisp/org/ox-publish /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox-texinfo hides /usr/share/emacs/30.0.50/lisp/org/ox-texinfo /home/st/.config/emacs/.local/straight/build-30.0.50/org/ox hides /usr/share/emacs/30.0.50/lisp/org/ox /home/st/.config/emacs/.local/straight/build-30.0.50/org/org-loaddefs hides /usr/share/emacs/30.0.50/lisp/org/org-loaddefs /home/st/.config/emacs/.local/straight/build-30.0.50/soap-client/soap-client hides /usr/share/emacs/30.0.50/lisp/net/soap-client /home/st/.config/emacs/.local/straight/build-30.0.50/soap-client/soap-inspect hides /usr/share/emacs/30.0.50/lisp/net/soap-inspect /home/st/.config/emacs/.local/straight/build-30.0.50/compat/compat hides /usr/share/emacs/30.0.50/lisp/emacs-lisp/compat /home/st/.config/emacs/.local/straight/build-30.0.50/eldoc/eldoc hides /usr/share/emacs/30.0.50/lisp/emacs-lisp/eldoc /home/st/.config/emacs/.local/straight/build-30.0.50/seq/seq hides /usr/share/emacs/30.0.50/lisp/emacs-lisp/seq Features: (evil-collection-help shadow mail-extr vc-backup emacsbug tramp-cmds parrot parrot-progress parrot-rotate apheleia apheleia-rcs apheleia-formatters apheleia-utils apheleia-log apheleia-formatter-context tabify evil-collection-evil-mc evil-mc evil-mc-command-execute evil-mc-command-record evil-mc-cursor-make evil-mc-region evil-mc-cursor-state evil-mc-undo evil-mc-vars evil-mc-known-commands evil-mc-common evil-collection-indent misearch multi-isearch isearch-mb anzu backline yasnippet-capf midnight evil-collection-debbugs debbugs soap-client rng-xsd xsd-regexp pomm alert gntp evil-collection-leetcode leetcode log4e graphql mm-url elisp-demos info-colors evil-collection-helpful helpful cc-langs cc-vars cc-defs trace cl-print info-look evil-collection-info info evil-collection-elisp-refs elisp-refs password-generator lorem-ipsum zone-nyan esxml zone-rainbow zone-matrix snow flames-of-freedom fireplace klondike dunnet bubbles evil-collection-tetris tetris speed-type evil-collection-snake snake gamegrid neato-graph-bar evil-collection-daemons daemons evil-collection-disk-usage disk-usage pulseaudio-control evil-collection-trashed trashed helm-rage helm-utils helm-linux-disks linux-disk helm-system-packages consult-gh lsp-ui lsp-ui-flycheck lsp-ui-doc evil-collection-lsp-ui-imenu lsp-ui-imenu lsp-ui-peek lsp-ui-sideline lsp-ui-util dap-mouse dap-ui lsp-treemacs lsp-treemacs-generic lsp-treemacs-themes treemacs-treelib gdb-mi gud bui bui-list bui-info bui-entry bui-core bui-history bui-button bui-utils lsp-lens dap-mode dap-tasks dap-launch lsp-docker dap-overlays lsp-mode lsp-protocol spinner network-stream treemacs-magit treemacs-persp treemacs-projectile treemacs-evil treemacs-nerd-icons treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-bookmarks treemacs-tags treemacs-interface treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-faces treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils pfuture treemacs-logging treemacs-customization treemacs-macros pdf-occur evil-collection-tablist tablist tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent pdf-isearch pdf-misc evil-collection-pdf pdf-history pdf-tools saveplace-pdf-view pdf-view pdf-cache pdf-info pdf-util pdf-macs image-mode exif gnus-srvr chatgpt-shell shell-maker goto-addr ielm greader evil-collection-view view greader-espeak whisper org-ai org-ai-oobabooga websocket org-ai-sd org-ai-talk org-ai-on-project org-ai-useful org-ai-openai-image org-ai-openai org-ai-block helm-emms helm-adaptive diff-hl-flydiff emms-setup emms-mpris emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort emms-volume emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse emms-volume-amixer emms-playlist-sort emms-player-xine emms-player-mpd emms-playing-time emms-lyrics emms-url emms-player-simple emms-streams emms-show-all emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-info-tinytag emms-info-metaflac emms-info-opusinfo emms-info-ogginfo emms-info-mp3info emms-playlist-mode emms-source-playlist emms-source-file locate emms-info-exiftool emms-info-native emms-info-native-spc emms-info-native-mp3 emms-info-native-ogg emms-info-native-opus emms-info-native-flac emms-info-native-vorbis bindat emms-last-played emms-score emms-cache emms-info emms-later-do evil-collection-emms emms emms-compat tramp-cache time-stamp vertico-directory mb-depth vertico-repeat tramp-archive tramp-gvfs helm-external helm-net helm-help evil-collection-mpc mpc elfeed-tube-mpv mpv tq org-timer org-clock elfeed-tube elfeed-tube-utils aio elfeed-org evil-collection-elfeed elfeed-show elfeed-search elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib url-queue xml-query empv iimage consult-flycheck evil-collection-consult consult helm helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source helm-multi-match helm-lib org-msg 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 ox-html table ox-ascii ox-publish ox htmlize gnus-icalendar icalendar diary-lib diary-loaddefs gnus-dired evil-collection-mu4e mu4e mu4e-org mu4e-notification notifications mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mu4e-contacts mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-window mu4e-obsolete evil-collection-vterm vterm magit-bookmark evil-collection-bookmark bookmark vterm-module em-rebind em-elecslash em-alias em-term em-script em-ls em-hist em-glob em-extpipe em-cmpl em-basic em-banner em-smart em-tramp eshell-did-you-mean esh-help evil-collection-man man em-unix eshell-z em-dirs evil-collection-eshell em-prompt eshell esh-mode esh-var eat term/xterm xterm evil-collection-term term ehelp esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg theme-magic esh-module esh-groups ewal esh-util cal-julian circadian solar cal-dst auto-sudoedit tramp-sh zone tramp trampver tramp-message org-agenda tramp-integration abridge-diff evil-collection-magit-todos magit-todos async code-review code-review-actions code-review-comment code-review-section code-review-bitbucket code-review-faces emojify evil-collection-apropos apropos evil-collection-tar-mode tar-mode evil-collection-arc-mode arc-mode archive-mode ht code-review-gitlab code-review-utils evil-collection-forge forge-list hl-line forge-commands forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab forge-github forge-notify forge-revnote forge-pullreq forge-issue forge-topic yaml bug-reference forge-post smartparens-markdown evil-collection-markdown-mode markdown-mode edit-indirect forge-repo forge forge-core forge-db code-review-parse-hunk code-review-github code-review-db uuidgen calc-misc calc-ext calc calc-loaddefs calc-macs a code-review-interfaces deferred ghub-graphql treepy gsexp ghub url-http url-gw nsm url-auth closql magit-autoloads evil-collection-magit magit-submodule 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 files-x magit-repos magit-apply tramp-compat tramp-loaddefs doom-snippets doom-snippets-lib yasnippet nerd-icons-corfu dabbrev cape-char winum face-remap mule-util evil-collection-vc-git vc-git evil-collection-diff-hl diff-hl evil-collection-log-view log-view evil-collection-vc-dir vc-dir ewoc vc vc-dispatcher auto-minor-mode disp-table whitespace flycheck-cask git-auto-commit-mode highlight-quoted rainbow-delimiters outline-minor-faces recentf tree-widget saveplace evil-collection-so-long so-long envrc inheritenv magit-wip magit-log which-func magit-diff smerge-mode diff evil-collection-diff-mode diff-mode git-commit evil-collection-log-edit log-edit pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor shell magit-mode transient magit-git magit-base crm beacon wakatime-ui wakatime-mode savehist better-jumper vertico-multiform vertico-mouse evil-collection-vertico vertico orderless nerd-icons-completion marginalia corfu-history corfu-popupinfo evil-collection-corfu corfu evil-goggles evil-easymotion evil-snipe evil-owl repeat restore-point indent-aux aas evil-collection-beginend beginend gcmh winner undo-fu-session undo-fu flycheck-posframe posframe evil-collection-flymake flymake flycheck-package package-lint evil-collection-finder finder finder-inf evil-collection-flycheck flycheck embrace lispyville hercules evil-collection-which-key which-key lispy delsel lispy-inline avy etags fileloop evil-collection-xref xref evil-collection-edebug edebug evil-collection-debug debug backtrace help-fns radix-tree lispy-tags zoutline semantic/db semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet evil-collection-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util iedit iedit-lib the-org-mode-expansions evil-collection-org evil-collection-org-roam org-roam-migrate org-roam-log org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam org-capture org-attach emacsql-sqlite emacsql-sqlite-common emacsql emacsql-compiler evil-collection-magit-section magit-section cursor-sensor smartparens-org org-yt org-element org-persist xdg org-id org-refile avl-tree generator org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src smartparens-config smartparens-text smartparens loadhist evil-collection-sh-script sh-script smie treesit executable ob-comint org-pcomplete pcomplete org-list org-footnote org-faces org-entities noutline outline org-element-ast inline ob-emacs-lisp org-table ol org-keys oc org-loaddefs evil-collection-calendar cal-menu calendar cal-loaddefs spam spam-stat gnus-uu yenc gnus-msg gnus-registry registry eieio-base nice-citation gnus-cite 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 parse-time iso8601 gnus-spec gnus-int gnus-range gnus-win message sendmail yank-media puny evil-collection-dired dired dired-loaddefs rfc822 mml mml-sec evil-collection-epa epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader evil-collection-gnus gnus nnheader gnus-util mail-utils range mm-util mail-prsvr eros nameless pcre2el rxt re-builder breadcrumb pulse color evil-collection-imenu imenu vi-tilde-fringe highlight-numbers parent-mode display-line-numbers cape hl-todo hide-mode-line eldoc-box copilot copilot-balancer f projectile project evil-collection-grep grep ibuffer-vc ibuf-ext evil-collection-ibuffer ibuffer ibuffer-loaddefs dash s jsonrpc evil-collection-elisp-mode elisp-mode lisp-mnt find-func jka-compr fancy-compilation evil-collection-compile compile text-property-search evil-collection-comint comint ansi-osc ws-butler editorconfig evil-collection-package-menu evil-collection-custom cus-edit cus-start cus-load wid-edit evil-collection annalist doom-packages ansi-color 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 password-cache json map url-vars editorconfig-core editorconfig-core-handle editorconfig-fnmatch yank-indent exwm-mff hydra lv autorevert filenotify time-date nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon persp-mode minions compat dtrt-indent modus-operandi-tinted-theme modus-themes define-repeat-map expand-region-improved expand-region text-mode-expansions er-basic-expansions expand-region-core expand-region-custom mlscroll exwm-firefox-evil exwm-firefox-core exwm-evil exwm-evil-core exwm-config ido exwm-systemtray xcb-systemtray xcb-xembed exwm-randr xcb-randr exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types xcb-debug eieio eieio-core server mu4e-config html2text smartparens-lua let-alist ob-core org-cycle org-fold org-fold-core org-compat ob-eval org-version org-macs format-spec ibuf-macs evil evil-integration evil-maps evil-commands reveal evil-jumps evil-command-window evil-types evil-search evil-macros evil-repeat evil-states evil-core advice evil-common thingatpt rect evil-vars ring derived edmacro kmacro byte-opt use-package-bind-key bind-key easy-mmode comp comp-cstr warnings icons comp-run comp-common doom-editor doom-projects doom-ui doom-keybinds pp cl-extra help-mode use-package-core bytecomp byte-compile general realgud-recursive-autoloads tex-site rx site-gentoo doom-start :system doom-modules cl-seq doom doom-lib cl-macs cl-loaddefs cl-lib gv harfbuzz jansson dynamic-modules pcase subr-x rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd touch-screen 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 lcms2 dynamic-setting font-render-setting cairo x-toolkit xinput2 x multi-tty move-toolbar make-network-process native-compile emacs) Memory information: ((conses 16 2863434 1894835) (symbols 48 148148 67) (strings 32 431770 83326) (string-bytes 1 15453565) (vectors 16 160167) (vector-slots 8 2531637 364216) (floats 8 2804 12456) (intervals 56 15408 3072) (buffers 984 41))
bug-gnu-emacs <at> gnu.org
:bug#69306
; Package emacs
.
(Thu, 22 Feb 2024 06:42:01 GMT) Full text and rfc822 format available.Message #8 received at 69306 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: StrawberryTea <look <at> strawberrytea.xyz> Cc: 69306 <at> debbugs.gnu.org Subject: Re: bug#69306: 30.0.50; defining menu-items with :enable enables them unconditionally Date: Thu, 22 Feb 2024 08:41:15 +0200
> From: StrawberryTea <look <at> strawberrytea.xyz> > Date: Wed, 21 Feb 2024 17:26:02 -0600 > > Hi. I am not sure if I open a vanilla Emacs session and evaluate: > (defvar hello nil) > (setq hello nil) > (define-key global-map (kbd "C-M-S-f") '(menu-item "" delete-backward-char :enable hello)) > > and then press C-M-S-f, the delete-backward-char menu item will be > enabled, even though hello is nil. Enabled where? After evaluating the above, I don't see your menu item anywhere (since it is not added to any existing menu, I guess?), so I'm not sure what you are describing here. Is some step missing from the recipe? Can you show a full recipe starting from "emacs -Q"?
bug-gnu-emacs <at> gnu.org
:bug#69306
; Package emacs
.
(Thu, 22 Feb 2024 21:25:01 GMT) Full text and rfc822 format available.Message #11 received at 69306 <at> debbugs.gnu.org (full text, mbox):
From: StrawberryTea <look <at> strawberrytea.xyz> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 69306 <at> debbugs.gnu.org Subject: Re: bug#69306: 30.0.50; defining menu-items with :enable enables them unconditionally Date: Thu, 22 Feb 2024 15:19:26 -0600
[Message part 1 (text/plain, inline)]
Basically, I am trying to define a conditional keybinding. The real-world example I’m working with is: (when-let ((cmds-del (and (modulep! :completion corfu +tng) ’(menu-item “Reset completion” corfu-reset :enable (and (> corfu–index -1) (eq corfu-preview-current ’insert))))) (cmds-ret ’(menu-item “Insert completion” corfu-insert :filter (lambda (cmd) (if (eq corfu–index -1) (corfu-quit) cmd))))) (map! :when (modulep! :completion corfu) :after corfu :map corfu-map [backspace] cmds-del “DEL” cmds-del :ig [return] cmds-ret :ig “RET” cmds-ret)) Here, the :filter and :enable properties are used to conditionally enable their respective keybindings. The :filter property works as expected, but the :enable property does not. The backspace keybinding is always enabled, even when the :enable property is evaluates to nil. Eli Zaretskii <eliz <at> gnu.org> writes: >> From: StrawberryTea <look <at> strawberrytea.xyz> >> Date: Wed, 21 Feb 2024 17:26:02 -0600 >> >> Hi. I am not sure if I open a vanilla Emacs session and evaluate: >> (defvar hello nil) >> (setq hello nil) >> (define-key global-map (kbd “C-M-S-f”) ’(menu-item “” delete-backward-char :enable hello)) >> >> and then press C-M-S-f, the delete-backward-char menu item will be >> enabled, even though hello is nil. > > Enabled where? After evaluating the above, I don’t see your menu item > anywhere (since it is not added to any existing menu, I guess?), so > I’m not sure what you are describing here. Is some step missing from > the recipe? Can you show a full recipe starting from “emacs -Q”?
bug-gnu-emacs <at> gnu.org
:bug#69306
; Package emacs
.
(Fri, 23 Feb 2024 07:41:01 GMT) Full text and rfc822 format available.Message #14 received at 69306 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: StrawberryTea <look <at> strawberrytea.xyz>, Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 69306 <at> debbugs.gnu.org Subject: Re: bug#69306: 30.0.50; defining menu-items with :enable enables them unconditionally Date: Fri, 23 Feb 2024 09:23:45 +0200
> From: StrawberryTea <look <at> strawberrytea.xyz> > Cc: 69306 <at> debbugs.gnu.org > Date: Thu, 22 Feb 2024 15:19:26 -0600 > > Basically, I am trying to define a conditional keybinding. The real-world > example I’m working with is: > > (when-let ((cmds-del (and (modulep! :completion corfu +tng) > ’(menu-item “Reset completion” corfu-reset > :enable (and (> corfu–index -1) > (eq corfu-preview-current ’insert))))) > (cmds-ret ’(menu-item “Insert completion” corfu-insert > :filter (lambda (cmd) > (if (eq corfu–index -1) > (corfu-quit) > cmd))))) > (map! :when (modulep! :completion corfu) > :after corfu > :map corfu-map > [backspace] cmds-del > “DEL” cmds-del > :ig [return] cmds-ret > :ig “RET” cmds-ret)) > > Here, the :filter and :enable properties are used to conditionally enable their > respective keybindings. The :filter property works as expected, but the :enable > property does not. The backspace keybinding is always enabled, even when the > :enable property is evaluates to nil. If you expect that the key binding will be disabled via :enable, then I don't think this is supported except in menus (and tool bars and tab bars): the value is evaluated by the menu-related code, when it actually displays the menu, and in your case there's no menu. The :filter attribute is interpreted differently, so it just happens to work. But that's sheer luck, I'd say. Adding Stefan in case he has comments.
bug-gnu-emacs <at> gnu.org
:bug#69306
; Package emacs
.
(Fri, 23 Feb 2024 12:33:02 GMT) Full text and rfc822 format available.Message #17 received at 69306 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 69306 <at> debbugs.gnu.org, StrawberryTea <look <at> strawberrytea.xyz> Subject: Re: bug#69306: 30.0.50; defining menu-items with :enable enables them unconditionally Date: Fri, 23 Feb 2024 07:23:19 -0500
> If you expect that the key binding will be disabled via :enable, then > I don't think this is supported except in menus (and tool bars and tab > bars): the value is evaluated by the menu-related code, when it > actually displays the menu, and in your case there's no menu. The > :filter attribute is interpreted differently, so it just happens to > work. But that's sheer luck, I'd say. Indeed, the `:enable` thingy controls only whether the entry is present in the (a) menu, whereas the `:filter` is obeyed by the keymap lookup code. We could treat this as a feature request to make the keymap lookup code obey `:enable` as well. I remember thinking about doing it. I can't remember whether that would be easy to do but I can't think of a good reason why it wouldn't be. Stefan
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.