diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Functions/Misc/regexp-replace | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index a86d11bea..6bf85e2f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2010-01-19 Peter Stephenson <pws@csr.com> + * unposted: Doc/Zsh/contrib.yo, Functions/Misc/regexp-replace: + return status 1 if no replacement. + * unposted: Doc/Zsh/cond.yo: avoid Yodl error. * Frank: 27606: Completion/Unix/Command/_tmux: tmux -d. @@ -12606,5 +12609,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.4866 $ +* $Revision: 1.4867 $ ***************************************************** diff --git a/Functions/Misc/regexp-replace b/Functions/Misc/regexp-replace index 5aaedafba..dec105524 100644 --- a/Functions/Misc/regexp-replace +++ b/Functions/Misc/regexp-replace @@ -19,13 +19,19 @@ emulate -L zsh 4=${(P)1} # $5 is the final string 5= +# 6 indicates if we made a change +6= local MATCH MBEGIN MEND local -a match mbegin mend while [[ -n $4 ]]; do if [[ $4 =~ $2 ]]; then + # append initial part and subsituted match 5+=${4[1,MBEGIN-1]}${(e)3} + # truncate remaining string 4=${4[MEND+1,-1]} + # indicate we did something + 6=1 else break fi @@ -33,3 +39,5 @@ done 5+=$4 eval ${1}=${(q)5} +# status 0 if we did something, else 1. +[[ -n $6 ]] |