diff options
author | Joseph Bisch <joseph.bisch@gmail.com> | 2017-04-06 20:27:39 -0400 |
---|---|---|
committer | Joseph Bisch <joseph.bisch@gmail.com> | 2017-04-06 20:27:39 -0400 |
commit | 7c86575b02d4f80539bcd2da3bef8195b963fa92 (patch) | |
tree | fc32f7f1673d5dd9a1c8d666ba8c6117ba9739e1 | |
parent | 3f69e718044ac87eeb5144be6113c2be33261cd0 (diff) | |
download | irssi-7c86575b02d4f80539bcd2da3bef8195b963fa92.zip |
Don't allow command history to wrap around
This changes the behavior of the command history to avoid wrapping back
to the bottom once the top of the history is reached.
-rw-r--r-- | src/fe-common/core/command-history.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/fe-common/core/command-history.c b/src/fe-common/core/command-history.c index 405700e5..f957d385 100644 --- a/src/fe-common/core/command-history.c +++ b/src/fe-common/core/command-history.c @@ -113,11 +113,9 @@ const char *command_history_prev(WINDOW_REC *window, const char *text) pos = history->pos; if (pos != NULL) { - history->pos = history->pos->prev; - if (history->pos == NULL) - history->over_counter++; - } else if (history->lines == 0) { - history->over_counter++; + /* don't go past the first entry (no wrap around) */ + if (history->pos->prev != NULL) + history->pos = history->pos->prev; } else { history->pos = g_list_last(history->list); } @@ -128,7 +126,7 @@ const char *command_history_prev(WINDOW_REC *window, const char *text) command_history_add(history, text); } - return history->pos == NULL ? "" : history->pos->data; + return history->pos == NULL ? text : history->pos->data; } const char *command_history_next(WINDOW_REC *window, const char *text) @@ -141,10 +139,6 @@ const char *command_history_next(WINDOW_REC *window, const char *text) if (pos != NULL) history->pos = history->pos->next; - else if (history->over_counter > 0) { - history->over_counter--; - history->pos = history->list; - } if (*text != '\0' && (pos == NULL || g_strcmp0(pos->data, text) != 0)) { |