]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-hello.el
Integrate notmuch-fcc mechansim
[notmuch] / emacs / notmuch-hello.el
index 13de6f8150e9c93d21ca1addf50e9cde7deddf69..bd882b830fd6ae7a320a0295e52bd15c9f92b9ea 100644 (file)
@@ -24,9 +24,9 @@
 (require 'cl)
 
 (require 'notmuch-lib)
-(require 'notmuch)
+(require 'notmuch-mua)
 
-(declare-function notmuch-search "notmuch" (query &optional oldest-first target-thread target-line))
+(declare-function notmuch-search "notmuch" (query &optional oldest-first target-thread target-line continuation))
 (declare-function notmuch-folder-count "notmuch" (search))
 
 (defcustom notmuch-hello-recent-searches-max 10
   :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 nil
+(defcustom notmuch-hello-jump-to-search t
   "Whether `notmuch-hello' should always jump to the search
 field."
   :type 'boolean
@@ -71,7 +76,7 @@ field."
 (defvar notmuch-hello-recent-searches nil)
 
 (defun notmuch-hello-remember-search (search)
-  (if (not (memq search notmuch-hello-recent-searches))
+  (if (not (member search notmuch-hello-recent-searches))
       (push search notmuch-hello-recent-searches))
   (if (> (length notmuch-hello-recent-searches)
         notmuch-hello-recent-searches-max)
@@ -208,12 +213,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 "  "))
 
@@ -256,20 +265,26 @@ diagonal."
                   "clear")
     (widget-insert "\n\n")
     (let ((start (point))
-         (key 0))
+         (nth 0))
       (mapc '(lambda (search)
-              (widget-insert (format "%2d: " key))
-              (let ((widget-symbol (intern (format "notmuch-hello-search-%d" key))))
+              (let ((widget-symbol (intern (format "notmuch-hello-search-%d" nth))))
                 (set widget-symbol
                      (widget-create 'editable-field
-                                    ;; Leave some space at the start
-                                    ;; and end of the search boxes. 4
-                                    ;; for the accelerator key. 1 for
-                                    ;; the space before the `save'
-                                    ;; button. 6 for the `save'
-                                    ;; button.
-                                    :size (max 8 (- (window-width) (* 2 notmuch-hello-indent)
-                                                    4 1 6))
+                                    ;; Don't let the search boxes be
+                                    ;; less than 8 characters wide.
+                                    :size (max 8
+                                               (- (window-width)
+                                                  ;; Leave some space
+                                                  ;; at the start and
+                                                  ;; end of the
+                                                  ;; boxes.
+                                                  (* 2 notmuch-hello-indent)
+                                                  ;; 1 for the space
+                                                  ;; before the
+                                                  ;; `[save]' button. 6
+                                                  ;; for the `[save]'
+                                                  ;; button.
+                                                  1 6))
                                     :action (lambda (widget &rest ignore)
                                               (notmuch-hello-search (widget-value widget)))
                                     search))
@@ -280,7 +295,7 @@ diagonal."
                                :notmuch-saved-search-widget widget-symbol
                                "save"))
               (widget-insert "\n")
-              (setq key (1+ key)))
+              (setq nth (1+ nth)))
            notmuch-hello-recent-searches)
       (indent-rigidly start (point) notmuch-hello-indent)))
 
@@ -319,12 +334,6 @@ diagonal."
     (widget-insert "Type a search query and hit RET to view matching threads.\n")
     (when notmuch-hello-recent-searches
       (widget-insert "Hit RET to re-submit a previous search. Edit it first if you like.\n")
-      (let ((searches (length notmuch-hello-recent-searches)))
-       (widget-insert
-        (if (eq 1 searches)
-            "Key 0 acts as an accelerator for the previous query.\n"
-          (format "Keys 0-%d act as accelerators for the previous queries.\n"
-                  (- searches 1)))))
       (widget-insert "Save recent searches with the `save' button.\n"))
     (when notmuch-hello-saved-searches
       (widget-insert "Edit saved searches with the `edit' button.\n"))
@@ -335,19 +344,12 @@ diagonal."
 
   (use-local-map widget-keymap)
   (local-set-key "=" 'notmuch-hello-update)
+  (local-set-key "m" 'notmuch-mua-mail)
   (local-set-key "q" '(lambda () (interactive) (kill-buffer (current-buffer))))
   (local-set-key "s" 'notmuch-hello-goto-search)
   (local-set-key "v" '(lambda () (interactive)
                        (message "notmuch version %s" (notmuch-version))))
 
-  (loop for key from 0 to (- (length notmuch-hello-recent-searches) 1)
-       do (let ((widget-symbol (intern (format "notmuch-hello-search-%d" key))))
-            (local-set-key (number-to-string key)
-                           `(lambda ()
-                              (interactive)
-                              (notmuch-search (widget-value ,widget-symbol)
-                                              notmuch-search-oldest-first
-                                              nil nil #'notmuch-hello-search-continuation)))))
   (widget-setup)
 
   (if notmuch-hello-jump-to-search