summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Cornellà <marc@mcornella.com>2024-06-12 11:04:05 +0200
committerMarc Cornellà <marc@mcornella.com>2024-06-12 11:04:05 +0200
commit35a6725970167278254ab11a996bf04d2186b009 (patch)
treea5800bf33d532c5f2c5b0a95bf7f31e4a26d5bf0
parent59e8e028e179fc126d46254900946953072048e7 (diff)
downloadzsh-35a6725970167278254ab11a996bf04d2186b009.tar.gz
zsh-35a6725970167278254ab11a996bf04d2186b009.tar.bz2
zsh-35a6725970167278254ab11a996bf04d2186b009.zip
fix(history): add warning before deleting command history in `history -c` (#12472)
-rw-r--r--lib/history.zsh14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/history.zsh b/lib/history.zsh
index a8431fd5a..b13e1807f 100644
--- a/lib/history.zsh
+++ b/lib/history.zsh
@@ -1,14 +1,22 @@
## History wrapper
function omz_history {
# parse arguments and remove from $@
- local clear list stamp
+ local clear list stamp REPLY
zparseopts -E -D c=clear l=list f=stamp E=stamp i=stamp t:=stamp
if [[ -n "$clear" ]]; then
# if -c provided, clobber the history file
- echo -n >| "$HISTFILE"
+
+ # confirm action before deleting history
+ print -nu2 "This action will irreversibly delete your command history. Are you sure? [y/N] "
+ builtin read -k1
+ [[ "$REPLY" = $'\n' ]] || print -u2
+ [[ "$REPLY" != ([nN]|$'\n') ]] || return 0
+
+ print -nu2 >| "$HISTFILE"
fc -p "$HISTFILE"
- echo >&2 History file deleted.
+
+ print -u2 History file deleted.
elif [[ $# -eq 0 ]]; then
# if no arguments provided, show full history starting from 1
builtin fc $stamp -l 1