unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH 1/4] emacs: unify search mechanisms
@ 2011-12-25  4:14 Dmitry Kurochkin
  2011-12-25  4:14 ` [PATCH 2/4] emacs: reindent `notmuch-hello' function Dmitry Kurochkin
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: Dmitry Kurochkin @ 2011-12-25  4:14 UTC (permalink / raw)
  To: notmuch

Before the change, there were two ways to do search in Emacs UI:
search widget in notmuch-hello buffer and `notmuch-search'
function bound to "s".  Internally, notmuch-hello search widget
uses `notmuch-search' function.  But it uses widget field input
instead of minibuffer.  Such duplication is a major issue for
notmuch-hello usability: search interface is inconsistent and
lacks features that are available in minibuffer (e.g. history and
auto completion).  Some of these features may be relatively easy
to implement for notmuch-hello search, others would be much more
tricky.  So to avoid duplication, make UI more consistent, bring
notmuch-hello search to feature parity with the minibuffer
search, the patch replaces notmuch-hello search widget and with a
button that works the same way as "s" key binding.
---
 emacs/notmuch-hello.el |   84 +++++++++++++++---------------------------------
 emacs/notmuch-lib.el   |    9 +++++
 emacs/notmuch.el       |   20 ++++++-----
 3 files changed, 46 insertions(+), 67 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 333d4c1..eb08a09 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -29,11 +29,8 @@
 (declare-function notmuch-search "notmuch" (query &optional oldest-first target-thread target-line continuation))
 (declare-function notmuch-poll "notmuch" ())
 
-(defvar notmuch-hello-search-bar-marker nil
-  "The position of the search bar within the notmuch-hello buffer.")
-
-(defcustom notmuch-recent-searches-max 10
-  "The number of recent searches to store and display."
+(defcustom notmuch-hello-recent-searches-max 10
+  "The number of recent searches to display."
   :type 'integer
   :group 'notmuch)
 
@@ -154,16 +151,6 @@ International Bureau of Weights and Measures."
 (defvar notmuch-hello-url "http://notmuchmail.org"
   "The `notmuch' web site.")
 
-(defvar notmuch-hello-recent-searches nil)
-
-(defun notmuch-hello-remember-search (search)
-  (setq notmuch-hello-recent-searches
-	(delete search notmuch-hello-recent-searches))
-  (push search notmuch-hello-recent-searches)
-  (if (> (length notmuch-hello-recent-searches)
-	 notmuch-recent-searches-max)
-      (setq notmuch-hello-recent-searches (butlast notmuch-hello-recent-searches))))
-
 (defun notmuch-hello-nice-number (n)
   (let (result)
     (while (> n 0)
@@ -176,16 +163,10 @@ International Bureau of Weights and Measures."
 	      (format "%s%03d" notmuch-hello-thousands-separator elem))
 	     (cdr result)))))
 
-(defun notmuch-hello-trim (search)
-  "Trim whitespace."
-  (if (string-match "^[[:space:]]*\\(.*[^[:space:]]\\)[[:space:]]*$" search)
-      (match-string 1 search)
-    search))
-
-(defun notmuch-hello-search (search)
-  (let ((search (notmuch-hello-trim search)))
-    (notmuch-hello-remember-search search)
-    (notmuch-search search notmuch-search-oldest-first nil nil #'notmuch-hello-search-continuation)))
+(defun notmuch-hello-search (&optional search)
+  (interactive)
+  (notmuch-search search notmuch-search-oldest-first nil nil
+		  #'notmuch-hello-search-continuation))
 
 (defun notmuch-hello-add-saved-search (widget)
   (interactive)
@@ -319,11 +300,6 @@ should be. Returns a cons cell `(tags-per-line width)'."
 	(widget-insert "\n"))
     found-target-pos))
 
-(defun notmuch-hello-goto-search ()
-  "Put point inside the `search' widget."
-  (interactive)
-  (goto-char notmuch-hello-search-bar-marker))
-
 (defimage notmuch-hello-logo ((:type png :file "notmuch-logo.png")))
 
 (defun notmuch-hello-search-continuation()
@@ -353,7 +329,7 @@ should be. Returns a cons cell `(tags-per-line width)'."
     (define-key map "G" 'notmuch-hello-poll-and-update)
     (define-key map (kbd "<C-tab>") 'widget-backward)
     (define-key map "m" 'notmuch-mua-new-mail)
-    (define-key map "s" 'notmuch-hello-goto-search)
+    (define-key map "s" 'notmuch-hello-search)
     map)
   "Keymap for \"notmuch hello\" buffers.")
 (fset 'notmuch-hello-mode-map notmuch-hello-mode-map)
@@ -466,7 +442,8 @@ Complete list of currently available key bindings:
       (widget-insert " messages.\n"))
 
     (let ((found-target-pos nil)
-	  (final-target-pos nil))
+	  (final-target-pos nil)
+	  (default-pos))
       (let* ((saved-alist
 	      ;; Filter out empty saved searches if required.
 	      (if notmuch-show-empty-saved-searches
@@ -497,33 +474,26 @@ Complete list of currently available key bindings:
 		(setq final-target-pos found-target-pos))
 	    (indent-rigidly start (point) notmuch-hello-indent)))
 
-	(widget-insert "\nSearch: ")
-	(setq notmuch-hello-search-bar-marker (point-marker))
-	(widget-create 'editable-field
-		       ;; Leave some space at the start and end of the
-		       ;; search boxes.
-		       :size (max 8 (- (window-width) notmuch-hello-indent
-				       (length "Search: ")))
-		       :action (lambda (widget &rest ignore)
-				 (notmuch-hello-search (widget-value widget))))
-	;; add an invisible space to make `widget-end-of-line' ignore
-	;; trailine spaces in the search widget field
-	(widget-insert " ")
-	(put-text-property (1- (point)) (point) 'invisible t)
+	(widget-insert "\n")
+	(setq default-pos (point-marker))
+	(widget-create 'push-button
+		       :notify (lambda (&rest ignore)
+				 (notmuch-hello-search))
+		       " Search! ")
 	(widget-insert "\n")
 
-	(when notmuch-hello-recent-searches
+	(when notmuch-search-history
 	  (widget-insert "\nRecent searches: ")
 	  (widget-create 'push-button
 			 :notify (lambda (&rest ignore)
-				   (setq notmuch-hello-recent-searches nil)
+				   (setq notmuch-search-history nil)
 				   (notmuch-hello-update))
 			 "clear")
 	  (widget-insert "\n\n")
-	  (let ((start (point))
-		(nth 0))
-	    (mapc (lambda (search)
-		    (let ((widget-symbol (intern (format "notmuch-hello-search-%d" nth))))
+	  (let ((start (point)))
+	    (loop for i from 1 to notmuch-hello-recent-searches-max
+		  for search in notmuch-search-history do
+		    (let ((widget-symbol (intern (format "notmuch-hello-search-%d" i))))
 		      (set widget-symbol
 			   (widget-create 'editable-field
 					  ;; Don't let the search boxes be
@@ -550,9 +520,7 @@ Complete list of currently available key bindings:
 					       (notmuch-hello-add-saved-search widget))
 				     :notmuch-saved-search-widget widget-symbol
 				     "save"))
-		    (widget-insert "\n")
-		    (setq nth (1+ nth)))
-		  notmuch-hello-recent-searches)
+		    (widget-insert "\n"))
 	    (indent-rigidly start (point) notmuch-hello-indent)))
 
 	(when alltags-alist
@@ -580,14 +548,14 @@ Complete list of currently available key bindings:
 
       (let ((start (point)))
 	(widget-insert "\n\n")
-	(widget-insert "Type a search query and hit RET to view matching threads.\n")
-	(when notmuch-hello-recent-searches
+	(widget-insert "Use the `search' button or hit `s' to enter search query.\n")
+	(when notmuch-search-history
 	  (widget-insert "Hit RET to re-submit a previous search. Edit it first if you like.\n")
 	  (widget-insert "Save recent searches with the `save' button.\n"))
 	(when notmuch-saved-searches
 	  (widget-insert "Edit saved searches with the `edit' button.\n"))
 	(widget-insert "Hit RET or click on a saved search or tag name to view matching threads.\n")
-	(widget-insert "`=' refreshes this screen. `s' jumps to the search box. `q' to quit.\n")
+	(widget-insert "`=' refreshes this screen. `s' to search messages. `q' to quit.\n")
 	(let ((fill-column (- (window-width) notmuch-hello-indent)))
 	  (center-region start (point))))
 
@@ -599,7 +567,7 @@ Complete list of currently available key bindings:
 	  (widget-forward 1)))
 
       (unless (widget-at)
-	(notmuch-hello-goto-search))))
+	(goto-char default-pos))))
 
   (run-hooks 'notmuch-hello-refresh-hook))
 
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 0f856bf..a2cb6f2 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -35,6 +35,9 @@
 
 ;;
 
+(defvar notmuch-search-history nil
+  "Variable to store minibuffer history for notmuch searches.")
+
 (defcustom notmuch-saved-searches nil
   "A list of saved searches to display."
   :type '(alist :key-type string :value-type string)
@@ -114,6 +117,12 @@ the user hasn't set this variable with the old or new value."
       (setq list (cdr list)))
     (nreverse out)))
 
+(defun notmuch-trim (search)
+  "Trim whitespaces."
+  (if (string-match "^[[:space:]]*\\(.*[^[:space:]]\\)[[:space:]]*$" search)
+      (match-string 1 search)
+    search))
+
 ; This lets us avoid compiling these replacement functions when emacs
 ; is sufficiently new enough to supply them alone. We do the macro
 ; treatment rather than just wrapping our defun calls in a when form
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index fde2377..938a149 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -72,9 +72,6 @@ For example:
   :type '(alist :key-type (string) :value-type (string))
   :group 'notmuch)
 
-(defvar notmuch-query-history nil
-  "Variable to store minibuffer history for notmuch queries")
-
 (defun notmuch-select-tag-with-completion (prompt &rest search-terms)
   (let ((tag-list
 	 (with-output-to-string
@@ -902,21 +899,26 @@ PROMPT is the string to prompt with."
 	       (t (list string)))))))
       ;; this was simpler than convincing completing-read to accept spaces:
       (define-key keymap (kbd "<tab>") 'minibuffer-complete)
-      (read-from-minibuffer prompt nil keymap nil
-			    'notmuch-query-history nil nil))))
+      (let ((history-delete-duplicates t))
+	(read-from-minibuffer prompt nil keymap nil
+			      'notmuch-search-history nil nil)))))
 
 ;;;###autoload
-(defun notmuch-search (query &optional oldest-first target-thread target-line continuation)
-  "Run \"notmuch search\" with the given query string and display results.
+(defun notmuch-search (&optional query oldest-first target-thread target-line continuation)
+  "Run \"notmuch search\" with the given `query' and display results.
 
-The optional parameters are used as follows:
+If `query' is nil, it is read interactively from the minibuffer.
+Other optional parameters are used as follows:
 
   oldest-first: A Boolean controlling the sort order of returned threads
   target-thread: A thread ID (with the thread: prefix) that will be made
                  current if it appears in the search results.
   target-line: The line number to move to if the target thread does not
                appear in the search results."
-  (interactive (list (notmuch-read-query "Notmuch search: ")))
+  (interactive)
+  (if (null query)
+      (setq query (notmuch-read-query "Notmuch search: ")))
+  (setq query (notmuch-trim query))
   (let ((buffer (get-buffer-create (notmuch-search-buffer-title query))))
     (switch-to-buffer buffer)
     (notmuch-search-mode)
-- 
1.7.7.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 2/4] emacs: reindent `notmuch-hello' function
  2011-12-25  4:14 [PATCH 1/4] emacs: unify search mechanisms Dmitry Kurochkin
@ 2011-12-25  4:14 ` Dmitry Kurochkin
  2011-12-25  4:14 ` [PATCH 3/4] emacs: hide recent searches if `notmuch-hello-recent-searches-max' is zero Dmitry Kurochkin
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Dmitry Kurochkin @ 2011-12-25  4:14 UTC (permalink / raw)
  To: notmuch

Reindent `notmuch-hello' function after the search history changes.
---
 emacs/notmuch-hello.el |   56 ++++++++++++++++++++++++------------------------
 1 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index eb08a09..fa33500 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -493,34 +493,34 @@ Complete list of currently available key bindings:
 	  (let ((start (point)))
 	    (loop for i from 1 to notmuch-hello-recent-searches-max
 		  for search in notmuch-search-history do
-		    (let ((widget-symbol (intern (format "notmuch-hello-search-%d" i))))
-		      (set widget-symbol
-			   (widget-create 'editable-field
-					  ;; 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))
-		      (widget-insert " ")
-		      (widget-create 'push-button
-				     :notify (lambda (widget &rest ignore)
-					       (notmuch-hello-add-saved-search widget))
-				     :notmuch-saved-search-widget widget-symbol
-				     "save"))
-		    (widget-insert "\n"))
+		  (let ((widget-symbol (intern (format "notmuch-hello-search-%d" i))))
+		    (set widget-symbol
+			 (widget-create 'editable-field
+					;; 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))
+		    (widget-insert " ")
+		    (widget-create 'push-button
+				   :notify (lambda (widget &rest ignore)
+					     (notmuch-hello-add-saved-search widget))
+				   :notmuch-saved-search-widget widget-symbol
+				   "save"))
+		  (widget-insert "\n"))
 	    (indent-rigidly start (point) notmuch-hello-indent)))
 
 	(when alltags-alist
-- 
1.7.7.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 3/4] emacs: hide recent searches if `notmuch-hello-recent-searches-max' is zero
  2011-12-25  4:14 [PATCH 1/4] emacs: unify search mechanisms Dmitry Kurochkin
  2011-12-25  4:14 ` [PATCH 2/4] emacs: reindent `notmuch-hello' function Dmitry Kurochkin
@ 2011-12-25  4:14 ` Dmitry Kurochkin
  2011-12-25  4:14 ` [PATCH 4/4] test: fix Emacs tests expected output after notmuch-hello search changes Dmitry Kurochkin
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Dmitry Kurochkin @ 2011-12-25  4:14 UTC (permalink / raw)
  To: notmuch

---
 emacs/notmuch-hello.el |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index fa33500..6015af4 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -30,7 +30,10 @@
 (declare-function notmuch-poll "notmuch" ())
 
 (defcustom notmuch-hello-recent-searches-max 10
-  "The number of recent searches to display."
+  "The number of recent searches to display.
+
+Recent searches section is not shown if
+`notmuch-hello-recent-searches-max' is set to 0."
   :type 'integer
   :group 'notmuch)
 
@@ -151,6 +154,10 @@ International Bureau of Weights and Measures."
 (defvar notmuch-hello-url "http://notmuchmail.org"
   "The `notmuch' web site.")
 
+(defun notmuch-hello-show-recent-searches ()
+  (and (> notmuch-hello-recent-searches-max 0)
+       notmuch-search-history))
+
 (defun notmuch-hello-nice-number (n)
   (let (result)
     (while (> n 0)
@@ -482,7 +489,7 @@ Complete list of currently available key bindings:
 		       " Search! ")
 	(widget-insert "\n")
 
-	(when notmuch-search-history
+	(when (notmuch-hello-show-recent-searches)
 	  (widget-insert "\nRecent searches: ")
 	  (widget-create 'push-button
 			 :notify (lambda (&rest ignore)
@@ -549,7 +556,7 @@ Complete list of currently available key bindings:
       (let ((start (point)))
 	(widget-insert "\n\n")
 	(widget-insert "Use the `search' button or hit `s' to enter search query.\n")
-	(when notmuch-search-history
+	(when (notmuch-hello-show-recent-searches)
 	  (widget-insert "Hit RET to re-submit a previous search. Edit it first if you like.\n")
 	  (widget-insert "Save recent searches with the `save' button.\n"))
 	(when notmuch-saved-searches
-- 
1.7.7.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 4/4] test: fix Emacs tests expected output after notmuch-hello search changes
  2011-12-25  4:14 [PATCH 1/4] emacs: unify search mechanisms Dmitry Kurochkin
  2011-12-25  4:14 ` [PATCH 2/4] emacs: reindent `notmuch-hello' function Dmitry Kurochkin
  2011-12-25  4:14 ` [PATCH 3/4] emacs: hide recent searches if `notmuch-hello-recent-searches-max' is zero Dmitry Kurochkin
@ 2011-12-25  4:14 ` Dmitry Kurochkin
  2011-12-30 10:44 ` [PATCH 1/4] emacs: unify search mechanisms David Edmondson
  2012-01-16 11:35 ` David Edmondson
  4 siblings, 0 replies; 18+ messages in thread
From: Dmitry Kurochkin @ 2011-12-25  4:14 UTC (permalink / raw)
  To: notmuch

---
 test/emacs.expected-output/notmuch-hello           |    6 +++---
 .../notmuch-hello-no-saved-searches                |    6 +++---
 .../emacs.expected-output/notmuch-hello-with-empty |    6 +++---
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/test/emacs.expected-output/notmuch-hello b/test/emacs.expected-output/notmuch-hello
index 48143bd..4e47cde 100644
--- a/test/emacs.expected-output/notmuch-hello
+++ b/test/emacs.expected-output/notmuch-hello
@@ -4,11 +4,11 @@ Saved searches: [edit]
 
 	  50 inbox           50 unread    
 
-Search:                                                                      
+[ Search! ]
 
 [Show all tags]
 
-	 Type a search query and hit RET to view matching threads.
+	 Use the `search' button or hit `s' to enter search query.
 		Edit saved searches with the `edit' button.
   Hit RET or click on a saved search or tag name to view matching threads.
-    `=' refreshes this screen. `s' jumps to the search box. `q' to quit.
+      `=' refreshes this screen. `s' to search messages. `q' to quit.
diff --git a/test/emacs.expected-output/notmuch-hello-no-saved-searches b/test/emacs.expected-output/notmuch-hello-no-saved-searches
index 7c09e40..5f79b92 100644
--- a/test/emacs.expected-output/notmuch-hello-no-saved-searches
+++ b/test/emacs.expected-output/notmuch-hello-no-saved-searches
@@ -1,10 +1,10 @@
    Welcome to notmuch. You have 50 messages.
 
-Search:                                                                      
+[ Search! ]
 
 [Show all tags]
 
-	 Type a search query and hit RET to view matching threads.
+	 Use the `search' button or hit `s' to enter search query.
 		Edit saved searches with the `edit' button.
   Hit RET or click on a saved search or tag name to view matching threads.
-    `=' refreshes this screen. `s' jumps to the search box. `q' to quit.
+      `=' refreshes this screen. `s' to search messages. `q' to quit.
diff --git a/test/emacs.expected-output/notmuch-hello-with-empty b/test/emacs.expected-output/notmuch-hello-with-empty
index 2a267c9..28b8a1f 100644
--- a/test/emacs.expected-output/notmuch-hello-with-empty
+++ b/test/emacs.expected-output/notmuch-hello-with-empty
@@ -4,11 +4,11 @@ Saved searches: [edit]
 
 	  50 inbox           50 unread           0 empty     
 
-Search:                                                                      
+[ Search! ]
 
 [Show all tags]
 
-	 Type a search query and hit RET to view matching threads.
+	 Use the `search' button or hit `s' to enter search query.
 		Edit saved searches with the `edit' button.
   Hit RET or click on a saved search or tag name to view matching threads.
-    `=' refreshes this screen. `s' jumps to the search box. `q' to quit.
+      `=' refreshes this screen. `s' to search messages. `q' to quit.
-- 
1.7.7.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-25  4:14 [PATCH 1/4] emacs: unify search mechanisms Dmitry Kurochkin
                   ` (2 preceding siblings ...)
  2011-12-25  4:14 ` [PATCH 4/4] test: fix Emacs tests expected output after notmuch-hello search changes Dmitry Kurochkin
@ 2011-12-30 10:44 ` David Edmondson
  2011-12-30 14:43   ` David Bremner
  2012-01-16 11:35 ` David Edmondson
  4 siblings, 1 reply; 18+ messages in thread
From: David Edmondson @ 2011-12-30 10:44 UTC (permalink / raw)
  To: Dmitry Kurochkin, notmuch

[-- Attachment #1: Type: text/plain, Size: 752 bytes --]

On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> Before the change, there were two ways to do search in Emacs UI:
> search widget in notmuch-hello buffer and `notmuch-search' function
> bound to "s".  Internally, notmuch-hello search widget uses
> `notmuch-search' function.  But it uses widget field input instead of
> minibuffer.
> 
> Such duplication is a major issue for notmuch-hello usability: search
> interface is inconsistent and lacks features that are available in
> minibuffer (e.g. history and auto completion).

Were there actual complaints about the usability of the current
approach?

I much preferred your alternative approach (merging the history while
leaving the UI alone).

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-30 10:44 ` [PATCH 1/4] emacs: unify search mechanisms David Edmondson
@ 2011-12-30 14:43   ` David Bremner
  2011-12-30 15:01     ` David Edmondson
                       ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: David Bremner @ 2011-12-30 14:43 UTC (permalink / raw)
  To: David Edmondson, Dmitry Kurochkin, notmuch

On Fri, 30 Dec 2011 10:44:28 +0000, David Edmondson <dme@dme.org> wrote:
> On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> 
> Were there actual complaints about the usability of the current
> approach?
> 
> I much preferred your alternative approach (merging the history while
> leaving the UI alone).

Personally I would like to be able to customize the hello screen to
remove the search box. I find it confusing that that 's' jumps to the
search box there, and everywhere else brings up the mini-buffer. That
might be just me, and the fact that I bind "C-c s" globally to
notmuch-search.  I could easily believe that for new users having a
search box is nicer.

d

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-30 14:43   ` David Bremner
@ 2011-12-30 15:01     ` David Edmondson
  2011-12-30 17:09     ` Aaron Ecay
  2011-12-31 12:42     ` Jani Nikula
  2 siblings, 0 replies; 18+ messages in thread
From: David Edmondson @ 2011-12-30 15:01 UTC (permalink / raw)
  To: David Bremner, Dmitry Kurochkin, notmuch

[-- Attachment #1: Type: text/plain, Size: 1132 bytes --]

On Fri, 30 Dec 2011 10:43:37 -0400, David Bremner <david@tethera.net> wrote:
> On Fri, 30 Dec 2011 10:44:28 +0000, David Edmondson <dme@dme.org> wrote:
> > On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> 
> > Were there actual complaints about the usability of the current
> > approach?
> > 
> > I much preferred your alternative approach (merging the history while
> > leaving the UI alone).
> 
> Personally I would like to be able to customize the hello screen to
> remove the search box.

id:"1318253982-23588-2-git-send-email-daniel@schoepe.org" ?

> I find it confusing that that 's' jumps to the search box there, and
> everywhere else brings up the mini-buffer. That might be just me, and
> the fact that I bind "C-c s" globally to notmuch-search.  I could
> easily believe that for new users having a search box is nicer.

It was intended for people coming from more traditional clients, to help
get them into the swing of notmuch. Maybe also a bit of a joke in
comparison to the gmail interface. (Carl came up with the original idea
- I just knocked out some code.)

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-30 14:43   ` David Bremner
  2011-12-30 15:01     ` David Edmondson
@ 2011-12-30 17:09     ` Aaron Ecay
  2011-12-31 12:42     ` Jani Nikula
  2 siblings, 0 replies; 18+ messages in thread
From: Aaron Ecay @ 2011-12-30 17:09 UTC (permalink / raw)
  To: David Bremner, David Edmondson, Dmitry Kurochkin, notmuch

On Fri, 30 Dec 2011 10:43:37 -0400, David Bremner <david@tethera.net> wrote:
> Personally I would like to be able to customize the hello screen to
> remove the search box. I find it confusing that that 's' jumps to the
> search box there, and everywhere else brings up the mini-buffer.

+1.  I rarely use notmuch-hello, but when I do, I press `s' then look to
the bottom of the screen and am always confused not to see a minibuffer
prompt.

-- 
Aaron Ecay

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-30 14:43   ` David Bremner
  2011-12-30 15:01     ` David Edmondson
  2011-12-30 17:09     ` Aaron Ecay
@ 2011-12-31 12:42     ` Jani Nikula
  2011-12-31 13:06       ` David Bremner
                         ` (2 more replies)
  2 siblings, 3 replies; 18+ messages in thread
From: Jani Nikula @ 2011-12-31 12:42 UTC (permalink / raw)
  To: David Bremner, David Edmondson, Dmitry Kurochkin, notmuch

On Fri, 30 Dec 2011 10:43:37 -0400, David Bremner <david@tethera.net> wrote:
> On Fri, 30 Dec 2011 10:44:28 +0000, David Edmondson <dme@dme.org> wrote:
> > On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> 
> > Were there actual complaints about the usability of the current
> > approach?
> > 
> > I much preferred your alternative approach (merging the history while
> > leaving the UI alone).

FWIW, I liked this approach too. I do use the notmuch-hello view, and
also the search box.

> Personally I would like to be able to customize the hello screen to
> remove the search box. I find it confusing that that 's' jumps to the
> search box there, and everywhere else brings up the mini-buffer. That
> might be just me, and the fact that I bind "C-c s" globally to
> notmuch-search.  I could easily believe that for new users having a
> search box is nicer.

Would it be a suitable compromise to bind 's' to notmuch-search (the
mini-buffer search) also in notmuch-hello, while leaving the search box
there with a common history?

I'm not sure moving the point to search box needs a keybinding (but
notmuch-hello-goto-search could still be there if the user wants to add
a keybinding).


BR,
Jani.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-31 12:42     ` Jani Nikula
@ 2011-12-31 13:06       ` David Bremner
  2011-12-31 13:43       ` David Edmondson
  2012-01-02 13:23       ` Tomi Ollila
  2 siblings, 0 replies; 18+ messages in thread
From: David Bremner @ 2011-12-31 13:06 UTC (permalink / raw)
  To: Jani Nikula, David Edmondson, Dmitry Kurochkin, notmuch

On Sat, 31 Dec 2011 14:42:47 +0200, Jani Nikula <jani@nikula.org> wrote:

> Would it be a suitable compromise to bind 's' to notmuch-search (the
> mini-buffer search) also in notmuch-hello, while leaving the search box
> there with a common history?

That would be fine for me. But other people might find it weird I guess.

d

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-31 12:42     ` Jani Nikula
  2011-12-31 13:06       ` David Bremner
@ 2011-12-31 13:43       ` David Edmondson
  2012-01-02 13:23       ` Tomi Ollila
  2 siblings, 0 replies; 18+ messages in thread
From: David Edmondson @ 2011-12-31 13:43 UTC (permalink / raw)
  To: Jani Nikula, David Bremner, Dmitry Kurochkin, notmuch

[-- Attachment #1: Type: text/plain, Size: 482 bytes --]

On Sat, 31 Dec 2011 14:42:47 +0200, Jani Nikula <jani@nikula.org> wrote:
> Would it be a suitable compromise to bind 's' to notmuch-search (the
> mini-buffer search) also in notmuch-hello, while leaving the search
> box there with a common history?
> 
> I'm not sure moving the point to search box needs a keybinding (but
> notmuch-hello-goto-search could still be there if the user wants to
> add a keybinding).

I'd be happy with that. I don't use 's' in notmuch-hello.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-31 12:42     ` Jani Nikula
  2011-12-31 13:06       ` David Bremner
  2011-12-31 13:43       ` David Edmondson
@ 2012-01-02 13:23       ` Tomi Ollila
  2012-01-02 20:03         ` Xavier Maillard
  2 siblings, 1 reply; 18+ messages in thread
From: Tomi Ollila @ 2012-01-02 13:23 UTC (permalink / raw)
  To: Jani Nikula, David Bremner, David Edmondson, Dmitry Kurochkin,
	notmuch

On Sat, 31 Dec 2011 14:42:47 +0200, Jani Nikula <jani@nikula.org> wrote:
> On Fri, 30 Dec 2011 10:43:37 -0400, David Bremner <david@tethera.net> wrote:
> 
> > Personally I would like to be able to customize the hello screen to
> > remove the search box. I find it confusing that that 's' jumps to the
> > search box there, and everywhere else brings up the mini-buffer. That
> > might be just me, and the fact that I bind "C-c s" globally to
> > notmuch-search.  I could easily believe that for new users having a
> > search box is nicer.
> 
> Would it be a suitable compromise to bind 's' to notmuch-search (the
> mini-buffer search) also in notmuch-hello, while leaving the search box
> there with a common history?

I like this approach!

> I'm not sure moving the point to search box needs a keybinding (but
> notmuch-hello-goto-search could still be there if the user wants to add
> a keybinding).

yes.

> 
> 
> BR,
> Jani.

Tomi

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2012-01-02 13:23       ` Tomi Ollila
@ 2012-01-02 20:03         ` Xavier Maillard
  0 siblings, 0 replies; 18+ messages in thread
From: Xavier Maillard @ 2012-01-02 20:03 UTC (permalink / raw)
  To: Tomi Ollila, Jani Nikula, David Bremner, David Edmondson,
	Dmitry Kurochkin, notmuch

On Mon, 02 Jan 2012 15:23:17 +0200, Tomi Ollila <tomi.ollila@nixu.com> wrote:
> On Sat, 31 Dec 2011 14:42:47 +0200, Jani Nikula <jani@nikula.org> wrote:
> > On Fri, 30 Dec 2011 10:43:37 -0400, David Bremner <david@tethera.net> wrote:
> > 
> > > Personally I would like to be able to customize the hello screen to
> > > remove the search box. I find it confusing that that 's' jumps to the
> > > search box there, and everywhere else brings up the mini-buffer. That
> > > might be just me, and the fact that I bind "C-c s" globally to
> > > notmuch-search.  I could easily believe that for new users having a
> > > search box is nicer.
> > 
> > Would it be a suitable compromise to bind 's' to notmuch-search (the
> > mini-buffer search) also in notmuch-hello, while leaving the search box
> > there with a common history?
> 
> I like this approach!

+1 but, like David, I'd like to be able to display/to hide the search
box via a keybinding and/or a configuration option.

/Xavier

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2011-12-25  4:14 [PATCH 1/4] emacs: unify search mechanisms Dmitry Kurochkin
                   ` (3 preceding siblings ...)
  2011-12-30 10:44 ` [PATCH 1/4] emacs: unify search mechanisms David Edmondson
@ 2012-01-16 11:35 ` David Edmondson
  2012-01-16 11:39   ` Dmitry Kurochkin
  4 siblings, 1 reply; 18+ messages in thread
From: David Edmondson @ 2012-01-16 11:35 UTC (permalink / raw)
  To: Dmitry Kurochkin, notmuch

[-- Attachment #1: Type: text/plain, Size: 1112 bytes --]

On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> Before the change, there were two ways to do search in Emacs UI:
> search widget in notmuch-hello buffer and `notmuch-search'
> function bound to "s".  Internally, notmuch-hello search widget
> uses `notmuch-search' function.  But it uses widget field input
> instead of minibuffer.  Such duplication is a major issue for
> notmuch-hello usability: search interface is inconsistent and
> lacks features that are available in minibuffer (e.g. history and
> auto completion).  Some of these features may be relatively easy
> to implement for notmuch-hello search, others would be much more
> tricky.  So to avoid duplication, make UI more consistent, bring
> notmuch-hello search to feature parity with the minibuffer
> search, the patch replaces notmuch-hello search widget and with a
> button that works the same way as "s" key binding.

Dmitry, if Daniel re-submits his patches to allow the construction of
`notmuch-hello' buffers to be configured, it seems that this patchset
would become unnecessary. Is that correct?

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2012-01-16 11:35 ` David Edmondson
@ 2012-01-16 11:39   ` Dmitry Kurochkin
  2012-01-16 11:47     ` David Edmondson
  2012-01-16 12:21     ` Jani Nikula
  0 siblings, 2 replies; 18+ messages in thread
From: Dmitry Kurochkin @ 2012-01-16 11:39 UTC (permalink / raw)
  To: David Edmondson, notmuch

On Mon, 16 Jan 2012 11:35:37 +0000, David Edmondson <dme@dme.org> wrote:
> On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> > Before the change, there were two ways to do search in Emacs UI:
> > search widget in notmuch-hello buffer and `notmuch-search'
> > function bound to "s".  Internally, notmuch-hello search widget
> > uses `notmuch-search' function.  But it uses widget field input
> > instead of minibuffer.  Such duplication is a major issue for
> > notmuch-hello usability: search interface is inconsistent and
> > lacks features that are available in minibuffer (e.g. history and
> > auto completion).  Some of these features may be relatively easy
> > to implement for notmuch-hello search, others would be much more
> > tricky.  So to avoid duplication, make UI more consistent, bring
> > notmuch-hello search to feature parity with the minibuffer
> > search, the patch replaces notmuch-hello search widget and with a
> > button that works the same way as "s" key binding.
> 
> Dmitry, if Daniel re-submits his patches to allow the construction of
> `notmuch-hello' buffers to be configured, it seems that this patchset
> would become unnecessary. Is that correct?

Right.  We will just need to fix the 's' key binding.  Looking forward
for that.

Regards,
  Dmitry

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2012-01-16 11:39   ` Dmitry Kurochkin
@ 2012-01-16 11:47     ` David Edmondson
  2012-01-16 12:21     ` Jani Nikula
  1 sibling, 0 replies; 18+ messages in thread
From: David Edmondson @ 2012-01-16 11:47 UTC (permalink / raw)
  To: Dmitry Kurochkin, notmuch

[-- Attachment #1: Type: text/plain, Size: 501 bytes --]

On Mon, 16 Jan 2012 15:39:14 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> > Dmitry, if Daniel re-submits his patches to allow the construction of
> > `notmuch-hello' buffers to be configured, it seems that this patchset
> > would become unnecessary. Is that correct?
> 
> Right.  We will just need to fix the 's' key binding.  Looking forward
> for that.

Can I mark this set 'obsolete' then? (I'd be relying on you to remember
to post a patch to fix the keybinding later.)

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2012-01-16 11:39   ` Dmitry Kurochkin
  2012-01-16 11:47     ` David Edmondson
@ 2012-01-16 12:21     ` Jani Nikula
  2012-01-17 19:35       ` Dmitry Kurochkin
  1 sibling, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2012-01-16 12:21 UTC (permalink / raw)
  To: Dmitry Kurochkin, David Edmondson, notmuch

On Mon, 16 Jan 2012 15:39:14 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> On Mon, 16 Jan 2012 11:35:37 +0000, David Edmondson <dme@dme.org> wrote:
> > On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> > > Before the change, there were two ways to do search in Emacs UI:
> > > search widget in notmuch-hello buffer and `notmuch-search'
> > > function bound to "s".  Internally, notmuch-hello search widget
> > > uses `notmuch-search' function.  But it uses widget field input
> > > instead of minibuffer.  Such duplication is a major issue for
> > > notmuch-hello usability: search interface is inconsistent and
> > > lacks features that are available in minibuffer (e.g. history and
> > > auto completion).  Some of these features may be relatively easy
> > > to implement for notmuch-hello search, others would be much more
> > > tricky.  So to avoid duplication, make UI more consistent, bring
> > > notmuch-hello search to feature parity with the minibuffer
> > > search, the patch replaces notmuch-hello search widget and with a
> > > button that works the same way as "s" key binding.
> > 
> > Dmitry, if Daniel re-submits his patches to allow the construction of
> > `notmuch-hello' buffers to be configured, it seems that this patchset
> > would become unnecessary. Is that correct?
> 
> Right.  We will just need to fix the 's' key binding.  Looking forward
> for that.

Isn't (something like) this still needed to merge the search histories:

id:"1324698436-8532-1-git-send-email-dmitry.kurochkin@gmail.com"


Jani.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/4] emacs: unify search mechanisms
  2012-01-16 12:21     ` Jani Nikula
@ 2012-01-17 19:35       ` Dmitry Kurochkin
  0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Kurochkin @ 2012-01-17 19:35 UTC (permalink / raw)
  To: Jani Nikula, David Edmondson, notmuch

Hello.

On Mon, 16 Jan 2012 12:21:20 +0000, Jani Nikula <jani@nikula.org> wrote:
> On Mon, 16 Jan 2012 15:39:14 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> > On Mon, 16 Jan 2012 11:35:37 +0000, David Edmondson <dme@dme.org> wrote:
> > > On Sun, 25 Dec 2011 08:14:52 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> > > > Before the change, there were two ways to do search in Emacs UI:
> > > > search widget in notmuch-hello buffer and `notmuch-search'
> > > > function bound to "s".  Internally, notmuch-hello search widget
> > > > uses `notmuch-search' function.  But it uses widget field input
> > > > instead of minibuffer.  Such duplication is a major issue for
> > > > notmuch-hello usability: search interface is inconsistent and
> > > > lacks features that are available in minibuffer (e.g. history and
> > > > auto completion).  Some of these features may be relatively easy
> > > > to implement for notmuch-hello search, others would be much more
> > > > tricky.  So to avoid duplication, make UI more consistent, bring
> > > > notmuch-hello search to feature parity with the minibuffer
> > > > search, the patch replaces notmuch-hello search widget and with a
> > > > button that works the same way as "s" key binding.
> > > 
> > > Dmitry, if Daniel re-submits his patches to allow the construction of
> > > `notmuch-hello' buffers to be configured, it seems that this patchset
> > > would become unnecessary. Is that correct?
> > 
> > Right.  We will just need to fix the 's' key binding.  Looking forward
> > for that.
> 
> Isn't (something like) this still needed to merge the search histories:
> 
> id:"1324698436-8532-1-git-send-email-dmitry.kurochkin@gmail.com"
> 

I have sent a new patch series implementing the changes [1].

Regards,
  Dmitry

[1] id:1326828850-8519-1-git-send-email-dmitry.kurochkin@gmail.com

> 
> Jani.

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2012-01-17 19:36 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-25  4:14 [PATCH 1/4] emacs: unify search mechanisms Dmitry Kurochkin
2011-12-25  4:14 ` [PATCH 2/4] emacs: reindent `notmuch-hello' function Dmitry Kurochkin
2011-12-25  4:14 ` [PATCH 3/4] emacs: hide recent searches if `notmuch-hello-recent-searches-max' is zero Dmitry Kurochkin
2011-12-25  4:14 ` [PATCH 4/4] test: fix Emacs tests expected output after notmuch-hello search changes Dmitry Kurochkin
2011-12-30 10:44 ` [PATCH 1/4] emacs: unify search mechanisms David Edmondson
2011-12-30 14:43   ` David Bremner
2011-12-30 15:01     ` David Edmondson
2011-12-30 17:09     ` Aaron Ecay
2011-12-31 12:42     ` Jani Nikula
2011-12-31 13:06       ` David Bremner
2011-12-31 13:43       ` David Edmondson
2012-01-02 13:23       ` Tomi Ollila
2012-01-02 20:03         ` Xavier Maillard
2012-01-16 11:35 ` David Edmondson
2012-01-16 11:39   ` Dmitry Kurochkin
2012-01-16 11:47     ` David Edmondson
2012-01-16 12:21     ` Jani Nikula
2012-01-17 19:35       ` Dmitry Kurochkin

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).