Subject: bug#48351: 28.0.50; custom-theme-summary doesn't find theme summary line reliably

From: Mauro Aranda <[email-masked]>
Date: Tue, 11 May 2021 11:26:54 -0300

tags 48351 patch
quit

Mauro Aranda <[email-masked]> writes:

> IMO, the restriction imposed by `custom-theme-summary' is too strict:
> the function currently requires that the deftheme form is the very first
> one in the file.

Here's a patch.  Any comments?

>From dd65d7bf57e1cffc64af0f86282b0634b9216b20 Mon Sep 17 00:00:00 2001
From: Mauro Aranda <[email-masked]>
Date: Tue, 11 May 2021 09:14:57 -0300
Subject: [PATCH] Lift restriction for finding theme summary line

* lisp/cus-theme.el (custom-theme-summary): Don't limit the file to
having the deftheme form as the very first form, rather look for the
deftheme form explicitly.
---
 lisp/cus-theme.el | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 13fb9f34fa..dfa2226403 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -657,10 +657,12 @@ custom-theme-summary
 	    (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))))))))
+                              (progn
+                                (re-search-forward "^(deftheme")
+                                (beginning-of-line)
+                                (read (current-buffer)))
+                            (error nil)))))
+              (setq doc (nth 2 sexp)))))))
     (cond ((null doc)
 	   "(no documentation available)")
 	  ((string-match ".*" doc)
-- 
2.31.1