]> git.wh0rd.org Git - nano.git/commitdiff
more cleanly ignore unhandled meta key sequences and escape sequences;
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Wed, 24 May 2006 19:48:03 +0000 (19:48 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Wed, 24 May 2006 19:48:03 +0000 (19:48 +0000)
to get this to work properly, add a shortcut for moving to the next
search/replace string

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3559 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/global.c
src/help.c
src/nano.c
src/prompt.c
src/winio.c

index 6baaccfc902b9ca58ac9874aa41da48ce3259d5b..641f04b360497d55809b0208f3cca42b0e79c1d1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -99,8 +99,10 @@ CVS code -
          do_delete(). (DLR)
        - Ignore unhandled meta key sequences and escape sequences, and
          indicate it on the statusbar when we get an unhandled shortcut
-         or toggle, as Pico does.  New function is_ascii_cntrl_char();
-         changes to do_input(), do_statusbar_input(), and
+         or toggle, as Pico does.  To get this to work properly, add a
+         shortcut for moving to the next search/replace string.  New
+         function is_ascii_cntrl_char(); changes to shortcut_init(),
+         do_input(), do_statusbar_input(), get_prompt_string(), and
          parse_kbinput(). (DLR, suggested by Nick Warne and Benno
          Schulenberg)
 - browser.c:
index 6e4c9c328ee1e43bfc87487abff53ba81c798e8b..b3ffb3f5de202aa9b5da05ad9ea4f2a9178b0a91 100644 (file)
@@ -298,8 +298,9 @@ void shortcut_init(bool unjustify)
     const char *regexp_msg = N_("Regexp");
 #endif
 #ifndef NANO_TINY
+    const char *prev_history_msg = N_("PrevHstory");
     /* TRANSLATORS: Try to keep this and previous strings at most 10 characters. */
-    const char *history_msg = N_("History");
+    const char *next_history_msg = N_("NextHstory");
 #ifdef ENABLE_MULTIBUFFER
     /* TRANSLATORS: Try to keep this at most 16 characters. */
     const char *new_buffer_msg = N_("New Buffer");
@@ -419,8 +420,10 @@ void shortcut_init(bool unjustify)
     const char *nano_regexp_msg = N_("Use regular expressions");
 #endif
 #ifndef NANO_TINY
-    const char *nano_history_msg =
-       N_("Edit the previous search/replace strings");
+    const char *nano_prev_history_msg =
+       N_("Edit the previous search/replace string");
+    const char *nano_next_history_msg =
+       N_("Edit the next search/replace string");
 #endif
 #ifndef DISABLE_BROWSER
     const char *nano_tofiles_msg = N_("Go to file browser");
@@ -779,8 +782,12 @@ void shortcut_init(bool unjustify)
 #endif
 
 #ifndef NANO_TINY
-    sc_init_one(&whereis_list, NANO_PREVLINE_KEY, history_msg,
-       IFHELP(nano_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+    sc_init_one(&whereis_list, NANO_PREVLINE_KEY, prev_history_msg,
+       IFHELP(nano_prev_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+       NANO_NO_KEY, VIEW, NULL);
+
+    sc_init_one(&whereis_list, NANO_NEXTLINE_KEY, next_history_msg,
+       IFHELP(nano_next_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
        NANO_NO_KEY, VIEW, NULL);
 
     sc_init_one(&whereis_list, NANO_CUTTILLEND_KEY, cut_till_end_msg,
@@ -819,7 +826,7 @@ void shortcut_init(bool unjustify)
        IFHELP(nano_lastline_msg, FALSE), NANO_LASTLINE_ALTKEY,
        NANO_LASTLINE_FKEY, NANO_LASTLINE_ALTKEY2, VIEW, do_last_line);
 
-    /* TRANSLATORS: Try to keep this at most 12 characters. */
+    /* TRANSLATORS: Try to keep this at most 10 characters. */
     sc_init_one(&replace_list, NANO_TOOTHERSEARCH_KEY, N_("No Replace"),
        IFHELP(nano_whereis_msg, FALSE), NANO_NO_KEY, NANO_REPLACE_FKEY,
        NANO_NO_KEY, VIEW, NULL);
@@ -845,8 +852,12 @@ void shortcut_init(bool unjustify)
 #endif
 
 #ifndef NANO_TINY
-    sc_init_one(&replace_list, NANO_PREVLINE_KEY, history_msg,
-       IFHELP(nano_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+    sc_init_one(&replace_list, NANO_PREVLINE_KEY, prev_history_msg,
+       IFHELP(nano_prev_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+       NANO_NO_KEY, VIEW, NULL);
+
+    sc_init_one(&replace_list, NANO_NEXTLINE_KEY, next_history_msg,
+       IFHELP(nano_next_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
        NANO_NO_KEY, VIEW, NULL);
 #endif
 
@@ -876,8 +887,12 @@ void shortcut_init(bool unjustify)
        NANO_LASTLINE_FKEY, NANO_LASTLINE_ALTKEY2, VIEW, do_last_line);
 
 #ifndef NANO_TINY
-    sc_init_one(&replace_list_2, NANO_PREVLINE_KEY, history_msg,
-       IFHELP(nano_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+    sc_init_one(&replace_list_2, NANO_PREVLINE_KEY, prev_history_msg,
+       IFHELP(nano_prev_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+       NANO_NO_KEY, VIEW, NULL);
+
+    sc_init_one(&replace_list_2, NANO_NEXTLINE_KEY, next_history_msg,
+       IFHELP(nano_next_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
        NANO_NO_KEY, VIEW, NULL);
 #endif
 
@@ -1188,8 +1203,12 @@ void shortcut_init(bool unjustify)
 #endif
 
 #ifndef NANO_SMALL
-    sc_init_one(&whereis_file_list, NANO_PREVLINE_KEY, history_msg,
-       IFHELP(nano_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+    sc_init_one(&whereis_file_list, NANO_PREVLINE_KEY, prev_history_msg,
+       IFHELP(nano_prev_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
+       NANO_NO_KEY, VIEW, NULL);
+
+    sc_init_one(&whereis_file_list, NANO_NEXTLINE_KEY, next_history_msg,
+       IFHELP(nano_next_history_msg, FALSE), NANO_NO_KEY, NANO_NO_KEY,
        NANO_NO_KEY, VIEW, NULL);
 #endif
 
index 611045b2ac46e0d3ca58c04242ed818b3a8434cc..62aa66f6fc2d18cb89bdd77a5fb94d51c4315cf4 100644 (file)
@@ -32,7 +32,7 @@
 static char *help_text = NULL;
        /* The text displayed in the help window. */
 
-/* Our dynamic, shortcut-list-compliant help function.  refresh_func is
+/* Our dynamic, shortcut list-compliant help function.  refresh_func is
  * the function we will call to refresh the edit window.*/
 void do_help(void (*refresh_func)(void))
 {
@@ -423,8 +423,8 @@ void help_init(void)
     /* Now add our shortcut info.  Assume that each shortcut has, at the
      * very least, an equivalent control key, an equivalent primary meta
      * key sequence, or both.  Also assume that the meta key values are
-     * not control characters.  We can display a maximum of 3 shortcut
-     * entries. */
+     * not control characters.  We can display a maximum of three
+     * shortcut entries. */
     for (s = currshortcut; s != NULL; s = s->next) {
        int entries = 0;
 
index ece0195aa93df5e6992e940375e34c3d415cc39d..c4dd937759d530b329572e981fb5ffd19062b5f8 100644 (file)
@@ -1298,16 +1298,13 @@ int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool
        );
 
     /* If we got a non-high-bit control key or a meta key sequence, and
-     * it's not a shortcut or toggle, ignore it.  If it's a meta key
-     * sequence, throw it out completely, so that we don't end up
-     * inserting its second character as though it were typed. */
+     * it's not a shortcut or toggle, throw it out. */
     if (*s_or_t == FALSE) {
        if (is_ascii_cntrl_char(input) || *meta_key == TRUE) {
-           if (*meta_key == TRUE) {
-               *meta_key = FALSE;
-               input = ERR;
-           }
            statusbar(_("Unknown Command"));
+           if (*meta_key == TRUE)
+               *meta_key = FALSE;
+           input = ERR;
        }
     }
 
index 0fdac60227bb13d711faf4363c7752d6397b382e..5f5430c7e5eda85a495ef6991ba57e7d0b1282c6 100644 (file)
@@ -82,11 +82,11 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
 
     /* If we got a shortcut from the current list, or a "universal"
      * statusbar prompt shortcut, set have_shortcut to TRUE. */
-    have_shortcut = (s != NULL || input == NANO_REFRESH_KEY || input ==
-       NANO_HOME_KEY || input == NANO_END_KEY || input ==
-       NANO_BACK_KEY || input == NANO_FORWARD_KEY || input ==
-       NANO_BACKSPACE_KEY || input == NANO_DELETE_KEY || input ==
-       NANO_CUT_KEY ||
+    have_shortcut = (s != NULL || input == NANO_ENTER_KEY || input ==
+       NANO_REFRESH_KEY || input == NANO_HOME_KEY || input ==
+       NANO_END_KEY || input == NANO_BACK_KEY || input ==
+       NANO_FORWARD_KEY || input == NANO_BACKSPACE_KEY || input ==
+       NANO_DELETE_KEY || input == NANO_CUT_KEY ||
 #ifndef NANO_TINY
        input == NANO_NEXTWORD_KEY ||
 #endif
@@ -100,15 +100,12 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
     *s_or_t = have_shortcut;
 
     /* If we got a non-high-bit control key or a meta key sequence, and
-     * it's not a shortcut or toggle, ignore it.  If it's a meta key
-     * sequence, throw it out completely, so that we don't end up
-     * inserting its second character as though it were typed. */
+     * it's not a shortcut or toggle, throw it out. */
     if (*s_or_t == FALSE) {
        if (is_ascii_cntrl_char(input) || *meta_key == TRUE) {
-           if (*meta_key == TRUE) {
+           if (*meta_key == TRUE)
                *meta_key = FALSE;
-               input = ERR;
-           }
+           input = ERR;
        }
     }
 
@@ -161,6 +158,8 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
        if (have_shortcut) {
            switch (input) {
                /* Handle the "universal" statusbar prompt shortcuts. */
+               case NANO_ENTER_KEY:
+                   break;
                case NANO_REFRESH_KEY:
                    total_statusbar_refresh(refresh_func);
                    break;
@@ -1062,6 +1061,13 @@ int get_prompt_string(bool allow_tabs,
                    }
 
                    update_statusbar_line(answer, statusbar_x);
+
+                   /* This key has a shortcut list entry when it's used
+                    * to move to an older search, which means that
+                    * finished has been set to TRUE.  Set it back to
+                    * FALSE here, so that we aren't kicked out of the
+                    * statusbar prompt. */
+                   finished = FALSE;
                }
                break;
 #endif /* !NANO_TINY */
index 6f3360efe166522103a4e2879b9cf0f999b8f2e5..36b9681275a7a63c3b9b2e3e39047e3102deb426 100644 (file)
@@ -536,8 +536,8 @@ int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key)
                                &ignore_seq);
 
                        /* If the escape sequence is unrecognized and
-                        * not ignored, throw it out completely and
-                        * indicate this on the statusbar. */
+                        * not ignored, throw it out, and indicate this
+                        * on the statusbar. */
                        if (retval == ERR && !ignore_seq)
                            statusbar(_("Unknown Command"));