Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [RFC][PATCH] Add zrestart()
> Subject: [PATCH] Add zrestart()
Nitpick, but the parentheses are wrong. They imply zrestart() is a C
function, which it isn't.
> +++ b/Doc/Zsh/contrib.yo
> @@ -4649,6 +4649,11 @@ See `Recompiling Functions'
> ifzman(above)\
> ifnzman((noderef(Utilities))).
> )
> +findex(zrestart)
> +item(tt(zrestart))(
> +This function tests whether the shell is able to restart without error and, if
> +so, restarts the shell.
> +)
> +++ b/Functions/Misc/zrestart
> @@ -0,0 +1,42 @@
> +#
> +# Restarts the shell if and only if it can restart without error.
> +#
> +
> +emulate -LR zsh
> +{
> + # Some users export $ZDOTDIR, which can mess things up.
> + local zdotdir=$ZDOTDIR
> + unset ZDOTDIR
The comment implies those users are doing something unusual, which isn't
the case. Exporting ZDOTDIR is normal.
More importantly, I don't see any reason to munge $ZDOTDIR in the first
place. It amounts to second-guessing the user.
> + print 'Validating...'
Error and progress messages should name their originator.
> + # Try if the shell can start up without errors. Passing an empty command
> + # ensures that the subshell exits immediately after executing all dotfiles.
> + # We suppress standard out, since we're interested in standard error only.
> + setopt multios
This option will already be on, and in any case isn't required for the
next line.
> + local err="$(zsh --interactive --monitor --zle -c '' 2>&1 > /dev/null)"
This doesn't necessarily restart the _same_ zsh, if there's more than
one installed.
Also, I think it's quite a stretch to describe this line as "_tests_
whether the shell is able to restart". This line executes a whole bunch
of code you have no control over. I don't think that's an acceptable
approach.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author