bug#81643: 32.0.50; use-package :hook is not the same as :init add-hook

Lucas Jimenez via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <[email protected]>
Newsgroups gmane.emacs.bugs
Message-ID <[email protected]>

Hi,

The manual says that :hook is the same as add-hook in :init
These tests show that it isn't the case.

I don't know if the manual is wrong or if it's a bug with use-package

I would prefer to be a bug, since I like to use all the use-package
attributes as much as possible.

All tests are done one by one with emacs -Q and restarting each time to
test each case.  Both tests should end with the modus-vivendi loaded, but
that isn't the case proving that :hook is not the same as add-hook in :init

Test 1:

(use-package modus-themes
  :no-require t
  :init
  (require-theme 'modus-themes)
  (defun test-hook-attr ()
    (load-theme 'modus-vivendi))
  :hook (modus-themes-after-load-theme . test-hook-attr)
  :config
  (modus-themes-load-theme 'modus-operandi))

Test 2:


(use-package modus-themes
  :no-require t
  :init
  (require-theme 'modus-themes)
  (defun test-hook-attr ()
    (load-theme 'modus-vivendi))
  (add-hook 'modus-themes-after-load-theme-hook #'test-hook-attr)
  :config
  (modus-themes-load-theme 'modus-operandi))


In GNU Emacs 32.0.50 (build 1, x86_64-apple-darwin21.6.0, NS
appkit-2113.65 Version 12.7.6 (Build 21H1320)) of 2026-08-10 built on
mcbata
Windowing system distributor 'Apple', version 10.3.2113
System Description:  macOS 12.7.6

Configured using:
'configure --prefix=/opt/local --disable-silent-rules --without-dbus
--without-gconf --without-libotf --without-m17n-flt --with-libgmp
--with-gnutls --with-xml2 --with-modules --with-sqlite3 --with-webp
--with-native-compilation=aot --infodir /opt/local/share/info/emacs
--disable-gc-mark-trace --with-ns --with-lcms2 --without-harfbuzz
--without-xaw3d --with-imagemagick --with-rsvg --with-xwidgets
--with-tree-sitter 'CFLAGS=-pipe -Os -Wno-attributes
-isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk -arch
x86_64' 'CPPFLAGS=-isystem/opt/local/include
-isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk'
'LDFLAGS=-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-no_pie
-Wl,-rpath /opt/local/lib/gcc15 -Wl,-rpath /opt/local/lib
-Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk
-arch x86_64''

Configured features:
ACL GIF GLIB GMP GNUTLS IMAGEMAGICK JPEG LCMS2 LIBXML2 MODULES
NATIVE_COMP NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM XWIDGETS ZLIB

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

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-nonselected-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug lisp-mnt message mailcap yank-media puny
dired dired-loaddefs rfc822 mml mml-sec password-cache epa epg rfc6068
epg-config gnus-util text-property-search mm-decode mm-bodies mm-encode
mailabbrev gmm-utils mailheader sendmail mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils modus-themes easy-mmode
derived pcase color cl-macs gv cl-extra help-mode cl-seq
use-package-core time-date subr-x comp-run bytecomp byte-compile
comp-common rx warnings icons cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util
term/common-win 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 xwidget-internal kqueue cocoa ns lcms2 multi-tty
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 170948 10308) (symbols 48 9721 0) (strings 32 22459 2465)
(string-bytes 1 781124) (vectors 16 12335)
(vector-slots 8 169088 5024) (floats 8 167 11) (intervals 56 512 2)
(buffers 1064 10))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.