076d692dac8b6969039ec0c6c1b54462f8ba59e5

Author
御风 <1795771535y@gmail.com>
Committer
GitHub <noreply@github.com>
Date

Message

fix(per-directory-history): prevent fc -p from clearing preexec (#13815)

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>

Diff

 1diff --git a/plugins/per-directory-history/per-directory-history.zsh b/plugins/per-directory-history/per-directory-history.zsh
 2index 926373ae0fe284af660269b7d3754f81d9bfafb0..bdcf949a33f7dc6a1cd8050c213a697108b75cfa 100644
 3--- a/plugins/per-directory-history/per-directory-history.zsh
 4+++ b/plugins/per-directory-history/per-directory-history.zsh
 5@@ -91,13 +91,14 @@ bindkey -M vicmd $PER_DIRECTORY_HISTORY_TOGGLE per-directory-history-toggle-hist
 6 #-------------------------------------------------------------------------------
 7 
 8 _per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
 9+_per_directory_history_global="$HISTFILE"
10 
11 function _per-directory-history-change-directory() {
12   _per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
13   mkdir -p ${_per_directory_history_directory:h}
14   if [[ $_per_directory_history_is_global == false ]]; then
15     #save to the global history
16-    fc -AI $HISTFILE
17+    fc -AI "$_per_directory_history_global"
18     #save history to previous file
19     local prev="$HISTORY_BASE${OLDPWD:A}/history"
20     mkdir -p ${prev:h}
21@@ -125,10 +126,9 @@ function _per-directory-history-addhistory() {
22       if [[ -o share_history ]] || \
23          [[ -o inc_append_history ]] || \
24          [[ -o inc_append_history_time ]]; then
25-          fc -AI $HISTFILE
26+          fc -AI "$_per_directory_history_global"
27           fc -AI $_per_directory_history_directory
28       fi
29-      fc -p $_per_directory_history_directory
30   fi
31 }
32 
33@@ -147,12 +147,13 @@ function _per-directory-history-precmd() {
34 }
35 
36 function _per-directory-history-set-directory-history() {
37-  fc -AI $HISTFILE
38+  fc -AI "$_per_directory_history_global"
39   local original_histsize=$HISTSIZE
40   HISTSIZE=0
41   HISTSIZE=$original_histsize
42   if [[ -e "$_per_directory_history_directory" ]]; then
43     fc -R "$_per_directory_history_directory"
44+    fc -p "$_per_directory_history_directory"
45   fi
46 }
47 
48@@ -161,8 +162,9 @@ function _per-directory-history-set-global-history() {
49   local original_histsize=$HISTSIZE
50   HISTSIZE=0
51   HISTSIZE=$original_histsize
52-  if [[ -e "$HISTFILE" ]]; then
53-    fc -R "$HISTFILE"
54+  if [[ -e "$_per_directory_history_global" ]]; then
55+    fc -R "$_per_directory_history_global"
56+    fc -p "$_per_directory_history_global"
57   fi
58 }
59