]> git.wh0rd.org Git - nano.git/commitdiff
Wouter van Hemel's "Where Is Next" patch
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Sat, 23 Aug 2003 21:11:06 +0000 (21:11 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Sat, 23 Aug 2003 21:11:06 +0000 (21:11 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1530 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
global.c
nano.h
proto.h
search.c

index 7c517b17036aabf6e86e1b116df6b4338dd96441..50d5486f47f3ed4ac5219785bf124486a0f571a0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -20,6 +20,12 @@ CVS code -
          notably FreeBSD; if your Backspace key acts like Delete, this
          option will fix that. (DLR)
        - Remove unneeded breaks at the ends of default: clauses. (DLR)
+       - Add the ability to repeat the last search without prompting
+         via Meta-W, and move the line wrapping toggle to Meta-L.  New
+         function do_research(). (Wouter van Hemel)
+       - Change the message for the line wrapping toggle from "Auto
+         wrap" to "Auto line wrap", to more clearly associate it with
+         Meta-L. (DLR)
 - files.c:
   do_browser():
        - Some of the Pico compatibility options in the file browser
index 6c6ed4afe90dc58cadecbc7907b6fc716af2b914..5bdb1c07fcf5e5f2bfa88678c49ad4386b033ef1 100644 (file)
--- a/global.c
+++ b/global.c
@@ -260,7 +260,7 @@ void toggle_init(void)
     toggle_syntax_msg = _("Color syntax highlighting");
 #endif
 #ifndef DISABLE_WRAPPING
-    toggle_wrap_msg = _("Auto wrap");
+    toggle_wrap_msg = _("Auto line wrap");
 #endif
 #ifdef ENABLE_MULTIBUFFER
     toggle_load_msg = _("Multiple file buffers");
@@ -321,10 +321,11 @@ void shortcut_init(int unjustify)
     const char *nano_help_msg = "", *nano_writeout_msg = "", *nano_exit_msg =
        "", *nano_goto_msg = "", *nano_justify_msg =
        "", *nano_replace_msg = "", *nano_insert_msg =
-       "", *nano_whereis_msg = "", *nano_prevpage_msg =
-       "", *nano_nextpage_msg = "", *nano_cut_msg =
-       "", *nano_uncut_msg = "", *nano_cursorpos_msg =
-       "", *nano_spell_msg = "", *nano_up_msg = "", *nano_down_msg =
+       "", *nano_whereis_msg = "", *nano_whereis_next_msg =
+       "", *nano_prevpage_msg = "", *nano_nextpage_msg =
+       "", *nano_cut_msg = "", *nano_uncut_msg =
+       "", *nano_cursorpos_msg = "", *nano_spell_msg =
+       "", *nano_up_msg = "", *nano_down_msg =
        "", *nano_forward_msg = "", *nano_back_msg = "", *nano_home_msg =
        "", *nano_end_msg = "", *nano_firstline_msg =
        "", *nano_lastline_msg = "", *nano_refresh_msg =
@@ -359,6 +360,7 @@ void shortcut_init(int unjustify)
     nano_replace_msg = _("Replace text within the editor");
     nano_insert_msg = _("Insert another file into the current one");
     nano_whereis_msg = _("Search for text within the editor");
+    nano_whereis_next_msg = _("Repeat last search");
     nano_prevpage_msg = _("Move to the previous screen");
     nano_nextpage_msg = _("Move to the next screen");
     nano_cut_msg = _("Cut the current line and store it in the cutbuffer");
@@ -564,6 +566,11 @@ void shortcut_init(int unjustify)
                    IFHELP(nano_bracket_msg, NANO_BRACKET_KEY),
                    0, 0, VIEW, do_find_bracket);
 #endif
+
+    sc_init_one(&main_list, -9, _("Where Is Next"),
+               IFHELP(nano_whereis_next_msg, NANO_WHEREIS_NEXT_KEY), 0, 0,
+               NOVIEW, do_research);
+
 #ifdef ENABLE_MULTIBUFFER
     sc_init_one(&main_list, -9, _("Previous File"),
                    IFHELP(nano_openprev_msg, NANO_OPENPREV_KEY),
diff --git a/nano.h b/nano.h
index 0444ab005a21bbdde2366154d83fcc34157f522b..c5f729b21e79deeebd640e269c02f66c09af0039 100644 (file)
--- a/nano.h
+++ b/nano.h
@@ -340,6 +340,7 @@ know what you're doing */
 #define NANO_HELP_FKEY         KEY_F(1)
 #define NANO_WHEREIS_KEY       NANO_CONTROL_W
 #define NANO_WHEREIS_FKEY      KEY_F(6)
+#define NANO_WHEREIS_NEXT_KEY  NANO_ALT_W
 #define NANO_REPLACE_KEY       NANO_CONTROL_4
 #define NANO_REPLACE_FKEY      KEY_F(14)
 #define NANO_ALT_REPLACE_KEY   NANO_ALT_R
@@ -398,7 +399,7 @@ know what you're doing */
 #define TOGGLE_MOUSE_KEY       NANO_ALT_M
 #define TOGGLE_CUTTOEND_KEY    NANO_ALT_K
 #define TOGGLE_REGEXP_KEY      NANO_ALT_R
-#define TOGGLE_WRAP_KEY                NANO_ALT_W
+#define TOGGLE_WRAP_KEY                NANO_ALT_L
 #define TOGGLE_BACKWARDS_KEY   NANO_ALT_B
 #define TOGGLE_CASE_KEY                NANO_ALT_C
 #define TOGGLE_LOAD_KEY                NANO_ALT_F
diff --git a/proto.h b/proto.h
index 609d6c6eb3236fe57eabf7b4cfeb443f45bc1cc0..fcca1e4a9d4318e71065189f0ec908a5bb5d5df7 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -358,6 +358,7 @@ filestruct *findnextstr(int quiet, int bracket_mode,
                        const filestruct *begin, int beginx,
                        const char *needle);
 int do_search(void);
+int do_research(void);
 void replace_abort(void);
 #ifdef HAVE_REGEX_H
 int replace_regexp(char *string, int create_flag);
index 4fc984c6ab0baa09dcdedf6b884ec3b193825ad1..c87e1aa336e49252206c8d88c4eb51fb91ad9195 100644 (file)
--- a/search.c
+++ b/search.c
@@ -430,6 +430,46 @@ int do_search(void)
     return 1;
 }
 
+/* Search for the next string without prompting. */
+int do_research(void)
+{
+    filestruct *fileptr = current, *didfind;
+    int fileptr_x = current_x;
+#ifdef HAVE_REGEX_H
+    const char *regex_error = _("Invalid regex \"%s\"");
+#endif /* HAVE_REGEX_H */
+
+    wrap_reset();
+    search_init_globals();
+
+    if (last_search[0] != '\0') {
+
+#ifdef HAVE_REGEX_H
+       if (ISSET(USE_REGEXP))
+           if (regexp_init(last_search) == 0) {
+               statusbar(regex_error, last_search);
+               reset_cursor();
+               return -3;
+           }
+#endif
+
+       search_last_line = 0;
+       didfind = findnextstr(FALSE, FALSE, current, current_x, last_search);
+
+       if (fileptr == current && fileptr_x == current_x && didfind != NULL)
+           statusbar(_("This is the only occurrence"));
+       else if (current->lineno <= edittop->lineno
+           || current->lineno >= editbot->lineno)
+           edit_update(current, CENTER);
+
+    } else
+        statusbar(_("No current search pattern"));
+
+    search_abort();
+
+    return 1;
+}
+
 void replace_abort(void)
 {
     /* Identical to search_abort, so we'll call it here.  If it