diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | Completion/Zsh/Context/_brace_parameter | 2 | ||||
-rw-r--r-- | Src/Zle/compcore.c | 6 |
3 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog index 9e6efc78e..d2dab008a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-06-04 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * Completion/Zsh/Context/_brace_parameter, Src/Zle/compcore.c + (check_param): In shell function, check for ${( not at start + of match; in C code, check for untokenized parentheses when + in double quotes. + 2011-06-03 Peter Stephenson <p.w.stephenson@ntlworld.com> * 29452: Completion/Zsh/Context/_brace_parameter, @@ -14951,5 +14958,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5361 $ +* $Revision: 1.5362 $ ***************************************************** diff --git a/Completion/Zsh/Context/_brace_parameter b/Completion/Zsh/Context/_brace_parameter index e6a2c4c80..c0ecf251b 100644 --- a/Completion/Zsh/Context/_brace_parameter +++ b/Completion/Zsh/Context/_brace_parameter @@ -4,7 +4,7 @@ local char delim found_percent found_m exp local -a flags integer q_last n_q -if [[ $PREFIX = '${('[^\)]# ]]; then +if [[ $PREFIX = *'${('[^\)]# ]]; then # Parameter flags. compset -p 3 diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c index 704e125bc..0a1a97c3d 100644 --- a/Src/Zle/compcore.c +++ b/Src/Zle/compcore.c @@ -1099,7 +1099,7 @@ mod_export char * check_param(char *s, int set, int test) { char *p; - int found = 0; + int found = 0, qstring = 0; zsfree(parpre); parpre = NULL; @@ -1126,6 +1126,7 @@ check_param(char *s, int set, int test) !(*p == String && p[1] == Snull) && !(*p == Qstring && p[1] == '\'')) { found = 1; + qstring = (*p == Qstring); break; } } @@ -1161,7 +1162,8 @@ check_param(char *s, int set, int test) /* Ignore the possible (...) flags. */ b++, br++; - if (skipparens(Inpar, Outpar, &b) > 0) { + if ((qstring ? skipparens('(', ')', &b) : + skipparens(Inpar, Outpar, &b)) > 0) { /* * We are still within the parameter flags. There's no * point trying to do anything clever here with |