diff options
author | John Hernandez <129467592+H3rnand3zzz@users.noreply.github.com> | 2023-04-14 20:57:20 +0200 |
---|---|---|
committer | John Hernandez <129467592+H3rnand3zzz@users.noreply.github.com> | 2023-04-17 11:29:47 +0200 |
commit | 59b99fece8ffa10c6a23b11111b7b49858ea9139 (patch) | |
tree | a68384faef2d8a28b46da63e4dfc8998b83eee1e /src/ui | |
parent | 1b679498b6818eb433cdaa1361f18e00ad1860fc (diff) | |
download | profani-tty-59b99fece8ffa10c6a23b11111b7b49858ea9139.tar.gz |
Don't add the same command twice to history
Expected behaviour When you type /command /command it should be just 1 entry in the history. Behaviour All the entries were saved. Behaviour is changed by introducing check. Before adding to history, entry now is compared to the last history entry.
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/inputwin.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index e59be8b5..453dfeac 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -568,12 +568,15 @@ _inp_rl_startup_hook(void) static void _inp_rl_linehandler(char* line) { - if (line && *line) { - if (!get_password) { - add_history(line); - } - } inp_line = line; + if (!line || !*line || get_password) { + return; + } + HISTORY_STATE* history = history_get_history_state(); + HIST_ENTRY* last = history->length > 0 ? history->entries[history->length - 1] : NULL; + if (last == NULL || strcmp(last->line, line) != 0) { + add_history(line); + } } static gboolean shift_tab = FALSE; |