unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Dima Kogan <notmuch@dima.secretsauce.net>
To: notmuch@notmuchmail.org
Subject: Re: [PATCH] Added C-up and C-down to cycle through previous searches
Date: Mon, 6 Jun 2011 23:26:20 -0700	[thread overview]
Message-ID: <20110606232620.049fa55f@smart> (raw)
In-Reply-To: <87fwnopwhw.fsf@gmail.com>

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

> Notmuch uses a mix of 8 char width tabs and spaces.  First go tabs,
> then, if you need indenting with more precision, spaces.  Look at the
> lines your patch removes for an example.
> 
> Also, .dir-locals.el sets some variables to configure Emacs for
> Notmuch coding style but only for c-mode.  You may set it by hand for
> lisp.

Hi again. Here's the new patch, with M-n/M-p and tabbed indentation

dima

[-- Attachment #2: 0001-Added-M-n-and-M-p-to-cycle-through-previous-searches.patch --]
[-- Type: text/x-patch, Size: 3697 bytes --]

From 70193e0a9f7451033fd0843d46ac40e5524b000b Mon Sep 17 00:00:00 2001
From: Dima Kogan <dima@secretsauce.net>
Date: Mon, 6 Jun 2011 23:15:26 -0700
Subject: [PATCH] Added M-n and M-p to cycle through previous searches

---
 emacs/notmuch-hello.el |   47 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 916cda1..035e551 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -123,6 +123,12 @@ Typically \",\" in the US and UK and \".\" in Europe."
 
 (defvar notmuch-hello-recent-searches nil)
 
+(defvar notmuch-hello-cyclerecent-index 0
+  "The current index of the most-recent searches" )
+
+(defvar notmuch-hello-search-widget nil
+  "The search widget")
+
 (defun notmuch-hello-remember-search (search)
   (if (not (member search notmuch-hello-recent-searches))
       (push search notmuch-hello-recent-searches))
@@ -148,6 +154,26 @@ Typically \",\" in the US and UK and \".\" in Europe."
       (match-string 1 search)
     search))
 
+(defun notmuch-hello-cyclerecent-next ()
+  "Cycle through the most recently-searched queries, going forwards"
+  (interactive)
+  (notmuch-hello-cyclerecent 1))
+
+(defun notmuch-hello-cyclerecent-prev ()
+  "Cycle through the most recently-searched queries, going backwards"
+  (interactive)
+  (notmuch-hello-cyclerecent -1))
+
+(defun notmuch-hello-cyclerecent (d) ()
+  (when notmuch-hello-recent-searches ; if no recent searches, do nothing
+    (let ((N (length notmuch-hello-recent-searches)))
+      (setq notmuch-hello-cyclerecent-index
+	    (% (+ notmuch-hello-cyclerecent-index d N) N))) ; update the index
+
+    (widget-value-set notmuch-hello-search-widget
+		      (nth notmuch-hello-cyclerecent-index notmuch-hello-recent-searches))
+    (widget-setup)))
+
 (defun notmuch-hello-search (search)
   (let ((search (notmuch-hello-trim search)))
     (notmuch-hello-remember-search search)
@@ -455,13 +481,19 @@ Complete list of currently available key bindings:
 
 	(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))))
+	(setq notmuch-hello-search-widget
+	      (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)))
+			     :keymap (let ((map (make-sparse-keymap)))
+				       (set-keymap-parent map widget-field-keymap)
+				       (define-key map (kbd "M-p") 'notmuch-hello-cyclerecent-prev)
+				       (define-key map (kbd "M-n") 'notmuch-hello-cyclerecent-next)
+				       map)))
 	(widget-insert "\n")
 
 	(when notmuch-hello-recent-searches
@@ -535,6 +567,7 @@ Complete list of currently available key bindings:
 	(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")
+	  (widget-insert "In the search box, M-n/M-p cycles through the recent searches.\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"))
-- 
1.7.5.3


  reply	other threads:[~2011-06-07  6:26 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-29  8:56 [PATCH] Added C-up and C-down to cycle through previous searches notmuch
2011-05-29 16:04 ` Dmitry Kurochkin
2011-06-04 20:07   ` Dima Kogan
2011-06-05  7:28     ` Dmitry Kurochkin
2011-06-07  6:26       ` Dima Kogan [this message]
2011-06-05  7:25   ` Xavier Maillard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110606232620.049fa55f@smart \
    --to=notmuch@dima.secretsauce.net \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).