diff --git a/README b/README index 6225b2d..ec5abc6 100644 --- a/README +++ b/README @@ -120,7 +120,8 @@ ENVIRONMENT FILES Data is stored in $HOME/.z. This can be overridden by setting the - $_Z_DATA environment variable. + $_Z_DATA environment variable. When initialized, z will raise an error + if this path is a directory, and not function correctly. A man page (z.1) is provided. diff --git a/z.1 b/z.1 index 2ba6de7..6525bf1 100644 --- a/z.1 +++ b/z.1 @@ -4,7 +4,7 @@ NAME z \- jump around .SH SYNOPSIS -z [\-chlrt] [regex1 regex2 ... regexn] +z [\-chlrtx] [regex1 regex2 ... regexn] .SH AVAILABILITY bash, zsh @@ -31,6 +31,9 @@ match by rank only .TP \fB\-t\fR match by recent access only +.TP +\fB\-x\fR +remove the current directory from the datafile .SH EXAMPLES .TP 14 \fBz foo\fR @@ -144,7 +147,8 @@ Directories must be full paths without trailing slashes. .SH FILES Data is stored in \fB$HOME/.z\fR. This can be overridden by setting the -\fB$_Z_DATA\fR environment variable. +\fB$_Z_DATA\fR environment variable. When initialized, \fBz\fR will raise an +error if this path is a directory, and not function correctly. .P A man page (\fBz.1\fR) is provided. .SH diff --git a/z.sh b/z.sh index e19845d..187284c 100644 --- a/z.sh +++ b/z.sh @@ -27,6 +27,10 @@ case $- in *) echo 'ERROR: z.sh is meant to be sourced, not directly executed.' esac +[ -d "${_Z_DATA:-$HOME/.z}" ] && { + echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory." +} + _z() { local datafile="${_Z_DATA:-$HOME/.z}" @@ -104,7 +108,8 @@ _z() { --) while [ "$1" ]; do shift; local fnd="$fnd $1";done;; -*) local opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in c) local fnd="^$PWD $fnd";; - h) echo "${_Z_CMD:-z} [-chlrt] args" >&2; return;; + h) echo "${_Z_CMD:-z} [-chlrtx] args" >&2; return;; + x) sed -i "\:^${PWD}|.*:d" "$datafile";; l) local list=1;; r) local typ="rank";; t) local typ="recent";;