Add optional arguments $prefix and $match to _hledger_compgen()
This allows more flexibility when generating completion candidates and we don't need to resort to external help from `sed` or others. _hledger_compgen's arguments become: $1 -> $wordlist: a newline separated wordlist with completion cadidates $2 -> $prefix: (optional) a prefix string to add to generated completions $3 -> $match: (optional) a word to match instead of $cur, the default. If $match is null and $prefix is defined the match is done against $cur stripped of $prefix. If both $prefix and $match are null we match against $cur and no prefix is added to completions. Of course you can also pass an empty string as $prefix and set $match to whatever you wish.
This commit is contained in:
		
							parent
							
								
									10cc8b72b9
								
							
						
					
					
						commit
						fc89340c93
					
				| @ -158,8 +158,18 @@ _hledger_compreply_append() { | ||||
| # wordlist to compgen -- it will eat your quotes, drink your booze and... | ||||
| # Completion candidates are quoted accordingly first and then we leave it to | ||||
| # compgen to deal with readline. | ||||
| # | ||||
| # Arguments: | ||||
| # $1: a newline separated wordlist with completion cadidates | ||||
| # $2: (optional) a prefix string to add to generated completions | ||||
| # $3: (optional) a word to match instead of $cur, the default. | ||||
| # If $match is null and $prefix is defined the match is done against $cur | ||||
| # stripped of $prefix. If both $prefix and $match are null we match against | ||||
| # $cur and no prefix is added to completions. | ||||
| _hledger_compgen() { | ||||
|     local wordlist=$1 | ||||
|     local prefix=$2 | ||||
|     local match=$3 | ||||
|     local quoted=() | ||||
|     local word | ||||
|     local i=0 | ||||
| @ -170,7 +180,7 @@ _hledger_compgen() { | ||||
|     done <<< "$wordlist" | ||||
| 
 | ||||
|     local IFS=$'\n' | ||||
|     compgen -W "${quoted[*]}" -- "$cur" | ||||
|     compgen -P "$prefix" -W "${quoted[*]}" -- "${match:-${cur:${#prefix}}}" | ||||
| } | ||||
| 
 | ||||
| # Try required option argument completion. Set COMPREPLY and return 0 on | ||||
| @ -258,8 +268,8 @@ _hledger_compreply_query() { | ||||
| 
 | ||||
|     _hledger_compreply "$( | ||||
|         _hledger_compgen "$( | ||||
|             _hledger "${hledgerArgs[@]}" | sed "s/^/$query/g" | ||||
|         )" | ||||
|             _hledger "${hledgerArgs[@]}" | ||||
|         )" "$query" | ||||
|     )" | ||||
| 
 | ||||
|     return 0 | ||||
|  | ||||
| @ -158,8 +158,18 @@ _hledger_compreply_append() { | ||||
| # wordlist to compgen -- it will eat your quotes, drink your booze and... | ||||
| # Completion candidates are quoted accordingly first and then we leave it to | ||||
| # compgen to deal with readline. | ||||
| # | ||||
| # Arguments: | ||||
| # $1: a newline separated wordlist with completion cadidates | ||||
| # $2: (optional) a prefix string to add to generated completions | ||||
| # $3: (optional) a word to match instead of $cur, the default. | ||||
| # If $match is null and $prefix is defined the match is done against $cur | ||||
| # stripped of $prefix. If both $prefix and $match are null we match against | ||||
| # $cur and no prefix is added to completions. | ||||
| _hledger_compgen() { | ||||
|     local wordlist=$1 | ||||
|     local prefix=$2 | ||||
|     local match=$3 | ||||
|     local quoted=() | ||||
|     local word | ||||
|     local i=0 | ||||
| @ -170,7 +180,7 @@ _hledger_compgen() { | ||||
|     done <<< "$wordlist" | ||||
| 
 | ||||
|     local IFS=$'\n' | ||||
|     compgen -W "${quoted[*]}" -- "$cur" | ||||
|     compgen -P "$prefix" -W "${quoted[*]}" -- "${match:-${cur:${#prefix}}}" | ||||
| } | ||||
| 
 | ||||
| # Try required option argument completion. Set COMPREPLY and return 0 on | ||||
| @ -258,8 +268,8 @@ _hledger_compreply_query() { | ||||
| 
 | ||||
|     _hledger_compreply "$( | ||||
|         _hledger_compgen "$( | ||||
|             _hledger "${hledgerArgs[@]}" | sed "s/^/$query/g" | ||||
|         )" | ||||
|             _hledger "${hledgerArgs[@]}" | ||||
|         )" "$query" | ||||
|     )" | ||||
| 
 | ||||
|     return 0 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user