summaryrefslogtreecommitdiffstats
path: root/dot_config/zsh/dot_zshrc
blob: b8ebcb07dd3778f25485222b636fc90f39c8515d (plain) (blame)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.config/zsh/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
[[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]] && source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
# add .local/bin to PATH
export PATH="${XDG_BIN_HOME:-$HOME/.local/bin}:$PATH"

if [ -f /etc/os-release ]
then
  . /etc/os-release
else
  ID=$(uname -s)
fi
case "$ID" in
  Darwin )
    source /usr/local/share/powerlevel10k/powerlevel10k.zsh-theme
    ;;
  * )
    if [ -f /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme ]
    then
      source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
    else
      source ${XDG_DATA_HOME:-$HOME/.local/share}/powerlevel10k/powerlevel10k.zsh-theme
    fi
    ;;
esac

if [ -x "$(command -v gem)" ]; then
  export GEM_HOME="$(gem env user_gemhome)"
  export PATH="$PATH:$GEM_HOME/bin"
fi

# Enable colors and change prompt:
autoload -U colors && colors	# Load colors
setopt autocd		# Automatically cd into typed directory.
#stty stop undef		# Disable ctrl-s to freeze terminal.
setopt interactive_comments
setopt complete_aliases

# History in cache directory:
HISTSIZE=100000000
SAVEHIST=100000000
HISTFILE="$XDG_STATE_HOME"/zsh/history
setopt BANG_HIST                 # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY          # Write the history file in the ":start:elapsed;command" format.
setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY             # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST    # Expire duplicate entries first when trimming history.
setopt HIST_IGNORE_DUPS          # Don't record an entry that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS      # Delete old recorded entry if new entry is a duplicate.
setopt HIST_FIND_NO_DUPS         # Do not display a line previously found.
setopt HIST_IGNORE_SPACE         # Don't record an entry starting with a space.
setopt HIST_SAVE_NO_DUPS         # Don't write duplicate entries in the history file.
setopt HIST_REDUCE_BLANKS        # Remove superfluous blanks before recording entry.
setopt HIST_VERIFY               # Don't execute immediately upon history expansion.
setopt HIST_BEEP                 # Beep when accessing nonexistent history.

# Load aliases and shortcuts if existent.
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/zsh/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/zsh/aliasrc"
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/zsh/.zshopts" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/zsh/.zshopts"

# Basic auto/tab complete:
fpath=(~/.config/zsh/completions $fpath)
autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
#compinit
compinit -d ~/.cache/zsh/zcompdump-$ZSH_VERSION
_comp_options+=(globdots)		# Include hidden files.

# To customize prompt, run `p10k configure` or edit ~/.config/zsh/. p10k.zsh.
[[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh
[[ ! -f ~/.config/zsh/keybindings.zsh ]] || source ~/.config/zsh/keybindings.zsh

if [ -n "$WSL_DISTRO_NAME" ]
then
    command_not_found_handler() {
    if [ -x "$(command -v $0.exe)" ]; then
        cmd=$0.exe
        shift
        $cmd $@
    else
        echo >&2 "zsh: command not found: $@"
        return 127
    fi
}
fi

case "$ID" in
  debian | ubuntu )
    source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
    source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    ;;
  arch | artix | msys2 )
    source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
    source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    ;;
  gentoo )
    source /usr/share/zsh/site-functions/zsh-syntax-highlighting.zsh
    source /usr/share/zsh/site-functions/zsh-autosuggestions.zsh
    ;;
  Darwin )
    source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
    ;;
  * )
    echo "no highlight for you"
    ;;
esac

# Windows Terminal stuff
PS1="\[\033]133;D;\007\]\[\033]133;A;\007\]$PS1\[\033]133;B;\007\]"