From 000d18b32e9d85a52731878b9e4c407b7fff2f0d Mon Sep 17 00:00:00 2001 From: dkmar Date: Thu, 10 Apr 2025 05:07:55 -0700 Subject: [PATCH] feat(shell): zsh support completion in the middle of a prompt --- television/utils/shell/completion.zsh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/television/utils/shell/completion.zsh b/television/utils/shell/completion.zsh index ab0255b..56a50c6 100644 --- a/television/utils/shell/completion.zsh +++ b/television/utils/shell/completion.zsh @@ -6,18 +6,19 @@ _tv_smart_autocomplete() { current_prompt=$LBUFFER local output - - output=$(tv --autocomplete-prompt "$current_prompt" $*) - + output=$(tv --autocomplete-prompt "$current_prompt" $* | tr '\n' ' ') if [[ -n $output ]]; then - zle reset-prompt - RBUFFER="" + local rhs=$RBUFFER # add a space if the prompt does not end with one [[ "${current_prompt}" != *" " ]] && current_prompt="${current_prompt} " - LBUFFER=$current_prompt$output - # uncomment this to automatically accept the line + LBUFFER=$current_prompt$output + CURSOR=${#LBUFFER} + RBUFFER=$rhs + + zle reset-prompt + # uncomment this to automatically accept the line # (i.e. run the command without having to press enter twice) # zle accept-line fi @@ -39,7 +40,7 @@ _tv_shell_history() { RBUFFER="" LBUFFER=$output - # uncomment this to automatically accept the line + # uncomment this to automatically accept the line # (i.e. run the command without having to press enter twice) # zle accept-line fi @@ -52,4 +53,3 @@ zle -N tv-shell-history _tv_shell_history bindkey '{tv_smart_autocomplete_keybinding}' tv-smart-autocomplete bindkey '{tv_shell_history_keybinding}' tv-shell-history -