]> granicus.if.org Git - neomutt/commitdiff
Fall back to search if no query exists for search-(next|opposite)
authorRocco Rutte <pdmef@gmx.net>
Fri, 29 May 2009 14:40:40 +0000 (16:40 +0200)
committerRocco Rutte <pdmef@gmx.net>
Fri, 29 May 2009 14:40:40 +0000 (16:40 +0200)
The pager had the fall-through to search, so for
consistency do that in other menues as well.

menu.c
pager.c
pattern.c

diff --git a/menu.c b/menu.c
index 7fe75388605382528aef6a26c168e1a134b1c924..b562891e96f9da56dd4f50d3cbae3266925221c8 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -725,27 +725,21 @@ static int menu_search (MUTTMENU *menu, int op)
   char* searchBuf = menu->menu >= 0 && menu->menu < MENU_MAX ?
                     SearchBuffers[menu->menu] : NULL;
 
-  if (op != OP_SEARCH_NEXT && op != OP_SEARCH_OPPOSITE)
+  if (!(searchBuf && *searchBuf) ||
+      (op != OP_SEARCH_NEXT && op != OP_SEARCH_OPPOSITE))
   {
-    strfcpy (buf, searchBuf ? searchBuf : "", sizeof (buf));
-    if (mutt_get_field ((op == OP_SEARCH) ? _("Search for: ") : 
-                                            _("Reverse search for: "),
-                        buf, sizeof (buf), M_CLEAR) != 0 || !buf[0])
+    strfcpy (buf, searchBuf && *searchBuf ? searchBuf : "", sizeof (buf));
+    if (mutt_get_field ((op == OP_SEARCH || op == OP_SEARCH_NEXT)
+                       ? _("Search for: ") : _("Reverse search for: "),
+                       buf, sizeof (buf), M_CLEAR) != 0 || !buf[0])
       return (-1);
     if (menu->menu >= 0 && menu->menu < MENU_MAX)
     {
       mutt_str_replace (&SearchBuffers[menu->menu], buf);
       searchBuf = SearchBuffers[menu->menu];
     }
-    menu->searchDir = (op == OP_SEARCH) ? M_SEARCH_DOWN : M_SEARCH_UP;
-  }
-  else 
-  {
-    if (!searchBuf || !*searchBuf)
-    {
-      mutt_error _("No search pattern.");
-      return (-1);
-    }
+    menu->searchDir = (op == OP_SEARCH || op == OP_SEARCH_NEXT) ?
+                      M_SEARCH_DOWN : M_SEARCH_UP;
   }
 
   searchDir = (menu->searchDir == M_SEARCH_UP) ? -1 : 1;
diff --git a/pager.c b/pager.c
index e67af057ed661af6a57eeba9fe85001c22ce80ad..217652b1c94effc7cb8854307491297b88c047d4 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -1567,7 +1567,7 @@ static struct mapping_t PagerHelpExtra[] = {
 int 
 mutt_pager (const char *banner, const char *fname, int flags, pager_t *extra)
 {
-  static char searchbuf[STRING];
+  static char searchbuf[STRING] = "";
   char buffer[LONG_STRING];
   char helpstr[SHORT_STRING*2];
   char tmphelp[SHORT_STRING*2];
index 5d8a85b550139a974b46f9f311429526ef819d7d..5581fb6734265c25b03a5ed94ad9e50bc46acd91 100644 (file)
--- a/pattern.c
+++ b/pattern.c
@@ -1401,15 +1401,17 @@ int mutt_search_command (int cur, int op)
   progress_t progress;
   const char* msg = NULL;
 
-  if (op != OP_SEARCH_NEXT && op != OP_SEARCH_OPPOSITE)
+  if (!(LastSearch && *LastSearch) ||
+      (op != OP_SEARCH_NEXT && op != OP_SEARCH_OPPOSITE))
   {
-    strfcpy (buf, LastSearch, sizeof (buf));
-    if (mutt_get_field ((op == OP_SEARCH) ? _("Search for: ") :
-                     _("Reverse search for: "), buf, sizeof (buf),
+    strfcpy (buf, LastSearch && *LastSearch ? LastSearch : "", sizeof (buf));
+    if (mutt_get_field ((op == OP_SEARCH || op == OP_SEARCH_NEXT) ?
+                       _("Search for: ") : _("Reverse search for: "),
+                       buf, sizeof (buf),
                      M_CLEAR | M_PATTERN) != 0 || !buf[0])
       return (-1);
 
-    if (op == OP_SEARCH)
+    if (op == OP_SEARCH || op == OP_SEARCH_NEXT)
       unset_option (OPTSEARCHREVERSE);
     else
       set_option (OPTSEARCHREVERSE);
@@ -1420,7 +1422,7 @@ int mutt_search_command (int cur, int op)
     mutt_check_simple (temp, sizeof (temp), NONULL (SimpleSearch));
 
     if (!SearchPattern || mutt_strcmp (temp, LastSearchExpn))
-    {
+     {
       set_option (OPTSEARCHINVALID);
       strfcpy (LastSearch, buf, sizeof (LastSearch));
       mutt_message _("Compiling search pattern...");
@@ -1428,18 +1430,13 @@ int mutt_search_command (int cur, int op)
       err.data = error;
       err.dsize = sizeof (error);
       if ((SearchPattern = mutt_pattern_comp (temp, M_FULL_MSG, &err)) == NULL)
-      {
+       {
        mutt_error ("%s", error);
        return (-1);
       }
       mutt_clear_error ();
     }
   }
-  else if (!SearchPattern)
-  {
-    mutt_error _("No search pattern.");
-    return (-1);
-  }
 
   if (option (OPTSEARCHINVALID))
   {