Files
dotfiles/dot_zshrc
T

128 lines
4.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ~/.zshrc — managed by chezmoi
# History
HISTFILE="$HOME/.zsh_history"
HISTSIZE=10000
SAVEHIST=10000
setopt SHARE_HISTORY HIST_IGNORE_DUPS
# Completion
autoload -Uz compinit && compinit
# PATH extras / tool envs (machine-optional, guarded)
case ":$PATH:" in *":$HOME/.local/bin:"*) ;; *) PATH="$HOME/.local/bin:$PATH" ;; esac
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
[ -d "$HOME/.maestro/bin" ] && PATH="$PATH:$HOME/.maestro/bin"
# Go — GOPATH/GOBIN under ~/.local/share to keep $HOME clean.
# GOROOT is provided by mise (toolchain lives under ~/.local/share/mise).
export GOPATH="$HOME/.local/share/go"
export GOBIN="$GOPATH/bin"
case ":$PATH:" in *":$GOBIN:"*) ;; *) PATH="$GOBIN:$PATH" ;; esac
# Repo roots (ghq) — same as fish's conf.d/10-env.fish; the ghq-repos tv
# cable (ctrl-o) lists this root.
export GHQ_ROOT="$HOME/Code"
export CODE_ROOT="$HOME/Code"
# Android SDK — relocated under ~/.local/share/android.
export ANDROID_HOME="$HOME/.local/share/android"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
for _adir in "$ANDROID_HOME/platform-tools" "$ANDROID_HOME/cmdline-tools/latest/bin" "$ANDROID_HOME/emulator"; do
case ":$PATH:" in *":$_adir:"*) ;; *) [ -d "$_adir" ] && PATH="$PATH:$_adir" ;; esac
done
unset _adir
# GITHUB_TOKEN from gh's keyring login — never stored on disk. An inherited
# value wins, so nested shells skip the gh call.
if [ -z "${GITHUB_TOKEN:-}" ] && command -v gh >/dev/null 2>&1; then
_gh_token="$(gh auth token 2>/dev/null)"
[ -n "$_gh_token" ] && export GITHUB_TOKEN="$_gh_token"
unset _gh_token
fi
# Shared aliases (same set as fish/bash; source of truth: .chezmoidata/aliases.yaml)
[ -f "$HOME/.config/shell/aliases.sh" ] && . "$HOME/.config/shell/aliases.sh"
# Shell functions — one file per function, zsh ports of the fish ones
# (cwd/history-touching helpers; standalone tools live in ~/.local/bin)
if [ -d "$HOME/.config/zsh/functions" ]; then
for _f in "$HOME/.config/zsh/functions"/*.zsh; do
[ -r "$_f" ] && . "$_f"
done
unset _f
fi
# ZLE keybinds — zsh ports of fish_user_key_bindings.fish
[ -f "$HOME/.config/zsh/keybinds.zsh" ] && . "$HOME/.config/zsh/keybinds.zsh"
# suvadu shell history
command -v suv >/dev/null 2>&1 && eval "$(suv init zsh)"
# Generated for envman. Do not edit.
[ -s "$HOME/.config/envman/load.sh" ] && . "$HOME/.config/envman/load.sh"
# Prompt — starship, consistent with fish
if command -v starship >/dev/null 2>&1; then
eval "$(starship init zsh)"
ZLE_RPROMPT_INDENT=0 # right_format ($time) flush with the edge
# Transient prompt (fish has enable_transience; zsh has no starship
# built-in): on Enter, collapse the prompt to ❯ + time, restore it next
# precmd. Must be registered before zsh-syntax-highlighting below.
# Profiles live in starship.toml; strip add_newline's leading \n.
_starship_prompt=$PROMPT _starship_rprompt=$RPROMPT
_starship_profile() {
local s
s=$(starship prompt --profile "$1" --status="${STARSHIP_CMD_STATUS:-}")
print -rn -- "${s#$'\n'}"
}
_starship_transient() {
PROMPT='$(_starship_profile transient)' RPROMPT='$(_starship_profile transient_right)'
zle .reset-prompt
}
_starship_restore() { PROMPT=$_starship_prompt RPROMPT=$_starship_rprompt; }
autoload -Uz add-zle-hook-widget && add-zle-hook-widget line-finish _starship_transient
add-zsh-hook precmd _starship_restore
fi
# Window title — port of fish_title.fish (+ tmux window name, as in
# fish's conf.d/50-terminal-title.fish)
_set_win_title() {
local t=${(%):-%~}
[[ -n $SSH_TTY ]] && t="${${(%):-%m}[1,10]}:$t"
printf '\e]0;%s\a' "$t"
[[ -n $TMUX ]] && printf '\ek%s\e\\' "$t"
}
autoload -Uz add-zsh-hook && add-zsh-hook precmd _set_win_title
# television: ctrl-t smart autocomplete (its ctrl-r is taken over by atuin
# below, as in fish)
command -v tv >/dev/null 2>&1 && eval "$(tv init zsh)"
# Fish-style syntax highlighting (zsh-users/zsh-syntax-highlighting).
# MUST stay last in .zshrc: it wraps every zle widget defined above
# (keybinds, compinit, suv/starship hooks).
for _zsh_hl in \
/usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh \
/opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh \
/usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh; do
[ -r "$_zsh_hl" ] && . "$_zsh_hl" && break
done
unset _zsh_hl
# atuin comes from the package manager (/usr/bin); see ~/.bashrc.
command -v atuin >/dev/null 2>&1 && eval "$(atuin init zsh)"
# >>> termium >>>
case ":$PATH:" in *:'/home/prad/.local/bin':*) ;; *) export PATH='/home/prad/.local/bin':"$PATH" ;; esac
# <<< termium <<<
# Added by LM Studio CLI (lms)
export PATH="$PATH:/home/prad/.lmstudio/bin"
# End of LM Studio CLI section
if command -v wt >/dev/null 2>&1; then eval "$(command wt config shell init zsh)"; fi