Skip to content

Commit

Permalink
perf(bash-v2): short-circuit descriptionless candidate lists (#1686)
Browse files Browse the repository at this point in the history
If the list of candidates has no descriptions, short circuit all the
description processing logic, basically just do a `compgen -W` for the
whole list and be done with it.

We could conceivably do some optimizations like this and more when
generating the completions with `--no-descriptions` in Go code, by
omitting some parts we know won't be needed, or doing some things
differently. But doing it this way in bash, the improvements are
available also to completions generated with descriptions enabled when
they are invoked for completion cases that produce no
descriptions. The result after this for descriptionless entries seems
fast enough so it seems there's no immediate need to look into doing
that.
  • Loading branch information
scop authored May 4, 2022
1 parent f17e5a2 commit 95d7df1
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions bash_completionsV2.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,14 @@ __%[1]s_handle_completion_types() {
__%[1]s_handle_standard_completion_case() {
local tab=$'\t' comp
# Short circuit to optimize if we don't have descriptions
if [[ $out != *$tab* ]]; then
while IFS='' read -r comp; do
COMPREPLY+=("$comp")
done < <(IFS=$'\n' compgen -W "$out" -- "$cur")
return 0
fi
local longest=0
local compline
# Look for the longest completion so that we can format things nicely
Expand Down

0 comments on commit 95d7df1

Please sign in to comment.