Subject: Re: bug#68985: [PATCH v2] Add option gnus-mode-line-logo

From: Mekeor Melire <[email-masked]>
Date: Fri, 09 Feb 2024 21:53:48 +0000

2024-02-09 21:56 [email-masked]:

> Mekeor would you like to give a try at this?

Thank y'all for the constructive conversation and the nice resulting
idea. Find attached a patch that aims to implement it. Personally, I'm
not sure about the "sexp" custom-type that I used. Also, I wonder if
"gnus-visual" is the right custom-group to be used.

>From 1b30caf62da45a71a5c546665553710d5da4ce3c Mon Sep 17 00:00:00 2001
From: Mekeor Melire <[email-masked]>
Date: Wed, 7 Feb 2024 23:00:08 +0100
Subject: [PATCH] Add option gnus-mode-line-logo

* lisp/gnus/gnus.el (gnus-mode-line-logo): New option specifying whether
and which logo will be displayed in the mode-line.
* etc/NEWS: Announce the change.
---
 etc/NEWS          |  5 +++++
 lisp/gnus/gnus.el | 29 ++++++++++++++++++++---------
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index ee7462cb2aa..36844bfa1a2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1098,6 +1098,11 @@ The gmane.org website is, sadly, down since a number of years with no
 prospect of it coming back.  Therefore, it is no longer valid to set
 the user option 'nnweb-type' to 'gmane'.
 
+*** New user option 'gnus-mode-line-logo'.
+This allows the user to either disable the display of any logo or
+specify which logo will be displayed as part of the
+buffer-identification in the mode-line of Gnus-buffers.
+
 ** Rmail
 
 ---
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 99833e4eeca..03e21b21b39 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -309,12 +309,30 @@ gnus-inhibit-startup-message
   :group 'gnus-start
   :type 'boolean)
 
+(defcustom gnus-mode-line-logo
+  '((:type svg :file "gnus-pointer.svg" :ascent center)
+     (:type xpm :file "gnus-pointer.xpm" :ascent center)
+     (:type xbm :file "gnus-pointer.xbm" :ascent center))
+  "Gnus logo displayed in mode-line.
+
+If non-nil, it should be a list of image specifications that will be
+given as first argument to `find-image', which see.  Then, in case of a
+graphical display, the specified Gnus logo will be displayed as part of
+the buffer-identification in the mode-line of Gnus-buffers.
+
+If nil, no logo will be displayed."
+  :group 'gnus-visual
+  :type '(choice
+           (sexp :tag "List of image specifications")
+           (const :tag "No logo" nil)))
+
 (defun gnus-mode-line-buffer-identification (line)
   (let* ((str (car-safe line))
          (str (if (stringp str)
                   (car (propertized-buffer-identification str))
                 str)))
-    (if (or (not (fboundp 'find-image))
+    (if (or (not gnus-mode-line-logo)
+            (not (fboundp 'find-image))
 	    (not (display-graphic-p))
 	    (not (stringp str))
 	    (not (string-match "^Gnus:" str)))
@@ -325,14 +343,7 @@ gnus-mode-line-buffer-identification
 	(add-text-properties
 	 0 5
 	 (list 'display
-	       (find-image
-		'((:type svg :file "gnus-pointer.svg"
-                         :ascent center)
-                  (:type xpm :file "gnus-pointer.xpm"
-			 :ascent center)
-		  (:type xbm :file "gnus-pointer.xbm"
-			 :ascent center))
-		t)
+	       (find-image gnus-mode-line-logo t)
 	       'help-echo (if gnus-emacs-version
                               (format
 			       "This is %s, %s."
-- 
2.41.0