DEV Community

❮ ZI ❯ for Z-Shell

Posted on • Originally published at github.zshell.dev

4 1

❮ ZI Annex - Eval ❯

❮ ZI ❯ Annex - Eval


Allows to cache the output of arbitrarily slow initialization command to speed up shell startup time.

eval preview

z.digitalclouds.dev | GitHub | Discussions | Localize


Annex provides a completion file with the prefix _zi, the 'shim' below which will run all available zi completions and the shim is assigned as ZIs completion with a compdef call

Synopsis:

zi recache <plugin/snippet>
Enter fullscreen mode Exit fullscreen mode

💡 Wiki

Installation

Simply load like a regular plugin:

zi light z-shell/z-a-eval
Enter fullscreen mode Exit fullscreen mode

After executing this command you can then use the new ice-mods provided by the annex.

How it works

The output of a slow initialization command is redirected to a file located within the plugin/snippets directory and sourced while loading. The next time the plugin/snippet is loaded, this file will be sourced skipping the need to run the initialization command.

The ice-modifier eval'' provided and handled by this annex creates a cache in the plugin/snippets root directory which stores the commands output.

This cache is regenerated when:

  • The plugin/snippet is updated.
  • The cache file is removed.
  • With the new ZI subcommand recache.

The optional preceding ! flag means to store command output regardless of exit code. Otherwise eval'' will avoid caching ouput of code which returns a non-zero exit code.

Example Invocations

Without z-a-eval

zi ice as"command" from"gh-r" mv"zoxide* -> zoxide"  \
  atclone"./zoxide init zsh > init.zsh"  atpull"%atclone" src"init.zsh" nocompile'!'
zi light ajeetdsouza/zoxide
Enter fullscreen mode Exit fullscreen mode
zi ice atclone"dircolors -b LS_COLORS > init.zsh" \
  atpull"%atclone" pick"init.zsh" nocompile'!' \
  atload'zstyle ":completion:*" list-colors “${(s.:.)LS_COLORS}”'
zi light trapd00r/LS_COLORS
Enter fullscreen mode Exit fullscreen mode

With z-a-eval

zi ice as"command" from"gh-r" mv"zoxide* -> zoxide" \
  eval"./zoxide init zsh"
zi light ajeetdsouza/zoxide
Enter fullscreen mode Exit fullscreen mode
zi ice eval"dircolors -b LS_COLORS" \
  atload'zstyle ":completion:*" list-colors “${(s.:.)LS_COLORS}”'
zi light trapd00r/LS_COLORS
Enter fullscreen mode Exit fullscreen mode

Without ZI

if [[ "${+commands[kubectl]}" == 1 ]]; then
  eval $(kubectl completion zsh)
fi
Enter fullscreen mode Exit fullscreen mode

With ZI and z-a-eval

## Updated during `zi update`
zi ice id-as"kubectl_completion" has"kubectl" \
  eval"kubectl completion zsh" run-atpull
zi light z-shell/null
Enter fullscreen mode Exit fullscreen mode

This repository compatible with ZI.


Have the best and leave the rest!

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

The best way to debug slow web pages cover image

The best way to debug slow web pages

Tools like Page Speed Insights and Google Lighthouse are great for providing advice for front end performance issues. But what these tools can’t do, is evaluate performance across your entire stack of distributed services and applications.

Watch video