fix a few bugs in parsing

pull/436/head
romkatv 5 years ago
parent 57b500d083
commit b8c9e83661

@ -21,6 +21,9 @@ typeset -gA _p9k_skip_token=(
'while' '' 'while' ''
'until' '' 'until' ''
'do' '' 'do' ''
'done' ''
'esac' ''
'end' ''
'coproc' '' 'coproc' ''
'nocorrect' '' 'nocorrect' ''
'time' '' 'time' ''
@ -45,6 +48,7 @@ typeset -gA _p9k_skip_token=(
'>>&' '*' '>>&' '*'
'&>>|' '*' '&>>|' '*'
'>>|' '*' '>>|' '*'
'foreach' '\(*\)'
) )
typeset -gA _p9k_redirect=( typeset -gA _p9k_redirect=(
@ -75,10 +79,25 @@ typeset -gA _p9k_term=(
';;' '' ';;' ''
';&' '' ';&' ''
';|' '' ';|' ''
'(' ''
')' '' ')' ''
'{' ''
'}' ''
'()' '' '()' ''
) )
# False positives:
#
# for x (y) z
# {} always {}
#
# Completely broken:
#
# Setup:
# setopt interactive_comments
# alias x='#'
# Punchline:
# x; y
function _p9k_extract_commands() { function _p9k_extract_commands() {
local rcquotes local rcquotes
[[ -o rcquotes ]] && rcquotes=(-o rcquotes) [[ -o rcquotes ]] && rcquotes=(-o rcquotes)
@ -183,6 +202,7 @@ function _p9k_extract_commands() {
fi fi
commands+=${:-${(Q)${~token}}} commands+=${:-${(Q)${~token}}}
[[ $commands[-1] == '(('*'))' ]] && commands[-1]=()
skip='^' skip='^'
done done

Loading…
Cancel
Save