[PATCH 1/3] emacs: Adapt the logo background colour to that of the frame

David Edmondson dme at dme.org
Mon Apr 26 02:25:28 PDT 2010


The notmuch logo uses transparency. That can display poorly when
inserting the image into an emacs buffer (black logo on a black
background), so force the background colour of the image. We use a
face (`notmuch-hello-logo-background') to represent the colour so that
`defface' can be used to declare the different possible colours, which
depend on whether the frame has a light or dark background.
---
 emacs/notmuch-hello.el |   25 +++++++++++++++++--------
 1 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 482ef68..3a74ebd 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -55,9 +55,14 @@
   :type 'boolean
   :group 'notmuch)
 
-(defcustom notmuch-hello-logo-background "#5f5f5f"
+(defface notmuch-hello-logo-background
+  '((((class color)
+      (background dark))
+     (:background "#5f5f5f"))
+    (((class color)
+      (background light))
+     (:background "white")))
   "Background colour for the notmuch logo."
-  :type 'color
   :group 'notmuch)
 
 (defcustom notmuch-hello-jump-to-search t
@@ -209,12 +214,16 @@ diagonal."
 
   (when notmuch-hello-show-logo
     (let ((image notmuch-hello-logo))
-      ;; dme: Sorry, I don't know any other way to achieve this :-( The
-      ;; notmuch logo uses transparency. That works out badly when
-      ;; inserting the image into an emacs buffer, so force the
-      ;; background colour of the image.
-      (setq image (cons 'image (append (cdr image)
-				       `(:background ,notmuch-hello-logo-background))))
+      ;; The notmuch logo uses transparency. That can display poorly
+      ;; when inserting the image into an emacs buffer (black logo on
+      ;; a black background), so force the background colour of the
+      ;; image. We use a face to represent the colour so that
+      ;; `defface' can be used to declare the different possible
+      ;; colours, which depend on whether the frame has a light or
+      ;; dark background.
+      (setq image (cons 'image
+			(append (cdr image)
+				(list :background (face-background 'notmuch-hello-logo-background)))))
       (insert-image image))
     (widget-insert "  "))
 
-- 
1.7.0



More information about the notmuch mailing list