]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-hello.el
emacs: hello: make --batch error gracefully
[notmuch] / emacs / notmuch-hello.el
index c1c6f4b42186698f75fee9549ca1ab62daf58bd3..9db8c9931a8fee0a25e105d00d5345def45ec47f 100644 (file)
@@ -286,6 +286,15 @@ afterwards.")
     (message "Saved '%s' as '%s'." search name)
     (notmuch-hello-update)))
 
+(defun notmuch-hello-delete-search-from-history (widget)
+  (interactive)
+  (let ((search (widget-value
+                (symbol-value
+                 (widget-get widget :notmuch-saved-search-widget)))))
+    (setq notmuch-search-history (delete search
+                                        notmuch-search-history))
+    (notmuch-hello-update)))
+
 (defun notmuch-hello-longest-label (searches-alist)
   (or (loop for elem in searches-alist
            maximize (length (car elem)))
@@ -393,8 +402,13 @@ options will be handled as specified for
                                           (plist-get options :filter)))
         "\n")))
 
-    (call-process-region (point-min) (point-max) notmuch-command
-                        t t nil "count" "--batch")
+    (unless (= (call-process-region (point-min) (point-max) notmuch-command
+                                   t t nil "count" "--batch") 0)
+      (notmuch-logged-error "notmuch count --batch failed"
+                           "Please check that the notmuch CLI is new enough to support `count
+--batch'. In general we recommend running matching versions of
+the CLI and emacs interface."))
+
     (goto-char (point-min))
 
     (notmuch-remove-if-not
@@ -599,8 +613,9 @@ Complete list of currently available key bindings:
     (widget-insert "Recent searches: ")
     (widget-create 'push-button
                   :notify (lambda (&rest ignore)
-                            (setq notmuch-search-history nil)
-                            (notmuch-hello-update))
+                            (when (y-or-n-p "Are you sure you want to clear the searches? ")
+                              (setq notmuch-search-history nil)
+                              (notmuch-hello-update)))
                   "clear")
     (widget-insert "\n\n")
     (let ((start (point)))
@@ -623,7 +638,12 @@ Complete list of currently available key bindings:
                                                ;; `[save]' button. 6
                                                ;; for the `[save]'
                                                ;; button.
-                                               1 6))
+                                               1 6
+                                               ;; 1 for the space
+                                               ;; before the `[del]'
+                                               ;; button. 5 for the
+                                               ;; `[del]' button.
+                                               1 5))
                                  :action (lambda (widget &rest ignore)
                                            (notmuch-hello-search (widget-value widget)))
                                  search))
@@ -632,7 +652,14 @@ Complete list of currently available key bindings:
                             :notify (lambda (widget &rest ignore)
                                       (notmuch-hello-add-saved-search widget))
                             :notmuch-saved-search-widget widget-symbol
-                            "save"))
+                            "save")
+             (widget-insert " ")
+             (widget-create 'push-button
+                            :notify (lambda (widget &rest ignore)
+                                      (when (y-or-n-p "Are you sure you want to delete this search? ")
+                                        (notmuch-hello-delete-search-from-history widget)))
+                            :notmuch-saved-search-widget widget-symbol
+                            "del"))
            (widget-insert "\n"))
       (indent-rigidly start (point) notmuch-hello-indent))
     nil))