Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Seeking feedback word breaks and aliasing of tokens



Following a discussion a few weeks ago, a new feature was added to the
"alias" builtin, namely the ability to create aliases for tokens that
are part of the basic pipeline syntax.  The example that led to this
feature was similar to the following:

% alias -g '&&'='; (( $? == 0 )) && '
% && print this is OK
this is OK
% && print and so is this && print also this
and so is this
also this
% 

This feature has already been adopted, with the restrictions (a) that it
applies only to global aliases [-g] and (b) that it is disabled when the
POSIX_ALIASES option is set.

There is an additional effect of this feature, illustrated by:

% alias -g '||'='OR'
% print no||yes
no ORyes
% 

Note that a word break is introduced to the left of the expansion (because
of '||'s original meaning as shell syntax) even though there are no spaces
around the original usage; but no word break occurs to the right of the
expansion.  The proposal is for word breaks on both sides of the expansion
(as is implied by recognition of a separately aliasable word).

This also affects the '{' reserved word, so instead of this:

% alias '{'=echo
% { OK
OK
% {not OK
zsh: command not found: echonot
% 

We would have this:

% {now OK
now OK
% 

(Note that '{' doesn't require "alias -g" because '{' is a reserved word.)

Comments welcome.



Messages sorted by: Reverse Date, Date, Thread, Author