summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Zsh/Type/_globquals20
-rw-r--r--Completion/Zsh/Type/_history_modifiers3
-rw-r--r--Src/exec.c5
-rw-r--r--Src/lex.c2
5 files changed, 20 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 7ad5991c9..c7448d726 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2008-02-23 Peter Stephenson <p.w.stephenson@ntlworld.com>
+ * 24590: Src/exec.c, Src/lex.c: tame overzealous error
+ report when unquoting.
+
+ * 24588: Completion/Zsh/Type/_globquals,
+ Completion/Zsh/Type/_history_modifiers: tweaks
+
* 24585: Completion/Base/Utility/_alternative,
Completion/Unix/Type/_path_files,
Completion/Zsh/Type/_delimiters,
diff --git a/Completion/Zsh/Type/_globquals b/Completion/Zsh/Type/_globquals
index 0262c8b6f..0ad71b72c 100644
--- a/Completion/Zsh/Type/_globquals
+++ b/Completion/Zsh/Type/_globquals
@@ -56,24 +56,18 @@ while [[ -n $PREFIX ]]; do
(d)
# complete/skip device
- if [[ -z $PREFIX ]]; then
- _message device ID
+ if ! compset -p '[[:digit:]]##'; then
+ _message "device ID"
return
fi
- # It's pointless trying to complete the device.
- # Simply assume it's done.
- compset -p '[[:digit:]]##'
;;
(l)
# complete/skip link count
- if [[ PREFIX = ([-+]|) ]]; then
- _message link count
+ if ! compset -P '([-+]|)[[:digit:]]##'; then
+ _message "link count"
return
fi
- # It's pointless trying to complete the link count.
- # Simply assume it's done.
- compset -P '([-+]|)[[:digit:]]##'
;;
(u)
@@ -162,9 +156,9 @@ while [[ -n $PREFIX ]]; do
# complete/skip range: check for closing bracket
if ! compset -P "(-|)[[:digit:]]##(,(-|)[[:digit:]]##|)]"; then
if compset -P "(-|)[[:digit:]]##,"; then
- _message end of range
+ _message "end of range"
else
- _message start of range
+ _message "start of range"
fi
return
fi
@@ -172,7 +166,7 @@ while [[ -n $PREFIX ]]; do
(:)
# complete modifiers and don't stop completing them
- _history_modifiers
+ _history_modifiers q
return
;;
esac
diff --git a/Completion/Zsh/Type/_history_modifiers b/Completion/Zsh/Type/_history_modifiers
index 085867159..3d112e1e6 100644
--- a/Completion/Zsh/Type/_history_modifiers
+++ b/Completion/Zsh/Type/_history_modifiers
@@ -53,9 +53,10 @@ while true; do
[[ -n $PREFIX ]] && return 1
list=("\::modifier")
- [[ $type = g ]] && list+=("):end of qualifiers")
+ [[ $type = q ]] && list+=("):end of qualifiers")
# strictly we want a normal suffix if end of qualifiers
_describe -t delimiters "delimiter" list -Q -S ''
+ return
else
list=(
"s:substitute string"
diff --git a/Src/exec.c b/Src/exec.c
index 83479bc88..9ec49e11a 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -46,7 +46,10 @@ enum {
/**/
int noerrexit;
-/* suppress error messages */
+/*
+ * noerrs = 1: suppress error messages
+ * noerrs = 2: don't set errflag on parse error, either
+ */
/**/
mod_export int noerrs;
diff --git a/Src/lex.c b/Src/lex.c
index a3b03c8a4..4128f109a 100644
--- a/Src/lex.c
+++ b/Src/lex.c
@@ -1619,7 +1619,7 @@ parse_subst_string(char *s)
* Historical note: we used to check here for olen == l, but
* that's not necessarily the case if we stripped an RCQUOTE.
*/
- if (c != STRING || errflag) {
+ if (c != STRING || (errflag && !noerrs)) {
fprintf(stderr, "Oops. Bug in parse_subst_string: %s\n",
errflag ? "errflag" : "c != STRING");
fflush(stderr);