bashisms replacing zoomer shell
This commit is contained in:
		
							
								
								
									
										120
									
								
								bash/.config/bash/prompt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								bash/.config/bash/prompt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,120 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Source: https://github.com/mathiasbynens/dotfiles/
 | 
			
		||||
 | 
			
		||||
# Shell prompt based on the Solarized Dark theme.
 | 
			
		||||
# Screenshot: http://i.imgur.com/EkEtphC.png
 | 
			
		||||
# Heavily inspired by @necolas’s prompt: https://github.com/necolas/dotfiles
 | 
			
		||||
# iTerm → Profiles → Text → use 13pt Monaco with 1.1 vertical spacing.
 | 
			
		||||
 | 
			
		||||
if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
 | 
			
		||||
	export TERM='gnome-256color';
 | 
			
		||||
elif infocmp xterm-256color >/dev/null 2>&1; then
 | 
			
		||||
	export TERM='xterm-256color';
 | 
			
		||||
fi;
 | 
			
		||||
 | 
			
		||||
prompt_git() {
 | 
			
		||||
	local s='';
 | 
			
		||||
	local branchName='';
 | 
			
		||||
 | 
			
		||||
	# Check if the current directory is in a Git repository.
 | 
			
		||||
	git rev-parse --is-inside-work-tree &>/dev/null || return;
 | 
			
		||||
 | 
			
		||||
	# Check for what branch we’re on.
 | 
			
		||||
	# Get the short symbolic ref. If HEAD isn’t a symbolic ref, get a
 | 
			
		||||
	# tracking remote branch or tag. Otherwise, get the
 | 
			
		||||
	# short SHA for the latest commit, or give up.
 | 
			
		||||
	branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
 | 
			
		||||
		git describe --all --exact-match HEAD 2> /dev/null || \
 | 
			
		||||
		git rev-parse --short HEAD 2> /dev/null || \
 | 
			
		||||
		echo '(unknown)')";
 | 
			
		||||
 | 
			
		||||
	# Early exit for Chromium & Blink repo, as the dirty check takes too long.
 | 
			
		||||
	# Thanks, @paulirish!
 | 
			
		||||
	# https://github.com/paulirish/dotfiles/blob/dd33151f/.bash_prompt#L110-L123
 | 
			
		||||
	repoUrl="$(git config --get remote.origin.url)";
 | 
			
		||||
	if grep -q 'chromium/src.git' <<< "${repoUrl}"; then
 | 
			
		||||
		s+='*';
 | 
			
		||||
	else
 | 
			
		||||
		# Check for uncommitted changes in the index.
 | 
			
		||||
		if ! $(git diff --quiet --ignore-submodules --cached); then
 | 
			
		||||
			s+='+';
 | 
			
		||||
		fi;
 | 
			
		||||
		# Check for unstaged changes.
 | 
			
		||||
		if ! $(git diff-files --quiet --ignore-submodules --); then
 | 
			
		||||
			s+='!';
 | 
			
		||||
		fi;
 | 
			
		||||
		# Check for untracked files.
 | 
			
		||||
		if [ -n "$(git ls-files --others --exclude-standard)" ]; then
 | 
			
		||||
			s+='?';
 | 
			
		||||
		fi;
 | 
			
		||||
		# Check for stashed files.
 | 
			
		||||
		if $(git rev-parse --verify refs/stash &>/dev/null); then
 | 
			
		||||
			s+='$';
 | 
			
		||||
		fi;
 | 
			
		||||
	fi;
 | 
			
		||||
 | 
			
		||||
	[ -n "${s}" ] && s=" [${s}]";
 | 
			
		||||
 | 
			
		||||
	echo -e "${1}${branchName}${2}${s}";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if tput setaf 1 &> /dev/null; then
 | 
			
		||||
	tput sgr0; # reset colors
 | 
			
		||||
	bold=$(tput bold);
 | 
			
		||||
	reset=$(tput sgr0);
 | 
			
		||||
	# Solarized colors, taken from http://git.io/solarized-colors.
 | 
			
		||||
	black=$(tput setaf 0);
 | 
			
		||||
	blue=$(tput setaf 33);
 | 
			
		||||
	cyan=$(tput setaf 37);
 | 
			
		||||
	green=$(tput setaf 64);
 | 
			
		||||
	orange=$(tput setaf 166);
 | 
			
		||||
	purple=$(tput setaf 125);
 | 
			
		||||
	red=$(tput setaf 124);
 | 
			
		||||
	violet=$(tput setaf 61);
 | 
			
		||||
	white=$(tput setaf 15);
 | 
			
		||||
	yellow=$(tput setaf 136);
 | 
			
		||||
else
 | 
			
		||||
	bold='';
 | 
			
		||||
	reset="\e[0m";
 | 
			
		||||
	black="\e[1;30m";
 | 
			
		||||
	blue="\e[1;34m";
 | 
			
		||||
	cyan="\e[1;36m";
 | 
			
		||||
	green="\e[1;32m";
 | 
			
		||||
	orange="\e[1;33m";
 | 
			
		||||
	purple="\e[1;35m";
 | 
			
		||||
	red="\e[1;31m";
 | 
			
		||||
	violet="\e[1;35m";
 | 
			
		||||
	white="\e[1;37m";
 | 
			
		||||
	yellow="\e[1;33m";
 | 
			
		||||
fi;
 | 
			
		||||
 | 
			
		||||
# Highlight the user name when logged in as root.
 | 
			
		||||
if [[ "${USER}" == "root" ]]; then
 | 
			
		||||
	userStyle="${red}";
 | 
			
		||||
else
 | 
			
		||||
	userStyle="${orange}";
 | 
			
		||||
fi;
 | 
			
		||||
 | 
			
		||||
# Highlight the hostname when connected via SSH.
 | 
			
		||||
if [[ "${SSH_TTY}" ]]; then
 | 
			
		||||
	hostStyle="${bold}${red}";
 | 
			
		||||
else
 | 
			
		||||
	hostStyle="${yellow}";
 | 
			
		||||
fi;
 | 
			
		||||
 | 
			
		||||
# Set the terminal title and prompt.
 | 
			
		||||
PS1="\[\033]0;\W\007\]"; # working directory base name
 | 
			
		||||
PS1+="\[${bold}\]\n"; # newline
 | 
			
		||||
PS1+="\[${userStyle}\]\u"; # username
 | 
			
		||||
PS1+="\[${white}\] at ";
 | 
			
		||||
PS1+="\[${hostStyle}\]\h"; # host
 | 
			
		||||
PS1+="\[${white}\] in ";
 | 
			
		||||
PS1+="\[${green}\]\w"; # working directory full path
 | 
			
		||||
PS1+="\$(prompt_git \"\[${white}\] on \[${violet}\]\" \"\[${blue}\]\")"; # Git repository details
 | 
			
		||||
PS1+="\n";
 | 
			
		||||
PS1+="\[${white}\]\$ \[${reset}\]"; # `$` (and reset color)
 | 
			
		||||
export PS1;
 | 
			
		||||
 | 
			
		||||
PS2="\[${yellow}\]→ \[${reset}\]";
 | 
			
		||||
export PS2;
 | 
			
		||||
							
								
								
									
										42
									
								
								bash/.config/bash/rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								bash/.config/bash/rc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# Mostly copied from: https://github.com/mathiasbynens/dotfiles/
 | 
			
		||||
 | 
			
		||||
# Bash-specific:
 | 
			
		||||
[ -f ~/.config/bash/prompt ] && source ~/.config/bash/prompt
 | 
			
		||||
 | 
			
		||||
# Case-insensitive globbing (used in pathname expansion)
 | 
			
		||||
shopt -s nocaseglob;
 | 
			
		||||
 | 
			
		||||
# Append to the Bash history file, rather than overwriting it
 | 
			
		||||
shopt -s histappend;
 | 
			
		||||
 | 
			
		||||
# Autocorrect typos in path names when using `cd`
 | 
			
		||||
shopt -s cdspell;
 | 
			
		||||
 | 
			
		||||
# Enable some Bash 4 features when possible:
 | 
			
		||||
# * `autocd`, e.g. `**/qux` will enter `./foo/bar/baz/qux`
 | 
			
		||||
# * Recursive globbing, e.g. `echo **/*.txt`
 | 
			
		||||
for option in autocd globstar; do
 | 
			
		||||
	shopt -s "$option" 2> /dev/null;
 | 
			
		||||
done;
 | 
			
		||||
 | 
			
		||||
# Add tab completion for many Bash commands
 | 
			
		||||
if which brew &> /dev/null && [ -r "$(brew --prefix)/etc/profile.d/bash_completion.sh" ]; then
 | 
			
		||||
	# Ensure existing Homebrew v1 completions continue to work
 | 
			
		||||
	export BASH_COMPLETION_COMPAT_DIR="$(brew --prefix)/etc/bash_completion.d";
 | 
			
		||||
	source "$(brew --prefix)/etc/profile.d/bash_completion.sh";
 | 
			
		||||
elif [ -f /etc/bash_completion ]; then
 | 
			
		||||
	source /etc/bash_completion;
 | 
			
		||||
fi;
 | 
			
		||||
 | 
			
		||||
# Enable tab completion for `g` by marking it as an alias for `git`
 | 
			
		||||
if type _git &> /dev/null; then
 | 
			
		||||
	complete -o default -o nospace -F _git g;
 | 
			
		||||
fi;
 | 
			
		||||
 | 
			
		||||
# Add tab completion for SSH hostnames based on ~/.ssh/config, ignoring wildcards
 | 
			
		||||
[ -e "$HOME/.ssh/config" ] && complete -o "default" -o "nospace" -W "$(grep "^Host" ~/.ssh/config | grep -v "[?*]" | cut -d " " -f2- | tr ' ' '\n')" scp sftp ssh;
 | 
			
		||||
 | 
			
		||||
# Add tab completion for `defaults read|write NSGlobalDomain`
 | 
			
		||||
# You could just use `-g` instead, but I like being explicit
 | 
			
		||||
complete -W "NSGlobalDomain" defaults;
 | 
			
		||||
@@ -29,6 +29,3 @@ export PSQLRC="${XDG_CONFIG_HOME:-$HOME/.config}/psql/rc"
 | 
			
		||||
 | 
			
		||||
# Wget config file
 | 
			
		||||
export WGETRC="${XDG_CONFIG_HOME:-$HOME/.config}/wget/rc"
 | 
			
		||||
 | 
			
		||||
# ZSH directory
 | 
			
		||||
export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,3 +7,5 @@ for file in ~/.config/shell/{path,exports,aliases,functions,extra}; do
 | 
			
		||||
        [ -r "$file" ] && [ -f "$file" ] && source "$file";
 | 
			
		||||
done;
 | 
			
		||||
unset file;
 | 
			
		||||
 | 
			
		||||
source ~/.config/bash/rc
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								zsh/.zshrc
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								zsh/.zshrc
									
									
									
									
									
								
							@@ -1,71 +0,0 @@
 | 
			
		||||
# Luke's config for the Zoomer Shell
 | 
			
		||||
# Source (mainly): https://github.com/LukeSmithxyz/voidrice/
 | 
			
		||||
 | 
			
		||||
# Enable colors and change prompt:
 | 
			
		||||
autoload -U colors && colors	# Load colors
 | 
			
		||||
PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b "
 | 
			
		||||
setopt autocd		# Automatically cd into typed directory.
 | 
			
		||||
stty stop undef		# Disable ctrl-s to freeze terminal.
 | 
			
		||||
setopt interactive_comments
 | 
			
		||||
 | 
			
		||||
# History in cache directory:
 | 
			
		||||
HISTSIZE=10000000
 | 
			
		||||
SAVEHIST=10000000
 | 
			
		||||
 | 
			
		||||
# Basic auto/tab complete:
 | 
			
		||||
autoload -U compinit
 | 
			
		||||
zstyle ':completion:*' menu select
 | 
			
		||||
zmodload zsh/complist
 | 
			
		||||
compinit
 | 
			
		||||
_comp_options+=(globdots)		# Include hidden files.
 | 
			
		||||
 | 
			
		||||
# vi mode
 | 
			
		||||
bindkey -v
 | 
			
		||||
export KEYTIMEOUT=1
 | 
			
		||||
 | 
			
		||||
# Use vim keys in tab complete menu:
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
# Change cursor shape for different vi modes.
 | 
			
		||||
function zle-keymap-select () {
 | 
			
		||||
    case $KEYMAP in
 | 
			
		||||
        vicmd) echo -ne '\e[1 q';;      # block
 | 
			
		||||
        viins|main) echo -ne '\e[5 q';; # beam
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
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
 | 
			
		||||
echo -ne '\e[5 q' # Use beam shape cursor on startup.
 | 
			
		||||
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
 | 
			
		||||
 | 
			
		||||
bindkey -s '^a' 'bc -lq\n'
 | 
			
		||||
 | 
			
		||||
bindkey -s '^f' 'cd "$(dirname "$(fzf)")"\n'
 | 
			
		||||
 | 
			
		||||
bindkey '^[[P' delete-char
 | 
			
		||||
 | 
			
		||||
# Edit line in vim with ctrl-e:
 | 
			
		||||
autoload edit-command-line; zle -N edit-command-line
 | 
			
		||||
bindkey '^e' edit-command-line
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Custom
 | 
			
		||||
# Activate history search based upon what has already been entered at the prompt,
 | 
			
		||||
# and always put cursor at the end of the line:
 | 
			
		||||
autoload -U history-search-end
 | 
			
		||||
zle -N history-beginning-search-backward-end history-search-end
 | 
			
		||||
zle -N history-beginning-search-forward-end history-search-end
 | 
			
		||||
bindkey "^[[A" history-beginning-search-backward-end
 | 
			
		||||
bindkey "^[[B" history-beginning-search-forward-end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Load syntax highlighting; should be last.
 | 
			
		||||
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
 | 
			
		||||
		Reference in New Issue
	
	Block a user