fix(per-directory-history): preserve global history path

This commit is contained in:
Carlo Sala 2026-08-05 13:09:28 +02:00
commit dc1cf09a47
No known key found for this signature in database
GPG key ID: DA6FB450C1A4FE9A

View file

@ -91,13 +91,14 @@ bindkey -M vicmd $PER_DIRECTORY_HISTORY_TOGGLE per-directory-history-toggle-hist
#-------------------------------------------------------------------------------
_per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
_per_directory_history_global="$HISTFILE"
function _per-directory-history-change-directory() {
_per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
mkdir -p ${_per_directory_history_directory:h}
if [[ $_per_directory_history_is_global == false ]]; then
#save to the global history
fc -AI $HISTFILE
fc -AI "$_per_directory_history_global"
#save history to previous file
local prev="$HISTORY_BASE${OLDPWD:A}/history"
mkdir -p ${prev:h}
@ -125,7 +126,7 @@ function _per-directory-history-addhistory() {
if [[ -o share_history ]] || \
[[ -o inc_append_history ]] || \
[[ -o inc_append_history_time ]]; then
fc -AI $HISTFILE
fc -AI "$_per_directory_history_global"
fc -AI $_per_directory_history_directory
fi
fi
@ -146,7 +147,7 @@ function _per-directory-history-precmd() {
}
function _per-directory-history-set-directory-history() {
fc -AI $HISTFILE
fc -AI "$_per_directory_history_global"
local original_histsize=$HISTSIZE
HISTSIZE=0
HISTSIZE=$original_histsize
@ -161,9 +162,9 @@ function _per-directory-history-set-global-history() {
local original_histsize=$HISTSIZE
HISTSIZE=0
HISTSIZE=$original_histsize
if [[ -e "$HISTFILE" ]]; then
fc -R "$HISTFILE"
fc -p "$HISTFILE"
if [[ -e "$_per_directory_history_global" ]]; then
fc -R "$_per_directory_history_global"
fc -p "$_per_directory_history_global"
fi
}