This is because we can't be sure which arguments require a json file
and which don't, so the `else' statement will always be difficult to
check for correctness.
This way the user can keep their preferred pushd syntax while enabling
us to use a standard syntax in our defined functions.
To explain further, without a clear value on the PUSHD_MINUS option, we
could be changing the +1/-0 values all we want, that some user would
find that it didn't work for him.
We have two options, then:
- Setting a particular value, which was my first approach.
- Using `emulate -L zsh` to ensure all options defined in the function's
body won't be passed along to the main zsh instance.
For more info see:
http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html#index-emulate
This change follows this proposed behaviour:
Ctrl+Shift+Left: move to last visited directory
Ctrl+Shift+Right: move to next visited directory
an alternative behaviour would be:
Ctrl+Shift+Left: move directory to the left in `dirs` output
Ctrl+Shift+Right: move directory to the right in `dirs` output
It also introduces `setopt nopushdminus` as a way to standardise
pushd syntax. It's value wasn't clear before, which has been the
cause of so many pull requests regarding this plugin not working
in some environments.
In the old version, the function returned true (0) if the cache file
was newer than the Cakefile, which was *always* unless the Cakefile
had been updated. Therefore we generated the file every time unless
the Cakefile was updated, which was precisely when we needed to
regenerate the cache file.
Now it generates the cache file only when the Cakefile has been
updated.
Commit 81004dfaba reverted the change
in 9b811fb625 when editing the merge
conflict from #2928.
This commit fixes that so that we don't make the same mistake again.
First seen in http://git.io/Cdaj5Q
This commit completes previous efforts and standardizes both curl commands
into using silent mode and following redirects in case the URL changes
again in the future.
When autocompleting from `pass <TAB>', sometimes the following errors
appear:
_values:compvalues:10: not enough arguments
find: `/home/user/.password-store': No such file or directory
_values:compvalues:10: not enough arguments
find: `/home/user/.password-store': No such file or directory
The `_values' error happens when there is no password-store folder *or*
there are no passwords in pass; the `find' error only when there is no
password-store folder.
We can trace it back to line 108, which contains the only `_values'
statement that is executed when we autocomplete from pass. We confirm
this by following the trail of execution, which is
_pass -> _pass_cmd_show -> _pass_complete_entries ->
-> _pass_complete_entries_helper
If we try running the command inside `$()' on line 104, we see that it
returns nothing and the output is blank. This means that `_values' only
receives 1 of its 2 mandatory parameters, therefore the above error is
triggered (not enough arguments).
That is unless we don't have a password-store folder, in which case the
`find: [...] no such file or directory' error is *also* triggered.
We solve the first error by supplying a default value of "" if the
command outputs nothing, using the zsh construct ${var:-else}.
We solve the second error by redirecting the find command's stderr output
to /dev/null, so the error is effectively suppressed.
* * * *
This patch also fixes the first tab completion, which currently only
loads the completion function definition.
We do this by adding a `_pass' statement at the end of the file, which
runs the `_pass' completion function after loading its definition.
This is the standard way an autoloaded function works; for other examples
look at zsh's official completion files.
Fixes formatting on some rare cases when a percent ends up
in the $CMD variable, like these below:
- When assigning a variable, $CMD ends up with the second parameter;
in this case, $CMD will contain '+%s%N', messing with the syntax:
$ a=`date +%s%N`
- A function (or command in general) that contains a percent symbol:
$ to\%() { echo $(( $1 * 100 / $3))\% } # $CMD=to%()
$ to% 2 of 10 # $CMD=to%