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

Znap – asynchronní Zsh plugin manažer #2

Open
borekb opened this issue Apr 3, 2021 · 0 comments
Open

Znap – asynchronní Zsh plugin manažer #2

borekb opened this issue Apr 3, 2021 · 0 comments

Comments

@borekb
Copy link
Owner

borekb commented Apr 3, 2021

Na správu Zsh pluginů jsem "odjakživa" používal Antibody – nevím pořádně proč, nejsem žádný konzolový guru (spíš lamka, abych se přiznal), ale tehdy se profilovali jako rychlejší alternativa k populárnímu Antigenu, tak jsem to vzal a moc neřešil.

Antibody mi sloužilo dobře, .zshrc s ním vypadal nějak takhle:

source <(antibody init)

antibody bundle robbyrussell/oh-my-zsh
antibody bundle sindresorhus/pure
antibody bundle zsh-users/zsh-completions
antibody bundle agkozak/zsh-z

Vždycky mě trochu štvalo, že start nového shellu trvá zhruba sekundu, což není vina Antibody, ale nějakého mého bordýlku (podezření je na nvs – možná souvisí tohle – a pak na compinit, viz níže), nicméně se mi to nechtělo řešit a bral jsem to jako přežitelnou daň za jinak skvělý Zsh a pluginy v něm (musíte chápat, že jsem dlouhá léta trpěl v cmd.exe a dalších víceméně nepovedených shellech na Windows 🤦‍♂️).

Nedávno bylo ale Antibody označené jako deprecated. V souvislosti s tím jsem zahlédl zmínku o Znapu, který údajně prompt zobrazí za 40 ms, což znělo až moc zajímavě na to, abych to ignoroval.

⚡️Znap funguje podobně jako Antibody (a asi i většina dalších plugin manažerů) a .zshrc s ním vypadá takhle:

source ~/.znap/zsh-snap/znap.zsh

znap prompt sindresorhus/pure
znap source robbyrussell/oh-my-zsh
znap source zsh-users/zsh-completions
znap source agkozak/zsh-z

Velkým rozdílem je znap prompt místo znap source pro můj Pure prompt – zobrazí ho okamžitě a zbytek .zshrc vykonává na pozadí / asynchronně. To nijak fundamentálně neřeší pomalost, ale pocitově to pomáhá moc – až si občas říkám, jestli je vše v pořádku, jak prompt naběhne rychle 😄.

Další praktickou věcí je automatické řešení compinit. compinit je ošidná věc – důležitá pro různé completions, ale laik se snadno ztratí v tom, kdy přesně to zavolat, jestli se to nevolá z něčeho jako Oh My Zsh, případně kdy, jak je to s výkonem (volání compinit dokáže trvat přes sekundu) atd. Znap dělá z compinit prázdnou funkci, aby se běžný Franta uživatel nestřelil do nohy, a pak to ve správný moment zavolá. Tedy když vše funguje.

Přechod byl snadný, včetně různého pročišťování vypadal PR takhle:

Antibody vs. Znap

V praxi je pak potřeba volat znap manuálně v těchto případech:

  • znap status ukáže, zda nejsou k dispozici aktualizace:
    znap status
  • znap pull provede aktualizace (pullne Git repa)

Celkově Znap 👍.

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

No branches or pull requests

1 participant