From db7eb2feb4ab4b0f8ea3b9633692d70007cf5e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Sat, 30 Apr 2022 09:16:36 +0300 Subject: [PATCH] perf(bash-v2): short-circuit descriptionless candidate lists 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`, but this way the improvements are available also to completions generated with descriptions enabled when they are invoked for completion cases that produce no descriptions. --- bash_completionsV2.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bash_completionsV2.go b/bash_completionsV2.go index b55ff6212c..ad60aa7220 100644 --- a/bash_completionsV2.go +++ b/bash_completionsV2.go @@ -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 # Look for the longest completion so that we can format things nicely while IFS='' read -r comp; do