z: update to latest version (e77e938)

Closes #8145

Co-authored-by: GHPS <GHPS@users.noreply.github.com>
This commit is contained in:
Marc Cornellà 2019-09-13 11:41:13 +02:00
parent 093b56a7d7
commit 576e0992ca

View file

@ -89,7 +89,7 @@ _z() {
if [ $? -ne 0 -a -f "$datafile" ]; then if [ $? -ne 0 -a -f "$datafile" ]; then
env rm -f "$tempfile" env rm -f "$tempfile"
else else
[ "$_Z_OWNER" ] && chown $_Z_OWNER:$(id -ng $_Z_OWNER) "$tempfile" [ "$_Z_OWNER" ] && chown $_Z_OWNER:"$(id -ng $_Z_OWNER)" "$tempfile"
env mv -f "$tempfile" "$datafile" || env rm -f "$tempfile" env mv -f "$tempfile" "$datafile" || env rm -f "$tempfile"
fi fi
@ -110,20 +110,21 @@ _z() {
else else
# list/go # list/go
local echo fnd last list opt typ
while [ "$1" ]; do case "$1" in while [ "$1" ]; do case "$1" in
--) while [ "$1" ]; do shift; local fnd="$fnd${fnd:+ }$1";done;; --) while [ "$1" ]; do shift; fnd="$fnd${fnd:+ }$1";done;;
-*) local opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in -*) opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in
c) local fnd="^$PWD $fnd";; c) fnd="^$PWD $fnd";;
e) local echo=1;; e) echo=1;;
h) echo "${_Z_CMD:-z} [-cehlrtx] args" >&2; return;; h) echo "${_Z_CMD:-z} [-cehlrtx] args" >&2; return;;
l) local list=1;; l) list=1;;
r) local typ="rank";; r) typ="rank";;
t) local typ="recent";; t) typ="recent";;
x) sed -i -e "\:^${PWD}|.*:d" "$datafile";; x) sed -i -e "\:^${PWD}|.*:d" "$datafile";;
esac; opt=${opt:1}; done;; esac; opt=${opt:1}; done;;
*) local fnd="$fnd${fnd:+ }$1";; *) fnd="$fnd${fnd:+ }$1";;
esac; local last=$1; [ "$#" -gt 0 ] && shift; done esac; last=$1; [ "$#" -gt 0 ] && shift; done
[ "$fnd" -a "$fnd" != "^$PWD " ] || local list=1 [ "$fnd" -a "$fnd" != "^$PWD " ] || list=1
# if we hit enter on a completion just go there # if we hit enter on a completion just go there
case "$last" in case "$last" in
@ -147,7 +148,7 @@ _z() {
function output(matches, best_match, common) { function output(matches, best_match, common) {
# list or return the desired directory # list or return the desired directory
if( list ) { if( list ) {
cmd = "sort -n >&2" cmd = "sort -g >&2"
for( x in matches ) { for( x in matches ) {
if( matches[x] ) { if( matches[x] ) {
printf "%-10s %s\n", matches[x], x | cmd printf "%-10s %s\n", matches[x], x | cmd