Package: emacs;
Reported by: Steven Allen <steven <at> stebalien.com>
Date: Tue, 3 Sep 2024 02:03:02 UTC
Severity: normal
Found in version 31.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 72993 in the body.
You can then email your comments to 72993 AT debbugs.gnu.org in the normal way.
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#72993
; Package emacs
.
(Tue, 03 Sep 2024 02:03:02 GMT) Full text and rfc822 format available.Steven Allen <steven <at> stebalien.com>
:bug-gnu-emacs <at> gnu.org
.
(Tue, 03 Sep 2024 02:03:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Steven Allen <steven <at> stebalien.com> To: bug-gnu-emacs <at> gnu.org Subject: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Mon, 02 Sep 2024 19:01:31 -0700
In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, cairo version 1.18.0) of 2024-09-01 built on Laptop Repository revision: 92ea393a16e5c99a8860dab368c6ca3ca6abc3c5 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101013 System Description: Arch Linux To reproduce: (use-package foo :hook (eshell-mode . some-function)) Previously, `use-package' always appended `-hook' to the hook variable name. After 4f521fa14c18f57e5207bffd68e9f79454dccc79, `use-package' only does so if the passed variable name isn't bound. Unfortunately, this breaks binding mode hooks, e.g.: :hook (some-mode . some-function) Because `some-mode' is usually bound. Configured using: 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games --with-modules --without-m17n-flt --without-selinux --without-pop --without-gconf --enable-link-time-optimization --with-native-compilation=yes --with-xinput2 --with-x-toolkit=no --without-toolkit-scroll-bars --without-xft --without-xaw3d --without-gsettings --with-cairo-xcb --with-sound=no --with-tree-sitter --without-gpm --without-compress-install '--program-transform-name=s/\([ec]tags\)/\1.emacs/' 'CFLAGS=-march=native -mtune=native -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -flto=auto' 'LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs -flto=auto'' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY OLDXMENU PDUMPER PNG RSVG SECCOMP SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Eshell Minor modes in effect: eshell-syntax-highlighting-mode: t notmuch-bookmarks-mode: t windmove-mode: t global-atomic-chrome-edit-mode: t i3bar-mode: t ednc-mode: t exwm-xsettings-mode: t exwm-background-mode: t exwm-systemtray-mode: t exwm-randr-mode: t auto-compile-on-load-mode: t auto-compile-on-save-mode: t save-place-mode: t savehist-mode: t openwith-mode: t org-super-agenda-mode: t global-org-modern-mode: t goto-address-mode: t eshell-prompt-mode: t eshell-hist-mode: t eshell-pred-mode: t eat-eshell-mode: t eat--eshell-local-mode: t eshell-proc-mode: t eshell-arg-mode: t magit-todos-mode: t global-git-commit-mode: t magit-auto-revert-mode: t server-mode: t recentf-mode: t global-treesit-auto-mode: t editorconfig-mode: t yas-global-mode: t yas-minor-mode: t async-bytecomp-package-mode: t sudo-edit-indicator-mode: t global-auto-revert-mode: t vertico-mode: t corfu-popupinfo-mode: t global-corfu-mode: t corfu-mode: t isearch-mb-mode: t pixel-scroll-precision-mode: t global-hl-todo-mode: t all-the-icons-completion-mode: t marginalia-mode: t global-form-feed-st-mode: t global-anzu-mode: t anzu-mode: t global-jinx-mode: t evil-goggles-mode: t global-evil-surround-mode: t evil-surround-mode: t global-evil-collection-unimpaired-mode: t evil-collection-unimpaired-mode: t evil-mode: t evil-local-mode: t desktop-environment-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tab-bar-history-mode: t tab-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t window-divider-mode: t minibuffer-regexp-mode: 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 Load-path shadows: /home/steb/.cache/emacs/elpa/protobuf-mode-20240823.1417/protobuf-mode hides /usr/share/emacs/site-lisp/protobuf-mode /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch hides /usr/share/emacs/site-lisp/notmuch /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-wash hides /usr/share/emacs/site-lisp/notmuch-wash /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-tree hides /usr/share/emacs/site-lisp/notmuch-tree /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-tag hides /usr/share/emacs/site-lisp/notmuch-tag /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-show hides /usr/share/emacs/site-lisp/notmuch-show /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-query hides /usr/share/emacs/site-lisp/notmuch-query /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-print hides /usr/share/emacs/site-lisp/notmuch-print /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-parser hides /usr/share/emacs/site-lisp/notmuch-parser /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-mua hides /usr/share/emacs/site-lisp/notmuch-mua /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-message hides /usr/share/emacs/site-lisp/notmuch-message /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-maildir-fcc hides /usr/share/emacs/site-lisp/notmuch-maildir-fcc /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-lib hides /usr/share/emacs/site-lisp/notmuch-lib /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-jump hides /usr/share/emacs/site-lisp/notmuch-jump /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-hello hides /usr/share/emacs/site-lisp/notmuch-hello /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-draft hides /usr/share/emacs/site-lisp/notmuch-draft /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-crypto hides /usr/share/emacs/site-lisp/notmuch-crypto /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-compat hides /usr/share/emacs/site-lisp/notmuch-compat /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-company hides /usr/share/emacs/site-lisp/notmuch-company /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-address hides /usr/share/emacs/site-lisp/notmuch-address /home/steb/.cache/emacs/elpa/notmuch-20240816.2039/coolj hides /usr/share/emacs/site-lisp/coolj /home/steb/.cache/emacs/elpa/filechooser-0.2.1/filechooser hides /usr/share/emacs/site-lisp/filechooser /home/steb/.cache/emacs/elpa/filechooser-0.2.1/filechooser-autoloads hides /usr/share/emacs/site-lisp/filechooser-autoloads /home/steb/.cache/emacs/elpa/transient-20240831.2233/transient hides /usr/share/emacs/31.0.50/lisp/transient /home/steb/.cache/emacs/elpa/modus-themes-4.5.0/theme-loaddefs hides /usr/share/emacs/31.0.50/lisp/theme-loaddefs Features: (shadow sort mail-extr hippie-exp emacsbug emacsql-sqlite-builtin sqlite use-package-ensure use-package-core info-colors evil-collection-helpful helpful cc-langs trace cl-print evil-collection-edebug edebug info-look evil-collection-elisp-refs elisp-refs misearch multi-isearch evil-collection-eglot eglot external-completion jsonrpc evil-collection-ert ert ewoc evil-collection-debug debug backtrace rainbow-mode rainbow-delimiters evil-collection-flymake flymake eshell-syntax-highlighting help-fns radix-tree tramp-cmds bash-completion app-launcher evil-collection-vc-git vc-git vc-dispatcher evil-collection-consult consult magit-bookmark org-bookmark-heading notmuch-bookmarks evil-collection-bookmark bookmark textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check shr pixel-fill kinsoku url-file windmove mule-util image-file image-converter evil-collection-view view help-macro vertico-repeat systemctl em-elecslash em-glob em-extpipe em-basic em-alias pinentry evil-collection-atomic-chrome atomic-chrome websocket bindat i3bar ednc filechooser dbus exwm-xsettings xcb-xsettings exwm-background 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 cus-start posframe visual-wrap face-remap visual-fill-column ligature evil-org corg org-appear ws-butler oc-basic bibtex ol-man ol-info ol-docview evil-collection-doc-view doc-view jka-compr evil-collection-image image-mode exif auto-compile saveplace tramp-cache time-stamp savehist openwith org-super-agenda ts ht org-habit org-crypt org-protocol ob-http ob-http-mode org-modern ob-dot ob-latex ob-python evil-collection-python python ob-gnuplot 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 evil-org-agenda org-agenda ox-html table ox-ascii ox-publish ox org-attach org-element org-persist org-id org-refile org-element-ast inline avl-tree ob-calc calc-store calc-trail calc-ext evil-collection-calc calc calc-loaddefs calc-macs ob-shell evil-collection-org org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro evil-collection-xref xref org-src evil-collection-sh-script sh-script smie executable ob-comint org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs org-compat org-version org-macs notmuch-addr evil-collection-notmuch notmuch notmuch-tree notmuch-jump notmuch-hello notmuch-show notmuch-print notmuch-crypto notmuch-mua notmuch-message notmuch-draft notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser notmuch-wash coolj goto-addr icalendar diary-lib diary-loaddefs evil-collection-calendar cal-menu calendar cal-loaddefs notmuch-tag notmuch-lib notmuch-compat mm-view mml-smime smime dig eshell-prompt-extras em-dirs em-ls em-prompt em-hist em-unix em-pred esh-mode esh-var evil-collection-eat eat evil-collection-term term disp-table ehelp eshell esh-cmd generator esh-ext esh-proc esh-opt esh-io esh-arg esh-module esh-module-loaddefs esh-util evil-collection-forge forge-repos forge-tablist hl-line forge-topics forge-commands forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy gsexp ghub url-http url-gw nsm url-auth gnutls forge-notify forge-revnote forge-pullreq forge-issue forge-topic yaml eieio-custom bug-reference forge-post let-alist evil-collection-markdown-mode markdown-mode edit-indirect evil-collection-outline noutline outline forge-repo forge forge-core forge-db closql emacsql-sqlite-common emacsql emacsql-compiler eieio-base evil-collection-magit-todos magit-todos pcre2el rxt re-builder evil-collection-grep grep evil-collection-compile compile 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 evil-collection-magit-repos magit-repos magit-apply magit-wip magit-log which-func evil-collection-imenu imenu magit-diff smerge-mode diff diff-mode track-changes git-commit evil-collection-log-edit log-edit message sendmail yank-media puny evil-collection-dired dired dired-loaddefs rfc822 mml mml-sec evil-collection-epa 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 magit-margin magit-transient magit-process with-editor server magit-mode transient benchmark magit-git magit-base evil-collection-magit-section magit-section cursor-sensor crm tramp-sh recentf tree-widget treesit-auto editorconfig editorconfig-core editorconfig-core-handle editorconfig-fnmatch yasnippet async-bytecomp async sudo-edit easy-mmode tramp trampver tramp-integration files-x tramp-message tramp-compat shell pcomplete evil-collection-comint comint ansi-osc parse-time iso8601 time-date format-spec ansi-color tramp-loaddefs autorevert filenotify project vertico corfu-popupinfo evil-collection-corfu corfu orderless isearch-mb pixel-scroll cua-base hl-todo all-the-icons-completion all-the-icons all-the-icons-faces all-the-icons-data-material-icons all-the-icons-data-fluentui-system-icons all-the-icons-data-fontawesome-4 all-the-icons-data-weather-icons all-the-icons-data-vscode-codicons all-the-icons-data-octicons all-the-icons-data-mfixx all-the-icons-data-file-icons all-the-icons-data-devopicons all-the-icons-data-alltheicons svg dom xml marginalia form-feed-st anzu modus-vivendi-theme modus-themes jinx evil-goggles pulse color evil-textobj-tree-sitter evil-textobj-tree-sitter-thing-at-point evil-textobj-tree-sitter-core treesit evil-args evil-surround evil-collection-unimpaired evil-collection-tabulated-list evil-collection-tab-bar evil-collection-simple evil-collection-replace evil-collection-process-menu evil-collection-package-menu evil-collection-kmacro evil-collection-info evil-collection-indent evil-collection-help evil-collection-elisp-mode evil-collection-eldoc evil-collection-custom evil-collection-buff-menu evil-collection annalist evil evil-integration evil-maps evil-commands evil-digraphs pcase reveal evil-jumps evil-command-window evil-types evil-search evil-ex evil-macros evil-repeat evil-states evil-core comp-run advice evil-common thingatpt rect evil-vars ring edmacro kmacro general f dash s mode-local find-func no-littering compat finder-inf notmuch-version info all-the-icons-completion-autoloads all-the-icons-dired-autoloads all-the-icons-ibuffer-autoloads all-the-icons-autoloads app-launcher-autoloads aria2-autoloads atomic-chrome-autoloads auto-compile-autoloads bash-completion-autoloads bluetooth-autoloads buffer-move-autoloads calibre-autoloads cape-autoloads casual-calc-autoloads casual-dired-autoloads casual-ibuffer-autoloads casual-info-autoloads casual-lib-autoloads clojure-mode-autoloads comint-mime-autoloads consult-eglot-autoloads consult-project-extra-autoloads corfu-autoloads corg-autoloads csv-mode-autoloads dape-autoloads devdocs-autoloads dired-filter-autoloads dired-hacks-utils-autoloads dired-k-autoloads discomfort-autoloads debase-autoloads disk-usage-autoloads eat-autoloads edit-indirect-autoloads ednc-autoloads eff-autoloads ellama-autoloads embark-consult-autoloads consult-autoloads embark-autoloads ement-autoloads eshell-prompt-extras-autoloads eshell-syntax-highlighting-autoloads evil-anzu-autoloads anzu-autoloads evil-args-autoloads evil-collection-autoloads annalist-autoloads evil-goggles-autoloads evil-nerd-commenter-autoloads evil-org-autoloads evil-surround-autoloads evil-textobj-tree-sitter-autoloads evm-mode-autoloads expand-region-autoloads exwm-autoloads filechooser-autoloads flymake-ruff-autoloads form-feed-st-autoloads general-autoloads git-link-autoloads git-modes-autoloads gnuplot-autoloads graphviz-dot-mode-autoloads helpful-autoloads elisp-refs-autoloads htmlize-autoloads i3bar-autoloads igist-autoloads info-colors-autoloads isearch-mb-autoloads iwindow-autoloads jinx-autoloads journalctl-autoloads kotlin-mode-autoloads kubernetes-evil-autoloads evil-autoloads goto-chg-autoloads kubernetes-autoloads ligature-autoloads link-hint-autoloads avy-autoloads llm-autoloads magit-popup-autoloads magit-todos-autoloads hl-todo-autoloads f-autoloads marginalia-autoloads mastodon-autoloads microdata-autoloads modus-themes-autoloads named-pipe-autoloads nftables-mode-autoloads no-littering-autoloads notmuch-addr-autoloads notmuch-transient-autoloads nov-autoloads esxml-autoloads kv-autoloads ob-http-autoloads ol-notmuch-autoloads notmuch-autoloads openwith-autoloads orderless-autoloads org-appear-autoloads org-bookmark-heading-autoloads org-download-autoloads async-autoloads org-modern-autoloads org-super-agenda-autoloads orgit-forge-autoloads orgit-autoloads forge-autoloads markdown-mode-autoloads magit-autoloads ghub-autoloads closql-autoloads emacsql-autoloads ox-pandoc-autoloads ht-autoloads package-lint-flymake-autoloads package-lint-autoloads password-store-autoloads pcre2el-autoloads pdf-tools-autoloads persist-autoloads pinentry-autoloads pkgbuild-mode-autoloads playerctl-autoloads plz-autoloads posframe-autoloads proced-narrow-autoloads protobuf-mode-autoloads pulseaudio-control-autoloads qrencode-autoloads rainbow-delimiters-autoloads rainbow-mode-autoloads request-autoloads rg-autoloads rmsbolt-autoloads rust-playground-autoloads solidity-mode-autoloads spinner-autoloads ssh-config-mode-autoloads sudo-edit-autoloads svg-lib-autoloads syncthing-autoloads systemctl-autoloads systemd-autoloads tablist-autoloads taxy-magit-section-autoloads taxy-autoloads magit-section-autoloads tmr-autoloads transient-autoloads treepy-autoloads treesit-auto-autoloads ts-autoloads s-autoloads dash-autoloads tzc-autoloads udev-mode-autoloads vala-mode-autoloads cc-styles cc-align cc-engine cc-vars cc-defs vertico-autoloads vimrc-mode-autoloads visual-fill-column-autoloads vundo-autoloads wat-ts-mode-autoloads watch-autoloads web-mode-autoloads websocket-autoloads wgrep-autoloads whisper-autoloads with-editor-autoloads wordnut-autoloads ws-butler-autoloads xelb-autoloads yaml-autoloads yasnippet-autoloads comp comp-cstr cl-extra help-mode comp-common warnings rx xdg 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 cus-edit pp cus-load icons wid-edit 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 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 xinput2 x multi-tty move-toolbar make-network-process native-compile emacs) Memory information: ((conses 16 1549386 918104) (symbols 48 75074 27) (strings 32 368173 78940) (string-bytes 1 11687125) (vectors 16 172279) (vector-slots 8 2736571 946452) (floats 8 831 5037) (intervals 56 25767 10683) (buffers 992 47))
bug-gnu-emacs <at> gnu.org
:bug#72993
; Package emacs
.
(Tue, 03 Sep 2024 02:36:02 GMT) Full text and rfc822 format available.Message #8 received at 72993 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Steven Allen <steven <at> stebalien.com>, John Wiegley <johnw <at> gnu.org> Cc: 72993 <at> debbugs.gnu.org Subject: Re: bug#72993: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Tue, 03 Sep 2024 05:34:39 +0300
> Date: Mon, 02 Sep 2024 19:01:31 -0700 > From: Steven Allen via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> > > > > In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, cairo version > 1.18.0) of 2024-09-01 built on Laptop > Repository revision: 92ea393a16e5c99a8860dab368c6ca3ca6abc3c5 > Repository branch: master > Windowing system distributor 'The X.Org Foundation', version 11.0.12101013 > System Description: Arch Linux > > To reproduce: > > (use-package foo > :hook (eshell-mode . some-function)) > > Previously, `use-package' always appended `-hook' to the hook variable name. > After 4f521fa14c18f57e5207bffd68e9f79454dccc79, `use-package' only does > so if the passed variable name isn't bound. Unfortunately, this breaks > binding mode hooks, e.g.: > > :hook (some-mode . some-function) > > Because `some-mode' is usually bound. John, any comments or suggestions?
bug-gnu-emacs <at> gnu.org
:bug#72993
; Package emacs
.
(Tue, 03 Sep 2024 04:40:02 GMT) Full text and rfc822 format available.Message #11 received at 72993 <at> debbugs.gnu.org (full text, mbox):
From: John Wiegley <johnw <at> gnu.org> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 72993 <at> debbugs.gnu.org, Steven Allen <steven <at> stebalien.com> Subject: Re: bug#72993: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Mon, 02 Sep 2024 21:37:54 -0700
>>>>> Eli Zaretskii <eliz <at> gnu.org> writes: >> To reproduce: >> >> (use-package foo >> :hook (eshell-mode . some-function)) >> >> Previously, `use-package' always appended `-hook' to the hook variable name. >> After 4f521fa14c18f57e5207bffd68e9f79454dccc79, `use-package' only does >> so if the passed variable name isn't bound. Unfortunately, this breaks >> binding mode hooks, e.g.: >> >> :hook (some-mode . some-function) >> >> Because `some-mode' is usually bound. > John, any comments or suggestions? Sigh, I should have thought of this. There will be many such collisions, in fact. Perhaps we should avoid auto -hook’ifying the variable name only if the name does not already end in ‘-functions’? What do you think, Eli? -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
bug-gnu-emacs <at> gnu.org
:bug#72993
; Package emacs
.
(Tue, 03 Sep 2024 12:40:02 GMT) Full text and rfc822 format available.Message #14 received at 72993 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: John Wiegley <johnw <at> gnu.org> Cc: 72993 <at> debbugs.gnu.org, steven <at> stebalien.com Subject: Re: bug#72993: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Tue, 03 Sep 2024 15:38:26 +0300
> From: John Wiegley <johnw <at> gnu.org> > Cc: Steven Allen <steven <at> stebalien.com>, 72993 <at> debbugs.gnu.org > Date: Mon, 02 Sep 2024 21:37:54 -0700 > > >>>>> Eli Zaretskii <eliz <at> gnu.org> writes: > > >> To reproduce: > >> > >> (use-package foo > >> :hook (eshell-mode . some-function)) > >> > >> Previously, `use-package' always appended `-hook' to the hook variable name. > >> After 4f521fa14c18f57e5207bffd68e9f79454dccc79, `use-package' only does > >> so if the passed variable name isn't bound. Unfortunately, this breaks > >> binding mode hooks, e.g.: > >> > >> :hook (some-mode . some-function) > >> > >> Because `some-mode' is usually bound. > > > John, any comments or suggestions? > > Sigh, I should have thought of this. There will be many such collisions, in > fact. > > Perhaps we should avoid auto -hook’ifying the variable name only if the name > does not already end in ‘-functions’? Either that, or maybe exempt FOO-mode from the boundp test.
bug-gnu-emacs <at> gnu.org
:bug#72993
; Package emacs
.
(Tue, 03 Sep 2024 22:40:02 GMT) Full text and rfc822 format available.Message #17 received at 72993 <at> debbugs.gnu.org (full text, mbox):
From: John Wiegley <johnw <at> gnu.org> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 72993 <at> debbugs.gnu.org, steven <at> stebalien.com Subject: Re: bug#72993: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Tue, 03 Sep 2024 15:35:48 -0700
>>>>> Eli Zaretskii <eliz <at> gnu.org> writes: >> Perhaps we should avoid auto -hook’ifying the variable name only if the name >> does not already end in ‘-functions’? > Either that, or maybe exempt FOO-mode from the boundp test. This sounds likely to be even better. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
bug-gnu-emacs <at> gnu.org
:bug#72993
; Package emacs
.
(Wed, 04 Sep 2024 11:33:02 GMT) Full text and rfc822 format available.Message #20 received at 72993 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: John Wiegley <johnw <at> gnu.org> Cc: 72993 <at> debbugs.gnu.org, steven <at> stebalien.com Subject: Re: bug#72993: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Wed, 04 Sep 2024 14:31:27 +0300
> From: John Wiegley <johnw <at> gnu.org> > Cc: steven <at> stebalien.com, 72993 <at> debbugs.gnu.org > Date: Tue, 03 Sep 2024 15:35:48 -0700 > > >>>>> Eli Zaretskii <eliz <at> gnu.org> writes: > > >> Perhaps we should avoid auto -hook’ifying the variable name only if the name > >> does not already end in ‘-functions’? > > > Either that, or maybe exempt FOO-mode from the boundp test. > > This sounds likely to be even better. Like the below? diff --git a/lisp/use-package/use-package-core.el b/lisp/use-package/use-package-core.el index 2c5fc56..6c3d350 100644 --- a/lisp/use-package/use-package-core.el +++ b/lisp/use-package/use-package-core.el @@ -1376,13 +1376,16 @@ use-package-handler/:hook (when fun (mapcar #'(lambda (sym) - (if (boundp sym) - `(add-hook (quote ,sym) (function ,fun)) - `(add-hook - (quote ,(intern - (concat (symbol-name sym) - use-package-hook-name-suffix))) - (function ,fun)))) + (let ((symname (symbol-name sym))) + (if (and (boundp sym) + ;; Mode variables are usually bound, but + ;; their hooks are named FOO-mode-hook. + (not (string-suffix-p "-mode" symname))) + `(add-hook (quote ,sym) (function ,fun)) + `(add-hook + (quote ,(intern + (concat symname use-package-hook-name-suffix))) + (function ,fun))))) (use-package-hook-handler-normalize-mode-symbols syms))))) (use-package-normalize-commands args))))
bug-gnu-emacs <at> gnu.org
:bug#72993
; Package emacs
.
(Wed, 04 Sep 2024 17:32:01 GMT) Full text and rfc822 format available.Message #23 received at 72993 <at> debbugs.gnu.org (full text, mbox):
From: John Wiegley <johnw <at> gnu.org> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 72993 <at> debbugs.gnu.org, steven <at> stebalien.com Subject: Re: bug#72993: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Wed, 04 Sep 2024 10:30:21 -0700
>>>>> Eli Zaretskii <eliz <at> gnu.org> writes: > Like the below? Yes, looks good! Thank you, Eli. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
Eli Zaretskii <eliz <at> gnu.org>
:Steven Allen <steven <at> stebalien.com>
:Message #28 received at 72993-done <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: John Wiegley <johnw <at> gnu.org> Cc: steven <at> stebalien.com, 72993-done <at> debbugs.gnu.org Subject: Re: bug#72993: 31.0.50; 4f521fa14c18f57e5207bffd68e9f79454dccc79 breaks binding mode hooks in use-package Date: Wed, 04 Sep 2024 20:44:26 +0300
> From: John Wiegley <johnw <at> gnu.org> > Cc: steven <at> stebalien.com, 72993 <at> debbugs.gnu.org > Date: Wed, 04 Sep 2024 10:30:21 -0700 > > >>>>> Eli Zaretskii <eliz <at> gnu.org> writes: > > > Like the below? > > Yes, looks good! Thank you, Eli. Thanks, installed on the emacs-30 branch, and closing the bug.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Thu, 03 Oct 2024 11:24:16 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.