568584a9f5f42d51a08de8b71347f6463b9211e6
- Author
- Marc Cornellà <hello@mcornella.com>
- Committer
- Marc Cornellà <hello@mcornella.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/plugins/per-directory-history/per-directory-history.zsh b/plugins/per-directory-history/per-directory-history.zsh
2index 41de2f91dc5accd12f3dac24cc80a13c58e74583..7cd673cdbb712a21219d3277cd7b4ed6ccc51134 100644
3--- a/plugins/per-directory-history/per-directory-history.zsh
4+++ b/plugins/per-directory-history/per-directory-history.zsh
5@@ -32,7 +32,7 @@
6 #
7 # Copyright (c) 2014 Jim Hester
8 #
9-# This software is provided 'as-is', without any express or implied warranty.
10+# This software is provided 'as-is', without any express or implied warranty.
11 # In no event will the authors be held liable for any damages arising from the
12 # use of this software.
13 #
14@@ -57,6 +57,7 @@
15 #-------------------------------------------------------------------------------
16
17 [[ -z $HISTORY_BASE ]] && HISTORY_BASE="$HOME/.directory_history"
18+[[ -z $HISTORY_START_WITH_GLOBAL ]] && HISTORY_START_WITH_GLOBAL=false
19 [[ -z $PER_DIRECTORY_HISTORY_TOGGLE ]] && PER_DIRECTORY_HISTORY_TOGGLE='^G'
20
21 #-------------------------------------------------------------------------------
22@@ -66,9 +67,11 @@
23 function per-directory-history-toggle-history() {
24 if [[ $_per_directory_history_is_global == true ]]; then
25 _per-directory-history-set-directory-history
26+ _per_directory_history_is_global=false
27 print -n "\nusing local history"
28 else
29 _per-directory-history-set-global-history
30+ _per_directory_history_is_global=true
31 print -n "\nusing global history"
32 fi
33 zle .push-line
34@@ -114,43 +117,58 @@ function _per-directory-history-addhistory() {
35 true
36 else
37 print -Sr -- "${1%%$'\n'}"
38+ # instantly write history if set options require it.
39+ if [[ -o share_history ]] || \
40+ [[ -o inc_append_history ]] || \
41+ [[ -o inc_append_history_time ]]; then
42+ fc -AI $HISTFILE
43+ fc -AI $_per_directory_history_directory
44+ fi
45 fc -p $_per_directory_history_directory
46 fi
47 }
48
49+function _per-directory-history-precmd() {
50+ if [[ $_per_directory_history_initialized == false ]]; then
51+ _per_directory_history_initialized=true
52
53-function _per-directory-history-set-directory-history() {
54- if [[ $_per_directory_history_is_global == true ]]; then
55- fc -AI $HISTFILE
56- local original_histsize=$HISTSIZE
57- HISTSIZE=0
58- HISTSIZE=$original_histsize
59- if [[ -e "$_per_directory_history_directory" ]]; then
60- fc -R "$_per_directory_history_directory"
61+ if [[ $HISTORY_START_WITH_GLOBAL == true ]]; then
62+ _per-directory-history-set-global-history
63+ _per_directory_history_is_global=true
64+ else
65+ _per-directory-history-set-directory-history
66+ _per_directory_history_is_global=false
67 fi
68 fi
69- _per_directory_history_is_global=false
70 }
71+
72+function _per-directory-history-set-directory-history() {
73+ fc -AI $HISTFILE
74+ local original_histsize=$HISTSIZE
75+ HISTSIZE=0
76+ HISTSIZE=$original_histsize
77+ if [[ -e "$_per_directory_history_directory" ]]; then
78+ fc -R "$_per_directory_history_directory"
79+ fi
80+}
81+
82 function _per-directory-history-set-global-history() {
83- if [[ $_per_directory_history_is_global == false ]]; then
84- fc -AI $_per_directory_history_directory
85- local original_histsize=$HISTSIZE
86- HISTSIZE=0
87- HISTSIZE=$original_histsize
88- if [[ -e "$HISTFILE" ]]; then
89- fc -R "$HISTFILE"
90- fi
91+ fc -AI $_per_directory_history_directory
92+ local original_histsize=$HISTSIZE
93+ HISTSIZE=0
94+ HISTSIZE=$original_histsize
95+ if [[ -e "$HISTFILE" ]]; then
96+ fc -R "$HISTFILE"
97 fi
98- _per_directory_history_is_global=true
99 }
100
101+mkdir -p ${_per_directory_history_directory:h}
102
103 #add functions to the exec list for chpwd and zshaddhistory
104 autoload -U add-zsh-hook