From 4091cc3f031e883438b55be2d6e09cb95923e0b4 Mon Sep 17 00:00:00 2001 From: David Tomaschik Date: Sat, 10 Mar 2018 22:49:32 -0800 Subject: [PATCH] Basic prezto support. --- dotfiles/bashrc | 3 + dotfiles/profile | 3 + dotfiles/zprezto_custom/.keep | 0 .../matir/functions/prompt_matir_setup | 36 +++ dotfiles/zpreztorc | 228 ++++++++++++++++++ dotfiles/zshrc | 16 +- install.sh | 2 +- 7 files changed, 277 insertions(+), 11 deletions(-) create mode 100644 dotfiles/zprezto_custom/.keep create mode 100644 dotfiles/zprezto_custom/matir/functions/prompt_matir_setup create mode 100644 dotfiles/zpreztorc diff --git a/dotfiles/bashrc b/dotfiles/bashrc index b7483d7..3c5c877 100755 --- a/dotfiles/bashrc +++ b/dotfiles/bashrc @@ -40,3 +40,6 @@ if [ -f /etc/bash_completion ] && ! shopt -oq posix; then fi if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" diff --git a/dotfiles/profile b/dotfiles/profile index e492c29..e6b103f 100755 --- a/dotfiles/profile +++ b/dotfiles/profile @@ -2,3 +2,6 @@ test -f "$HOME/.env" && . "$HOME/.env" test -f "${HOME}/.profile.local" && . "${HOME}/.profile.local" + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" diff --git a/dotfiles/zprezto_custom/.keep b/dotfiles/zprezto_custom/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dotfiles/zprezto_custom/matir/functions/prompt_matir_setup b/dotfiles/zprezto_custom/matir/functions/prompt_matir_setup new file mode 100644 index 0000000..13ec1ba --- /dev/null +++ b/dotfiles/zprezto_custom/matir/functions/prompt_matir_setup @@ -0,0 +1,36 @@ +function prompt_matir_setup { + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + autoload -Uz colors + + prompt_opts=(sp subst cr percent) + + colors + + add-zsh-hook precmd prompt_matir_precmd + + zstyle ':vcs_info:*' enable git + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' formats ' (%b%u)' + zstyle ':vcs_info:*' stagedstr '*' + zstyle ':vcs_info:*' unstagedstr '*' + + # TODO: add virtualenv/rvm info + PROMPT='%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] %{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[blue]%}${vcs_info_msg_0_}%{$fg[white]%}%#%{$reset_color%} ' + + # Rprompt setup + local show_return="✘ " + # Default is to show the return value + if zstyle -T ':prezto:module:prompt' show-return-val; then + show_return+='%? ' + fi + RPROMPT='%(?:: %{$fg[red]%}' + RPROMPT+=${show_return} + RPROMPT+='%{$reset_color)%}' +} + +function prompt_matir_precmd { + vcs_info +} + +prompt_matir_setup "$@" diff --git a/dotfiles/zpreztorc b/dotfiles/zpreztorc new file mode 100644 index 0000000..b60af77 --- /dev/null +++ b/dotfiles/zpreztorc @@ -0,0 +1,228 @@ +# +# Sets Prezto options. +# +# Authors: +# Sorin Ionescu +# + +# +# General +# + +# Set case-sensitivity for completion, history lookup, etc. +# zstyle ':prezto:*:*' case-sensitive 'yes' + +# Color output (auto set to 'no' on dumb terminals). +zstyle ':prezto:*:*' color 'yes' + +# Add additional directories to load prezto modules from +zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto_custom + +# Set the Zsh modules to load (man zshmodules). +# zstyle ':prezto:load' zmodule 'attr' 'stat' + +# Set the Zsh functions to load (man zshcontrib). +# zstyle ':prezto:load' zfunction 'zargs' 'zmv' + +# Set the Prezto modules to load (browse modules). +# The order matters. +zstyle ':prezto:load' pmodule \ + 'environment' \ + 'terminal' \ + 'editor' \ + 'history' \ + 'directory' \ + 'spectrum' \ + 'utility' \ + 'completion' \ + 'matir' \ + 'prompt' \ + 'tmux' \ + 'git' \ + 'gpg' \ + 'python' \ + 'ruby' \ + 'history-substring-search' + +# +# Autosuggestions +# + +# Set the query found color. +# zstyle ':prezto:module:autosuggestions:color' found '' + +# +# Completions +# + +# Set the entries to ignore in static */etc/hosts* for host completion. +# zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \ +# '0.0.0.0' '127.0.0.1' + +# +# Editor +# + +# Set the key mapping style to 'emacs' or 'vi'. +zstyle ':prezto:module:editor' key-bindings 'vi' + +# Auto convert .... to ../.. +# zstyle ':prezto:module:editor' dot-expansion 'yes' + +# +# Git +# + +# Ignore submodules when they are 'dirty', 'untracked', 'all', or 'none'. +# zstyle ':prezto:module:git:status:ignore' submodules 'all' + +# +# GNU Utility +# + +# Set the command prefix on non-GNU systems. +zstyle ':prezto:module:gnu-utility' prefix 'g' + +# +# History Substring Search +# + +# Set the query found color. +# zstyle ':prezto:module:history-substring-search:color' found '' + +# Set the query not found color. +# zstyle ':prezto:module:history-substring-search:color' not-found '' + +# Set the search globbing flags. +# zstyle ':prezto:module:history-substring-search' globbing-flags '' + +# +# OS X +# + +# Set the keyword used by `mand` to open man pages in Dash.app +# zstyle ':prezto:module:osx:man' dash-keyword 'manpages' + +# +# Pacman +# + +# Set the Pacman frontend. +# zstyle ':prezto:module:pacman' frontend 'yaourt' + +# +# Prompt +# + +# Set the prompt theme to load. +# Setting it to 'random' loads a random theme. +# Auto set to 'off' on dumb terminals. +zstyle ':prezto:module:prompt' theme 'matir' + +# Set the working directory prompt display length. +# By default, it is set to 'short'. Set it to 'long' (without '~' expansion) +# for longer or 'full' (with '~' expansion) for even longer prompt display. +# zstyle ':prezto:module:prompt' pwd-length 'short' + +# Set the prompt to display the return code along with an indicator for non-zero +# return codes. This is not supported by all prompts. +# zstyle ':prezto:module:prompt' show-return-val 'yes' + +# +# Ruby +# + +# Auto switch the Ruby version on directory change. +# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' + +# +# Python +# + +# Auto switch the Python virtualenv on directory change. +# zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' + +# Automatically initialize virtualenvwrapper if pre-requisites are met. +# zstyle ':prezto:module:python:virtualenv' initialize 'yes' + +# +# Screen +# + +# Auto start a session when Zsh is launched in a local terminal. +# zstyle ':prezto:module:screen:auto-start' local 'yes' + +# Auto start a session when Zsh is launched in a SSH connection. +# zstyle ':prezto:module:screen:auto-start' remote 'yes' + +# +# SSH +# + +# Set the SSH identities to load into the agent. +# zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github' + +# +# Syntax Highlighting +# + +# Set syntax highlighters. +# By default, only the main highlighter is enabled. +# zstyle ':prezto:module:syntax-highlighting' highlighters \ +# 'main' \ +# 'brackets' \ +# 'pattern' \ +# 'line' \ +# 'cursor' \ +# 'root' +# +# Set syntax highlighting styles. +# zstyle ':prezto:module:syntax-highlighting' styles \ +# 'builtin' 'bg=blue' \ +# 'command' 'bg=blue' \ +# 'function' 'bg=blue' +# +# Set syntax pattern styles. +# zstyle ':prezto:module:syntax-highlighting' pattern \ +# 'rm*-rf*' 'fg=white,bold,bg=red' + +# +# Terminal +# + +# Auto set the tab and window titles. +# zstyle ':prezto:module:terminal' auto-title 'yes' + +# Set the window title format. +# zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s' + +# Set the tab title format. +# zstyle ':prezto:module:terminal:tab-title' format '%m: %s' + +# Set the terminal multiplexer title format. +# zstyle ':prezto:module:terminal:multiplexer-title' format '%s' + +# +# Tmux +# + +# Auto start a session when Zsh is launched in a local terminal. +zstyle ':prezto:module:tmux:auto-start' local 'no' + +# Auto start a session when Zsh is launched in a SSH connection. +zstyle ':prezto:module:tmux:auto-start' remote 'yes' + +# Integrate with iTerm2. +# zstyle ':prezto:module:tmux:iterm' integrate 'yes' + +# Set the default session name: +# zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME' + +# +# Utility +# + +# Enabled safe options. This aliases cp, ln, mv and rm so that they prompt +# before deleting or overwriting files. Set to 'no' to disable this safer +# behavior. +# zstyle ':prezto:module:utility' safe-ops 'yes' diff --git a/dotfiles/zshrc b/dotfiles/zshrc index cd4c7f1..1e2d50b 100755 --- a/dotfiles/zshrc +++ b/dotfiles/zshrc @@ -28,16 +28,9 @@ else alias ls='ls -G' fi -# Load oh-my-zsh -if [ -d $HOME/.oh-my-zsh ] ; then - ZSH=$HOME/.oh-my-zsh - ZSH_THEME="matir" - ZSH_CUSTOM="$HOME/.zsh_custom" - plugins=(encode64 gpg-agent pep8 pip python tmux urltools extract sudo virsh virtualenv jekyll metasploit gcloud safe-paste) - test -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh && plugins+=(virtualenvwrapper) - source $ZSH/oh-my-zsh.sh - unset ZSH_THEME - unset ZSH_CUSTOM +# Load prezto +if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then + source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" fi # .profile is universal @@ -80,3 +73,6 @@ function start_esp { export PATH="${PATH}:${HOME}/tools/esp/xtensa-esp32-elf/bin" export IDF_PATH="${HOME}/tools/esp/esp-idf" } + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" diff --git a/install.sh b/install.sh index 26f5700..bce75e6 100755 --- a/install.sh +++ b/install.sh @@ -40,7 +40,7 @@ prerequisites() { esac ;; esac - install_git https://github.com/robbyrussell/oh-my-zsh.git $HOME/.oh-my-zsh + install_git --recursive https://github.com/sorin-ionescu/prezto.git $HOME/.zprezto else echo "ZSH not found!" >&2 fi