Aloxaf / fzf-tab

Replace zsh's default completion selection menu with fzf!
MIT License
3.31k stars 96 forks source link

[BUG] need to execute "enable-fzf-tab" everytime #167

Closed AndreaDiPietro92 closed 3 years ago

AndreaDiPietro92 commented 3 years ago

Hello. I've installed fzf-tab in Oh-my-zsh

When I open a new terminal (konsole) i must execute enable-fzf-tab for enable the plugin.

Environment (please complete the following information):

zshrc

plugins=(
    sudo
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
    zsh-dircolors-nord
    fzf
    fzf-tab
)

# Load aliases and shortcuts if existent.
[ -f "$HOME/.config/shortcutrc" ] && source "$HOME/.config/shortcutrc"
[ -f "$HOME/.config/aliasrc" ] && source "$HOME/.config/aliasrc"

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

test -r "~/.dir_colors" && eval $(dircolors ~/.dir_colors)

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
Aloxaf commented 3 years ago

What's the content of ~/.fzf.zsh? And please give me the output of following code:

bindkey "^I"
which ${$(bindkey "^I")[(w)2]}
AndreaDiPietro92 commented 3 years ago

content of ~/.fzf.zsh

   1   │ # Setup fzf
   2   │ # ---------
   3   │ if [[ ! "$PATH" == */home/andrea/.fzf/bin* ]]; then
   4   │   export PATH="${PATH:+${PATH}:}/home/andrea/.fzf/bin"
   5   │ fi
   6   │ 
   7   │ # Auto-completion
   8   │ # ---------------
   9   │ [[ $- == *i* ]] && source "/home/andrea/.fzf/shell/completion.zsh" 2> /dev/null
  10   │ 
  11   │ # Key bindings
  12   │ # ------------
  13   │ source "/home/andrea/.fzf/shell/key-bindings.zsh"

Output of bindkey "^I"

"^I" fzf-tab-complete

output which ${$(bindkey "^I")[(w)2]}

which ${$(bindkey "^I")[(w)2]}                                                                                                                                                                                                     
fzf-tab-complete () {
        local -i _ftb_continue=1 
        while (( _ftb_continue ))
        do
                _ftb_continue=0 
                local IN_FZF_TAB=1 
                {
                        zle .fzf-tab-orig-$_ftb_orig_widget
                } always {
                        IN_FZF_TAB=0 
                }
                if (( _ftb_continue ))
                then
                        zle .split-undo
                        zle .reset-prompt
                        zle -R
                else
                        zle redisplay
                fi
        done
}
Aloxaf commented 3 years ago

Please add autoload -Uz compinit; compinit to the end of your zshrc and try again

AndreaDiPietro92 commented 3 years ago

Done. Nothing is changed ...

end of zshrc

# Load aliases and shortcuts if existent.
 127   │ [ -f "$HOME/.config/shortcutrc" ] && source "$HOME/.config/shortcutrc"
 128   │ [ -f "$HOME/.config/aliasrc" ] && source "$HOME/.config/aliasrc"
 129   │ 
 130   │ # To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh.
 131   │ [[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh
 132   │ 
 133   │ test -r "~/.dir_colors" && eval $(dircolors ~/.dir_colors)
 134   │ 
 135   │ [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
 136   │ autoload -Uz compinit; 
 137   │ compinit
Aloxaf commented 3 years ago

Well...

Then what's the ouput of following code? (execute them before you called enable-fzf-tab manually)

widget=${$(bindkey "^I")[(w)2]}
echo $widget
echo $widgets[$widget]
echo $widgets[.fzf-tab-orig-$_ftb_orig_widget]
AndreaDiPietro92 commented 3 years ago

echo $widget = fzf-completion

echo $widgets[$widget] = user:_zsh_autosuggest_bound_1_fzf-completion

echo $widgets[.fzf-tab-orig-$_ftb_orig_widget] = user:fzf-completion

Aloxaf commented 3 years ago

How about put [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh above the source xxx/oh-my-zsh.sh?

If it still doesn't work, please provide your full zshrc.

AndreaDiPietro92 commented 3 years ago

Info, editing the file .fzf.zsh and comment this part

  [[ $- == *i* ]] && source "/home/andrea/.fzf/shell/completion.zsh" 2> /dev/null

all works without the need execute enable-fzf-tab

AndreaDiPietro92 commented 3 years ago

I've put

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh above the source xxx/oh-my-zsh.sh and notting changed.

My full zshrc

# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.config/zsh/.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

#Configuration 
source ~/.config/zsh/fzf.conf

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

# Path to your oh-my-zsh installation.
export ZSH="/home/andrea/.oh-my-zsh"

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="powerlevel10k/powerlevel10k"

# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"

# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"

# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"

# Uncomment the following line to automatically update without prompting.
# DISABLE_UPDATE_PROMPT="true"

# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13

# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"

# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"

# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment the following line to enable command auto-correction.
 ENABLE_CORRECTION="true"

# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"

# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"

# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=$HOME/.cache/zsh/.zsh_history

# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder

# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
    sudo
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
    zsh-dircolors-nord
    fzf
    fzf-tab
    #zsh-completions
)

source $ZSH/oh-my-zsh.sh

#autoload -U compinit && compinit //override comp 

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment
# export LANG=en_US.UTF-8

# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
#   export EDITOR='vim'
# else
#   export EDITOR='mvim'
# fi

# Compilation flags
# export ARCHFLAGS="-arch x86_64"

# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# Load aliases and shortcuts if existent.
[ -f "$HOME/.config/shortcutrc" ] && source "$HOME/.config/shortcutrc"
[ -f "$HOME/.config/aliasrc" ] && source "$HOME/.config/aliasrc"

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

test -r "~/.dir_colors" && eval $(dircolors ~/.dir_colors)

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
autoload -Uz compinit; compinit
Aloxaf commented 3 years ago
--- .zshrc  2020-12-02 21:35:31.072532368 +0800
+++ .zshrc.new  2020-12-02 21:37:01.428122823 +0800
@@ -86,14 +86,18 @@
 plugins=(
    sudo
    git
-   zsh-autosuggestions
-   zsh-syntax-highlighting
     zsh-dircolors-nord
     fzf
     fzf-tab
+    zsh-autosuggestions
+    zsh-syntax-highlighting
     #zsh-completions
 )

+autoload -Uz compinit; compinit
+
+[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
+
 source $ZSH/oh-my-zsh.sh

 #autoload -U compinit && compinit //override comp 
@@ -133,7 +137,3 @@
 [[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh

 test -r "~/.dir_colors" && eval $(dircolors ~/.dir_colors)
-
-[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
-autoload -Uz compinit; compinit

how about this?

AndreaDiPietro92 commented 3 years ago

ALL WORKS perfectly! Thank you so much!

W-quan commented 3 years ago

Why don't write it to README.md? I got this problem too.

Aloxaf commented 3 years ago

Why don't write it to README.md? I got this problem too.

I fact, I have already written it:

https://github.com/Aloxaf/fzf-tab/blob/cb8a784343a422ba6d8bdf60acaf4714a6a6d5f7/README.md#L117-L123