sheldonを使って特定のプラグインを遅延読み込みする
はじめに
実現したいこと
ni.zshのように特定のコマンドを提供してくれるプラグインに対して、そのコマンドが実際に実行されるまでプラグインの読み込みを遅延させたい バージョン
このページの内容は以下のバージョンの時点を想定して書かれています
方法について
以下の方法などが考えられます
1. sheldonが提供するPATHもしくはfpathテンプレートを利用する この方法で済む場合は、これを利用するとよさそうです
以下の記事でもこの方法について詳しく解説されています
3. プラグインが提供するコマンドが実際に呼ばれるまでプラグインの読み込みを遅延させる
unfunctionなどを使うと実現できそうです
このページではこちらの方法について記載します
ni.zshなどの特定のコマンドを関数として提供するようなプラグインにおいて利用できます プラグインが提供するコマンドが実際に呼ばれるまでプラグインの読み込みを遅延させる
上記の3の方法を使った遅延読み込み方法について説明します
~/.config/sheldon/plugins.tomlに以下のようなCustom templateを定義します
code:~/.config/sheldon/plugins.toml
lazy = """
function {{ name }}() {
unfunction '{{ name }}'
{{ hooks?.pre | nl }}
{% for file in files %}
source '{{ file }}'
{% endfor %}
{{ hooks?.post | nl }}
{{ name }} "$@"
}
"""
上記のCustom templateをni.zshに適用してみます code:~/.config/sheldon/plugins.toml
github = "azu/ni.zsh"
tag = "v1.5.0"
すると、sheldon sourceコマンドは以下のようなスクリプトを出力します
code:shell
# 省略...
function ni() {
unfunction 'ni'
source '/home/uki00a/.local/share/sheldon/repos/github.com/azu/ni.zsh/ni.plugin.zsh'
ni
}
これによって、シェル上でniが実行されるまでni.zshの読み込みを遅延できるはずです 関連ページ