diff --git a/plugins/rtx/rtx.plugin.zsh b/plugins/rtx/rtx.plugin.zsh index aaccaf015..a01828afd 100644 --- a/plugins/rtx/rtx.plugin.zsh +++ b/plugins/rtx/rtx.plugin.zsh @@ -1,30 +1,18 @@ -# Find where rtx should be installed -RTX_DIR="${RTX_DIR:-$HOME/.rtx}" -RTX_COMPLETIONS="$RTX_DIR/completions" - -if [[ ! -f "$RTX_DIR/rtx.sh" || ! -f "$RTX_COMPLETIONS/_rtx" ]]; then - # If not found, check for archlinux/AUR package (/opt/rtx-vm/) - if [[ -f "/opt/rtx-vm/rtx.sh" ]]; then - RTX_DIR="/opt/rtx-vm" - RTX_COMPLETIONS="$RTX_DIR" - # If not found, check for Homebrew package - elif (( $+commands[brew] )); then - _RTX_PREFIX="$(brew --prefix rtx)" - RTX_DIR="${_RTX_PREFIX}/libexec" - RTX_COMPLETIONS="${_RTX_PREFIX}/share/zsh/site-functions" - unset _RTX_PREFIX - else - return - fi +# rtx needs to be in $PATH +if (( ! ${+commands[rtx]} )); then + return fi -# Load command -if [[ -f "$RTX_DIR/rtx.sh" ]]; then - source "$RTX_DIR/rtx.sh" - # Load completions - if [[ -f "$RTX_COMPLETIONS/_rtx" ]]; then - fpath+=("$RTX_COMPLETIONS") - autoload -Uz _rtx - compdef _rtx rtx # compdef is already loaded before loading plugins - fi +# Load rtx hooks +eval "$(rtx activate zsh)" + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `rtx`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_rtx" ]]; then + typeset -g -A _comps + autoload -Uz _rtx + _comps[rtx]=_rtx fi + +# Generate and load rtx completion +rtx completion zsh >! "$ZSH_CACHE_DIR/completions/_rtx" &|