1
0
mirror of https://git.decapod.one/brethil/dotfiles synced 2024-11-24 20:41:31 +01:00
dotfiles/brethil_dotfile.sh

Failed to ignore revisions in .git-blame-ignore-revs.

190 lines
5.7 KiB
Bash
Raw Normal View History

2021-04-08 19:59:58 +02:00
# vim:ft=zsh ts=2 sw=2 sts=2
export LANG=en_US.UTF-8
2021-04-12 09:58:36 +02:00
# theme-related variables
2020-12-07 17:19:28 +01:00
export ZSH_CUSTOM="$DOTFILES"
export DISABLE_UNTRACKED_FILES_DIRTY=true
export VIRTUAL_ENV_DISABLE_PROMPT=true
2020-02-27 18:19:52 +01:00
2022-12-18 13:36:07 +01:00
export PATH=$PATH:$HOME/bin
if [[ -d "$HOME/.cache/antibody" ]]; then
# antibody migration cleanup
rm -rf $HOME/.cache/antibody
fi
if [[ ! -d $DOTFILES/antidote ]]; then
git clone https://github.com/mattmc3/antidote.git ${DOTFILES}/antidote
fi
export ZSH_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/oh-my-zsh"
2024-04-17 16:01:39 +02:00
[[ -d $ZSH_CACHE_DIR ]] || mkdir -p $ZSH_CACHE_DIR/completions
# Lazy-load antidote from its functions directory.
fpath=($DOTFILES/antidote/functions/ $fpath)
autoload -Uz antidote
autoload -Uz compinit && compinit
autoload -Uz bashcompinit && bashcompinit
# Lazy-load antidote and generate the static load file only when needed # TODO: look into deferred loading with zsh-defer
zsh_plugins="$DOTFILES/zsh_plugins"
if [[ ! ${zsh_plugins}.zsh -nt ${zsh_plugins}.txt ]]; then
(
source $DOTFILES/antidote/antidote.zsh
echo "ZSH=$(antidote path ohmyzsh/ohmyzsh)" >${zsh_plugins}.zsh
antidote bundle <${zsh_plugins}.txt >>${zsh_plugins}.zsh
if (( $+commands[systemctl] )); then
antidote bundle robbyrussell/oh-my-zsh path:plugins/systemd >>${zsh_plugins}.zsh
fi
if (( $+commands[pacman] )); then
antidote bundle robbyrussell/oh-my-zsh path:plugins/archlinux >>${zsh_plugins}.zsh
elif (( $+commands[apt-get] )); then
antidote bundle robbyrussell/oh-my-zsh path:plugins/debian >>${zsh_plugins}.zsh
fi
)
fi
source ${zsh_plugins}.zsh
source "$DOTFILES/themes/brethil.zsh-theme"
2022-08-12 15:45:38 +02:00
# Setup completion style
source $DOTFILES/extras/completion_style.zsh
source $DOTFILES/extras/colors.zsh
source $DOTFILES/extras/fzf-tab-config.zsh
2022-08-12 15:45:38 +02:00
if (( $+commands[fd] )); then
2023-09-14 22:45:24 +02:00
export FZF_CTRL_T_COMMAND='fd'
else
export FZF_CTRL_T_COMMAND='find'
fi
export FZF_CTRL_T_OPTS=" --preview-window=right,60% --preview \"bash -c 'if [[ -d \"{}\" ]]; then tree -C \"{}\"; else bat --style=plain --color=always \"{}\"; fi'\" --bind 'ctrl-/:change-preview-window(right,70%|down,40%,border-horizontal|hidden|right)'"
if [[ $(fzf --version | cut -d. -f 2) -ge 52 ]]; then
# only available for fzf 0.52.0+ https://github.com/junegunn/fzf/releases/tag/0.52.0
export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --highlight-line"
fi
2023-09-14 22:45:24 +02:00
ZSH_HIGHLIGHT_STYLES[comment]='fg=white,bg=gray,bold'
2020-02-14 16:37:49 +01:00
# Enable zsh autocorrection
setopt CORRECT_ALL
# share history across multiple zsh sessions
setopt SHARE_HISTORY
# append to history
setopt APPEND_HISTORY
# adds commands as they are typed, not at shell exit
setopt INC_APPEND_HISTORY
# Execute commands without verifying after prompt substitution (!!, !$, etc)
setopt NO_HIST_VERIFY
# Silence completion beeps
unsetopt LIST_BEEP
2019-12-07 22:28:16 +01:00
## Misc environment variables
2020-02-14 16:37:43 +01:00
2017-07-17 02:00:15 +02:00
# https://www.xkcd.com/378/
export EDITOR="vim" # if antibody_plugins.txt includes robbyrussell/oh-my-zsh path:plugins/vi-mode, this also sets `bindkey -v` # FIXME
export VI_MODE_RESET_PROMPT_ON_MODE_CHANGE=true # refresh prompt on every mode change
2020-04-06 19:45:22 +02:00
# Fix delete (delete! not backspace) key
bindkey -a '^[[3~' delete-char
2021-12-08 23:53:09 +01:00
export KEYTIMEOUT=50 # reduce the transition time between vim modes to 0.1s
# bindkey -M vicmd 'V' edit-command-line # this remaps `vv` to `V` (but overrides `visual-mode`) # add this if the keytimeout is too slow
2022-02-07 20:49:58 +01:00
if ! grep -q "set editing-mode vi" $HOME/.inputrc &> /dev/null; then
echo "set editing-mode vi" >> ~/.inputrc && echo "Warning: set up editing-mode ~/.inputrc"
fi
2021-05-19 10:30:10 +02:00
export HISTSIZE=10000000
export SAVEHIST=10000000
2020-03-09 17:54:02 +01:00
2022-01-24 09:57:29 +01:00
# zsh-autosuggestions config
export ZSH_AUTOSUGGEST_STRATEGY=(history completion)
export ZSH_AUTOSUGGEST_COMPLETION_IGNORE='* \#*' # prevent completion for comments
2022-01-24 09:57:29 +01:00
2020-12-04 02:56:45 +01:00
# less options
export LESS='-xRF-j12' # -j12: displays 12 lines before search results with / and ?
if (( $+commands[bat] || $+commands[batcat] )); then
export BAT_STYLE='grid,numbers,changes,snip'
if (( $+commands[bat] )); then cmd=bat else cmd=batcat fi
2024-03-08 12:59:28 +01:00
alias cat=$cmd
export PAGER=$cmd
export BAT_PAGER="less $LESS"
if [[ -n $THEME_PREFER_LIGHT ]]; then
export BAT_THEME="gruvbox-light"
else
export BAT_THEME="gruvbox-dark"
fi
## this breaks symlink testing with [ -h ], best not to activate it
# alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
2024-03-08 12:59:28 +01:00
alias bathelp="$cmd --language=help --style=plain"
alias -g -- --help='--help 2>&1 | bathelp '
2019-12-07 22:28:16 +01:00
fi
if [[ $SSH_CLIENT ]]; then
export SSH_AUTH_SOCK=$HOME/.ssh/ssh_auth_sock
fi
2020-02-14 16:37:43 +01:00
# Automatically enable/disable virtualenv on chdir/step
export DOTFILES_AUTOSWITCH_VIRTUALENV=1
2019-12-07 22:32:14 +01:00
alias esource='$EDITOR $HOME/.zshrc'
alias resource='source $HOME/.zshrc'
alias dotedit='$EDITOR $DOTFILES/brethil_dotfile.sh'
2017-07-17 02:00:15 +02:00
# Custom definitions files
alias funedit='$EDITOR ~/.dotfiles_functions'
alias aledit='$EDITOR ~/.dotfiles_aliases'
2017-06-12 16:22:05 +02:00
export p="${HOME}/projects"
export g="${HOME}/git"
for defname in aliases functions ; do
for def in $DOTFILES/$defname/*zsh ; do
source $def
done
done
unset def defname
# Extras
functions_file=~/.dotfiles_functions
aliases_file=~/.dotfiles_aliases
2022-02-07 20:49:25 +01:00
ssh_file=~/.ssh_aliases
( # migration of old format
if [[ -f ${functions_file}.sh ]]; then
echo "Migrating ${functions_file}.sh to ${functions_file}"
mv ${functions_file}{.sh,}
fi
if [[ -f ${aliases_file}.sh ]]; then
echo "Migrating ${aliases_file}.sh to ${aliases_file}"
mv ${aliases_file}{.sh,}
fi
)
# Source extras
test -f "${functions_file}" && source "${functions_file}"
test -f "${aliases_file}" && source "${aliases_file}"
2022-02-07 20:49:25 +01:00
test -f "${ssh_file}" && source "${ssh_file}"
# autoload -U compinit && compinit
# autoload -U bashcompinit && bashcompinit
# Set DISABLE_DOTFILES_AUTOUPDATE=true to disable updates
source "${DOTFILES}/extras/check_for_update.zsh"