summaryrefslogtreecommitdiff
path: root/.config/zsh/oh-my-zsh/plugins/rust/rust.plugin.zsh
diff options
context:
space:
mode:
authorPedro Pereira <pedro.hr.pereira@proton.me>2026-10-16 15:19:13 -0300
committerPedro Pereira <pedro.hr.pereira@proton.me>2026-10-16 15:19:13 -0300
commit1eb69e9a795cc19450178c07d8d382622bc7ad70 (patch)
treeb6bc60605044fe929986f31b3b6bf4fee9b56e14 /.config/zsh/oh-my-zsh/plugins/rust/rust.plugin.zsh
first commit
Diffstat (limited to '.config/zsh/oh-my-zsh/plugins/rust/rust.plugin.zsh')
-rw-r--r--.config/zsh/oh-my-zsh/plugins/rust/rust.plugin.zsh26
1 files changed, 26 insertions, 0 deletions
diff --git a/.config/zsh/oh-my-zsh/plugins/rust/rust.plugin.zsh b/.config/zsh/oh-my-zsh/plugins/rust/rust.plugin.zsh
new file mode 100644
index 0000000..567cebc
--- /dev/null
+++ b/.config/zsh/oh-my-zsh/plugins/rust/rust.plugin.zsh
@@ -0,0 +1,26 @@
+if ! (( $+commands[rustup] && $+commands[cargo] )); then
+ return
+fi
+
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `cargo`. Otherwise, compinit will have already done that
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_cargo" ]]; then
+ autoload -Uz _cargo
+ typeset -g -A _comps
+ _comps[cargo]=_cargo
+fi
+
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `rustup`. Otherwise, compinit will have already done that
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_rustup" ]]; then
+ autoload -Uz _rustup
+ typeset -g -A _comps
+ _comps[rustup]=_rustup
+fi
+
+# Generate completion files in the background
+rustup completions zsh >| "$ZSH_CACHE_DIR/completions/_rustup" &|
+cat >| "$ZSH_CACHE_DIR/completions/_cargo" <<'EOF'
+#compdef cargo
+source "$(rustup run ${${(z)$(rustup default)}[1]} rustc --print sysroot)"/share/zsh/site-functions/_cargo
+EOF