aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/parse.zsh13
1 files changed, 9 insertions, 4 deletions
diff --git a/internal/parse.zsh b/internal/parse.zsh
index b59b4c73..f7d848a6 100644
--- a/internal/parse.zsh
+++ b/internal/parse.zsh
@@ -114,6 +114,10 @@ typeset -gA _p9k_skip_arg=(
# ---------------
# ${x/}
# ---------------
+# - -- x
+# ---------------
+# command -p -p x
+# ---------------
# *
# ---------------
# x=$y; $x
@@ -187,14 +191,16 @@ function _p9k_extract_commands() {
done
case $state in
- t)
+ t|p*)
if (( $+_p9k_term[$token] )); then
skip=$_p9k_skip_arg[$token]
state=${skip:+s}
[[ $token == '()' ]] || _p9k_commands+=($commands)
commands=()
- fi
- continue;;
+ continue
+ elif [[ $state == t ]]; then
+ continue
+ fi;;
s)
if [[ $token == $~skip ]]; then
state=
@@ -220,7 +226,6 @@ function _p9k_extract_commands() {
fi
if [[ $token == *'$'* ]]; then
- setopt xtrace
if [[ $token == $~var ]]; then
n=${${token##[^[:IDENT:]]}%%[^[:IDENT:]]}
[[ $token == *'"' ]] && v=("${(@P)n}") || v=(${(P)n})