summaryrefslogtreecommitdiff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Core/_expand7
-rw-r--r--Completion/User/_nedit2
2 files changed, 5 insertions, 4 deletions
diff --git a/Completion/Core/_expand b/Completion/Core/_expand
index 1a96e654e..293ad3649 100644
--- a/Completion/Core/_expand
+++ b/Completion/Core/_expand
@@ -32,13 +32,14 @@ fi
exp=("$word")
# First try substitution. That weird thing spanning multiple lines
-# changes quoted spaces, tabs, and newlines into spaces.
+# changes quoted spaces, tabs, and newlines into spaces and protects
+# this function from aborting on parse errors in the expansion.
{ zstyle -s ":completion:${curcontext}:" substitute expr ||
{ [[ "$curcontext" = expand-word:* ]] && expr=1 } } &&
[[ "${(e):-\$[$expr]}" -eq 1 ]] &&
- exp=( "${(e)exp//\\[
-]/ }" )
+ exp=( ${(f)"$(print -lR - ${(e)exp//\\[
+]/ } 2>/dev/null)"} )
# If the array is empty, store the original string again.
diff --git a/Completion/User/_nedit b/Completion/User/_nedit
index a3fcd9785..5261a54a9 100644
--- a/Completion/User/_nedit
+++ b/Completion/User/_nedit
@@ -44,7 +44,7 @@ else
"$nedit_common[@]"
fi
-[[ $state = lang ]] &&
+[[ $state = lang && -f ~/.nedit ]] &&
_wanted neditlanguages expl 'language mode' \
compadd - ${(f)"$(sed -n \
'/^nedit.languageMode/,/^nedit/ s/.* \([^:]*\).*/\1/p' < ~/.nedit)"}