Subject: bug#65468: closed (Re: bug#65468: 29.1; describe-theme fails to describe some themes not loaded)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 09 Sep 2023 11:52:02 +0000

Your bug report

#65468: 29.1; describe-theme fails to describe some themes not loaded

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
65468: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65468
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#65468: 29.1; describe-theme fails to describe some themes not loaded
From: Stefan Kangas <[email-masked]>
To: Mauro Aranda <[email-masked]>, Eli Zaretskii <[email-masked]>, Thierry Volpiatto <[email-masked]>
Cc: [email-masked]
Date: Sat, 9 Sep 2023 04:51:19 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Mauro Aranda <[email-masked]> writes:

> It seems to me that there's nothing left to do here.  The patch by
> Thierry got installed, I fixed the leuven themes and Prot reported that
> he fixed the modus-themes on his end.

OK, let's close it.

Subject: 29.1; describe-theme fails to describe some themes not loaded
From: Thierry Volpiatto <[email-masked]>
To: [email-masked]
Date: Wed, 23 Aug 2023 08:44:16 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

This because `describe-theme-1` is not looping in buffer to find
`deftheme` definition.

Try (describe-theme 'leuven) to reproduce (if not already loaded of course).

This patch fixes it:

diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 5d3f2585976..3640d1ec329 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -513,13 +513,15 @@ It includes all faces in list FACES."
       ;; Attempt to grab the theme documentation
       (when fn
 	(with-temp-buffer
-	  (insert-file-contents fn)
-	  (let ((sexp (let ((read-circle nil))
-			(condition-case nil
-			    (read (current-buffer))
-			  (end-of-file nil)))))
-            (and (eq (car-safe sexp) 'deftheme)
-		 (setq doc (nth 2 sexp)))))))
+          (insert-file-contents fn)
+          (catch 'found
+            (let (sexp)
+              (while (setq sexp (let ((read-circle nil))
+	                          (condition-case nil
+		                      (read (current-buffer))
+		                    (end-of-file nil))))
+                (when (eq (car-safe sexp) 'deftheme)
+	          (throw 'found (setq doc (nth 2 sexp))))))))))
     (princ "\n\nDocumentation:\n")
     (princ (if (stringp doc)
 	       (substitute-command-keys doc)

However for the modus themes it will fail as well because deftheme is
nested inside a eval-when-compile.

And while I am at it, the docstring of Leuven-dark is wrong (guess it has
been copy/pasted from Leuven without modifications).

In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2023-08-16 built on IPad-S340
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Linux Mint 21.2

Configured using:
 'configure CFLAGS=-O8 --bindir=/usr/local/sbin/emacs-29.1
 --with-mailutils --with-cairo --with-x-toolkit=lucid
 --without-tree-sitter --without-native-compilation'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB

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

Major mode: 

Minor modes in effect:
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  bug-reference-prog-mode: t
  server-mode: t
  psession-mode: t
  psession-savehist-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  global-git-gutter-mode: t
  git-gutter-mode: t
  display-time-mode: t
  winner-mode: t
  tv-save-place-mode: t
  helm-epa-mode: t
  helm-descbinds-mode: t
  helm-top-poll-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  shell-dirtrack-mode: t
  helm-popup-tip-mode: t
  async-bytecomp-package-mode: t
  dired-async-mode: t
  minibuffer-depth-indicate-mode: t
  gcmh-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-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/thierry/.emacs.d/elpa/boxquote-20220919.714/boxquote hides ~/elisp/boxquote

Features:
(shadow epa-mail face-remap emacsbug addressbook-bookmark tv-mu4e-config
config-w3m mu4e-contrib eshell esh-cmd generator esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-groups esh-util mu4e-patch mu4e
mu4e-org org-config ob-gnuplot org-crypt org-protocol org ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-macro org-src 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-version org-compat org-macs mu4e-notification
notifications mu4e-main mu4e-view mu4e-mime-parts gnus-art mm-uu mml2015
mm-view mml-smime smime gnutls dig gnus-sum gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range gnus-win gnus nnheader range appt
diary-lib diary-loaddefs cal-menu calendar cal-loaddefs mu4e-headers
mu4e-thread mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search
mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr pixel-fill kinsoku
url-file svg dom flow-fill hl-line mu4e-contacts mu4e-update
mu4e-folders mu4e-context mu4e-query-items mu4e-server mu4e-modeline
mu4e-vars mu4e-helpers mu4e-config mu4e-window ido message sendmail
yank-media puny rfc822 mml mml-sec gnus-util mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader mu4e-obsolete
smerge-mode whitespace cl-indent helm-ring helm-x-files helm-for-files
helm-bookmark bookmark emms-config emms-librefm-stream
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history
emms-score 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-last-played emms-player-xine
emms-player-mpd tq emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
emms-info-native bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat emms-auto helm-external helm-net
modus-vivendi-theme modus-operandi-theme modus-themes cus-theme cl-extra
tramp-archive tramp-gvfs tramp-cache time-stamp zeroconf dbus xml
helm-command helm-elisp helm-eval edebug debug backtrace find-func
helm-info helm-ls-git vc-git diff-mode vc vc-dispatcher emacs-news-mode
noutline outline make-mode flymake-shellcheck cus-start flymake-proc
flymake project warnings thingatpt sh-script smie treesit executable
jka-compr bug-reference ef-winter-theme ef-tritanopia-dark-theme
ef-trio-dark-theme ef-symbiosis-theme ef-night-theme ef-maris-dark-theme
ef-elea-dark-theme ef-duo-dark-theme ef-deuteranopia-dark-theme
ef-dark-theme ef-cherie-theme ef-bio-theme ef-autumn-theme
ef-tritanopia-light-theme ef-trio-light-theme ef-summer-theme
ef-spring-theme ef-maris-light-theme ef-light-theme ef-kassio-theme
ef-frost-theme ef-elea-light-theme ef-duo-light-theme
ef-deuteranopia-light-theme ef-day-theme ef-cyprus-theme ef-themes
server imenu psession frameset undo-tree diff queue pcase git-gutter
mule-util dired-extension time winner describe-variable help-fns
radix-tree help-mode tv-utils tv-save-place.el advice init-helm epa
derived epg rfc6068 epg-config helm-epa isl helm-descbinds all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons cus-edit pp icons wid-edit
helm-sys popup helm-adaptive helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util xdg image-mode
exif filenotify tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat rx shell pcomplete parse-time iso8601 time-date
helm-buffers helm-occur helm-tags helm-locate helm-grep wgrep-helm wgrep
grep compile text-property-search comint ansi-osc ring helm-regexp
format-spec ansi-color helm-utils helm-help helm-types
helm-extensions-autoloads helm-autoloads helm helm-global-bindings
helm-easymenu edmacro kmacro helm-core easy-mmode async-bytecomp
helm-source helm-multi-match helm-lib dired-async async dired-aux dired
dired-loaddefs mb-depth avoid cus-load gcmh boxquote-autoloads
ef-themes-autoloads gcmh-autoloads ledger-mode-autoloads
markdown-mode-autoloads osm-autoloads compat-autoloads info w3m-load
w3m-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp
byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 1071049 1037182)
 (symbols 48 37733 180)
 (strings 32 199434 99964)
 (string-bytes 1 6124602)
 (vectors 16 77921)
 (vector-slots 8 1698366 1015829)
 (floats 8 1766 4594)
 (intervals 56 5971 3113)
 (buffers 976 117))
<#secure method=pgpmime mode=sign>

-- 
Thierry