aboutsummaryrefslogtreecommitdiff
path: root/common/config/zsh/.zshrc
blob: 0ada4f5825f16ca240df7c92bf4762dd76fbc347 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#  ███████╗███████╗██╗  ██╗██████╗  ██████╗
#  ╚══███╔╝██╔════╝██║  ██║██╔══██╗██╔════╝
#    ███╔╝ ███████╗███████║██████╔╝██║
#   ███╔╝  ╚════██║██╔══██║██╔══██╗██║
#  ███████╗███████║██║  ██║██║  ██║╚██████╗
#  ╚══════╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝

# Profile zsh time
#zmodload zsh/zprof

# If not running interactively, and not being sourced, don’t do anything
[[ $- != *i* ]] && [[ "${BASH_SOURCE[0]:-${(%):-%N}}" == "$0" ]] && return

# Terminal key bindings
#stty intr '^q' # Free Ctrl+C for copy use Ctrl+Q instead for Interrupt
stty lnext '^-' # Free Ctrl+V for paste use Ctrl+- instead for Literal next
stty stop undef # Disable Ctrl+S to freeze terminal
stty start undef # Disable Ctrl+Q nfreeze terminal

# Set the current prompt file (e.g., prompt, or prompt_minimal)
ZSH_PROMPT="${ZSH_PROMPT:-prompt}"
#ZSH_PROMPT="${ZSH_PROMPT:-prompt_minimal}"
#ZSH_PROMPT="${ZSH_PROMPT:-prompt_new}"
#ZSH_PROMPT="${ZSH_PROMPT:-prompt_simple}"

# Source common Zsh files (excluding any that start with 'prompt')
ZSH_SOURCES=()

for zsh_source in "$HOME"/.config/zsh/user/*.zsh; do
    if [[ $(basename "$zsh_source") == prompt* && $(basename "$zsh_source" .zsh) != "$ZSH_PROMPT" ]]; then
        continue
    fi
    ZSH_SOURCES+=("$zsh_source")
done

# Source ZSH files
for zsh_source in "${ZSH_SOURCES[@]}"; do
    source "$zsh_source"
done

# Faster SSH
if [[ -n "$SSH_CLIENT" ]]; then
    export KEYTIMEOUT=10
else
    export KEYTIMEOUT=15
fi

# Prevent non-login shell anomalies or toolchain misidentification in VS Code
if [[ "${TERM_PROGRAM:-}" == "vscode" ]]; then
  unset ARGV0
fi

##########    Source Plugins, should be last    ##########

# Load fzf keybindings and completion if fzf is installed
if command -v fzf >/dev/null 2>&1; then
    FZF_BASE="/usr/local/bin/fzf/shell"
    [[ -f "${FZF_BASE}/key-bindings.zsh" ]] && source "${FZF_BASE}/key-bindings.zsh"
    [[ -f "${FZF_BASE}/completion.zsh" ]] && source "${FZF_BASE}/completion.zsh"
fi

# Source plugins
for plugin in \
  "$HOME/.config/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh" \
  "$HOME/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" \
  "$HOME/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh" \
  "$HOME/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh"
do
  [ -f "$plugin" ] && source "$plugin"
done

# Profile zsh time
#zprof              # At the end of .zshrc