diff options
Diffstat (limited to 'Functions/Chpwd/chpwd_recent_add')
-rw-r--r-- | Functions/Chpwd/chpwd_recent_add | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Functions/Chpwd/chpwd_recent_add b/Functions/Chpwd/chpwd_recent_add new file mode 100644 index 000000000..49ec8d1c6 --- /dev/null +++ b/Functions/Chpwd/chpwd_recent_add @@ -0,0 +1,24 @@ +# Helper for chpwd_recent_dirs. +# Add a directory to the reply array unless we're skipping it. +# If skipping, return non-zero status. + +local pat +local add=$1 +local -a prune patterns + +zstyle -a ':chpwd:' recent-dirs-prune prune +if (( ${#prune} )); then + patterns=(${${prune:#^pattern:*}##pattern:}) +fi + +for pat in $patterns; do + if [[ $add =~ ${~pat} ]]; then + return 1 + fi +done + +if [[ ${prune[(I)parent]} -ne 0 && $add = $reply[1]/* ]]; then + # replace + reply=($reply[2,-1]) +fi +reply=($add $reply) |