summaryrefslogtreecommitdiff
path: root/home/.oh-my-zsh/lib/history.zsh
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2025-07-13 06:42:05 +0200
committernavewindre <boneyaard@gmail.com>2025-07-13 06:42:05 +0200
commit02f14a9cb152561a5e44062aac79f3b700403b40 (patch)
tree2db8ebda3b7f6f8777783aeb5c60018e6e1359d8 /home/.oh-my-zsh/lib/history.zsh
parentcbbdeb2f6b40a102a829f0c47cff052937231f00 (diff)
omz
Diffstat (limited to 'home/.oh-my-zsh/lib/history.zsh')
-rw-r--r--home/.oh-my-zsh/lib/history.zsh48
1 files changed, 48 insertions, 0 deletions
diff --git a/home/.oh-my-zsh/lib/history.zsh b/home/.oh-my-zsh/lib/history.zsh
new file mode 100644
index 0000000..781a0e9
--- /dev/null
+++ b/home/.oh-my-zsh/lib/history.zsh
@@ -0,0 +1,48 @@
+## History wrapper
+function omz_history {
+ # parse arguments and remove from $@
+ 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
+
+ # confirm action before deleting history
+ print -nu2 "This action will irreversibly delete your command history. Are you sure? [y/N] "
+ builtin read -E
+ [[ "$REPLY" = [yY] ]] || return 0
+
+ print -nu2 >| "$HISTFILE"
+ fc -p "$HISTFILE"
+
+ print -u2 History file deleted.
+ elif [[ $# -eq 0 ]]; then
+ # if no arguments provided, show full history starting from 1
+ builtin fc "${stamp[@]}" -l 1
+ else
+ # otherwise, run `fc -l` with a custom format
+ builtin fc "${stamp[@]}" -l "$@"
+ fi
+}
+
+# Timestamp format
+case ${HIST_STAMPS-} in
+ "mm/dd/yyyy") alias history='omz_history -f' ;;
+ "dd.mm.yyyy") alias history='omz_history -E' ;;
+ "yyyy-mm-dd") alias history='omz_history -i' ;;
+ "") alias history='omz_history' ;;
+ *) alias history="omz_history -t '$HIST_STAMPS'" ;;
+esac
+
+## History file configuration
+[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
+[ "$HISTSIZE" -lt 50000 ] && HISTSIZE=50000
+[ "$SAVEHIST" -lt 10000 ] && SAVEHIST=10000
+
+## History command configuration
+setopt extended_history # record timestamp of command in HISTFILE
+setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
+setopt hist_ignore_dups # ignore duplicated commands history list
+setopt hist_ignore_space # ignore commands that start with space
+setopt hist_verify # show command with history expansion to user before running it
+setopt share_history # share command history data