make sure that the current position in the history list is properly set

to the bottom if we cancel out of the prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2890 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
David Lawrence Ramsey 2005-07-18 07:48:50 +00:00
parent 24b1563068
commit 0e581b3524
4 changed files with 21 additions and 3 deletions

View File

@ -75,6 +75,9 @@ CVS code -
contains invalid multibyte characters interpreted as normal contains invalid multibyte characters interpreted as normal
characters. Changes to mbstrncasecmp(), mbstrcasestr(), characters. Changes to mbstrncasecmp(), mbstrcasestr(),
mbrevstrcasestr(), findnextstr(), and do_replace_loop(). (DLR) mbrevstrcasestr(), findnextstr(), and do_replace_loop(). (DLR)
- Make sure that the current position in the history list is
properly set to the bottom if we cancel out of the prompt.
New function history_reset(); changes to nanogetstr(). (DLR)
- files.c: - files.c:
open_file() open_file()
- Assert that filename isn't NULL, and don't do anything special - Assert that filename isn't NULL, and don't do anything special

View File

@ -517,6 +517,7 @@ void do_find_bracket(void);
bool history_has_changed(void); bool history_has_changed(void);
#endif #endif
void history_init(void); void history_init(void);
void history_reset(const filestruct *h);
filestruct *find_history(filestruct *h_start, filestruct *h_end, const filestruct *find_history(filestruct *h_start, filestruct *h_end, const
char *s, size_t len); char *s, size_t len);
void update_history(filestruct **h, const char *s); void update_history(filestruct **h, const char *s);

View File

@ -1185,6 +1185,15 @@ void history_init(void)
replacebot = replace_history; replacebot = replace_history;
} }
/* Set the current position in the history list h to the bottom. */
void history_reset(const filestruct *h)
{
if (h == search_history)
search_history = searchbot;
else if (h == replace_history)
replace_history = replacebot;
}
/* Return the first node containing the first len characters of the /* Return the first node containing the first len characters of the
* string s in the history list, starting at h_start and ending at * string s in the history list, starting at h_start and ending at
* h_end, or NULL if there isn't one. */ * h_end, or NULL if there isn't one. */

View File

@ -2642,9 +2642,14 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *curranswer,
} }
#ifndef NANO_SMALL #ifndef NANO_SMALL
/* Free magichistory if we need to. */ /* Set the current position in the history list to the bottom and
* free magichistory, if we need to. */
if (history_list != NULL) {
history_reset(*history_list);
if (magichistory != NULL) if (magichistory != NULL)
free(magichistory); free(magichistory);
}
#endif #endif
/* We finished putting in an answer or ran a normal shortcut's /* We finished putting in an answer or ran a normal shortcut's