From ec3f3e9eeceaaf694e5dfbe15d07d11a304fd944 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 15 Mar 2010 10:15:51 +0000 Subject: 27780: effect of backslashes in :s changed in _files --- ChangeLog | 8 +++++++- Completion/Unix/Type/_files | 2 +- Test/D04parameter.ztst | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 572a4e826..34171de9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-03-15 Peter Stephenson + + * 27780: Completion/Unix/Type/_files, Test/D04parameter.ztst: + users/14905 changed the number of backslashes needed to + quote backslashes in :s modifier. + 2010-03-11 Peter Stephenson * unposted: Doc/Zsh/expn.yo: note that & needs quoting in :s in @@ -12890,5 +12896,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.4928 $ +* $Revision: 1.4929 $ ***************************************************** diff --git a/Completion/Unix/Type/_files b/Completion/Unix/Type/_files index 1969a5feb..762ef4eaa 100644 --- a/Completion/Unix/Type/_files +++ b/Completion/Unix/Type/_files @@ -90,7 +90,7 @@ fi tried=() for def in "$pats[@]"; do - eval "def=( ${${def:gs/\\:/\\\\\\\\\\\\:}//(#b)([][()|*?^#~<>])/\\${match[1]}} )" + eval "def=( ${${def:gs/\\:/\\\\\\:}//(#b)([][()|*?^#~<>])/\\${match[1]}} )" tmp="${(@M)def#*[^\\]:}" (( $tried[(I)${(q)tmp}] )) && continue diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst index f81b7de1d..d43e60efa 100644 --- a/Test/D04parameter.ztst +++ b/Test/D04parameter.ztst @@ -959,6 +959,25 @@ >oof/rab >oof/rab + bsbs='X\\\\Y' + print -r -- ${bsbs:s/\\/\\/} + print -r -- "${bsbs:s/\\/\\/}" + print -r -- ${bsbs:s/\\\\/\\\\/} + print -r -- "${bsbs:s/\\\\/\\\\/}" + print -r -- ${bsbs:gs/\\/\\/} + print -r -- "${bsbs:gs/\\/\\/}" + print -r -- ${bsbs:gs/\\\\/\\\\/} + print -r -- "${bsbs:gs/\\\\/\\\\/}" +0:Handling of backslashed backslashes in substitution modifier +>X\\\\Y +>X\\\\Y +>X\\\\Y +>X\\\\Y +>X\\\\Y +>X\\\\Y +>X\\\\Y +>X\\\\Y + print -r ${${:-one/two}:s,/,X&Y,} print -r ${${:-one/two}:s,/,X\&Y,} print -r ${${:-one/two}:s,/,X\\&Y,} -- cgit 1.4.1