first commit
This commit is contained in:
commit
0610f4aeab
130 changed files with 9897 additions and 0 deletions
52
fn/-z4h-update-dir-history
Normal file
52
fn/-z4h-update-dir-history
Normal file
|
@ -0,0 +1,52 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
if (( ${+_z4h_dir_hist_fd} )); then
|
||||
zle -F "$_z4h_dir_hist_fd"
|
||||
exec {_z4h_dir_hist_fd}>&-
|
||||
unset _z4h_dir_hist_fd
|
||||
fi
|
||||
|
||||
local dir
|
||||
zstyle -s :z4h:dir-history: cwd dir || dir=${(%):-%~}
|
||||
[[ -z $dir || $dir == ${_z4h_last_dir-} ]] && return
|
||||
|
||||
eval "$_z4h_opt"
|
||||
|
||||
typeset -g _z4h_last_dir=$dir
|
||||
[[ $dir != ('~'|/)* ]] && return
|
||||
|
||||
-z4h-read-dir-history || return
|
||||
|
||||
if (( ! $#dirstack && (DIRSTACKSIZE || ! $+DIRSTACKSIZE) )); then
|
||||
local d stack=()
|
||||
for d in $_z4h_dir_history; do
|
||||
{
|
||||
if [[ ($#stack -ne 0 || $d != $dir) ]]; then
|
||||
d=${~d}
|
||||
if [[ -d ${d::=${(g:oce:)d}} ]]; then
|
||||
stack+=($d)
|
||||
(( $+DIRSTACKSIZE && $#stack >= DIRSTACKSIZE - 1 )) && break
|
||||
fi
|
||||
fi
|
||||
} always {
|
||||
TRY_BLOCK_ERROR=0
|
||||
}
|
||||
done 2>/dev/null
|
||||
dirstack=($stack)
|
||||
fi
|
||||
|
||||
local -i pos=$_z4h_dir_history[(ie)$dir]
|
||||
_z4h_dir_history[pos]=()
|
||||
_z4h_dir_history[1,0]=($dir)
|
||||
|
||||
local max_size
|
||||
zstyle -s :z4h:dir-history: max-size max_size
|
||||
if [[ $max_size != -<-> ]]; then
|
||||
[[ $max_size == <-> ]] || max_size=10000
|
||||
local -i drop=$(($#_z4h_dir_history - max_size))
|
||||
if (( drop > 0 )); then
|
||||
_z4h_dir_history[-drop,-1]=()
|
||||
fi
|
||||
fi
|
||||
|
||||
-z4h-write-dir-history
|
Loading…
Add table
Add a link
Reference in a new issue