Cleanup temporary $result variables

After we call `$(zoxide query $input)`, we store it in `$result` in all
shells. This `result` environment variables survives after the call.

To fix this undesirable behavior, we rename the temporary variable to
something less ubiquitous (`_ZO_RESULT`,) as well as unset it after the
`cd`/`echo` has been done.

For the record, I noticed this because I use `%~` in my zsh `PS1`, which
has a tendency to re-use set environment variables in the path, ie:

```
pete:~$ z code/misc/rustyline
pete:~/code/misc/rustyline$ z
pete:~$ z rusty
pete:~result$ _
```

As you can see, on the second cd, the prompt path is `result`. This
hides the prompt information. I have not tested the fish and powershell
implementations, as I do not have the capabilities to do so.
This commit is contained in:
Louis Feuvrier 2020-06-19 12:55:59 -07:00
parent 5864cd5564
commit 29d5926f3a
3 changed files with 15 additions and 14 deletions

View File

@ -41,13 +41,13 @@ function {}
else else
# FIXME: use string-collect from fish 3.1.0 once it has wider adoption # FIXME: use string-collect from fish 3.1.0 once it has wider adoption
set -l IFS '' set -l IFS ''
set -l result (zoxide query $argv) set -l _zoxide_result (zoxide query $argv)
if test -d $result; and string length -q -- $result if test -d $_zoxide_result; and string length -q -- $_zoxide_result
_z_cd $result _z_cd $_zoxide_result
or return $status or return $status
else if test -n "$result" else if test -n "$_zoxide_result"
echo $result echo $_zoxide_result
end end
end end
end end

View File

@ -37,12 +37,13 @@ _z_cd() {{
return 1 return 1
fi fi
else else
result="$(zoxide query "$@")" || return "$?" _zoxide_result="$(zoxide query "$@")" || return "$?"
if [ -d "$result" ]; then if [ -d "$_zoxide_result" ]; then
_z_cd "$result" || return "$?" _z_cd "$_zoxide_result" || return "$?"
elif [ -n "$result" ]; then elif [ -n "$_zoxide_result" ]; then
echo "$result" echo "$_zoxide_result"
fi fi
unset _zoxide_result
fi fi
}} }}
"#, "#,

View File

@ -31,11 +31,11 @@ function {} {{
z_cd - z_cd -
}} }}
else {{ else {{
$result = zoxide query @args $_zoxide_result = zoxide query @args
if ($LASTEXITCODE -eq 0 -and $result -is [string] -and (Test-Path $result)) {{ if ($LASTEXITCODE -eq 0 -and $_zoxide_result -is [string] -and (Test-Path $_zoxide_result)) {{
z_cd $result z_cd $_zoxide_result
}} else {{ }} else {{
$result $_zoxide_result
}} }}
}} }}
}} }}