Package: emacs;
Reported by: Steven Allen <steven <at> stebalien.com>
Date: Tue, 28 Oct 2025 20:57:02 UTC
Severity: normal
Found in version 31.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
To reply to this bug, email your comments to 79712 AT debbugs.gnu.org.
There is no need to reopen the bug first.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
prot <at> protesilaos.com, eliz <at> gnu.org, bug-gnu-emacs <at> gnu.org:bug#79712; Package emacs.
(Tue, 28 Oct 2025 20:57:02 GMT) Full text and rfc822 format available.Steven Allen <steven <at> stebalien.com>:prot <at> protesilaos.com, eliz <at> gnu.org, bug-gnu-emacs <at> gnu.org.
(Tue, 28 Oct 2025 20:57: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; Face cycle with the link/button faces in the modus themes Date: Tue, 28 Oct 2025 13:55:41 -0700
[Message part 1 (text/plain, inline)]
Since 23d86335792, modus themes fail to load correctly with the
following error:
Face inheritance results in inheritance cycle: button
To reproduce, start Emacs with:
emacs -Q --eval "(load-theme 'modus-vivendi)"
Swapping the order of the button/link faces in the theme definition (see
attached diff) fixes this. It appears that custom-theme-set-faces
processes this face list in reverse order, so the "link" face is made to
inherit from the "button" face FIRST before the "button" face is
re-defined to not inherit from the "link" face.
However, I'm not sure that this is the best fix. IMO, faces passed to
custom-theme-set-faces should, ideally, be processed in-order, not in
reverse-order. But I wanted to get some feedback before submitting any
patches.
In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
1.18.4) of 2025-10-28 built on Laptop
Repository revision: 5403c020880a96bb2f1384066a29ead2ead8540a
Repository branch: merged
Windowing system distributor 'The X.Org Foundation', version 11.0.12101018
System Description: Arch Linux
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 --disable-gc-mark-trace --with-mps=yes
--enable-autodepend --enable-link-time-optimization
--with-native-compilation=yes --with-xinput2 --with-x-toolkit=no
--without-toolkit-scroll-bars --without-xaw3d --without-gsettings
--with-cairo-xcb --without-xft --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 -fomit-frame-pointer
-fno-math-errno -fno-trapping-math -Os -fno-math-errno
-fno-trapping-math -Os -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 MPS NATIVE_COMP NOTIFY INOTIFY OLDXMENU
PDUMPER PNG RSVG SECCOMP SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE
XIM XINERAMA XINPUT2 XPM XRANDR ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Help
Minor modes in effect:
windmove-mode: t
global-atomic-chrome-edit-mode: t
iwd-agent-mode: t
i3bar-mode: t
ednc-mode: t
exwm-xsettings-mode: t
exwm-background-mode: t
exwm-systemtray-mode: t
exwm-randr-mode: t
exwm-wm-mode: t
spacious-padding-mode: t
notmuch-bookmarks-mode: t
simple-auto-compile-mode: t
save-place-mode: t
savehist-mode: t
global-org-modern-mode: t
eat-eshell-mode: t
dired-async-mode: t
global-git-commit-mode: t
magit-auto-revert-mode: t
server-mode: t
llama-fontify-mode: t
global-diff-hl-mode: t
global-jinx-mode: t
ultra-scroll-mode: t
pixel-scroll-precision-mode: t
global-hl-todo-mode: t
marginalia-mode: t
nerd-icons-completion-mode: t
visual-replace-global-mode: t
vertico-multiform-mode: t
vertico-mode: t
corfu-popupinfo-mode: t
global-corfu-mode: t
isearch-mb-mode: t
global-evil-surround-mode: t
evil-surround-mode: t
evil-goggles-mode: t
recentf-mode: t
editorconfig-mode: t
page-break-mode: t
global-auto-revert-mode: t
auto-insert-mode: t
minibuffer-depth-indicate-mode: t
minibuffer-electric-default-mode: t
evil-mode: t
evil-local-mode: t
desktop-environment-mode: t
elpaca-use-package-mode: t
override-global-mode: t
global-eldoc-mode: t
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
minibuffer-nonselected-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
Load-path shadows:
/home/steb/.config/emacs/elpaca/builds/package-lint-flymake/package-lint-flymake hides /home/steb/.config/emacs/elpaca/builds/package-lint/package-lint-flymake
/home/steb/.config/emacs/elpaca/builds/transient/transient hides /usr/share/emacs/31.0.50/lisp/transient
/home/steb/.config/emacs/elpaca/builds/org/ox hides /usr/share/emacs/31.0.50/lisp/org/ox
/home/steb/.config/emacs/elpaca/builds/org/ox-texinfo hides /usr/share/emacs/31.0.50/lisp/org/ox-texinfo
/home/steb/.config/emacs/elpaca/builds/org/ox-publish hides /usr/share/emacs/31.0.50/lisp/org/ox-publish
/home/steb/.config/emacs/elpaca/builds/org/ox-org hides /usr/share/emacs/31.0.50/lisp/org/ox-org
/home/steb/.config/emacs/elpaca/builds/org/ox-odt hides /usr/share/emacs/31.0.50/lisp/org/ox-odt
/home/steb/.config/emacs/elpaca/builds/org/ox-md hides /usr/share/emacs/31.0.50/lisp/org/ox-md
/home/steb/.config/emacs/elpaca/builds/org/ox-man hides /usr/share/emacs/31.0.50/lisp/org/ox-man
/home/steb/.config/emacs/elpaca/builds/org/ox-latex hides /usr/share/emacs/31.0.50/lisp/org/ox-latex
/home/steb/.config/emacs/elpaca/builds/org/ox-koma-letter hides /usr/share/emacs/31.0.50/lisp/org/ox-koma-letter
/home/steb/.config/emacs/elpaca/builds/org/ox-icalendar hides /usr/share/emacs/31.0.50/lisp/org/ox-icalendar
/home/steb/.config/emacs/elpaca/builds/org/ox-html hides /usr/share/emacs/31.0.50/lisp/org/ox-html
/home/steb/.config/emacs/elpaca/builds/org/ox-beamer hides /usr/share/emacs/31.0.50/lisp/org/ox-beamer
/home/steb/.config/emacs/elpaca/builds/org/ox-ascii hides /usr/share/emacs/31.0.50/lisp/org/ox-ascii
/home/steb/.config/emacs/elpaca/builds/org/org hides /usr/share/emacs/31.0.50/lisp/org/org
/home/steb/.config/emacs/elpaca/builds/org/org-version hides /usr/share/emacs/31.0.50/lisp/org/org-version
/home/steb/.config/emacs/elpaca/builds/org/org-timer hides /usr/share/emacs/31.0.50/lisp/org/org-timer
/home/steb/.config/emacs/elpaca/builds/org/org-tempo hides /usr/share/emacs/31.0.50/lisp/org/org-tempo
/home/steb/.config/emacs/elpaca/builds/org/org-table hides /usr/share/emacs/31.0.50/lisp/org/org-table
/home/steb/.config/emacs/elpaca/builds/org/org-src hides /usr/share/emacs/31.0.50/lisp/org/org-src
/home/steb/.config/emacs/elpaca/builds/org/org-refile hides /usr/share/emacs/31.0.50/lisp/org/org-refile
/home/steb/.config/emacs/elpaca/builds/org/org-protocol hides /usr/share/emacs/31.0.50/lisp/org/org-protocol
/home/steb/.config/emacs/elpaca/builds/org/org-plot hides /usr/share/emacs/31.0.50/lisp/org/org-plot
/home/steb/.config/emacs/elpaca/builds/org/org-persist hides /usr/share/emacs/31.0.50/lisp/org/org-persist
/home/steb/.config/emacs/elpaca/builds/org/org-pcomplete hides /usr/share/emacs/31.0.50/lisp/org/org-pcomplete
/home/steb/.config/emacs/elpaca/builds/org/org-num hides /usr/share/emacs/31.0.50/lisp/org/org-num
/home/steb/.config/emacs/elpaca/builds/org/org-mouse hides /usr/share/emacs/31.0.50/lisp/org/org-mouse
/home/steb/.config/emacs/elpaca/builds/org/org-mobile hides /usr/share/emacs/31.0.50/lisp/org/org-mobile
/home/steb/.config/emacs/elpaca/builds/org/org-macs hides /usr/share/emacs/31.0.50/lisp/org/org-macs
/home/steb/.config/emacs/elpaca/builds/org/org-macro hides /usr/share/emacs/31.0.50/lisp/org/org-macro
/home/steb/.config/emacs/elpaca/builds/org/org-loaddefs hides /usr/share/emacs/31.0.50/lisp/org/org-loaddefs
/home/steb/.config/emacs/elpaca/builds/org/org-list hides /usr/share/emacs/31.0.50/lisp/org/org-list
/home/steb/.config/emacs/elpaca/builds/org/org-lint hides /usr/share/emacs/31.0.50/lisp/org/org-lint
/home/steb/.config/emacs/elpaca/builds/org/org-keys hides /usr/share/emacs/31.0.50/lisp/org/org-keys
/home/steb/.config/emacs/elpaca/builds/org/org-inlinetask hides /usr/share/emacs/31.0.50/lisp/org/org-inlinetask
/home/steb/.config/emacs/elpaca/builds/org/org-indent hides /usr/share/emacs/31.0.50/lisp/org/org-indent
/home/steb/.config/emacs/elpaca/builds/org/org-id hides /usr/share/emacs/31.0.50/lisp/org/org-id
/home/steb/.config/emacs/elpaca/builds/org/org-habit hides /usr/share/emacs/31.0.50/lisp/org/org-habit
/home/steb/.config/emacs/elpaca/builds/org/org-goto hides /usr/share/emacs/31.0.50/lisp/org/org-goto
/home/steb/.config/emacs/elpaca/builds/org/org-footnote hides /usr/share/emacs/31.0.50/lisp/org/org-footnote
/home/steb/.config/emacs/elpaca/builds/org/org-fold hides /usr/share/emacs/31.0.50/lisp/org/org-fold
/home/steb/.config/emacs/elpaca/builds/org/org-fold-core hides /usr/share/emacs/31.0.50/lisp/org/org-fold-core
/home/steb/.config/emacs/elpaca/builds/org/org-feed hides /usr/share/emacs/31.0.50/lisp/org/org-feed
/home/steb/.config/emacs/elpaca/builds/org/org-faces hides /usr/share/emacs/31.0.50/lisp/org/org-faces
/home/steb/.config/emacs/elpaca/builds/org/org-entities hides /usr/share/emacs/31.0.50/lisp/org/org-entities
/home/steb/.config/emacs/elpaca/builds/org/org-element hides /usr/share/emacs/31.0.50/lisp/org/org-element
/home/steb/.config/emacs/elpaca/builds/org/org-element-ast hides /usr/share/emacs/31.0.50/lisp/org/org-element-ast
/home/steb/.config/emacs/elpaca/builds/org/org-duration hides /usr/share/emacs/31.0.50/lisp/org/org-duration
/home/steb/.config/emacs/elpaca/builds/org/org-datetree hides /usr/share/emacs/31.0.50/lisp/org/org-datetree
/home/steb/.config/emacs/elpaca/builds/org/org-cycle hides /usr/share/emacs/31.0.50/lisp/org/org-cycle
/home/steb/.config/emacs/elpaca/builds/org/org-ctags hides /usr/share/emacs/31.0.50/lisp/org/org-ctags
/home/steb/.config/emacs/elpaca/builds/org/org-crypt hides /usr/share/emacs/31.0.50/lisp/org/org-crypt
/home/steb/.config/emacs/elpaca/builds/org/org-compat hides /usr/share/emacs/31.0.50/lisp/org/org-compat
/home/steb/.config/emacs/elpaca/builds/org/org-colview hides /usr/share/emacs/31.0.50/lisp/org/org-colview
/home/steb/.config/emacs/elpaca/builds/org/org-clock hides /usr/share/emacs/31.0.50/lisp/org/org-clock
/home/steb/.config/emacs/elpaca/builds/org/org-capture hides /usr/share/emacs/31.0.50/lisp/org/org-capture
/home/steb/.config/emacs/elpaca/builds/org/org-attach hides /usr/share/emacs/31.0.50/lisp/org/org-attach
/home/steb/.config/emacs/elpaca/builds/org/org-attach-git hides /usr/share/emacs/31.0.50/lisp/org/org-attach-git
/home/steb/.config/emacs/elpaca/builds/org/org-archive hides /usr/share/emacs/31.0.50/lisp/org/org-archive
/home/steb/.config/emacs/elpaca/builds/org/org-agenda hides /usr/share/emacs/31.0.50/lisp/org/org-agenda
/home/steb/.config/emacs/elpaca/builds/org/ol hides /usr/share/emacs/31.0.50/lisp/org/ol
/home/steb/.config/emacs/elpaca/builds/org/ol-w3m hides /usr/share/emacs/31.0.50/lisp/org/ol-w3m
/home/steb/.config/emacs/elpaca/builds/org/ol-rmail hides /usr/share/emacs/31.0.50/lisp/org/ol-rmail
/home/steb/.config/emacs/elpaca/builds/org/ol-mhe hides /usr/share/emacs/31.0.50/lisp/org/ol-mhe
/home/steb/.config/emacs/elpaca/builds/org/ol-man hides /usr/share/emacs/31.0.50/lisp/org/ol-man
/home/steb/.config/emacs/elpaca/builds/org/ol-irc hides /usr/share/emacs/31.0.50/lisp/org/ol-irc
/home/steb/.config/emacs/elpaca/builds/org/ol-info hides /usr/share/emacs/31.0.50/lisp/org/ol-info
/home/steb/.config/emacs/elpaca/builds/org/ol-gnus hides /usr/share/emacs/31.0.50/lisp/org/ol-gnus
/home/steb/.config/emacs/elpaca/builds/org/ol-eww hides /usr/share/emacs/31.0.50/lisp/org/ol-eww
/home/steb/.config/emacs/elpaca/builds/org/ol-eshell hides /usr/share/emacs/31.0.50/lisp/org/ol-eshell
/home/steb/.config/emacs/elpaca/builds/org/ol-doi hides /usr/share/emacs/31.0.50/lisp/org/ol-doi
/home/steb/.config/emacs/elpaca/builds/org/ol-docview hides /usr/share/emacs/31.0.50/lisp/org/ol-docview
/home/steb/.config/emacs/elpaca/builds/org/ol-bibtex hides /usr/share/emacs/31.0.50/lisp/org/ol-bibtex
/home/steb/.config/emacs/elpaca/builds/org/ol-bbdb hides /usr/share/emacs/31.0.50/lisp/org/ol-bbdb
/home/steb/.config/emacs/elpaca/builds/org/oc hides /usr/share/emacs/31.0.50/lisp/org/oc
/home/steb/.config/emacs/elpaca/builds/org/oc-natbib hides /usr/share/emacs/31.0.50/lisp/org/oc-natbib
/home/steb/.config/emacs/elpaca/builds/org/oc-csl hides /usr/share/emacs/31.0.50/lisp/org/oc-csl
/home/steb/.config/emacs/elpaca/builds/org/oc-bibtex hides /usr/share/emacs/31.0.50/lisp/org/oc-bibtex
/home/steb/.config/emacs/elpaca/builds/org/oc-biblatex hides /usr/share/emacs/31.0.50/lisp/org/oc-biblatex
/home/steb/.config/emacs/elpaca/builds/org/oc-basic hides /usr/share/emacs/31.0.50/lisp/org/oc-basic
/home/steb/.config/emacs/elpaca/builds/org/ob hides /usr/share/emacs/31.0.50/lisp/org/ob
/home/steb/.config/emacs/elpaca/builds/org/ob-tangle hides /usr/share/emacs/31.0.50/lisp/org/ob-tangle
/home/steb/.config/emacs/elpaca/builds/org/ob-table hides /usr/share/emacs/31.0.50/lisp/org/ob-table
/home/steb/.config/emacs/elpaca/builds/org/ob-sqlite hides /usr/share/emacs/31.0.50/lisp/org/ob-sqlite
/home/steb/.config/emacs/elpaca/builds/org/ob-sql hides /usr/share/emacs/31.0.50/lisp/org/ob-sql
/home/steb/.config/emacs/elpaca/builds/org/ob-shell hides /usr/share/emacs/31.0.50/lisp/org/ob-shell
/home/steb/.config/emacs/elpaca/builds/org/ob-sed hides /usr/share/emacs/31.0.50/lisp/org/ob-sed
/home/steb/.config/emacs/elpaca/builds/org/ob-screen hides /usr/share/emacs/31.0.50/lisp/org/ob-screen
/home/steb/.config/emacs/elpaca/builds/org/ob-scheme hides /usr/share/emacs/31.0.50/lisp/org/ob-scheme
/home/steb/.config/emacs/elpaca/builds/org/ob-sass hides /usr/share/emacs/31.0.50/lisp/org/ob-sass
/home/steb/.config/emacs/elpaca/builds/org/ob-ruby hides /usr/share/emacs/31.0.50/lisp/org/ob-ruby
/home/steb/.config/emacs/elpaca/builds/org/ob-ref hides /usr/share/emacs/31.0.50/lisp/org/ob-ref
/home/steb/.config/emacs/elpaca/builds/org/ob-python hides /usr/share/emacs/31.0.50/lisp/org/ob-python
/home/steb/.config/emacs/elpaca/builds/org/ob-processing hides /usr/share/emacs/31.0.50/lisp/org/ob-processing
/home/steb/.config/emacs/elpaca/builds/org/ob-plantuml hides /usr/share/emacs/31.0.50/lisp/org/ob-plantuml
/home/steb/.config/emacs/elpaca/builds/org/ob-perl hides /usr/share/emacs/31.0.50/lisp/org/ob-perl
/home/steb/.config/emacs/elpaca/builds/org/ob-org hides /usr/share/emacs/31.0.50/lisp/org/ob-org
/home/steb/.config/emacs/elpaca/builds/org/ob-octave hides /usr/share/emacs/31.0.50/lisp/org/ob-octave
/home/steb/.config/emacs/elpaca/builds/org/ob-ocaml hides /usr/share/emacs/31.0.50/lisp/org/ob-ocaml
/home/steb/.config/emacs/elpaca/builds/org/ob-maxima hides /usr/share/emacs/31.0.50/lisp/org/ob-maxima
/home/steb/.config/emacs/elpaca/builds/org/ob-matlab hides /usr/share/emacs/31.0.50/lisp/org/ob-matlab
/home/steb/.config/emacs/elpaca/builds/org/ob-makefile hides /usr/share/emacs/31.0.50/lisp/org/ob-makefile
/home/steb/.config/emacs/elpaca/builds/org/ob-lua hides /usr/share/emacs/31.0.50/lisp/org/ob-lua
/home/steb/.config/emacs/elpaca/builds/org/ob-lob hides /usr/share/emacs/31.0.50/lisp/org/ob-lob
/home/steb/.config/emacs/elpaca/builds/org/ob-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-lisp
/home/steb/.config/emacs/elpaca/builds/org/ob-lilypond hides /usr/share/emacs/31.0.50/lisp/org/ob-lilypond
/home/steb/.config/emacs/elpaca/builds/org/ob-latex hides /usr/share/emacs/31.0.50/lisp/org/ob-latex
/home/steb/.config/emacs/elpaca/builds/org/ob-julia hides /usr/share/emacs/31.0.50/lisp/org/ob-julia
/home/steb/.config/emacs/elpaca/builds/org/ob-js hides /usr/share/emacs/31.0.50/lisp/org/ob-js
/home/steb/.config/emacs/elpaca/builds/org/ob-java hides /usr/share/emacs/31.0.50/lisp/org/ob-java
/home/steb/.config/emacs/elpaca/builds/org/ob-haskell hides /usr/share/emacs/31.0.50/lisp/org/ob-haskell
/home/steb/.config/emacs/elpaca/builds/org/ob-groovy hides /usr/share/emacs/31.0.50/lisp/org/ob-groovy
/home/steb/.config/emacs/elpaca/builds/org/ob-gnuplot hides /usr/share/emacs/31.0.50/lisp/org/ob-gnuplot
/home/steb/.config/emacs/elpaca/builds/org/ob-fortran hides /usr/share/emacs/31.0.50/lisp/org/ob-fortran
/home/steb/.config/emacs/elpaca/builds/org/ob-forth hides /usr/share/emacs/31.0.50/lisp/org/ob-forth
/home/steb/.config/emacs/elpaca/builds/org/ob-exp hides /usr/share/emacs/31.0.50/lisp/org/ob-exp
/home/steb/.config/emacs/elpaca/builds/org/ob-eval hides /usr/share/emacs/31.0.50/lisp/org/ob-eval
/home/steb/.config/emacs/elpaca/builds/org/ob-eshell hides /usr/share/emacs/31.0.50/lisp/org/ob-eshell
/home/steb/.config/emacs/elpaca/builds/org/ob-emacs-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-emacs-lisp
/home/steb/.config/emacs/elpaca/builds/org/ob-dot hides /usr/share/emacs/31.0.50/lisp/org/ob-dot
/home/steb/.config/emacs/elpaca/builds/org/ob-ditaa hides /usr/share/emacs/31.0.50/lisp/org/ob-ditaa
/home/steb/.config/emacs/elpaca/builds/org/ob-css hides /usr/share/emacs/31.0.50/lisp/org/ob-css
/home/steb/.config/emacs/elpaca/builds/org/ob-core hides /usr/share/emacs/31.0.50/lisp/org/ob-core
/home/steb/.config/emacs/elpaca/builds/org/ob-comint hides /usr/share/emacs/31.0.50/lisp/org/ob-comint
/home/steb/.config/emacs/elpaca/builds/org/ob-clojure hides /usr/share/emacs/31.0.50/lisp/org/ob-clojure
/home/steb/.config/emacs/elpaca/builds/org/ob-calc hides /usr/share/emacs/31.0.50/lisp/org/ob-calc
/home/steb/.config/emacs/elpaca/builds/org/ob-awk hides /usr/share/emacs/31.0.50/lisp/org/ob-awk
/home/steb/.config/emacs/elpaca/builds/org/ob-R hides /usr/share/emacs/31.0.50/lisp/org/ob-R
/home/steb/.config/emacs/elpaca/builds/org/ob-C hides /usr/share/emacs/31.0.50/lisp/org/ob-C
Features:
(shadow sort mail-extr emacsbug tramp-archive tramp-gvfs
nerd-icons-dired diredfl dired-filter dired-hacks-utils ...)
Memory information:
((conses 24 0 0) (symbols 56 0 0) (strings 40 0 0) (string-bytes 1 0) (vectors 24 0)
(vector-slots 8 0 0) (floats 24 0 0) (intervals 64 0 0) (buffers 1072 0))
[fix-modus-faces.patch (text/x-patch, attachment)]
bug-gnu-emacs <at> gnu.org:bug#79712; Package emacs.
(Wed, 29 Oct 2025 03:32:02 GMT) Full text and rfc822 format available.Message #8 received at 79712 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Steven Allen <steven <at> stebalien.com> Cc: 79712 <at> debbugs.gnu.org, prot <at> protesilaos.com Subject: Re: bug#79712: 31.0.50; Face cycle with the link/button faces in the modus themes Date: Wed, 29 Oct 2025 05:30:28 +0200
> Cc: Protesilaos Stavrou <prot <at> protesilaos.com>, Eli Zaretskii <eliz <at> gnu.org> > From: Steven Allen <steven <at> stebalien.com> > Date: Tue, 28 Oct 2025 13:55:41 -0700 > > Since 23d86335792, modus themes fail to load correctly with the > following error: > > Face inheritance results in inheritance cycle: button > > To reproduce, start Emacs with: > > emacs -Q --eval "(load-theme 'modus-vivendi)" That's on purpose. The theme has a bug, which is now uncovered early, instead of letting it hang Emacs at display time, if these faces are used. > Swapping the order of the button/link faces in the theme definition (see > attached diff) fixes this. It appears that custom-theme-set-faces > processes this face list in reverse order, so the "link" face is made to > inherit from the "button" face FIRST before the "button" face is > re-defined to not inherit from the "link" face. The inheritance between these faces should be the same as in faces.el. I understand that the theme developer already fixed that, but the fix was not yet merged to the master branch.
bug-gnu-emacs <at> gnu.org:bug#79712; Package emacs.
(Wed, 29 Oct 2025 03:46:02 GMT) Full text and rfc822 format available.Message #11 received at 79712 <at> debbugs.gnu.org (full text, mbox):
From: Steven Allen <steven <at> stebalien.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 79712 <at> debbugs.gnu.org, prot <at> protesilaos.com Subject: Re: bug#79712: 31.0.50; Face cycle with the link/button faces in the modus themes Date: Tue, 28 Oct 2025 20:45:19 -0700
Eli Zaretskii <eliz <at> gnu.org> writes: >> Cc: Protesilaos Stavrou <prot <at> protesilaos.com>, Eli Zaretskii <eliz <at> gnu.org> >> From: Steven Allen <steven <at> stebalien.com> >> Date: Tue, 28 Oct 2025 13:55:41 -0700 >> >> Since 23d86335792, modus themes fail to load correctly with the >> following error: >> >> Face inheritance results in inheritance cycle: button >> >> To reproduce, start Emacs with: >> >> emacs -Q --eval "(load-theme 'modus-vivendi)" > > That's on purpose. The theme has a bug, which is now uncovered early, > instead of letting it hang Emacs at display time, if these faces are > used. Yep, better to catch these things early. >> Swapping the order of the button/link faces in the theme definition (see >> attached diff) fixes this. It appears that custom-theme-set-faces >> processes this face list in reverse order, so the "link" face is made to >> inherit from the "button" face FIRST before the "button" face is >> re-defined to not inherit from the "link" face. > > The inheritance between these faces should be the same as in faces.el. > I understand that the theme developer already fixed that, but the fix > was not yet merged to the master branch. Awesome, thanks! In that case, feel free to close this.
Eli Zaretskii <eliz <at> gnu.org>:Steven Allen <steven <at> stebalien.com>:Message #16 received at 79712-done <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Steven Allen <steven <at> stebalien.com> Cc: prot <at> protesilaos.com, 79712-done <at> debbugs.gnu.org Subject: Re: bug#79712: 31.0.50; Face cycle with the link/button faces in the modus themes Date: Thu, 30 Oct 2025 09:15:24 +0200
> From: Steven Allen <steven <at> stebalien.com> > Cc: 79712 <at> debbugs.gnu.org, prot <at> protesilaos.com > Date: Tue, 28 Oct 2025 20:45:19 -0700 > > Eli Zaretskii <eliz <at> gnu.org> writes: > > >> Cc: Protesilaos Stavrou <prot <at> protesilaos.com>, Eli Zaretskii <eliz <at> gnu.org> > >> From: Steven Allen <steven <at> stebalien.com> > >> Date: Tue, 28 Oct 2025 13:55:41 -0700 > >> > >> Since 23d86335792, modus themes fail to load correctly with the > >> following error: > >> > >> Face inheritance results in inheritance cycle: button > >> > >> To reproduce, start Emacs with: > >> > >> emacs -Q --eval "(load-theme 'modus-vivendi)" > > > > That's on purpose. The theme has a bug, which is now uncovered early, > > instead of letting it hang Emacs at display time, if these faces are > > used. > > Yep, better to catch these things early. > > >> Swapping the order of the button/link faces in the theme definition (see > >> attached diff) fixes this. It appears that custom-theme-set-faces > >> processes this face list in reverse order, so the "link" face is made to > >> inherit from the "button" face FIRST before the "button" face is > >> re-defined to not inherit from the "link" face. > > > > The inheritance between these faces should be the same as in faces.el. > > I understand that the theme developer already fixed that, but the fix > > was not yet merged to the master branch. > > Awesome, thanks! In that case, feel free to close this. I'm closing this, since the theme was modified on master to not trigger this anymore.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.