case NANO_PREVLINE_KEY:
#ifndef NANO_SMALL
if (history_list != NULL) {
- /* If currentbuf is NULL, or if use_cb is 1,
- * currentbuf isn't NULL, 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 &&
+ /* If currentbuf is NULL, 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)) {
currentbuf = mallocstrcpy(currentbuf, answer);
use_cb = 0;
/* If currentbuf isn't NULL, use_cb is 2, and
* currentbuf is different from answer, it means
* that we're scrolling up at the bottom of the
- * search history, and we need to make the string in
- * currentbuf the current answer. Do this, blow
+ * search history, and we need to restore the
+ * current answer from currentbuf. Do this, blow
* away currentbuf since we don't need it anymore,
* and reset use_cb to 0. */
if (currentbuf != NULL && use_cb == 2 &&
strcmp(currentbuf, answer) != 0) {
answer = mallocstrcpy(answer, currentbuf);
+ answer_len = strlen(answer);
free(currentbuf);
currentbuf = NULL;
- answer_len = strlen(answer);
use_cb = 0;
/* Otherwise, get the older search from the history
- * list and save it in answer. If there is no older
- * search, blank out answer. */
+ * list and save it in answer. */
} else if ((history =
get_history_older(history_list)) != NULL) {
answer = mallocstrcpy(answer, history);
answer_len = strlen(history);
- } else {
- answer = mallocstrcpy(answer, "");
- answer_len = 0;
}
+
statusbar_x = answer_len;
}
#endif
get_history_newer(history_list)) != NULL) {
answer = mallocstrcpy(answer, history);
answer_len = strlen(history);
+
/* If currentbuf isn't NULL and use_cb isn't 2, it
* means that we're scrolling down at the bottom of
- * the search history and we need to make the string
- * in currentbuf the current answer; do this, blow
+ * the search history and we need to restore the
+ * current answer from currentbuf. Do this, blow
* away currentbuf since we don't need it anymore,
* and set use_cb to 1. */
} else if (currentbuf != NULL && use_cb != 2) {
free(currentbuf);
currentbuf = NULL;
use_cb = 1;
+
/* Otherwise, if currentbuf is NULL and use_cb isn't
* 2, it means that we're scrolling down at the
- * bottom of the search history and the current
- * answer (if it's not blank) needs to be saved in
- * currentbuf. Do this, blank out answer (if
- * necessary), and set use_cb to 2. */
+ * bottom of the search history and we need to save
+ * the current answer (if it's not blank) in
+ * currentbuf. Do this, blank out answer, and set
+ * use_cb to 2. */
} else if (use_cb != 2) {
if (answer[0] != '\0') {
currentbuf = mallocstrcpy(currentbuf,
answer_len = 0;
use_cb = 2;
}
+
statusbar_x = answer_len;
}
#endif