From 6bc26a9a8bb745499ec5ce7a12bb812cbcceed5e Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Mon, 2 May 2005 21:48:34 +0000 Subject: [PATCH] revert some attempts at simplifying the search/replace history code that were causing breakage; make "previous history" and "next history" use separate keys; and display them as "^P" and "^N" instead of using one sentinel value for both, so that clicking on them with the mouse works again git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2497 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 9 ++++----- src/global.c | 34 +++++++++++++++++++++++++--------- src/nano.c | 12 +++--------- src/nano.h | 3 --- src/search.c | 3 ++- src/winio.c | 47 +++++++++++++++++++---------------------------- 6 files changed, 53 insertions(+), 55 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9192a6c2..64e300bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,10 @@ CVS code - match the config.h #includes everywhere else. (DLR) - Change all hardcoded instances of 128 bytes to MAX_BUF_SIZE, and #define MAX_BUF_SIZE as 128 in nano.h. (DLR) + - Use separate keys to go to the previous and next strings in + the search/replace history, and display them as "^P" and "^N". + This makes mouse clicks work properly on them. Changes to + shortcut_init(), help_init(), and do_statusbar_input(). (DLR) - files.c: load_open_file() - Remove an unneeded clearok(FALSE). (DLR) @@ -35,15 +39,10 @@ CVS code - do_output() - Properly allow wrapping when we insert a tab, for consistency. (DLR) -- search.c: - get_history_newer() - - Remove redundant check. (DLR) - utils.c: num_of_digits() - Use a size_t instead of an int, and rename to digits(). (DLR) - winio.c: - nanogetstr() - - Simplify one of the history checks. (DLR) do_help() - Don't treat NANO_CANCEL_KEY as NANO_EXIT_KEY anymore, for consistency. (DLR) diff --git a/src/global.c b/src/global.c index 25c102b9..1c82487a 100644 --- a/src/global.c +++ b/src/global.c @@ -252,7 +252,8 @@ void shortcut_init(bool unjustify) #ifdef HAVE_REGEX_H const char *regexp_msg = N_("Regexp"); #endif - const char *history_msg = N_("History"); + const char *prevhistory_msg = N_("PrevString"); + const char *nexthistory_msg = N_("NextString"); #ifdef ENABLE_MULTIBUFFER const char *new_buffer_msg = N_("New Buffer"); #endif @@ -339,8 +340,10 @@ void shortcut_init(bool unjustify) #ifdef HAVE_REGEX_H const char *nano_regexp_msg = N_("Use regular expressions"); #endif - const char *nano_editstr_msg = - N_("Edit the previous search/replace strings"); + const char *nano_prevhistory_msg = + N_("Edit the previous search/replace string"); + const char *nano_nexthistory_msg = + N_("Edit the next search/replace string"); #endif /* !NANO_SMALL */ #ifndef DISABLE_BROWSER @@ -663,8 +666,13 @@ void shortcut_init(bool unjustify) #endif /* Translators: try to keep this string under 10 characters long */ - sc_init_one(&whereis_list, NANO_HISTORY_KEY, history_msg, - IFHELP(nano_editstr_msg, NANO_NO_KEY), NANO_NO_KEY, + sc_init_one(&whereis_list, NANO_PREVLINE_KEY, prevhistory_msg, + IFHELP(nano_prevhistory_msg, NANO_NO_KEY), NANO_NO_KEY, + NANO_NO_KEY, VIEW, NULL); + + /* Translators: try to keep this string under 10 characters long */ + sc_init_one(&whereis_list, NANO_NEXTLINE_KEY, nexthistory_msg, + IFHELP(nano_nexthistory_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL); /* Translators: try to keep this string under 10 characters long */ @@ -728,8 +736,12 @@ void shortcut_init(bool unjustify) NANO_NO_KEY, VIEW, NULL); #endif - sc_init_one(&replace_list, NANO_HISTORY_KEY, history_msg, - IFHELP(nano_editstr_msg, NANO_NO_KEY), NANO_NO_KEY, + sc_init_one(&replace_list, NANO_PREVLINE_KEY, prevhistory_msg, + IFHELP(nano_prevhistory_msg, NANO_NO_KEY), NANO_NO_KEY, + NANO_NO_KEY, VIEW, NULL); + + sc_init_one(&replace_list, NANO_NEXTLINE_KEY, nexthistory_msg, + IFHELP(nano_nexthistory_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL); #endif /* !NANO_SMALL */ @@ -758,8 +770,12 @@ void shortcut_init(bool unjustify) NANO_NO_KEY, VIEW, do_last_line); #ifndef NANO_SMALL - sc_init_one(&replace_list_2, NANO_HISTORY_KEY, history_msg, - IFHELP(nano_editstr_msg, NANO_NO_KEY), NANO_NO_KEY, + sc_init_one(&replace_list_2, NANO_PREVLINE_KEY, prevhistory_msg, + IFHELP(nano_prevhistory_msg, NANO_NO_KEY), NANO_NO_KEY, + NANO_NO_KEY, VIEW, NULL); + + sc_init_one(&replace_list_2, NANO_NEXTLINE_KEY, nexthistory_msg, + IFHELP(nano_nexthistory_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL); #endif diff --git a/src/nano.c b/src/nano.c index f27fbefe..93f8db00 100644 --- a/src/nano.c +++ b/src/nano.c @@ -472,15 +472,8 @@ void help_init(void) /* Control key. */ if (s->ctrlval != NANO_NO_KEY) { entries++; -#ifndef NANO_SMALL - if (s->ctrlval == NANO_HISTORY_KEY) { - char *up_ptr = display_string(_("Up"), 0, 7, FALSE); - - ptr += sprintf(ptr, "%s", up_ptr); - - free(up_ptr); - } else -#endif + /* Yucky sentinel values that we can't handle a better + * way. */ if (s->ctrlval == NANO_CONTROL_SPACE) { char *space_ptr = display_string(_("Space"), 0, 6, FALSE); @@ -490,6 +483,7 @@ void help_init(void) free(space_ptr); } else if (s->ctrlval == NANO_CONTROL_8) ptr += sprintf(ptr, "^?"); + /* Normal values. */ else ptr += sprintf(ptr, "^%c", s->ctrlval + 64); *(ptr++) = '\t'; diff --git a/src/nano.h b/src/nano.h index 8fe4dcdd..864eb5b5 100644 --- a/src/nano.h +++ b/src/nano.h @@ -395,9 +395,6 @@ typedef struct historyheadtype { /* No key at all. */ #define NANO_NO_KEY -2 -/* Special sentinel key used for search/replace history. */ -#define NANO_HISTORY_KEY -3 - /* Normal keys. */ #define NANO_XON_KEY NANO_CONTROL_Q #define NANO_XOFF_KEY NANO_CONTROL_S diff --git a/src/search.c b/src/search.c index 4288f789..696e2349 100644 --- a/src/search.c +++ b/src/search.c @@ -1215,7 +1215,8 @@ char *get_history_newer(historyheadtype *h) { if (h->current->prev != NULL) { h->current = h->current->prev; - return h->current->data; + if (h->current->prev != NULL) + return h->current->data; } return NULL; } diff --git a/src/winio.c b/src/winio.c index e48c393d..6493e5c9 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2495,7 +2495,7 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *def, /* If we have a shortcut with an associated function, break out * if we're finished after running or trying to run the * function. */ - if (finished) + if (ran_func && finished) break; assert(statusbar_x <= answer_len && answer_len == strlen(answer)); @@ -2537,13 +2537,13 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *def, case NANO_PREVLINE_KEY: #ifndef NANO_SMALL if (history_list != NULL) { - /* If currentbuf is NULL, use_cb is 1, and + /* If currentbuf is NULL, or if use_cb is 1 and * currentbuf is different from answer, it means * that we're scrolling up at the top of the search * history, and we need to save the current answer * in currentbuf. Do this and reset use_cb to 0. */ - if (currentbuf != NULL && use_cb == 1 && - strcmp(currentbuf, answer) != 0) { + if (currentbuf == NULL || (use_cb == 1 && + strcmp(currentbuf, answer) != 0)) { currentbuf = mallocstrcpy(currentbuf, answer); use_cb = 0; } @@ -2949,30 +2949,21 @@ void bottombars(const shortcut *s) for (i = 0; i < slen; i++, s = s->next) { const char *keystr; - - /* Yucky sentinel values we can't handle a better way. */ -#ifndef NANO_SMALL - if (s->ctrlval == NANO_HISTORY_KEY) - keystr = _("Up"); - else { -#endif - char foo[4] = ""; - - if (s->ctrlval == NANO_CONTROL_SPACE) - strcpy(foo, "^ "); - else if (s->ctrlval == NANO_CONTROL_8) - strcpy(foo, "^?"); - /* Normal values. Assume that the shortcut has an - * equivalent control key, meta key sequence, or both. */ - else if (s->ctrlval != NANO_NO_KEY) - sprintf(foo, "^%c", s->ctrlval + 64); - else if (s->metaval != NANO_NO_KEY) - sprintf(foo, "M-%c", toupper(s->metaval)); - - keystr = foo; -#ifndef NANO_SMALL - } -#endif + char foo[4] = ""; + + /* Yucky sentinel values that we can't handle a better way. */ + if (s->ctrlval == NANO_CONTROL_SPACE) + strcpy(foo, "^ "); + else if (s->ctrlval == NANO_CONTROL_8) + strcpy(foo, "^?"); + /* Normal values. Assume that the shortcut has an equivalent + * control key, meta key sequence, or both. */ + else if (s->ctrlval != NANO_NO_KEY) + sprintf(foo, "^%c", s->ctrlval + 64); + else if (s->metaval != NANO_NO_KEY) + sprintf(foo, "M-%c", toupper(s->metaval)); + + keystr = foo; wmove(bottomwin, 1 + i % 2, (i / 2) * colwidth); onekey(keystr, s->desc, colwidth); -- 2.39.5