summary refs log tree commit diff
path: root/zshrc
blob: f6a5f713946d31a8a296b27272a891518c7a7b50 (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
autoload -U compinit
compinit -C

HISTFILE=~/.zhistory
SAVEHIST=1000
setopt append_history
setopt hist_ignore_space
setopt share_history

setopt auto_menu         # show completion menu on successive tab press
setopt complete_in_word
setopt always_to_end

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'

autoload -U select-word-style
autoload -U colors && colors

autoload -Uz vcs_info add-zsh-hook
setopt prompt_subst

add-zsh-hook precmd vcs_info
# Enable checking for (un)staged changes, enabling use of %u and %c
zstyle ':vcs_info:*' check-for-changes true
# Set custom strings for an unstaged vcs repo changes (*) and staged changes (+)
zstyle ':vcs_info:*' unstagedstr "%F{yellow}●%f"
zstyle ':vcs_info:*' stagedstr   "%F{green}●%f"
# Set the format of the Git information for vcs_info
zstyle ':vcs_info:git:*' formats       " (%b%c%u)"
zstyle ':vcs_info:git:*' actionformats " (%b|%a%u%c)"

# Print timing statistics for everything which takes longer than 5 seconds of
# user + system time ('sleep 6' does not work because of 0% user/system time!).
REPORTTIME=5

# Explicitly select Emacs line editing mode (independent of zsh’s best guess
# based on EDITOR/VISUAL).
bindkey -e

PROMPT='%K{cyan}%F{black}%m%k%f %~%F{red}${vcs_info_msg_0_}%f %# '

# For tramp (emacs).
if [ "$TERM" = "dumb" ]; then
  unset PROMPT
  PS1='$ '
  unsetopt zle
fi