From 0b6b9b07f35e47d0c556e3240cfa4792f594eff1 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 24 Mar 2023 17:05:45 +0100 Subject: erster Import --- zsh/aliases | 1 + zsh/prompt | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ zsh/zshenv | 17 +++++++++ zsh/zshrc | 33 ++++++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 zsh/aliases create mode 100644 zsh/prompt create mode 100644 zsh/zshenv create mode 100644 zsh/zshrc (limited to 'zsh') diff --git a/zsh/aliases b/zsh/aliases new file mode 100644 index 0000000..be6f057 --- /dev/null +++ b/zsh/aliases @@ -0,0 +1 @@ +alias mc='mc -u' diff --git a/zsh/prompt b/zsh/prompt new file mode 100644 index 0000000..0b3833a --- /dev/null +++ b/zsh/prompt @@ -0,0 +1,123 @@ +# Purification +# by Matthieu Cneude +# https://github.com/Phantas0s/purification + +# Based on: + +# Purity +# by Kevin Lanni +# https://github.com/therealklanni/purity +# MIT License + +# prompt: +# %F => color dict +# %f => reset color +# %~ => current path +# %* => time +# %n => username +# %m => shortname host +# %(?..) => prompt conditional - %(condition.true.false) + +# Display git status +# TODO to refactor with switch / using someting else than grep +# Might be faster using ripgrep too +git_prompt_status() { + local INDEX STATUS + + INDEX=$(command git status --porcelain -b 2> /dev/null) + + STATUS="" + + if $(echo "$INDEX" | command grep -E '^\?\? ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" + fi + + if $(echo "$INDEX" | grep '^A ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" + elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" + elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" + fi + + if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + fi + + if $(echo "$INDEX" | grep '^R ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS" + fi + + if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" + elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" + elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" + fi + + if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then + STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS" + fi + + if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" + fi + + if $(echo "$INDEX" | grep '^## [^ ]\+ .*ahead' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS" + fi + + if $(echo "$INDEX" | grep '^## [^ ]\+ .*behind' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS" + fi + + if $(echo "$INDEX" | grep '^## [^ ]\+ .*diverged' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS" + fi + + if [[ ! -z "$STATUS" ]]; then + echo " [ $STATUS]" + fi +} + +prompt_git_branch() { + autoload -Uz vcs_info + precmd_vcs_info() { vcs_info } + precmd_functions+=( precmd_vcs_info ) + setopt prompt_subst + zstyle ':vcs_info:git:*' formats '%b' +} + +prompt_git_info() { + [ ! -z "$vcs_info_msg_0_" ] && echo "$ZSH_THEME_GIT_PROMPT_PREFIX%F{white}$vcs_info_msg_0_%f$ZSH_THEME_GIT_PROMPT_SUFFIX" +} + +prompt_purification_setup() { + ZSH_THEME_GIT_PROMPT_PREFIX=" %F{red}λ%f:" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + + ZSH_THEME_GIT_PROMPT_ADDED="%F{green}+%f " + ZSH_THEME_GIT_PROMPT_MODIFIED="%F{blue}M%f " + ZSH_THEME_GIT_PROMPT_DELETED="%F{red}x%f " + ZSH_THEME_GIT_PROMPT_RENAMED="%F{magenta}➜%f " + ZSH_THEME_GIT_PROMPT_UNMERGED="%F{yellow}═%f " + ZSH_THEME_GIT_PROMPT_UNTRACKED="%F{white}U%f " + ZSH_THEME_GIT_PROMPT_STASHED="%B%F{red}S%f%b " + ZSH_THEME_GIT_PROMPT_BEHIND="%B%F{red}B%f%b " + ZSH_THEME_GIT_PROMPT_AHEAD="%B%F{green}A%f%b " + + prompt_git_branch + RPROMPT='$(prompt_git_info) $(git_prompt_status)' + PROMPT=$'%F{white}%~ %B%F{blue}>%f%b ' +} + +prompt_purification_setup + diff --git a/zsh/zshenv b/zsh/zshenv new file mode 100644 index 0000000..78f6fda --- /dev/null +++ b/zsh/zshenv @@ -0,0 +1,17 @@ +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$XDG_CONFIG_HOME/local/share" +export XDG_CACHE_HOME="$XDG_CONFIG_HOME/cache" + +export EDITOR="nvim" +export VISUAL="nvim" + +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" + +export HISTFILE="$ZDOTDIR/.zhistory" +export HISTSIZE=10000 +export SAVEHIST=10000 + +NPM_PACKAGES="${HOME}/.npm-packages" +export PATH="$PATH:$NPM_PACKAGES/bin" +export MANPATH="${MANPATH-$(manpath)}:$NPM_PACKAGES/share/man" + diff --git a/zsh/zshrc b/zsh/zshrc new file mode 100644 index 0000000..5789d80 --- /dev/null +++ b/zsh/zshrc @@ -0,0 +1,33 @@ +# Aliase +source $XDG_CONFIG_HOME/zsh/aliases + +# Optionen +setopt AUTO_PARAM_SLASH +unsetopt CASE_GLOB +setopt HIST_SAVE_NO_DUPS + +# Command completion +autoload -U compinit; compinit +_comp_options+=(globdots) # With hidden files + +bindkey -v +export KEYTIMEOUT=1 + +fpath=($XDG_CONFIG_HOME/zsh $fpath) +autoload -Uz prompt; prompt + +zmodload zsh/complist +bindkey -M menuselect 'h' vi-backward-char +bindkey -M menuselect 'k' vi-up-line-or-history +bindkey -M menuselect 'l' vi-forward-char +bindkey -M menuselect 'j' vi-down-line-or-history + +autoload -Uz surround +zle -N delete-surround surround +zle -N add-surround surround +zle -N change-surround surround +bindkey -M vicmd cs change-surround +bindkey -M vicmd ds delete-surround +bindkey -M vicmd ys add-surround +bindkey -M visual S add-surround + -- cgit v1.3