Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot use zr or zrf without autocompleting zellij command once #1933

Open
mnpqraven opened this issue Nov 14, 2022 · 13 comments · May be fixed by #2969
Open

Cannot use zr or zrf without autocompleting zellij command once #1933

mnpqraven opened this issue Nov 14, 2022 · 13 comments · May be fixed by #2969

Comments

@mnpqraven
Copy link

Basic information

zellij --version: 0.32.0
stty size: 34 72
uname -av: 6.0.6-1-MANJARO #1 SMP PREEMPT_DYNAMIC Sat Oct 29 14:21:50 UTC 2022 x86_64 GNU/Linux
alacritty --version: alacritty 0.11.0
omz version: master (fb66b67)
Minimal .zshrc:

export ZSH="$HOME/.oh-my-zsh"
source $ZSH/oh-my-zsh.sh

Further information

  • Setup: Placing completions file generated from zellij setup --generate-completion zsh inside $fpath (I'm using oh-my-zsh in this case)

  • Expected behavior: zellij commands such as zr, zrf should work out of the box

  • Actual behavior: zsh: command not found: zr etc. error

  • Working attempt: I have to autocomplete zellij once by typing zellij<space><tab> or zell<tab><tab> (When you see action, attach, convert-layout, etc. arguments). Only after this am I able to run zr or zrf.

@citypaul
Copy link

citypaul commented Feb 3, 2023

I'm currently seeing the same behaviour. I also tried source from my .zshrc file directly, and while this does work it produces this error every time I open a new shell:

_arguments:comparguments:325: can only be called from completion function

I believe adding the completions file inside $fpath is the correct way, but as mentioned here this results in autocomplete not working unless a command has been ran at least once.

@dubst3pp4
Copy link

I have the same issue as @citypaul. I've dumped the Zellij zsh completion into a separate file and sourced it in my .zshrc.

@pitoniak32
Copy link

I also have the same issue. I was able to find a workaround that got me the functionality I was looking for originally, it does not address the bug here but it will get rid of the warning if you are just looking to use the functions.

I just deleted everything in the completions and left the functions.

#compdef zellij

function zr () { zellij run --name "$*" -- zsh -ic "$*";}
function zrf () { zellij run --name "$*" --floating -- zsh -ic "$*";}
function ze () { zellij edit "$*";}
function zef () { zellij edit --floating "$*";}

@kseistrup
Copy link

kseistrup commented Mar 11, 2023

This is also an issue in fish.


The fish shell has user completions in …/completions/ and user defined functions/aliases in …/functions/, where is the fish configuration directory.

If completions are saved as zellij.fish and the functions in separate files (zr.fish and so on), everything will be loaded automatically.

In the current (v0.35.2) setup functions aren't loaded until after first attempt of completion.

See also: #2186

Edit: Added reference to issue 2186.

@slashformotion
Copy link

slashformotion commented Apr 25, 2023

I did the same as @dubst3pp4 and for some reason i get _arguments:comparguments:327: can only be called from completion function

@bomgar
Copy link

bomgar commented Jul 1, 2023

Same issue here.
I have this workaround in my zshrc

if [[ -x "$(command -v zellij)" ]];
then
    eval "$(zellij setup --generate-completion zsh | grep "^function")"
fi;

@siuyutpang
Copy link

same issue occurs in 0.38.2 version, I think it make no sense that put alias function in the completion file, they should be seperated into different files

@siuyutpang
Copy link

Same issue here. I have this workaround in my zshrc

if [[ -x "$(command -v zellij)" ]];
then
    eval "$(zellij setup --generate-completion zsh | grep "^function")"
fi;

😂 a bit strange solution, but it really works

@bomgar bomgar linked a pull request Nov 29, 2023 that will close this issue
@Deebster
Copy link

I found this with bash on a Fedora 39 server.

My hack fix was to move the functions into ~/.bashrc.d/zellij.bash

@silicakes
Copy link

Just ran into this, macos + zsh here

@s4Dt0y
Copy link

s4Dt0y commented May 14, 2024

I also ran into this...if so many people are experiencing this, since 2022, shouldn't the docs be editted? Is there some reason no PR is being opened?

@cristiand391
Copy link
Contributor

I also ran into this...if so many people are experiencing this, since 2022, shouldn't the docs be editted? Is there some reason no PR is being opened?

IIRC, we talked about updating docs for this in Discord but since these have to be maintained (keep up-to-date, etc) it was decided to leave them they are until a fix for this is found.

I explored this but couldn't find a fix that didn't require splitting completion functions from normal ones:
#1860 (reply in thread)

@Lockszmith-GH
Copy link

I finally got zellij zsh completion to work using the zsh definition using the following workarounds:

# 1 Using zsh's native compinit:

Apparently the 2022 update of ZSH (currently the latest) had some changes to discourage loading of completion code manully, and favours auto loading when it's needed. However some users (and app maintainers) have founds how to workaround it.
The solution is to manually call compdef _<command_name> <command_name> after the definition to load it manually.

The sed below takes care of that.

autoload -U +X compinit && compinit
. <( zellij setup --generate-completion zsh | sed -Ee 's/^(_(zellij) ).*/compdef \1\2/' )

# 2 Using bashcompinit bash-completion wrapper:

autoload -U +X compinit bashcompinit && compinit && bashcompinit
. <( zellij setup --generate-completion bash )

I personally prefer # 1, but in case that stops to work # 2 can be a fallback until things are fixed again.

@imsnif could you update the --generate-completion zsh to replace the _zellij call with compdef _zellij zellij ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.