From af2df15ae58c9f242c459bfa097ad7d1b343ae71 Mon Sep 17 00:00:00 2001 From: selurvedu <11262062+selurvedu@users.noreply.github.com> Date: Sat, 23 Jul 2022 01:54:50 +0000 Subject: [PATCH] Fix #348, fix #386 --- src/hstr.c | 8 +++++--- src/hstr_history.c | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/hstr.c b/src/hstr.c index 8183031b..736d069d 100644 --- a/src/hstr.c +++ b/src/hstr.c @@ -338,8 +338,8 @@ void hstr_exit(int status) void signal_callback_handler_ctrl_c(int signum) { if(signum==SIGINT) { - history_mgmt_flush(); hstr_curses_stop(false); + history_mgmt_flush(); hstr_exit(signum); } } @@ -1605,7 +1605,6 @@ void loop_to_select(void) case K_CTRL_G: case K_ESC: result=NULL; - history_mgmt_clear_dirty(); done=TRUE; break; case K_CTRL_X: @@ -1636,6 +1635,9 @@ void loop_to_select(void) } } hstr_curses_stop(hstr->keepPage); + if(deletedOccurences > 0) { + history_mgmt_flush(); + } if(result!=NULL) { if(fixCommand) { @@ -1683,7 +1685,6 @@ void hstr_interactive(void) } else { stdout_history_and_return(); } - history_mgmt_flush(); } // else (no history) handled in create() method hstr_exit(EXIT_SUCCESS); @@ -1703,6 +1704,7 @@ void hstr_getopt(int argc, char **argv) break; case 'k': if(history_mgmt_remove_last_history_entry(hstr->verboseKill)) { + history_mgmt_flush(); hstr_exit(EXIT_SUCCESS); break; } else { diff --git a/src/hstr_history.c b/src/hstr_history.c index f8b8f698..c6363cb9 100644 --- a/src/hstr_history.c +++ b/src/hstr_history.c @@ -364,6 +364,7 @@ bool history_mgmt_remove_last_history_entry(bool verbose) free(historyState); free(historyFile); + dirty=true; return true; } @@ -406,6 +407,6 @@ int history_mgmt_remove_from_ranked(char *cmd, HistoryItems *history) { void history_mgmt_flush(void) { if(dirty && !is_zsh_parent_shell()) { - fill_terminal_input("history -r\n", false); + fill_terminal_input(" \\history -r\n", false); } }