#autoload # This completer function makes the other completer functions used # insert possible completions only after once the list has been # shown. # # Configuration keys: # # list_condition # If this key is unset or set to the empty string, this completer # will delay the insertion of matches unconditionally. However, # if this value is set, it should be set to an expression usable # inside a $[...] arithmetical expression. In this case, delaying # will be done if the expression evaluates to `1'. # For example, with # # compconf list_condition='NUMERIC != 1' # # delaying will be done only if given an explicit numeric argument # other than `1'. # # list_word # To find out if only listing should be done, the code normally # compares the contents of the line with the contents the line # had at the time of the last invocation. If this key is set to # an non-empty string comparison is done using only the current # word. So if it is set, attempting completion on a word equal # to the one completion was called on the last time will not # delay the generation of matches. local pre suf # Get the strings to compare. if [[ -z "$compconfig[list_word]" ]]; then pre="$HISTNO$LBUFFER" suf="$RBUFFER" else pre="$PREFIX" suf="$SUFFIX" fi # Should we only show a list now? if [[ ( -z "$compconfig[list_condition]" || "${(e):-\$[$compconfig[expand_glob]]}" -eq 1 ) && ( "$pre" != "$_list_prefix" || "$suf" != "$_list_suffix" ) ]]; then # Yes. Tell the completion code about it and save the new values # to compare the next time. compstate[insert]='' compstate[list]=list compstate[force_list]=yes _list_prefix="$pre" _list_suffix="$suf" fi # We always return one, because we don't really do any work here. return 1