From dfc5382c0d3630744aa68deedd916394cae273c8 Mon Sep 17 00:00:00 2001 From: romkatv Date: Sat, 11 Jan 2020 12:55:25 +0100 Subject: [PATCH] handle `for x (y) z` --- internal/parse.zsh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/parse.zsh b/internal/parse.zsh index 472f558..8eb1aee 100644 --- a/internal/parse.zsh +++ b/internal/parse.zsh @@ -86,9 +86,16 @@ typeset -gA _p9k_term=( '()' '' ) +typeset -gA _p9k_skip_arg=( + ';;' '\)|esac' + ';&' '\)|esac' + ';|' '\)|esac' + '(' '\)' + '()' '' +) + # False positives: # -# for x (y) z # {} always {} # # Completely broken: @@ -158,12 +165,8 @@ function _p9k_extract_commands() { if [[ -n $skip ]]; then if [[ $skip == '^' ]]; then if (( $+_p9k_term[$token] )); then - if [[ $token == '()' ]]; then - skip= - else - _p9k_commands+=($commands) - [[ $token == ';'[';&|'] ]] && skip='\)|esac' || skip= - fi + skip=$_p9k_skip_arg[$token] + [[ $token == '()' ]] || _p9k_commands+=($commands) commands=() fi elif [[ $token == $~skip ]]; then