Lots of zsh changes
This commit is contained in:
parent
cd61fb7ff4
commit
4893824aff
15 changed files with 817 additions and 158 deletions
|
@ -1,2 +1,2 @@
|
||||||
source ~/.dotfiles/shells/shared/profile
|
source ~/.dotfiles/shells/shared/environmentVariables
|
||||||
|
|
||||||
|
|
|
@ -1,97 +1,52 @@
|
||||||
# If you come from bash you might have to change your $PATH.
|
# Make colours work
|
||||||
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
|
||||||
|
|
||||||
# Path to your oh-my-zsh installation.
|
|
||||||
export ZSH=$HOME/.dotfiles/shells/zsh/oh-my-zsh-core
|
|
||||||
|
|
||||||
|
|
||||||
# Set name of the theme to load. Optionally, if you set this to "random"
|
|
||||||
# it'll load a random theme each time that oh-my-zsh is loaded.
|
|
||||||
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
|
|
||||||
ZSH_THEME="powerlevel9k/powerlevel9k"
|
|
||||||
|
|
||||||
# Uncomment the following line to use case-sensitive completion.
|
|
||||||
# CASE_SENSITIVE="true"
|
|
||||||
|
|
||||||
# Uncomment the following line to use hyphen-insensitive completion. Case
|
|
||||||
# sensitive completion must be off. _ and - will be interchangeable.
|
|
||||||
# HYPHEN_INSENSITIVE="true"
|
|
||||||
|
|
||||||
# Uncomment the following line to disable bi-weekly auto-update checks.
|
|
||||||
# DISABLE_AUTO_UPDATE="true"
|
|
||||||
|
|
||||||
# Uncomment the following line to change how often to auto-update (in days).
|
|
||||||
# export UPDATE_ZSH_DAYS=13
|
|
||||||
|
|
||||||
# Uncomment the following line to disable colors in ls.
|
|
||||||
# DISABLE_LS_COLORS="true"
|
|
||||||
|
|
||||||
# Uncomment the following line to disable auto-setting terminal title.
|
|
||||||
# DISABLE_AUTO_TITLE="true"
|
|
||||||
|
|
||||||
# Uncomment the following line to enable command auto-correction.
|
|
||||||
# ENABLE_CORRECTION="true"
|
|
||||||
|
|
||||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
|
||||||
# COMPLETION_WAITING_DOTS="true"
|
|
||||||
|
|
||||||
# Uncomment the following line if you want to disable marking untracked files
|
|
||||||
# under VCS as dirty. This makes repository status check for large repositories
|
|
||||||
# much, much faster.
|
|
||||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
|
||||||
|
|
||||||
# Uncomment the following line if you want to change the command execution time
|
|
||||||
# stamp shown in the history command output.
|
|
||||||
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
|
||||||
# HIST_STAMPS="dd.mm.yyyy"
|
|
||||||
|
|
||||||
# Would you like to use another custom folder than $ZSH/custom?
|
|
||||||
ZSH_CUSTOM=$HOME/.dotfiles/shells/zsh/oh-my-zsh-custom
|
|
||||||
|
|
||||||
|
|
||||||
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
|
||||||
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
|
||||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
|
||||||
# Add wisely, as too many plugins slow down shell startup.
|
|
||||||
plugins=(git zsh-better-npm-completion zsh-autosuggestions)
|
|
||||||
|
|
||||||
|
|
||||||
source $ZSH/oh-my-zsh.sh
|
|
||||||
|
|
||||||
# User configuration
|
|
||||||
|
|
||||||
# export MANPATH="/usr/local/man:$MANPATH"
|
|
||||||
|
|
||||||
# You may need to manually set your language environment
|
|
||||||
# export LANG=en_US.UTF-8
|
|
||||||
|
|
||||||
# Preferred editor for local and remote sessions
|
|
||||||
# if [[ -n $SSH_CONNECTION ]]; then
|
|
||||||
# export EDITOR='vim'
|
|
||||||
# else
|
|
||||||
# export EDITOR='mvim'
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# Compilation flags
|
|
||||||
# export ARCHFLAGS="-arch x86_64"
|
|
||||||
|
|
||||||
# ssh
|
|
||||||
# export SSH_KEY_PATH="~/.ssh/rsa_id"
|
|
||||||
|
|
||||||
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
|
||||||
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
|
||||||
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
|
||||||
# For a full list of active aliases, run `alias`.
|
|
||||||
#
|
#
|
||||||
# Example aliases
|
autoload -U colors && colors
|
||||||
# alias zshconfig="mate ~/.zshrc"
|
|
||||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
# Make sure we are using vi mode
|
||||||
|
bindkey -v
|
||||||
|
|
||||||
|
# History in cache directory:
|
||||||
|
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_IGNORE_SPACE
|
||||||
|
HISTSIZE=10000
|
||||||
|
SAVEHIST=10000
|
||||||
|
HISTFILE=~/.cache/zsh/history
|
||||||
|
|
||||||
|
export KEYTIMEOUT=25
|
||||||
|
|
||||||
|
# Change cursor shape for different vi modes. (thanks Luke Smith: https://github.com/LukeSmithxyz/voidrice/)
|
||||||
|
function zle-keymap-select {
|
||||||
|
if [[ ${KEYMAP} == vicmd ]] ||
|
||||||
|
[[ $1 = 'block' ]]; then
|
||||||
|
echo -ne '\e[1 q'
|
||||||
|
|
||||||
|
elif [[ ${KEYMAP} == main ]] ||
|
||||||
|
[[ ${KEYMAP} == viins ]] ||
|
||||||
|
[[ ${KEYMAP} = '' ]] ||
|
||||||
|
[[ $1 = 'beam' ]]; then
|
||||||
|
echo -ne '\e[5 q'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
zle -N zle-keymap-select
|
||||||
|
#
|
||||||
|
zle-line-init() {
|
||||||
|
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
|
||||||
|
echo -ne '\e[5 q'
|
||||||
|
}
|
||||||
|
zle -N zle-line-init
|
||||||
|
|
||||||
|
# Use beam shape cursor on startup.
|
||||||
|
echo -ne '\e[5 q'
|
||||||
|
# Use beam shape cursor for each new prompt.
|
||||||
|
preexec() { echo -ne '\e[5 q' ;}
|
||||||
|
|
||||||
|
bindkey -v '^?' backward-delete-char
|
||||||
|
|
||||||
source ~/.dotfiles/shells/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
|
||||||
|
|
||||||
if [ ! -n "$SSH_CLIENT" ] && [ ! -n "$SSH_TTY" ]; then
|
if [ ! -n "$SSH_CLIENT" ] && [ ! -n "$SSH_TTY" ]; then
|
||||||
if [ -L $HOME/.dotfiles/shells/zsh/current-color-scheme ]; then
|
if [ -L $DOTFILES/shells/zsh/current-color-scheme ]; then
|
||||||
source $HOME/.dotfiles/shells/zsh/current-color-scheme
|
source $DOTFILES/shells/zsh/current-color-scheme
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -99,24 +54,30 @@ TRAPWINCH(){
|
||||||
zle && {zle reset-prompt; zle -R}
|
zle && {zle reset-prompt; zle -R}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if [ -f ~/.current-folder ] && [ ! $TMUX ]; then
|
setopt autocd
|
||||||
# \cd "$(cat ~/.current-folder)"
|
|
||||||
#fi
|
|
||||||
|
|
||||||
#[ -z "$TMUX" ] && { exec tmux new-session && exit;}
|
|
||||||
#if [[ ! $TERM =~ screen ]]; then
|
|
||||||
# exec tmux
|
|
||||||
#fi
|
|
||||||
#
|
|
||||||
|
|
||||||
|
# I use initial command in my folder-shell script
|
||||||
|
# This is normally empty, but might be lf or ranger if I want to open it
|
||||||
|
# THis is almost always a curses app so I don't want to try and record the terminal
|
||||||
|
if [ -n "$initialCommand" ]; then
|
||||||
|
echo "Running $initialCommand"
|
||||||
|
$initialCommand && exit
|
||||||
|
else
|
||||||
local current="$(project current --path)"
|
local current="$(project current --path)"
|
||||||
if [ -n "$current" ]; then
|
if [ -n "$current" ]; then
|
||||||
local script="/usr/bin/script"
|
local script="/usr/bin/script"
|
||||||
if [[ ! "$(ps -ocommand -p $PPID | grep -v 'COMMAND' | cut -d' ' -f1 )" == "$script" ]]; then
|
if [[ ! "$(ps -ocommand -p $PPID | grep -v 'COMMAND' | cut -d' ' -f1 )" == "$script" ]]; then
|
||||||
mkdir "$current/shell-logs"
|
mkdir "$current/shell-logs" 2> /dev/null
|
||||||
/usr/bin/script -f "$current/shell-logs/$(date +"%d-%b-%y_%H-%M-%S")_shell.log"
|
/usr/bin/script -f "$current/shell-logs/$(date +"%d-%b-%y_%H-%M-%S")_shell.log"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
#clear
|
export ZSH_FOLDER="$DOTFILES/shells/zsh/"
|
||||||
#tldr --linux -r
|
# Include my config files
|
||||||
|
for file in "$ZSH_FOLDER/includes/"*".zsh"; do
|
||||||
|
source "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Load zsh-syntax-highlighting; should be last.
|
||||||
|
source $HOME/.dotfiles/shells/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2> /dev/null
|
||||||
|
|
131
shells/zsh/STOW/.zshrc.old
Normal file
131
shells/zsh/STOW/.zshrc.old
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
# If you come from bash you might have to change your $PATH.
|
||||||
|
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||||
|
|
||||||
|
# Path to your oh-my-zsh installation.
|
||||||
|
#export ZSH=$HOME/.dotfiles/shells/zsh/oh-my-zsh-core
|
||||||
|
|
||||||
|
|
||||||
|
# Set name of the theme to load. Optionally, if you set this to "random"
|
||||||
|
# it'll load a random theme each time that oh-my-zsh is loaded.
|
||||||
|
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
|
||||||
|
#ZSH_THEME="powerlevel9k/powerlevel9k"
|
||||||
|
|
||||||
|
# Uncomment the following line to use case-sensitive completion.
|
||||||
|
# CASE_SENSITIVE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to use hyphen-insensitive completion. Case
|
||||||
|
# sensitive completion must be off. _ and - will be interchangeable.
|
||||||
|
# HYPHEN_INSENSITIVE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to disable bi-weekly auto-update checks.
|
||||||
|
# DISABLE_AUTO_UPDATE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to change how often to auto-update (in days).
|
||||||
|
# export UPDATE_ZSH_DAYS=13
|
||||||
|
|
||||||
|
# Uncomment the following line to disable colors in ls.
|
||||||
|
# DISABLE_LS_COLORS="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to disable auto-setting terminal title.
|
||||||
|
# DISABLE_AUTO_TITLE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to enable command auto-correction.
|
||||||
|
# ENABLE_CORRECTION="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||||
|
# COMPLETION_WAITING_DOTS="true"
|
||||||
|
|
||||||
|
# Uncomment the following line if you want to disable marking untracked files
|
||||||
|
# under VCS as dirty. This makes repository status check for large repositories
|
||||||
|
# much, much faster.
|
||||||
|
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||||
|
|
||||||
|
# Uncomment the following line if you want to change the command execution time
|
||||||
|
# stamp shown in the history command output.
|
||||||
|
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||||
|
# HIST_STAMPS="dd.mm.yyyy"
|
||||||
|
|
||||||
|
# Would you like to use another custom folder than $ZSH/custom?
|
||||||
|
#ZSH_CUSTOM=$HOME/.dotfiles/shells/zsh/oh-my-zsh-custom
|
||||||
|
|
||||||
|
|
||||||
|
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
||||||
|
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
||||||
|
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||||
|
# Add wisely, as too many plugins slow down shell startup.
|
||||||
|
#plugins=(git zsh-better-npm-completion zsh-autosuggestions)
|
||||||
|
|
||||||
|
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
|
# User configuration
|
||||||
|
|
||||||
|
# export MANPATH="/usr/local/man:$MANPATH"
|
||||||
|
|
||||||
|
# You may need to manually set your language environment
|
||||||
|
# export LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
# Preferred editor for local and remote sessions
|
||||||
|
# if [[ -n $SSH_CONNECTION ]]; then
|
||||||
|
# export EDITOR='vim'
|
||||||
|
# else
|
||||||
|
# export EDITOR='mvim'
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# Compilation flags
|
||||||
|
# export ARCHFLAGS="-arch x86_64"
|
||||||
|
|
||||||
|
# ssh
|
||||||
|
# export SSH_KEY_PATH="~/.ssh/rsa_id"
|
||||||
|
|
||||||
|
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
||||||
|
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
||||||
|
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
||||||
|
# For a full list of active aliases, run `alias`.
|
||||||
|
#
|
||||||
|
# Example aliases
|
||||||
|
# alias zshconfig="mate ~/.zshrc"
|
||||||
|
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||||
|
|
||||||
|
source ~/.dotfiles/shells/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
|
|
||||||
|
if [ ! -n "$SSH_CLIENT" ] && [ ! -n "$SSH_TTY" ]; then
|
||||||
|
if [ -L $HOME/.dotfiles/shells/zsh/current-color-scheme ]; then
|
||||||
|
source $HOME/.dotfiles/shells/zsh/current-color-scheme
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
TRAPWINCH(){
|
||||||
|
zle && {zle reset-prompt; zle -R}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if [ -f ~/.current-folder ] && [ ! $TMUX ]; then
|
||||||
|
# \cd "$(cat ~/.current-folder)"
|
||||||
|
#fi
|
||||||
|
|
||||||
|
#[ -z "$TMUX" ] && { exec tmux new-session && exit;}
|
||||||
|
#if [[ ! $TERM =~ screen ]]; then
|
||||||
|
# exec tmux
|
||||||
|
#fi
|
||||||
|
#
|
||||||
|
|
||||||
|
# I use initial command in my folder-shell script
|
||||||
|
# This is normally empty, but might be lf or ranger if I want to open it
|
||||||
|
# THis is almost always a curses app so I don't want to try and record the terminal
|
||||||
|
if [ -n "$initialCommand" ]; then
|
||||||
|
echo "Running $initialCommand"
|
||||||
|
$initialCommand && exit
|
||||||
|
else
|
||||||
|
local current="$(project current --path)"
|
||||||
|
if [ -n "$current" ]; then
|
||||||
|
local script="/usr/bin/script"
|
||||||
|
if [[ ! "$(ps -ocommand -p $PPID | grep -v 'COMMAND' | cut -d' ' -f1 )" == "$script" ]]; then
|
||||||
|
mkdir "$current/shell-logs"
|
||||||
|
/usr/bin/script -f "$current/shell-logs/$(date +"%d-%b-%y_%H-%M-%S")_shell.log"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#clear
|
||||||
|
#tldr --linux -r
|
|
@ -21,4 +21,3 @@ alias -s gitignore=$EDITOR
|
||||||
|
|
||||||
alias -s json=$EDITOR
|
alias -s json=$EDITOR
|
||||||
|
|
||||||
#unalias gf
|
|
||||||
|
|
6
shells/zsh/includes/auto-notify.zsh
Normal file
6
shells/zsh/includes/auto-notify.zsh
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
source "$ZSH_FOLDER/plugins/zsh-auto-notify/auto-notify.plugin.zsh"
|
||||||
|
export AUTO_NOTIFY_THRESHOLD=5
|
||||||
|
export AUTO_NOTIFY_TITLE="Hey! %command has just finished"
|
||||||
|
export AUTO_NOTIFY_BODY="It completed in %elapsed seconds with exit code %exit_code"
|
||||||
|
AUTO_NOTIFY_IGNORE+=("bat" "zathura" "libreoffice" "lf")
|
||||||
|
disable_auto_notify
|
2
shells/zsh/includes/autoSuggest.zsh
Normal file
2
shells/zsh/includes/autoSuggest.zsh
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
|
||||||
|
source "$ZSH_FOLDER/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh"
|
373
shells/zsh/includes/colors.zsh
Executable file
373
shells/zsh/includes/colors.zsh
Executable file
|
@ -0,0 +1,373 @@
|
||||||
|
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||||
|
################################################################
|
||||||
|
# Color functions
|
||||||
|
# This file holds some color-functions for
|
||||||
|
# the powerlevel9k-ZSH-theme
|
||||||
|
# https://github.com/bhilburn/powerlevel9k
|
||||||
|
# Modified my jh
|
||||||
|
################################################################
|
||||||
|
|
||||||
|
typeset -gAh __JH_COLORS
|
||||||
|
# https://jonasjacek.github.io/colors/
|
||||||
|
# use color names by default to allow dark/light themes to adjust colors based on names
|
||||||
|
__JH_COLORS=(
|
||||||
|
black 000
|
||||||
|
red 001
|
||||||
|
green 002
|
||||||
|
yellow 003
|
||||||
|
blue 004
|
||||||
|
magenta 005
|
||||||
|
cyan 006
|
||||||
|
white 007
|
||||||
|
grey 008
|
||||||
|
maroon 009
|
||||||
|
lime 010
|
||||||
|
olive 011
|
||||||
|
navy 012
|
||||||
|
fuchsia 013
|
||||||
|
purple 013
|
||||||
|
aqua 014
|
||||||
|
teal 014
|
||||||
|
silver 015
|
||||||
|
grey0 016
|
||||||
|
navyblue 017
|
||||||
|
darkblue 018
|
||||||
|
blue3 019
|
||||||
|
blue3 020
|
||||||
|
blue1 021
|
||||||
|
darkgreen 022
|
||||||
|
deepskyblue4 023
|
||||||
|
deepskyblue4 024
|
||||||
|
deepskyblue4 025
|
||||||
|
dodgerblue3 026
|
||||||
|
dodgerblue2 027
|
||||||
|
green4 028
|
||||||
|
springgreen4 029
|
||||||
|
turquoise4 030
|
||||||
|
deepskyblue3 031
|
||||||
|
deepskyblue3 032
|
||||||
|
dodgerblue1 033
|
||||||
|
green3 034
|
||||||
|
springgreen3 035
|
||||||
|
darkcyan 036
|
||||||
|
lightseagreen 037
|
||||||
|
deepskyblue2 038
|
||||||
|
deepskyblue1 039
|
||||||
|
green3 040
|
||||||
|
springgreen3 041
|
||||||
|
springgreen2 042
|
||||||
|
cyan3 043
|
||||||
|
darkturquoise 044
|
||||||
|
turquoise2 045
|
||||||
|
green1 046
|
||||||
|
springgreen2 047
|
||||||
|
springgreen1 048
|
||||||
|
mediumspringgreen 049
|
||||||
|
cyan2 050
|
||||||
|
cyan1 051
|
||||||
|
darkred 052
|
||||||
|
deeppink4 053
|
||||||
|
purple4 054
|
||||||
|
purple4 055
|
||||||
|
purple3 056
|
||||||
|
blueviolet 057
|
||||||
|
orange4 058
|
||||||
|
grey37 059
|
||||||
|
mediumpurple4 060
|
||||||
|
slateblue3 061
|
||||||
|
slateblue3 062
|
||||||
|
royalblue1 063
|
||||||
|
chartreuse4 064
|
||||||
|
darkseagreen4 065
|
||||||
|
paleturquoise4 066
|
||||||
|
steelblue 067
|
||||||
|
steelblue3 068
|
||||||
|
cornflowerblue 069
|
||||||
|
chartreuse3 070
|
||||||
|
darkseagreen4 071
|
||||||
|
cadetblue 072
|
||||||
|
cadetblue 073
|
||||||
|
skyblue3 074
|
||||||
|
steelblue1 075
|
||||||
|
chartreuse3 076
|
||||||
|
palegreen3 077
|
||||||
|
seagreen3 078
|
||||||
|
aquamarine3 079
|
||||||
|
mediumturquoise 080
|
||||||
|
steelblue1 081
|
||||||
|
chartreuse2 082
|
||||||
|
seagreen2 083
|
||||||
|
seagreen1 084
|
||||||
|
seagreen1 085
|
||||||
|
aquamarine1 086
|
||||||
|
darkslategray2 087
|
||||||
|
darkred 088
|
||||||
|
deeppink4 089
|
||||||
|
darkmagenta 090
|
||||||
|
darkmagenta 091
|
||||||
|
darkviolet 092
|
||||||
|
purple 093
|
||||||
|
orange4 094
|
||||||
|
lightpink4 095
|
||||||
|
plum4 096
|
||||||
|
mediumpurple3 097
|
||||||
|
mediumpurple3 098
|
||||||
|
slateblue1 099
|
||||||
|
yellow4 100
|
||||||
|
wheat4 101
|
||||||
|
grey53 102
|
||||||
|
lightslategrey 103
|
||||||
|
mediumpurple 104
|
||||||
|
lightslateblue 105
|
||||||
|
yellow4 106
|
||||||
|
darkolivegreen3 107
|
||||||
|
darkseagreen 108
|
||||||
|
lightskyblue3 109
|
||||||
|
lightskyblue3 110
|
||||||
|
skyblue2 111
|
||||||
|
chartreuse2 112
|
||||||
|
darkolivegreen3 113
|
||||||
|
palegreen3 114
|
||||||
|
darkseagreen3 115
|
||||||
|
darkslategray3 116
|
||||||
|
skyblue1 117
|
||||||
|
chartreuse1 118
|
||||||
|
lightgreen 119
|
||||||
|
lightgreen 120
|
||||||
|
palegreen1 121
|
||||||
|
aquamarine1 122
|
||||||
|
darkslategray1 123
|
||||||
|
red3 124
|
||||||
|
deeppink4 125
|
||||||
|
mediumvioletred 126
|
||||||
|
magenta3 127
|
||||||
|
darkviolet 128
|
||||||
|
purple 129
|
||||||
|
darkorange3 130
|
||||||
|
indianred 131
|
||||||
|
hotpink3 132
|
||||||
|
mediumorchid3 133
|
||||||
|
mediumorchid 134
|
||||||
|
mediumpurple2 135
|
||||||
|
darkgoldenrod 136
|
||||||
|
lightsalmon3 137
|
||||||
|
rosybrown 138
|
||||||
|
grey63 139
|
||||||
|
mediumpurple2 140
|
||||||
|
mediumpurple1 141
|
||||||
|
gold3 142
|
||||||
|
darkkhaki 143
|
||||||
|
navajowhite3 144
|
||||||
|
grey69 145
|
||||||
|
lightsteelblue3 146
|
||||||
|
lightsteelblue 147
|
||||||
|
yellow3 148
|
||||||
|
darkolivegreen3 149
|
||||||
|
darkseagreen3 150
|
||||||
|
darkseagreen2 151
|
||||||
|
lightcyan3 152
|
||||||
|
lightskyblue1 153
|
||||||
|
greenyellow 154
|
||||||
|
darkolivegreen2 155
|
||||||
|
palegreen1 156
|
||||||
|
darkseagreen2 157
|
||||||
|
darkseagreen1 158
|
||||||
|
paleturquoise1 159
|
||||||
|
red3 160
|
||||||
|
deeppink3 161
|
||||||
|
deeppink3 162
|
||||||
|
magenta3 163
|
||||||
|
magenta3 164
|
||||||
|
magenta2 165
|
||||||
|
darkorange3 166
|
||||||
|
indianred 167
|
||||||
|
hotpink3 168
|
||||||
|
hotpink2 169
|
||||||
|
orchid 170
|
||||||
|
mediumorchid1 171
|
||||||
|
orange3 172
|
||||||
|
lightsalmon3 173
|
||||||
|
lightpink3 174
|
||||||
|
pink3 175
|
||||||
|
plum3 176
|
||||||
|
violet 177
|
||||||
|
gold3 178
|
||||||
|
lightgoldenrod3 179
|
||||||
|
tan 180
|
||||||
|
mistyrose3 181
|
||||||
|
thistle3 182
|
||||||
|
plum2 183
|
||||||
|
yellow3 184
|
||||||
|
khaki3 185
|
||||||
|
lightgoldenrod2 186
|
||||||
|
lightyellow3 187
|
||||||
|
grey84 188
|
||||||
|
lightsteelblue1 189
|
||||||
|
yellow2 190
|
||||||
|
darkolivegreen1 191
|
||||||
|
darkolivegreen1 192
|
||||||
|
darkseagreen1 193
|
||||||
|
honeydew2 194
|
||||||
|
lightcyan1 195
|
||||||
|
red1 196
|
||||||
|
deeppink2 197
|
||||||
|
deeppink1 198
|
||||||
|
deeppink1 199
|
||||||
|
magenta2 200
|
||||||
|
magenta1 201
|
||||||
|
orangered1 202
|
||||||
|
indianred1 203
|
||||||
|
indianred1 204
|
||||||
|
hotpink 205
|
||||||
|
hotpink 206
|
||||||
|
mediumorchid1 207
|
||||||
|
darkorange 208
|
||||||
|
salmon1 209
|
||||||
|
lightcoral 210
|
||||||
|
palevioletred1 211
|
||||||
|
orchid2 212
|
||||||
|
orchid1 213
|
||||||
|
orange1 214
|
||||||
|
sandybrown 215
|
||||||
|
lightsalmon1 216
|
||||||
|
lightpink1 217
|
||||||
|
pink1 218
|
||||||
|
plum1 219
|
||||||
|
gold1 220
|
||||||
|
lightgoldenrod2 221
|
||||||
|
lightgoldenrod2 222
|
||||||
|
navajowhite1 223
|
||||||
|
mistyrose1 224
|
||||||
|
thistle1 225
|
||||||
|
yellow1 226
|
||||||
|
lightgoldenrod1 227
|
||||||
|
khaki1 228
|
||||||
|
wheat1 229
|
||||||
|
cornsilk1 230
|
||||||
|
grey100 231
|
||||||
|
grey3 232
|
||||||
|
grey7 233
|
||||||
|
grey11 234
|
||||||
|
grey15 235
|
||||||
|
grey19 236
|
||||||
|
grey23 237
|
||||||
|
grey27 238
|
||||||
|
grey30 239
|
||||||
|
grey35 240
|
||||||
|
grey39 241
|
||||||
|
grey42 242
|
||||||
|
grey46 243
|
||||||
|
grey50 244
|
||||||
|
grey54 245
|
||||||
|
grey58 246
|
||||||
|
grey62 247
|
||||||
|
grey66 248
|
||||||
|
grey70 249
|
||||||
|
grey74 250
|
||||||
|
grey78 251
|
||||||
|
grey82 252
|
||||||
|
grey85 253
|
||||||
|
grey89 254
|
||||||
|
grey93 255
|
||||||
|
)
|
||||||
|
|
||||||
|
function termColors() {
|
||||||
|
|
||||||
|
local term_colors
|
||||||
|
|
||||||
|
if which tput &>/dev/null; then
|
||||||
|
term_colors=$(tput colors)
|
||||||
|
else
|
||||||
|
term_colors=$(echotc Co)
|
||||||
|
fi
|
||||||
|
if (( ! $? && ${term_colors:-0} < 256 )); then
|
||||||
|
print -P "%F{red}WARNING!%f Your terminal appears to support fewer than 256 colors!"
|
||||||
|
print -P "If your terminal supports 256 colors, please export the appropriate environment variable"
|
||||||
|
print -P "_before_ loading this theme in your \~\/.zshrc. In most terminal emulators, putting"
|
||||||
|
print -P "%F{blue}export TERM=\"xterm-256color\"%f at the top of your \~\/.zshrc is sufficient."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# get the proper color code if it does not exist as a name.
|
||||||
|
function getColor() {
|
||||||
|
# If Color is not numerical, try to get the color code.
|
||||||
|
if [[ "$1" != <-> ]]; then
|
||||||
|
1=$(getColorCode $1)
|
||||||
|
fi
|
||||||
|
echo -n "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# empty paramenter resets (stops) background color
|
||||||
|
function backgroundColor() {
|
||||||
|
echo -n "%K{$(getColor $1)}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# empty paramenter resets (stops) foreground color
|
||||||
|
function foregroundColor() {
|
||||||
|
echo -n "%F{$(getColor $1)}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function focusBackgroundColor() {
|
||||||
|
if [ "$HASFOCUS" = "true" ]; then
|
||||||
|
backgroundColor "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function focusForegroundColor() {
|
||||||
|
if [ "$HASFOCUS" = "true" ]; then
|
||||||
|
foregroundColor "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get numerical color codes. That way we translate ANSI codes
|
||||||
|
# into ZSH-Style color codes.
|
||||||
|
function getColorCode() {
|
||||||
|
# Early exit: Check if given value is already numerical
|
||||||
|
if [[ "$1" == <-> ]]; then
|
||||||
|
# Pad color with zeroes
|
||||||
|
echo -n "${(l:3::0:)1}"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local colorName="${1}"
|
||||||
|
# Check if value is none with any case.
|
||||||
|
if [[ "${(L)colorName}" == "none" ]]; then
|
||||||
|
echo -n 'none'
|
||||||
|
elif [[ "${colorName}" == "foreground" ]]; then
|
||||||
|
# for testing purposes in terminal
|
||||||
|
# call via `getColorCode foreground`
|
||||||
|
for i in "${(k@)__JH_COLORS}"; do
|
||||||
|
print -P "$(foregroundColor $i)$(getColor $i) - $i%f"
|
||||||
|
done
|
||||||
|
elif [[ "${colorName}" == "background" ]]; then
|
||||||
|
# call via `getColorCode background`
|
||||||
|
for i in "${(k@)__JH_COLORS}"; do
|
||||||
|
print -P "$(backgroundColor $i)$(getColor $i) - $i%k"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# Strip eventual "bg-" prefixes
|
||||||
|
colorName=${colorName#bg-}
|
||||||
|
# Strip eventual "fg-" prefixes
|
||||||
|
colorName=${colorName#fg-}
|
||||||
|
# Strip eventual "br" prefixes ("bright" colors)
|
||||||
|
colorName=${colorName#br}
|
||||||
|
echo -n $__JH_COLORS[$colorName]
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if two colors are equal, even if one is specified as ANSI code.
|
||||||
|
function isSameColor() {
|
||||||
|
if [[ "$1" == "NONE" || "$2" == "NONE" ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local color1=$(getColorCode "$1")
|
||||||
|
local color2=$(getColorCode "$2")
|
||||||
|
|
||||||
|
return $(( color1 != color2 ))
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetColor(){
|
||||||
|
backgroundColor none
|
||||||
|
foregroundColor white
|
||||||
|
echo -n "%{$reset_color%}"
|
||||||
|
}
|
|
@ -1,3 +1,18 @@
|
||||||
|
# Make completion work
|
||||||
|
autoload -U compinit
|
||||||
|
zstyle ':completion:*' menu select
|
||||||
|
# Auto complete with case insenstivity
|
||||||
|
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||||
|
zmodload zsh/complist
|
||||||
|
compinit
|
||||||
|
#
|
||||||
|
# Use vim keys in tab complete menu: (thanks Luke Smith: https://github.com/LukeSmithxyz/voidrice/)
|
||||||
|
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
|
||||||
|
bindkey -v '^?' backward-delete-char
|
||||||
|
|
||||||
compdef sshrc=ssh
|
compdef sshrc=ssh
|
||||||
|
|
||||||
autoload bashcompinit
|
autoload bashcompinit
|
||||||
|
@ -21,6 +36,7 @@ _wp_complete() {
|
||||||
}
|
}
|
||||||
complete -o nospace -F _wp_complete wp
|
complete -o nospace -F _wp_complete wp
|
||||||
|
|
||||||
|
# Include hidden files in autocomplete:
|
||||||
_comp_options+=(globdots)
|
_comp_options+=(globdots)
|
||||||
|
|
||||||
fpath+="$(dirname $0)/completion"
|
#source "$ZSH_FOLDER/plugins/fzf-tab/fzf-tab.zsh"
|
||||||
|
|
22
shells/zsh/includes/focus.zsh
Normal file
22
shells/zsh/includes/focus.zsh
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#Gain focus
|
||||||
|
|
||||||
|
gain_focus(){
|
||||||
|
export HASFOCUS="true"
|
||||||
|
set_prompts
|
||||||
|
zle reset-prompt
|
||||||
|
}
|
||||||
|
zle -N gain_focus
|
||||||
|
|
||||||
|
loose_focus(){
|
||||||
|
export HASFOCUS="false"
|
||||||
|
set_prompts
|
||||||
|
zle reset-prompt
|
||||||
|
}
|
||||||
|
zle -N loose_focus
|
||||||
|
|
||||||
|
|
||||||
|
# This makes sc (and maybe other terminals?) send escape codes to the shell when focus is gained / lost
|
||||||
|
printf '\033[?1004h'
|
||||||
|
bindkey '\033[I' gain_focus # Gain Focus
|
||||||
|
bindkey '\033[O' loose_focus # Loose Focus
|
||||||
|
HASFOCUS="true"
|
|
@ -1,9 +1,10 @@
|
||||||
# this rg command will get a list of files that are not in gitignore or similar
|
# this rg command will get a list of files that are not in gitignore or similar
|
||||||
export FZF_DEFAULT_COMMAND="fd --type f --hidden --follow --exclude .git --exclude .PlayOnLinux --exclude \"PlayOnLinux\'s virtual drives\""
|
export FZF_DEFAULT_COMMAND="fd --type f --hidden --follow --exclude .git --exclude .PlayOnLinux --exclude \"PlayOnLinux\'s virtual drives\""
|
||||||
export FZF_DEFAULT_OPTS="--preview '[[ \$(file -L --mime {}) =~ binary ]] && echo {} is a binary file || ( bat --style=numbers --color=always {} || cat {}) 2> /dev/null | head -500'"
|
export FZF_DEFAULT_OPTS="--reverse --height 40%"
|
||||||
export FZF_CTRL_R_OPTS="--no-preview"
|
export FZF_CTRL_R_OPTS=""
|
||||||
# this is the argument completeion optionm, use the same command
|
# this is the argument completeion optionm, use the same command
|
||||||
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
||||||
|
export FZF_CTRL_T_OPTS="$FZF_DEFAULT_OPTS --preview \"bat --style=numbers --color=always {}\""
|
||||||
if [ -e /usr/share/fzf/key-bindings.zsh ]; then
|
if [ -e /usr/share/fzf/key-bindings.zsh ]; then
|
||||||
source /usr/share/fzf/key-bindings.zsh
|
source /usr/share/fzf/key-bindings.zsh
|
||||||
source /usr/share/fzf/completion.zsh
|
source /usr/share/fzf/completion.zsh
|
||||||
|
@ -127,7 +128,7 @@ jhswap(){
|
||||||
# I want my tab complete to be based on "current" word I am typing sometimes, before the command
|
# I want my tab complete to be based on "current" word I am typing sometimes, before the command
|
||||||
custom_tabcomplete(){
|
custom_tabcomplete(){
|
||||||
local tokens cmd prefix trigger tail fzf matches lbuf d_cmds
|
local tokens cmd prefix trigger tail fzf matches lbuf d_cmds
|
||||||
export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --reverse --height 40%"
|
FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --reverse --height 40%"
|
||||||
setopt localoptions noshwordsplit noksh_arrays noposixbuiltins
|
setopt localoptions noshwordsplit noksh_arrays noposixbuiltins
|
||||||
|
|
||||||
if [ -n "$RBUFFER" ]; then
|
if [ -n "$RBUFFER" ]; then
|
||||||
|
@ -188,6 +189,4 @@ jhswap(){
|
||||||
zle -N custom_tabcomplete
|
zle -N custom_tabcomplete
|
||||||
bindkey '^I' custom_tabcomplete
|
bindkey '^I' custom_tabcomplete
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
|
|
59
shells/zsh/includes/keybindings.zsh
Normal file
59
shells/zsh/includes/keybindings.zsh
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
# create a zkbd compatible hash;
|
||||||
|
# to add other keys to this hash, see: man 5 terminfo
|
||||||
|
typeset -g -A key
|
||||||
|
|
||||||
|
key[Home]="${terminfo[khome]}"
|
||||||
|
key[End]="${terminfo[kend]}"
|
||||||
|
key[Insert]="${terminfo[kich1]}"
|
||||||
|
key[Backspace]="${terminfo[kbs]}"
|
||||||
|
key[Delete]="${terminfo[kdch1]}"
|
||||||
|
key[Up]="${terminfo[kcuu1]}"
|
||||||
|
key[Down]="${terminfo[kcud1]}"
|
||||||
|
key[Left]="${terminfo[kcub1]}"
|
||||||
|
key[Right]="${terminfo[kcuf1]}"
|
||||||
|
key[PageUp]="${terminfo[kpp]}"
|
||||||
|
key[PageDown]="${terminfo[knp]}"
|
||||||
|
key[ShiftTab]="${terminfo[kcbt]}"
|
||||||
|
|
||||||
|
# setup key accordingly
|
||||||
|
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
|
||||||
|
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
|
||||||
|
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
|
||||||
|
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
|
||||||
|
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
|
||||||
|
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-history
|
||||||
|
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-history
|
||||||
|
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
|
||||||
|
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
|
||||||
|
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
|
||||||
|
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
|
||||||
|
[[ -n "${key[ShiftTab]}" ]] && bindkey -- "${key[ShiftTab]}" reverse-menu-complete
|
||||||
|
|
||||||
|
# Finally, make sure the terminal is in application mode, when zle is
|
||||||
|
# active. Only then are the values from $terminfo valid.
|
||||||
|
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
|
||||||
|
autoload -Uz add-zle-hook-widget
|
||||||
|
function zle_application_mode_start { echoti smkx }
|
||||||
|
function zle_application_mode_stop { echoti rmkx }
|
||||||
|
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
|
||||||
|
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
|
||||||
|
fi
|
||||||
|
|
||||||
|
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
|
||||||
|
zle -N up-line-or-beginning-search
|
||||||
|
zle -N down-line-or-beginning-search
|
||||||
|
|
||||||
|
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search
|
||||||
|
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search
|
||||||
|
|
||||||
|
|
||||||
|
# By default, Ctrl+d will not close your shell if the command line is filled, this fixes it:
|
||||||
|
exit_zsh() { exit }
|
||||||
|
zle -N exit_zsh
|
||||||
|
bindkey '^D' exit_zsh
|
||||||
|
|
||||||
|
autoload -U edit-command-line
|
||||||
|
zle -N edit-command-line
|
||||||
|
bindkey '\C-x\C-e' edit-command-line
|
||||||
|
|
||||||
|
bindkey -M viins jj vi-cmd-mode
|
|
@ -1,7 +1,11 @@
|
||||||
# This is the config I use for Powerlevel9k
|
# This is the config I use for Powerlevel9k
|
||||||
|
|
||||||
|
|
||||||
|
#source "$HOME/.dotfiles/shells/zsh/plugins/powerlevel9k/powerlevel9k.zsh-theme"
|
||||||
|
|
||||||
|
|
||||||
# Custom dir command
|
# Custom dir command
|
||||||
function my_dir(){
|
prompt_dir(){
|
||||||
homeIcon=""
|
homeIcon=""
|
||||||
wpPluginsIcon=".p."
|
wpPluginsIcon=".p."
|
||||||
wpThemesIcon=".t."
|
wpThemesIcon=".t."
|
||||||
|
@ -72,38 +76,21 @@ function my_dir(){
|
||||||
current_path=$(echo $current_path | sed -r -e "s/$seperator\$//g")
|
current_path=$(echo $current_path | sed -r -e "s/$seperator\$//g")
|
||||||
|
|
||||||
echo $current_path
|
echo $current_path
|
||||||
|
|
||||||
}
|
|
||||||
POWERLEVEL9K_CUSTOM_DIR="my_dir"
|
|
||||||
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
|
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
|
||||||
POWERLEVEL9K_CUSTOM_DIR_BACKGROUND="green"
|
echo "green"
|
||||||
POWERLEVEL9K_CUSTOM_DIR_FOREGROUND="black"
|
|
||||||
else
|
else
|
||||||
POWERLEVEL9K_CUSTOM_DIR_BACKGROUND="blue"
|
echo "blue"
|
||||||
POWERLEVEL9K_CUSTOM_DIR_FOREGROUND="black"
|
|
||||||
fi
|
fi
|
||||||
|
echo "black"
|
||||||
|
|
||||||
# POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR="\ue0c0"
|
|
||||||
# POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR="\ue0c2"
|
|
||||||
|
|
||||||
function Capslock(){
|
|
||||||
x=$(xset -q | grep Caps) 2> /dev/null || exit 0
|
|
||||||
x=${x:22:1}
|
|
||||||
if [[ $x == "n" ]]; then
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
POWERLEVEL9K_CUSTOM_CAPS="Capslock"
|
|
||||||
POWERLEVEL9K_CUSTOM_CAPS_BACKGROUND="red"
|
|
||||||
POWERLEVEL9K_CUSTOM_CAPS_FOREGROUND="white"
|
|
||||||
|
|
||||||
|
|
||||||
function prompt_project() {
|
function prompt_project() {
|
||||||
local segment_content state icon
|
# Prints the current project and a recording symbol if appropriate
|
||||||
local parent_process="$(ps -ocommand -p $PPID | grep -v 'COMMAND' | cut -d' ' -f1)"
|
local parent_process="$(ps -ocommand -p $PPID | grep -v 'COMMAND' | cut -d' ' -f1)"
|
||||||
local current_project_full="$(project current --path)"
|
local current_project_full="$(project current --path)"
|
||||||
local current_project_name="$(project current)"
|
local current_project_name="$(project current)"
|
||||||
|
local background=""
|
||||||
if [[ "$parent_process" == "/usr/bin/script" ]]; then
|
if [[ "$parent_process" == "/usr/bin/script" ]]; then
|
||||||
segment_content="辶"
|
segment_content="辶"
|
||||||
fi
|
fi
|
||||||
|
@ -112,29 +99,134 @@ function prompt_project() {
|
||||||
segment_content="${segment_content}$current_project_name"
|
segment_content="${segment_content}$current_project_name"
|
||||||
# If in the current project
|
# If in the current project
|
||||||
if echo "$PWD" | grep -q "$current_project_full"; then
|
if echo "$PWD" | grep -q "$current_project_full"; then
|
||||||
state="INSIDE"
|
background="green"
|
||||||
elif echo "$PWD" | grep -q "$HOME/Projects/"; then
|
elif echo "$PWD" | grep -q "$HOME/Projects/"; then
|
||||||
state="WRONG"
|
background="red"
|
||||||
else
|
else
|
||||||
state="OUTSIDE"
|
background="yellow"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$segment_content" ]; then
|
echo "$state$segment_content"
|
||||||
"$1_prompt_segment" "${0}_${state}" "$2" $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$segment_content" "$icon"
|
echo "$background"
|
||||||
|
echo "black"
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_git(){
|
||||||
|
local branch="$(git branch --show-current 2> /dev/null)"
|
||||||
|
local color="green"
|
||||||
|
local ret=""
|
||||||
|
if [ -n "branch" ]; then
|
||||||
|
ret="$branch"
|
||||||
|
local repoTopLevel="$(command git rev-parse --show-toplevel 2> /dev/null)"
|
||||||
|
local untrackedFiles=$(command git ls-files --others --exclude-standard "${repoTopLevel}" 2> /dev/null)
|
||||||
|
local staged=$(command git diff --staged --name-only 2> /dev/null)
|
||||||
|
|
||||||
|
if [ -n "$untrackedFiles" ]; then
|
||||||
|
ret="$ret "
|
||||||
|
color="orange1"
|
||||||
|
fi
|
||||||
|
if [ -n "$staged" ]; then
|
||||||
|
ret="$ret "
|
||||||
|
color="orange1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
echo "$ret"
|
||||||
|
echo "$color"
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_last_exit_code() {
|
||||||
|
local LAST_EXIT_CODE="$1"
|
||||||
|
if [[ $LAST_EXIT_CODE -ne 0 ]]; then
|
||||||
|
local EXIT_CODE_PROMPT=' '
|
||||||
|
EXIT_CODE_PROMPT+="%{$fg[red]%}-%{$reset_color%}"
|
||||||
|
EXIT_CODE_PROMPT+="%{$fg_bold[red]%}$LAST_EXIT_CODE%{$reset_color%}"
|
||||||
|
EXIT_CODE_PROMPT+="%{$fg[red]%}-%{$reset_color%}"
|
||||||
|
echo "$EXIT_CODE_PROMPT"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Draws a seperator
|
||||||
|
# Takes 2 arguments, from color then to color
|
||||||
|
# If only 1 given, assumes it is the last
|
||||||
|
seperator(){
|
||||||
|
local from="$1"
|
||||||
|
local to="$2"
|
||||||
|
local sep=""
|
||||||
|
if [ -z "$to" ]; then
|
||||||
|
resetColor
|
||||||
|
else
|
||||||
|
focusBackgroundColor "$to"
|
||||||
|
fi
|
||||||
|
focusForegroundColor "$from"
|
||||||
|
echo -n "$sep"
|
||||||
|
resetColor
|
||||||
|
}
|
||||||
|
|
||||||
POWERLEVEL9K_PROJECT_DEFAULT_FOREGROUND="black"
|
draw_segment(){
|
||||||
POWERLEVEL9K_PROJECT_WRONG_BACKGROUND="red"
|
# Echoes a segment
|
||||||
POWERLEVEL9K_PROJECT_OUTSIDE_BACKGROUND="yellow"
|
# $1 is the command to be run to print the segment
|
||||||
POWERLEVEL9K_PROJECT_INSIDE_BACKGROUND="green"
|
# $2 is the color of the last segment (if empty, no seperator is added)
|
||||||
|
# Returns segment on line 1
|
||||||
|
# returns background color on line 2
|
||||||
|
local output="$($1)"
|
||||||
|
local contents="$(echo "$output" | sed -n '1p')"
|
||||||
|
local previousBackground="$2"
|
||||||
|
local background=""
|
||||||
|
local foreground=""
|
||||||
|
local ret=""
|
||||||
|
if [ -n "$contents" ]; then
|
||||||
|
background="$(echo "$output" | sed -n '2p')"
|
||||||
|
foreground="$(echo "$output" | sed -n '3p')"
|
||||||
|
if [ -n "$previousBackground" ]; then
|
||||||
|
ret=" $(seperator $previousBackground $background)"
|
||||||
|
fi
|
||||||
|
ret="$ret$(focusBackgroundColor $background) $(focusForegroundColor $foreground)$contents"
|
||||||
|
echo "$ret"
|
||||||
|
echo "$background"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_prompts(){
|
||||||
|
# Get the return status of the previous command
|
||||||
|
local RETVAL=$?
|
||||||
|
|
||||||
# Left Prompt
|
#Set background to nothing at the start of the prompt
|
||||||
if [[ "$(basename "/"$(ps -f -p $(cat /proc/$(echo $$)/stat | cut -d \ -f 4) | tail -1 | sed 's/^.* //'))" != "$(echo $USER)" ]]; then
|
local background=""
|
||||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(project custom_dir vcs custom_caps)
|
local foreground=""
|
||||||
|
|
||||||
|
#Set the prompt to an empty string
|
||||||
|
PROMPT=""
|
||||||
|
|
||||||
|
###### Each segment printed here
|
||||||
|
|
||||||
|
# Project
|
||||||
|
segment="$(draw_segment "prompt_project" "$background")"
|
||||||
|
if [ -n "$(echo "$segment" | sed -n '1p')" ];then
|
||||||
|
PROMPT="$PROMPT$(echo "$segment" | sed -n '1p')"
|
||||||
|
background="$(echo "$segment" | sed -n '2p')"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Right Prompt
|
# Directory
|
||||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator)
|
segment="$(draw_segment "prompt_dir" "$background")"
|
||||||
|
if [ -n "$(echo "$segment" | sed -n '1p')" ];then
|
||||||
|
PROMPT="$PROMPT$(echo "$segment" | sed -n '1p')"
|
||||||
|
background="$(echo "$segment" | sed -n '2p')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Git
|
||||||
|
segment="$(draw_segment "prompt_git" "$background")"
|
||||||
|
if [ -n "$(echo "$segment" | sed -n '1p')" ];then
|
||||||
|
PROMPT="$PROMPT$(echo "$segment" | sed -n '1p')"
|
||||||
|
background="$(echo "$segment" | sed -n '2p')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
PROMPT="$PROMPT $(seperator "$background")$(resetColor)"
|
||||||
|
|
||||||
|
#$(resetColor)
|
||||||
|
RPROMPT="$(resetColor)$(prompt_last_exit_code "$RETVAL")$(resetColor)"
|
||||||
|
}
|
||||||
|
zle -N set_prompts
|
||||||
|
autoload -U add-zsh-hook
|
||||||
|
add-zsh-hook precmd set_prompts
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue