2022-02-17 22:31:18 -05:00
|
|
|
|
autoload -Uz promptinit
|
|
|
|
|
setopt appendhistory
|
|
|
|
|
setopt extendedglob
|
|
|
|
|
setopt correctall
|
|
|
|
|
bindkey -v
|
|
|
|
|
bindkey -v '^?' backward-delete-char
|
2021-02-15 20:53:16 -05:00
|
|
|
|
|
2022-08-29 12:56:13 -04:00
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
## Helper functions
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
|
|
|
|
|
exists () {
|
|
|
|
|
command -v "$1" &> /dev/null
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
alias_if_N () {
|
|
|
|
|
while [ "$1" != "--" ]; do
|
|
|
|
|
exists "$1" || return 1
|
|
|
|
|
shift
|
|
|
|
|
done
|
|
|
|
|
shift
|
|
|
|
|
for a in "$@"; do
|
|
|
|
|
alias "$a"
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
alias_if () {
|
|
|
|
|
alias_if_N "$1" -- "${@:2}"
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-14 16:01:35 -04:00
|
|
|
|
alias_if_sudo () {
|
|
|
|
|
alias_if_N sudo "$1" -- "${@:2}"
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-29 12:56:13 -04:00
|
|
|
|
alias_if_else () {
|
|
|
|
|
if ! alias_if_N "$1" -- "$2"; then
|
|
|
|
|
alias "$3"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-15 20:53:16 -05:00
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
# autocompletion
|
|
|
|
|
## --------------------------------------------------
|
2022-02-17 22:31:18 -05:00
|
|
|
|
|
2024-11-19 20:48:14 -05:00
|
|
|
|
fpath+="$XDG_DATA_HOME/zsh/completion/zsh-completions"
|
|
|
|
|
|
2024-02-23 19:22:15 -05:00
|
|
|
|
{{ if .development.conda -}}
|
|
|
|
|
# add conda completions to path if desired
|
|
|
|
|
fpath+="$XDG_DATA_HOME/zsh/completion/zsh-conda-completion"
|
|
|
|
|
{{- end }}
|
|
|
|
|
|
2022-06-01 13:29:15 -04:00
|
|
|
|
# load stuff (order matters)
|
|
|
|
|
zmodload zsh/complist
|
2022-02-17 22:31:18 -05:00
|
|
|
|
autoload -Uz compinit && compinit -i
|
|
|
|
|
autoload -Uz bashcompinit && bashcompinit
|
2021-02-15 20:53:16 -05:00
|
|
|
|
|
2022-06-01 14:14:34 -04:00
|
|
|
|
# use vi-like menu for selection
|
2022-06-01 13:29:15 -04:00
|
|
|
|
bindkey -M menuselect 'h' vi-backward-char
|
|
|
|
|
bindkey -M menuselect 'k' vi-up-line-or-history
|
|
|
|
|
bindkey -M menuselect 'j' vi-down-line-or-history
|
|
|
|
|
bindkey -M menuselect 'l' vi-forward-char
|
2022-06-01 14:14:34 -04:00
|
|
|
|
bindkey -M menuselect 'gg' beginning-of-history
|
|
|
|
|
bindkey -M menuselect 'G' end-of-history
|
|
|
|
|
bindkey -M menuselect 'gj' vi-forward-blank-word
|
|
|
|
|
bindkey -M menuselect 'gk' vi-backward-blank-word
|
|
|
|
|
bindkey -M menuselect '^[[Z' reverse-menu-complete
|
2022-06-01 13:29:15 -04:00
|
|
|
|
zstyle ':completion:*' menu select
|
|
|
|
|
|
|
|
|
|
# add nice colors for descriptions/warnings/messages
|
|
|
|
|
zstyle ':completion:*:*:*:*:descriptions' format '%F{green}-- %d --%f'
|
|
|
|
|
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
|
|
|
|
|
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
|
|
|
|
|
|
2024-02-23 19:22:15 -05:00
|
|
|
|
{{ if .development.conda -}}
|
|
|
|
|
# show group headers for conda completion
|
|
|
|
|
zstyle ":conda_zsh_completion:*" use-groups true
|
|
|
|
|
zstyle ':completion::complete:*' use-cache 1
|
|
|
|
|
{{- end }}
|
|
|
|
|
|
2022-06-01 13:29:15 -04:00
|
|
|
|
# use sane grouping
|
|
|
|
|
zstyle ':completion:*' group-name ''
|
|
|
|
|
|
|
|
|
|
# make file lists useful by showing relevant info
|
|
|
|
|
zstyle ':completion:*' file-list all
|
|
|
|
|
|
|
|
|
|
# Highlight the current autocomplete option
|
2022-06-01 14:14:34 -04:00
|
|
|
|
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
2022-06-01 13:29:15 -04:00
|
|
|
|
|
2021-02-15 20:53:16 -05:00
|
|
|
|
# ignore full hostnames in ssh config file
|
|
|
|
|
# the default ssh function does not seem to differentiate b/t
|
|
|
|
|
# HOST and HOSTNAME directives
|
2022-06-01 13:29:15 -04:00
|
|
|
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
|
2021-02-15 20:53:16 -05:00
|
|
|
|
|
2022-02-17 22:31:18 -05:00
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
# syntax highlighting a la fish
|
|
|
|
|
## --------------------------------------------------
|
2022-08-29 12:56:13 -04:00
|
|
|
|
|
2022-08-02 23:55:59 -04:00
|
|
|
|
hlpath="$XDG_DATA_HOME/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
|
|
|
|
|
if [[ -e "$hlpath" ]]; then
|
|
|
|
|
. "$hlpath"
|
|
|
|
|
fi
|
2022-02-17 22:31:18 -05:00
|
|
|
|
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
# history
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
|
|
|
|
|
setopt hist_expire_dups_first
|
|
|
|
|
setopt hist_ignore_dups
|
|
|
|
|
setopt hist_reduce_blanks
|
|
|
|
|
setopt inc_append_history
|
|
|
|
|
setopt share_history
|
|
|
|
|
|
|
|
|
|
autoload -Uz up-line-or-beginning-search
|
|
|
|
|
autoload -Uz down-line-or-beginning-search
|
|
|
|
|
zle -N up-line-or-beginning-search
|
|
|
|
|
zle -N down-line-or-beginning-search
|
|
|
|
|
bindkey '\eOA' up-line-or-beginning-search
|
|
|
|
|
bindkey '\e[A' up-line-or-beginning-search
|
|
|
|
|
bindkey '\eOB' down-line-or-beginning-search
|
|
|
|
|
bindkey '\e[B' down-line-or-beginning-search
|
|
|
|
|
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
## PROMPT
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
|
|
|
|
|
setopt prompt_subst
|
|
|
|
|
|
|
|
|
|
if [[ ${EUID} -eq 0 ]]; then
|
2022-08-29 12:56:13 -04:00
|
|
|
|
user_color="%F{red}"
|
2022-02-17 22:31:18 -05:00
|
|
|
|
else
|
2022-08-29 12:56:13 -04:00
|
|
|
|
user_color="%F{cyan}"
|
2022-02-17 22:31:18 -05:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
HOSTNAME=""
|
|
|
|
|
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
|
2022-08-29 13:10:58 -04:00
|
|
|
|
HOSTNAME="@%M"
|
2022-02-17 22:31:18 -05:00
|
|
|
|
fi
|
|
|
|
|
|
2022-02-17 23:06:59 -05:00
|
|
|
|
## git prompt
|
|
|
|
|
|
|
|
|
|
zsh-git-off () {
|
|
|
|
|
export ZSH_USE_GIT=0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
zsh-git-on () {
|
|
|
|
|
export ZSH_USE_GIT=1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
zsh-git-on
|
|
|
|
|
|
2022-02-17 22:31:18 -05:00
|
|
|
|
PROMPT=""
|
|
|
|
|
RPROMPT=""
|
|
|
|
|
|
|
|
|
|
git_info() {
|
|
|
|
|
# Exit if not inside a Git repository
|
|
|
|
|
! git rev-parse --is-inside-work-tree > /dev/null 2>&1 && return
|
|
|
|
|
|
|
|
|
|
# Git branch/tag, or name-rev if on detached head
|
|
|
|
|
local GIT_LOCATION=$(git symbolic-ref -q HEAD || \
|
|
|
|
|
git name-rev --name-only \
|
|
|
|
|
--no-undefined --always HEAD)
|
|
|
|
|
GIT_LOCATION=${GIT_LOCATION#(refs/heads/|tags/)}
|
|
|
|
|
|
|
|
|
|
local AHEAD="%F{red}⇡NUM%f"
|
|
|
|
|
local BEHIND="%F{cyan}⇣NUM%f"
|
|
|
|
|
local MERGING="%F{magenta⚡︎%f"
|
|
|
|
|
local UNTRACKED="%F{red}●%f"
|
|
|
|
|
local MODIFIED="%F{yellow}●%f"
|
|
|
|
|
local STAGED="%F{green}●%f"
|
|
|
|
|
|
|
|
|
|
local -a DIVERGENCES
|
|
|
|
|
local -a FLAGS
|
|
|
|
|
|
|
|
|
|
local NUM_AHEAD="$(git log --oneline @{u}.. 2> /dev/null | wc -l | tr -d ' ')"
|
|
|
|
|
if [ "$NUM_AHEAD" -gt 0 ]; then
|
|
|
|
|
DIVERGENCES+=( "${AHEAD//NUM/$NUM_AHEAD}" )
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
local NUM_BEHIND="$(git log --oneline ..@{u} 2> /dev/null | wc -l | tr -d ' ')"
|
|
|
|
|
if [ "$NUM_BEHIND" -gt 0 ]; then
|
|
|
|
|
DIVERGENCES+=( "${BEHIND//NUM/$NUM_BEHIND}" )
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
local GIT_DIR="$(git rev-parse --git-dir 2> /dev/null)"
|
|
|
|
|
if [ -n $GIT_DIR ] && test -r $GIT_DIR/MERGE_HEAD; then
|
|
|
|
|
FLAGS+=( "$MERGING" )
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
|
|
|
|
|
FLAGS+=( "$UNTRACKED" )
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if ! git diff --quiet 2> /dev/null; then
|
|
|
|
|
FLAGS+=( "$MODIFIED" )
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if ! git diff --cached --quiet 2> /dev/null; then
|
|
|
|
|
FLAGS+=( "$STAGED" )
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
local -a GIT_INFO
|
|
|
|
|
[[ ${#DIVERGENCES[@]} -ne 0 ]] && GIT_INFO+=( "${(j::)DIVERGENCES}" )
|
|
|
|
|
[[ ${#FLAGS[@]} -ne 0 ]] && GIT_INFO+=( "${(j::)FLAGS}" )
|
|
|
|
|
GIT_INFO+=( "%F{green}$GIT_LOCATION%f" )
|
|
|
|
|
echo "─(%B${(j: :)GIT_INFO}%b)"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function zle-line-init zle-keymap-select {
|
2022-02-17 23:06:59 -05:00
|
|
|
|
if [[ "$ZSH_USE_GIT" -eq 1 ]]; then
|
|
|
|
|
GIT=$(git_info)
|
|
|
|
|
else;
|
|
|
|
|
GIT=""
|
|
|
|
|
fi
|
2023-03-10 12:22:07 -05:00
|
|
|
|
if [ -z "$CONDA_DEFAULT_ENV" ]; then
|
|
|
|
|
CONDA=""
|
|
|
|
|
else;
|
|
|
|
|
CONDA="─(%B%F{cyan}$CONDA_DEFAULT_ENV%f%b)"
|
|
|
|
|
fi
|
2022-02-17 22:31:18 -05:00
|
|
|
|
NORMAL="%F{yellow}N%f"
|
|
|
|
|
INSERT="%F{cyan}I%f"
|
|
|
|
|
VIMODE="─%B(${${KEYMAP/vicmd/$NORMAL}/(main|viins)/$INSERT})%b"
|
|
|
|
|
USER="$user_color%n$HOSTNAME%f"
|
|
|
|
|
TIME="%F{green}%*%f"
|
|
|
|
|
WD="%F{green}%1~%f"
|
2023-03-10 12:22:07 -05:00
|
|
|
|
PROMPT=$'\n%B┌($USER)─($TIME)$VIMODE$GIT$CONDA\n└─($WD)─>%b '
|
2022-02-17 22:31:18 -05:00
|
|
|
|
zle reset-prompt
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
zle -N zle-line-init
|
|
|
|
|
zle -N zle-keymap-select
|
|
|
|
|
|
|
|
|
|
export KEYTIMEOUT=1
|
|
|
|
|
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
## Title
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
|
|
|
|
|
precmd () { echo -ne "\033]0;urxvt: ${PWD}\007" }
|
|
|
|
|
|
2022-05-20 13:19:50 -04:00
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
## Aliases
|
|
|
|
|
## --------------------------------------------------
|
2022-02-17 22:31:18 -05:00
|
|
|
|
|
|
|
|
|
setopt autopushd
|
|
|
|
|
|
2022-05-20 13:19:50 -04:00
|
|
|
|
## ASSUME these will always exist
|
|
|
|
|
|
2023-05-31 10:46:28 -04:00
|
|
|
|
alias ls='LC_COLLATE=C ls --color --group-directories-first'
|
2022-05-20 13:19:50 -04:00
|
|
|
|
|
2022-02-17 22:31:18 -05:00
|
|
|
|
alias d='dirs -v | head -10'
|
|
|
|
|
alias d1='cd -'
|
|
|
|
|
alias d2='cd -2'
|
|
|
|
|
alias d3='cd -3'
|
|
|
|
|
alias d4='cd -4'
|
|
|
|
|
alias d5='cd -5'
|
|
|
|
|
alias d6='cd -6'
|
|
|
|
|
alias d7='cd -7'
|
|
|
|
|
alias d8='cd -8'
|
|
|
|
|
alias d9='cd -9'
|
|
|
|
|
|
|
|
|
|
alias u='cd ..'
|
|
|
|
|
alias uu='cd ../..'
|
|
|
|
|
alias uuu='cd ../../..'
|
|
|
|
|
alias uuuu='cd ../../../..'
|
|
|
|
|
alias uuuuu='cd ../../../../..'
|
|
|
|
|
|
2022-05-21 00:17:12 -04:00
|
|
|
|
## diff is weird; only use color if ver >= 3.4
|
|
|
|
|
|
|
|
|
|
diffver="$(diff -v | grep -o '\([0-9]\+\.[0-9]\+\)')"
|
|
|
|
|
if [ ${diffver//\.*/} -ge 3 ] && [ ${diffver//*\./} -ge 4 ]; then
|
|
|
|
|
alias diff='diff --color'
|
2023-01-07 14:26:21 -05:00
|
|
|
|
alias_if zdiff zdiff='zdiff --color'
|
2022-05-21 00:17:12 -04:00
|
|
|
|
fi
|
|
|
|
|
|
2022-05-20 13:19:50 -04:00
|
|
|
|
## don't assume the rest of these will exist
|
|
|
|
|
|
|
|
|
|
alias_if grep \
|
|
|
|
|
grep='grep --color=auto' \
|
|
|
|
|
als='alias | grep' \
|
2023-02-04 14:11:42 -05:00
|
|
|
|
hs='history 1 | grep' \
|
|
|
|
|
envs='env | grep'
|
2022-05-20 13:19:50 -04:00
|
|
|
|
|
|
|
|
|
alias_if sudo sudo='sudo '
|
2022-02-17 22:31:18 -05:00
|
|
|
|
|
2022-05-20 13:19:50 -04:00
|
|
|
|
|
2024-02-10 18:04:13 -05:00
|
|
|
|
if ! alias_if eza \
|
|
|
|
|
ll='eza -alhg --group-directories-first' \
|
|
|
|
|
llt='eza -T' \
|
2022-05-20 13:19:50 -04:00
|
|
|
|
llg='ll --git'; then
|
2024-02-29 09:29:56 -05:00
|
|
|
|
alias ll='ls --group-directories-first -Alh'
|
2022-05-20 13:19:50 -04:00
|
|
|
|
alias_if tree llt='tree'
|
2022-02-17 22:31:18 -05:00
|
|
|
|
fi
|
|
|
|
|
|
2022-05-20 13:19:50 -04:00
|
|
|
|
alias_if_sudo reboot reboot='sudo reboot'
|
|
|
|
|
alias_if_sudo poweroff poweroff='sudo poweroff'
|
|
|
|
|
alias_if_sudo halt halt='sudo halt'
|
|
|
|
|
alias_if_sudo shutdown shutdown='sudo shutdown'
|
|
|
|
|
|
|
|
|
|
alias_if_sudo systemctl \
|
|
|
|
|
sc="sudo systemctl" \
|
|
|
|
|
sce="sudo systemctl enable" \
|
|
|
|
|
scd="sudo systemctl disable" \
|
|
|
|
|
scs="sudo systemctl start" \
|
|
|
|
|
sct="sudo systemctl stop" \
|
|
|
|
|
scr="sudo systemctl restart"
|
|
|
|
|
|
|
|
|
|
alias_if systemctl \
|
|
|
|
|
sca="systemctl status" \
|
|
|
|
|
scu="systemctl --user" \
|
|
|
|
|
scue="systemctl --user enable" \
|
|
|
|
|
scud="systemctl --user disable" \
|
|
|
|
|
scus="systemctl --user start" \
|
|
|
|
|
scut="systemctl --user stop" \
|
|
|
|
|
scur="systemctl --user restart"
|
|
|
|
|
|
|
|
|
|
alias_if git \
|
|
|
|
|
g='git' \
|
|
|
|
|
gcl='git clone' \
|
|
|
|
|
ga='git add' \
|
|
|
|
|
grm='git rm' \
|
|
|
|
|
ga='git add' \
|
|
|
|
|
gus='git reset HEAD' \
|
|
|
|
|
gm="git merge" \
|
|
|
|
|
gmv='git mv' \
|
|
|
|
|
gs='git status -s -b' \
|
|
|
|
|
gp='git push' \
|
|
|
|
|
gpo='git push origin' \
|
|
|
|
|
gpom='git push origin master' \
|
|
|
|
|
gr='git remote' \
|
|
|
|
|
gd='git diff' \
|
|
|
|
|
gc='git commit -v' \
|
|
|
|
|
gca='git commit -v -a' \
|
|
|
|
|
gcm='git commit -v -m' \
|
|
|
|
|
gcam="git commit -v -am" \
|
|
|
|
|
gci='git commit --interactive' \
|
|
|
|
|
gb='git branch' \
|
2023-01-07 14:26:21 -05:00
|
|
|
|
gbl='git branch --list' \
|
2022-05-20 13:19:50 -04:00
|
|
|
|
gco='git checkout' \
|
2022-07-24 13:09:46 -04:00
|
|
|
|
glol="git log --graph --decorate --pretty=oneline --abbrev-commit" \
|
|
|
|
|
glola="git log --graph --decorate --pretty=oneline --abbrev-commit --all" \
|
2022-05-20 13:19:50 -04:00
|
|
|
|
gg="git log --graph --pretty=format:'%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%C(cyan)\\ [%cn]' --abbrev-commit --date=relative" \
|
|
|
|
|
ggs="gg --stat" \
|
|
|
|
|
gw="git whatchanged" \
|
|
|
|
|
gt="git tag" \
|
|
|
|
|
gnew="git log HEAD@{1}..HEAD@{0}" \
|
|
|
|
|
ggui="git gui"
|
|
|
|
|
|
2022-06-15 11:09:19 -04:00
|
|
|
|
alias_if tmux \
|
2022-06-15 11:07:43 -04:00
|
|
|
|
tls='tmux ls' \
|
|
|
|
|
tks='tmux kill-session -t' \
|
|
|
|
|
tas='tmux attach-session -t'
|
|
|
|
|
|
2022-05-20 13:19:50 -04:00
|
|
|
|
alias_if chezmoi \
|
2022-08-29 17:46:08 -04:00
|
|
|
|
czp="chezmoi apply" \
|
2022-05-20 13:19:50 -04:00
|
|
|
|
cze="chezmoi edit" \
|
|
|
|
|
czea="chezmoi edit --apply" \
|
|
|
|
|
czd="chezmoi diff" \
|
|
|
|
|
cza="chezmoi add" \
|
2022-08-29 13:20:52 -04:00
|
|
|
|
czu="chezmoi update" \
|
2022-05-20 13:19:50 -04:00
|
|
|
|
czc="chezmoi cd"
|
|
|
|
|
|
2024-10-14 16:01:35 -04:00
|
|
|
|
alias_if_sudo docker \
|
|
|
|
|
dr="sudo docker" \
|
|
|
|
|
drc="sudo docker container" \
|
|
|
|
|
drx="sudo docker exec -it" \
|
|
|
|
|
drX="sudo docker exec" \
|
|
|
|
|
dri="sudo docker inspect" \
|
|
|
|
|
drg="sudo docker image" \
|
|
|
|
|
drv="sudo docker volume" \
|
|
|
|
|
drk="sudo docker compose"
|
|
|
|
|
|
2023-09-04 11:53:39 -04:00
|
|
|
|
alias_if xclip \
|
|
|
|
|
xclip-img="xclip -selection clipboard -t image/png -i"
|
|
|
|
|
|
2022-12-14 15:26:39 -05:00
|
|
|
|
# squeue -> proxy for "slurm"
|
|
|
|
|
alias_if squeue \
|
|
|
|
|
squ="squeue -u $(id -u)"
|
|
|
|
|
|
2024-07-07 10:34:47 -04:00
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
## Functions
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
|
|
|
|
|
if [ -f $XDG_CONFIG_HOME/X11/xinitrc ]; then
|
|
|
|
|
xx () {
|
|
|
|
|
startx $XDG_CONFIG_HOME/X11/xinitrc -- -keeptty > /tmp/dump 2>&1
|
|
|
|
|
}
|
|
|
|
|
fi
|
|
|
|
|
|
2022-02-17 22:31:18 -05:00
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
## Manly Colors
|
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
|
|
|
|
|
man() {
|
|
|
|
|
env LESS_TERMCAP_mb=$'\E[01;31m' \
|
|
|
|
|
LESS_TERMCAP_md=$'\E[01;38;5;13m' \
|
|
|
|
|
LESS_TERMCAP_me=$'\E[0m' \
|
|
|
|
|
LESS_TERMCAP_se=$'\E[0m' \
|
|
|
|
|
LESS_TERMCAP_so=$'\E[38;5;3m' \
|
|
|
|
|
LESS_TERMCAP_ue=$'\E[0m' \
|
|
|
|
|
LESS_TERMCAP_us=$'\E[04;38;5;10m' \
|
|
|
|
|
man "$@"
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-20 20:10:30 -04:00
|
|
|
|
{{- if .desktop }}
|
2021-06-11 00:23:47 -04:00
|
|
|
|
|
2021-02-15 20:53:16 -05:00
|
|
|
|
## --------------------------------------------------
|
|
|
|
|
# enable x11 clipboard sync
|
|
|
|
|
## --------------------------------------------------
|
2022-08-08 22:37:19 -04:00
|
|
|
|
if exists xclip; then
|
|
|
|
|
function x11-clip-wrap-widgets() {
|
|
|
|
|
# NB: Assume we are the first wrapper and that we only wrap native widgets
|
|
|
|
|
# See zsh-autosuggestions.zsh for a more generic and more robust wrapper
|
|
|
|
|
local copy_or_paste=$1
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
|
|
for widget in $@; do
|
|
|
|
|
if [[ $copy_or_paste == "copy" ]]; then
|
|
|
|
|
eval "
|
|
|
|
|
function _x11-clip-wrapped-$widget() {
|
|
|
|
|
zle .$widget
|
|
|
|
|
xclip -in -selection clipboard <<<\$CUTBUFFER
|
|
|
|
|
}
|
|
|
|
|
"
|
|
|
|
|
else
|
|
|
|
|
eval "
|
|
|
|
|
function _x11-clip-wrapped-$widget() {
|
|
|
|
|
CUTBUFFER=\$(xclip -out -selection clipboard)
|
|
|
|
|
zle .$widget
|
|
|
|
|
}
|
|
|
|
|
"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
zle -N $widget _x11-clip-wrapped-$widget
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local copy_widgets=(
|
|
|
|
|
vi-yank vi-yank-eol vi-delete vi-backward-kill-word vi-change-whole-line
|
|
|
|
|
)
|
|
|
|
|
local paste_widgets=(
|
|
|
|
|
vi-put-{before,after}
|
|
|
|
|
)
|
|
|
|
|
x11-clip-wrap-widgets copy $copy_widgets
|
|
|
|
|
x11-clip-wrap-widgets paste $paste_widgets
|
|
|
|
|
fi
|
2021-06-11 00:23:47 -04:00
|
|
|
|
|
2022-07-20 20:10:30 -04:00
|
|
|
|
{{- end }}
|
|
|
|
|
|
2021-02-15 20:53:16 -05:00
|
|
|
|
## --------------------------------------------------
|
2021-03-20 14:55:46 -04:00
|
|
|
|
## Python/Ruby Virtual Environments
|
2021-02-15 20:53:16 -05:00
|
|
|
|
## --------------------------------------------------
|
2021-03-20 14:55:46 -04:00
|
|
|
|
|
|
|
|
|
# both of these languages have similar setups for their virtual envs which
|
|
|
|
|
# involve a) adding a "shims" directory to PATH and then b) adding some shell
|
|
|
|
|
# magic to automatically call the shims
|
|
|
|
|
|
2022-07-20 20:10:30 -04:00
|
|
|
|
{{ if .development.python -}}
|
2022-01-09 15:51:54 -05:00
|
|
|
|
zsh-pyenv () {
|
2022-01-22 18:41:08 -05:00
|
|
|
|
export PATH=$PYENV_ROOT/shims:$PATH
|
|
|
|
|
|
2022-01-09 15:51:54 -05:00
|
|
|
|
if command -v pyenv 1>/dev/null 2>&1; then
|
|
|
|
|
echo "Activating pyenv"
|
2024-05-26 10:14:46 -04:00
|
|
|
|
eval "$(pyenv init -)"
|
2022-01-09 15:51:54 -05:00
|
|
|
|
else
|
|
|
|
|
echo "pyenv not installed"
|
|
|
|
|
fi
|
2024-05-26 10:14:46 -04:00
|
|
|
|
#if command -v pyenv-virtualenv-init 1>/dev/null 2>&1; then
|
|
|
|
|
# echo "Activating pyenv-virtualenv"
|
|
|
|
|
# eval "$(pyenv virtualenv-init - | sed '/PATH/d' -)"
|
|
|
|
|
#fi
|
2022-01-09 15:51:54 -05:00
|
|
|
|
}
|
2022-07-20 20:10:30 -04:00
|
|
|
|
{{- end }}
|
2022-01-09 15:51:54 -05:00
|
|
|
|
|
2022-07-20 20:10:30 -04:00
|
|
|
|
{{ if .development.ruby -}}
|
2022-01-09 15:51:54 -05:00
|
|
|
|
zsh-rbenv () {
|
2022-01-22 18:41:08 -05:00
|
|
|
|
gempaths="$(/usr/bin/gem env gempath):"
|
|
|
|
|
export PATH="${gempaths//:/\/bin:}:$PATH"
|
|
|
|
|
export PATH=$RBENV_ROOT/shims:$PATH
|
|
|
|
|
|
2022-01-09 15:51:54 -05:00
|
|
|
|
if command -v rbenv 1>/dev/null 2>&1; then
|
|
|
|
|
echo "Activating rbenv"
|
|
|
|
|
eval "$(rbenv init - | sed '/PATH/d' -)"
|
|
|
|
|
else
|
|
|
|
|
echo "rbenv not installed"
|
|
|
|
|
fi
|
|
|
|
|
}
|
2022-07-20 20:10:30 -04:00
|
|
|
|
{{- end }}
|
2022-01-09 15:51:54 -05:00
|
|
|
|
|
2022-07-20 20:10:30 -04:00
|
|
|
|
{{ if .development.conda -}}
|
2022-01-09 15:51:54 -05:00
|
|
|
|
zsh-conda () {
|
2023-05-26 15:27:44 -04:00
|
|
|
|
if [ -n "$1" ]; then
|
|
|
|
|
if [ -f "$1" ]; then
|
|
|
|
|
source "$1"
|
|
|
|
|
else
|
|
|
|
|
echo "Could not source file at $1"
|
|
|
|
|
return 1
|
|
|
|
|
fi
|
|
|
|
|
elif [ -x $XDG_DATA_HOME/mambaforge/bin/conda ]; then
|
2022-01-09 15:51:54 -05:00
|
|
|
|
eval "$($XDG_DATA_HOME/mambaforge/bin/conda shell.zsh hook)"
|
|
|
|
|
else
|
|
|
|
|
echo "conda installation not found"
|
2023-05-26 15:27:44 -04:00
|
|
|
|
return 1
|
2022-01-09 15:51:54 -05:00
|
|
|
|
fi
|
2023-05-26 15:27:44 -04:00
|
|
|
|
alias cdd="conda deactivate"
|
|
|
|
|
alias cda="conda activate"
|
|
|
|
|
alias cde="conda env"
|
|
|
|
|
alias cdl="conda list"
|
2024-02-23 19:22:15 -05:00
|
|
|
|
|
|
|
|
|
# this is here and not in condarc so comp can find local envs
|
|
|
|
|
export CONDA_ENVS_DIRS=$XDG_DATA_HOME/conda/envs
|
2022-01-09 15:51:54 -05:00
|
|
|
|
}
|
2021-06-12 15:42:06 -04:00
|
|
|
|
{{- end }}
|