marlonrichert / zsh-autocomplete

🤖 Real-time type-ahead completion for Zsh. Asynchronous find-as-you-type autocompletion.
MIT License
5.38k stars 148 forks source link

Crashes zsh when typing #726

Open Redoxahmii opened 5 months ago

Redoxahmii commented 5 months ago

Environment

# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
source $HOME/.tmuxifier-alias.zsh

# if [[ -f "/opt/homebrew/bin/brew" ]] then
#   # If you're using macOS, you'll want this enabled
#   eval "$(/opt/homebrew/bin/brew shellenv)"
# fi

# Set the directory we want to store zinit and plugins
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"

# Download Zinit, if it's not there yet
if [ ! -d "$ZINIT_HOME" ]; then
   mkdir -p "$(dirname $ZINIT_HOME)"
   git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
fi

# Source/Load zinit
source "${ZINIT_HOME}/zinit.zsh"
# Add in Powerlevel10k
zinit ice depth=1; zinit light romkatv/powerlevel10k

# Add in zsh plugins
zinit light zsh-users/zsh-syntax-highlighting
zinit light marlonrichert/zsh-autocomplete
zinit load zsh-users/zsh-autosuggestions
zinit light Aloxaf/fzf-tab

# Add in snippets
zinit snippet OMZP::git
zinit snippet OMZP::sudo
zinit snippet OMZP::archlinux
zinit snippet OMZP::tmux
# Load completions
autoload -Uz compinit && compinit

zinit cdreplay -q

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

# Keybindings
bindkey -e
bindkey '^p' history-search-backward
bindkey '^n' history-search-forward
bindkey '^[w' kill-region

# History
HISTSIZE=5000
HISTFILE=~/.zsh_history
SAVEHIST=$HISTSIZE
HISTDUP=erase
setopt appendhistory
setopt sharehistory
setopt hist_ignore_space
setopt hist_ignore_all_dups
setopt hist_save_no_dups
setopt hist_ignore_dups
setopt hist_find_no_dups

# Completion styling
 zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
 zstyle ':completion:*' menu no
 zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
 zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath'

# Aliases
alias ls='ls --color'
export NVM_DIR=~/.nvm
 [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
# Shell integrations
eval "$(fzf --zsh)"
eval "$(zoxide init --cmd cd zsh)"

Steps to reproduce

Type `sudo rm -r` and it will crash.
Contents of ~autocomplete-log/YYYY-MM-DD.log (click to expand)

Redoxahmii commented 5 months ago

This did not happen before i just updated this plugin and it keeps crashing it.

Shraymonks commented 5 months ago

Experienced the same issue.

Did a quick bisect and looks like a66d6ae6f7e703b1bf5ae57e48a7da3cf307aeab is the culprit.

The logs have the following lines repeated multiple times:

compadd:57: closing brace expected
compadd:52: parse error in command substitution
autocomplete:compadd:old:57: closing brace expected
autocomplete:compadd:old:52: parse error in command substitution
Redoxahmii commented 5 months ago

@Shraymonks thank you for saving me time before i went down the rabbit hole myself.

Would you know how i can revert to this commit for the time being until this gets fixed with zinit?

zinit ice commit=008caae;
zinit light marlonrichert/zsh-autocomplete

I have been trying to do it this way and there isn't any good documentation on zinit to actually know what to do.

Shraymonks commented 5 months ago

I don't use zinit but I'm guessing that's what ver is for after taking a quick look. Alternatively you can probably just checkout that commit wherever zinit installed zsh-autocomplete.

Redoxahmii commented 5 months ago

That's how i am running it atm by checking out the commit.

joneavila commented 3 months ago

Experienced the same issue.

Did a quick bisect and looks like a66d6ae is the culprit.

The logs have the following lines repeated multiple times:

compadd:57: closing brace expected
compadd:52: parse error in command substitution
autocomplete:compadd:old:57: closing brace expected
autocomplete:compadd:old:52: parse error in command substitution

Thank you for finding this! I was experiencing the crash when attempting git branch -a (specifically, immediately after typing the a). Here's my temporary fix, coming from a Homebrew install.

git clone https://github.com/marlonrichert/zsh-autocomplete.git
cd zsh-autocomplete

# If cloned  using `--depth 1` like the README suggests:
#     git fetch --unshallow

# Undo the commit for the affected file
git checkout a66d6ae6f7e703b1bf5ae57e48a7da3cf307aeab^ -- Functions/Init/.autocomplete__async;

Then update how it's sourced in .zshrc:

# source $HOMEBREW_PREFIX/share/zsh-autocomplete/zsh-autocomplete.plugin.zsh
source /path/to/zsh-autocomplete/zsh-autocomplete.plugin.zsh