From b6ba10d496cc4c7516bf108988e50765465112a8 Mon Sep 17 00:00:00 2001 From: xuanweishan Date: Tue, 9 Sep 2025 11:37:35 +0800 Subject: [PATCH 1/3] Add alias expand to support alias command --- tool/config/config_autocomplete.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tool/config/config_autocomplete.sh b/tool/config/config_autocomplete.sh index ee29f1cec2..f4f024074b 100755 --- a/tool/config/config_autocomplete.sh +++ b/tool/config/config_autocomplete.sh @@ -25,7 +25,13 @@ __gamer_configure_autocomplete() { local configure_filename configure_command if [[ "${COMP_WORDS[0]}" == "python"* ]]; then configure_filename=${COMP_WORDS[1]} - configure_command="${COMP_WORDS[0]} ${COMP_WORDS[1]}" + local alias_expanded + alias_expanded=$(alias -- "${COMP_WORDS[0]}" 2>/dev/null | sed -E "s/^alias ${COMP_WORDS[0]}='([^']+)'/\1/") + if [[ -n "$alias_expanded" ]]; then + configure_command="${alias_expanded} ${configure_filename}" + else + configure_command="${COMP_WORDS[0]} ${COMP_WORDS[1]}" + fi else configure_filename=${COMP_WORDS[0]} configure_command="${COMP_WORDS[0]}" From e45609c3abb54ff9a2219191e352dd1c50d36e34 Mon Sep 17 00:00:00 2001 From: xuanweishan Date: Wed, 24 Sep 2025 16:50:00 +0800 Subject: [PATCH 2/3] Support path include space and quotes. --- tool/config/config_autocomplete.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tool/config/config_autocomplete.sh b/tool/config/config_autocomplete.sh index f4f024074b..3872c21b7f 100755 --- a/tool/config/config_autocomplete.sh +++ b/tool/config/config_autocomplete.sh @@ -26,15 +26,15 @@ __gamer_configure_autocomplete() { if [[ "${COMP_WORDS[0]}" == "python"* ]]; then configure_filename=${COMP_WORDS[1]} local alias_expanded - alias_expanded=$(alias -- "${COMP_WORDS[0]}" 2>/dev/null | sed -E "s/^alias ${COMP_WORDS[0]}='([^']+)'/\1/") - if [[ -n "$alias_expanded" ]]; then - configure_command="${alias_expanded} ${configure_filename}" + alias_def=$(alias -- "${COMP_WORDS[0]}" 2>/dev/null) + if [[ -n "$alias_def" ]]; then + eval "configure_command=( ${alias_def#alias ${COMP_WORDS[0]}=} ${configure_filename} )" else - configure_command="${COMP_WORDS[0]} ${COMP_WORDS[1]}" + configure_command=( "${COMP_WORDS[0]}" "${COMP_WORDS[1]}" ) fi else configure_filename=${COMP_WORDS[0]} - configure_command="${COMP_WORDS[0]}" + configure_command=( "${COMP_WORDS[0]}" ) fi __gamer_check_gamer_info $configure_filename @@ -51,7 +51,7 @@ __gamer_configure_autocomplete() { local sub="${COMP_WORDS[COMP_CWORD-1]}" local cur="${COMP_WORDS[COMP_CWORD]}" - all_options=$(${configure_command} --autocomplete_info=all) + all_options=$(eval ${configure_command[@]} --autocomplete_info=all) IFS=' ' read -r -a all_option_array <<< "${all_options}" COMPREPLY=() # NOTE: please add a space when ending the option @@ -61,7 +61,7 @@ __gamer_configure_autocomplete() { do # --option=xx if [[ "$opt" == "$subsub=" && "=" == "$sub" ]]; then - sub_options=$(${configure_command} --autocomplete_info="$opt") + sub_options=$(eval ${configure_command[@]} --autocomplete_info="$opt") IFS=' ' read -r -a sub_option_array <<< "${sub_options}" for opt2 in "${sub_option_array[@]}" do @@ -72,7 +72,7 @@ __gamer_configure_autocomplete() { break # --option, --option xxx, or --option= elif [[ "$opt" == "$sub=" ]]; then - sub_options=$(${configure_command} --autocomplete_info="$opt") + sub_options=$(eval ${configure_command[@]} --autocomplete_info="$opt") IFS=' ' read -r -a sub_option_array <<< "${sub_options}" for opt2 in "${sub_option_array[@]}" do From e190fc35e9b799f04564e8bcd8553b97b948abe8 Mon Sep 17 00:00:00 2001 From: xuanweishan Date: Wed, 24 Sep 2025 16:55:27 +0800 Subject: [PATCH 3/3] Correct local variable name --- tool/config/config_autocomplete.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/config/config_autocomplete.sh b/tool/config/config_autocomplete.sh index 3872c21b7f..2d9eeabce2 100755 --- a/tool/config/config_autocomplete.sh +++ b/tool/config/config_autocomplete.sh @@ -25,7 +25,7 @@ __gamer_configure_autocomplete() { local configure_filename configure_command if [[ "${COMP_WORDS[0]}" == "python"* ]]; then configure_filename=${COMP_WORDS[1]} - local alias_expanded + local alias_def alias_def=$(alias -- "${COMP_WORDS[0]}" 2>/dev/null) if [[ -n "$alias_def" ]]; then eval "configure_command=( ${alias_def#alias ${COMP_WORDS[0]}=} ${configure_filename} )"