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