A non-recursive version of _hledger_compreply_optarg()
Feels more streamlined and readable
This commit is contained in:
		
							parent
							
								
									985f041d81
								
							
						
					
					
						commit
						8c14dfb3eb
					
				| @ -190,14 +190,17 @@ _hledger_compgen() { | |||||||
| # Try required option argument completion. Set COMPREPLY and return 0 on | # Try required option argument completion. Set COMPREPLY and return 0 on | ||||||
| # success, 1 if option doesn't require an argument or out of context | # success, 1 if option doesn't require an argument or out of context | ||||||
| _hledger_compreply_optarg() { | _hledger_compreply_optarg() { | ||||||
|     local optionIndex=${1:-$((cword - 1))} |     local optionIndex=$((cword - 1)) | ||||||
|     local recursionLevel=${2:-0} |     local match=$cur | ||||||
|     local wordlist |     local wordlist | ||||||
|     local error=0 |  | ||||||
|     local match |  | ||||||
| 
 | 
 | ||||||
|     # Match the empty string on --file=<TAB> |     # Match the empty string on --file=<TAB>, not the equal sign itself | ||||||
|     [[ $cur == = ]] || match=$cur |     if [[ $cur == = ]]; then | ||||||
|  |         match="" | ||||||
|  |     # Once input is present, cword is incremented so we compensate | ||||||
|  |     elif [[ $prev == = ]]; then | ||||||
|  |         optionIndex=$((cword - 2)) | ||||||
|  |     fi | ||||||
| 
 | 
 | ||||||
|     case ${words[optionIndex]} in |     case ${words[optionIndex]} in | ||||||
|         --alias) |         --alias) | ||||||
| @ -241,20 +244,12 @@ _hledger_compreply_optarg() { | |||||||
|         -b|--begin|-e|--end|-p|--period|--depth|--drop) |         -b|--begin|-e|--end|-p|--period|--depth|--drop) | ||||||
|             _hledger_compreply "" |             _hledger_compreply "" | ||||||
|             ;; |             ;; | ||||||
|         =) |  | ||||||
|             # Recurse only once! |  | ||||||
|             ((recursionLevel > 1)) && return 1 |  | ||||||
|             if [[ ${words[optionIndex - 1]} == -* ]]; then |  | ||||||
|                 _hledger_compreply_optarg $((optionIndex - 1)) $((recursionLevel + 1)) |  | ||||||
|                 error=$? |  | ||||||
|             fi |  | ||||||
|             ;; |  | ||||||
|         *) |         *) | ||||||
|             error=1 |             return 1 | ||||||
|             ;; |             ;; | ||||||
|     esac |     esac | ||||||
| 
 | 
 | ||||||
|     return $error |     return 0 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Query filter completion through introspection | # Query filter completion through introspection | ||||||
|  | |||||||
| @ -190,14 +190,17 @@ _hledger_compgen() { | |||||||
| # Try required option argument completion. Set COMPREPLY and return 0 on | # Try required option argument completion. Set COMPREPLY and return 0 on | ||||||
| # success, 1 if option doesn't require an argument or out of context | # success, 1 if option doesn't require an argument or out of context | ||||||
| _hledger_compreply_optarg() { | _hledger_compreply_optarg() { | ||||||
|     local optionIndex=${1:-$((cword - 1))} |     local optionIndex=$((cword - 1)) | ||||||
|     local recursionLevel=${2:-0} |     local match=$cur | ||||||
|     local wordlist |     local wordlist | ||||||
|     local error=0 |  | ||||||
|     local match |  | ||||||
| 
 | 
 | ||||||
|     # Match the empty string on --file=<TAB> |     # Match the empty string on --file=<TAB>, not the equal sign itself | ||||||
|     [[ $cur == = ]] || match=$cur |     if [[ $cur == = ]]; then | ||||||
|  |         match="" | ||||||
|  |     # Once input is present, cword is incremented so we compensate | ||||||
|  |     elif [[ $prev == = ]]; then | ||||||
|  |         optionIndex=$((cword - 2)) | ||||||
|  |     fi | ||||||
| 
 | 
 | ||||||
|     case ${words[optionIndex]} in |     case ${words[optionIndex]} in | ||||||
|         --alias) |         --alias) | ||||||
| @ -241,20 +244,12 @@ _hledger_compreply_optarg() { | |||||||
|         -b|--begin|-e|--end|-p|--period|--depth|--drop) |         -b|--begin|-e|--end|-p|--period|--depth|--drop) | ||||||
|             _hledger_compreply "" |             _hledger_compreply "" | ||||||
|             ;; |             ;; | ||||||
|         =) |  | ||||||
|             # Recurse only once! |  | ||||||
|             ((recursionLevel > 1)) && return 1 |  | ||||||
|             if [[ ${words[optionIndex - 1]} == -* ]]; then |  | ||||||
|                 _hledger_compreply_optarg $((optionIndex - 1)) $((recursionLevel + 1)) |  | ||||||
|                 error=$? |  | ||||||
|             fi |  | ||||||
|             ;; |  | ||||||
|         *) |         *) | ||||||
|             error=1 |             return 1 | ||||||
|             ;; |             ;; | ||||||
|     esac |     esac | ||||||
| 
 | 
 | ||||||
|     return $error |     return 0 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Query filter completion through introspection | # Query filter completion through introspection | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user