diff --git a/.gitmodules b/.gitmodules index 7a7a7b5e..cb8f419e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,12 @@ [submodule "modules/completion/external"] path = modules/completion/external url = https://github.com/zsh-users/zsh-completions.git +[submodule "modules/prompt/external/powerline"] + path = modules/prompt/external/powerline + url = https://github.com/davidjrice/prezto_powerline.git +[submodule "modules/prompt/external/agnoster"] + path = modules/prompt/external/agnoster + url = https://gist.github.com/3712874.git +[submodule "modules/prompt/functions/pure"] + path = modules/prompt/external/pure + url = https://github.com/sindresorhus/pure.git diff --git a/README.md b/README.md index c9d3fd41..d6b40af0 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,8 @@ License (The MIT License) Copyright (c) 2009-2011 Robby Russell and contributors. -Copyright (c) 2011-2014 Sorin Ionescu and contributors. + +Copyright (c) 2011-2015 Sorin Ionescu and contributors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -107,7 +108,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. [1]: http://www.zsh.org -[2]: http://i.imgur.com/nBEEZ.png "sorin theme" +[2]: http://i.imgur.com/nrGV6pg.png "sorin theme" [3]: http://git-scm.com [4]: https://github.com [5]: http://gitimmersion.com diff --git a/modules/README.md b/modules/README.md index 4d247b24..2a49804c 100644 --- a/modules/README.md +++ b/modules/README.md @@ -26,6 +26,11 @@ Directory Sets directory options and defines directory aliases. +DNF +--- + +Defines dnf aliases. + Dpkg ---- @@ -92,7 +97,7 @@ Homebrew Defines Homebrew aliases. -Macports +MacPorts -------- Defines MacPorts aliases and adds MacPorts directories to path variables. diff --git a/modules/completion/external b/modules/completion/external index 08afea0e..68c94947 160000 --- a/modules/completion/external +++ b/modules/completion/external @@ -1 +1 @@ -Subproject commit 08afea0e230b5a321d584119f55b675990327ef9 +Subproject commit 68c949470eaa87c5d67080d32fb2b69c8b837eb4 diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 28c20905..023a90e7 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -24,7 +24,7 @@ autoload -Uz compinit && compinit -i setopt COMPLETE_IN_WORD # Complete from both ends of a word. setopt ALWAYS_TO_END # Move cursor to the end of a completed word. setopt PATH_DIRS # Perform path search even on command names with slashes. -setopt AUTO_MENU # Show completion menu on a succesive tab press. +setopt AUTO_MENU # Show completion menu on a successive tab press. setopt AUTO_LIST # Automatically list choices on ambiguous completion. setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. @@ -34,7 +34,7 @@ unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. # Styles # -# Use caching to make completion for cammands such as dpkg and apt usable. +# Use caching to make completion for commands such as dpkg and apt usable. zstyle ':completion::complete:*' use-cache on zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache" @@ -116,7 +116,7 @@ zstyle ':completion:*:(rm|kill|diff):*' ignore-line other zstyle ':completion:*:rm:*' file-patterns '*:all-files' # Kill -zstyle ':completion:*:*:*:*:processes' command 'ps -u $USER -o pid,user,command -w' +zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w' zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01' zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:*:kill:*' force-list always diff --git a/modules/dnf/README.md b/modules/dnf/README.md new file mode 100644 index 00000000..06439544 --- /dev/null +++ b/modules/dnf/README.md @@ -0,0 +1,29 @@ +DNF +=== + +Defines [dnf][1] aliases. + +Aliases +------- + + - `dnfc` removes package(s) and leaves. + - `dnfi` installs package(s). + - `dnfh` displays history. + - `dnfl` lists packages. + - `dnfL` lists installed packages. + - `dnfq` displays package information. + - `dnfr` removes package(s). + - `dnfs` searches for a package. + - `dnfu` updates packages. + - `dnfU` upgrates packages. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://fedoraproject.org/wiki/Features/DNF +[2]: https://github.com/sorin-ionescu/prezto/issues + diff --git a/modules/dnf/init.zsh b/modules/dnf/init.zsh new file mode 100644 index 00000000..7a401423 --- /dev/null +++ b/modules/dnf/init.zsh @@ -0,0 +1,28 @@ +# +# Defines dnf aliases. +# +# Authors: +# FireWave +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[dnf] )); then + return 1 +fi + +# +# Aliases +# + +alias dnfc='sudo dnf clean all' # Cleans the cache. +alias dnfh='dnf history' # Displays history. +alias dnfi='sudo dnf install' # Installs package(s). +alias dnfl='dnf list' # Lists packages. +alias dnfL='dnf list installed' # Lists installed packages. +alias dnfq='dnf info' # Displays package information. +alias dnfr='sudo dnf remove' # Removes package(s). +alias dnfs='dnf search' # Searches for a package. +alias dnfu='sudo dnf update' # Updates packages. +alias dnfU='sudo dnf upgrade' # Upgrades packages. + diff --git a/modules/environment/init.zsh b/modules/environment/init.zsh index 51d26162..76655a6c 100644 --- a/modules/environment/init.zsh +++ b/modules/environment/init.zsh @@ -33,15 +33,6 @@ unsetopt BG_NICE # Don't run all background jobs at a lower priority. unsetopt HUP # Don't kill jobs on shell exit. unsetopt CHECK_JOBS # Don't report on jobs when shell exit. -# -# Grep -# - -if zstyle -t ':prezto:environment:grep' color; then - export GREP_COLOR='37;45' - export GREP_OPTIONS='--color=auto' -fi - # # Termcap # diff --git a/modules/gpg/init.zsh b/modules/gpg/init.zsh index 0bb7476c..a7c6cf76 100644 --- a/modules/gpg/init.zsh +++ b/modules/gpg/init.zsh @@ -11,16 +11,16 @@ if (( ! $+commands[gpg-agent] )); then fi # Set the default paths to gpg-agent files. -_gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf" +_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf" _gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env" # Start gpg-agent if not started. -if [[ -z "$GPG_AGENT_INFO" ]]; then +if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then # Export environment variables. source "$_gpg_agent_env" 2> /dev/null # Start gpg-agent if not started. - if ! ps -U "$USER" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then + if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")" fi fi @@ -35,6 +35,12 @@ if grep 'enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then # Load the SSH module for additional processing. pmodload 'ssh' + + # Updates the GPG-Agent TTY before every command since SSH does not set it. + function _gpg-agent-update-tty { + gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null + } + add-zsh-hook preexec _gpg-agent-update-tty fi # Clean up. diff --git a/modules/history-substring-search/external b/modules/history-substring-search/external index 9f9fc7d5..c4a83561 160000 --- a/modules/history-substring-search/external +++ b/modules/history-substring-search/external @@ -1 +1 @@ -Subproject commit 9f9fc7d550cc547737f4c686591cbbf07e7470b0 +Subproject commit c4a83561a12b898ff7145856d0e6ae50757e28ba diff --git a/modules/homebrew/README.md b/modules/homebrew/README.md index 69a4e87b..84b43865 100644 --- a/modules/homebrew/README.md +++ b/modules/homebrew/README.md @@ -13,8 +13,7 @@ Aliases - `brewi` installs a formula. - `brewl` lists installed formulae. - `brews` searches for a formula. - - `brewU` upgrades Homebrew and outdated brews. - - `brewu` upgrades Homebrew. + - `brewu` updates Homebrew and formulae. - `brewx` uninstalls a formula. ### Homebrew Cask diff --git a/modules/homebrew/init.zsh b/modules/homebrew/init.zsh index 101b6b97..1ebe793d 100644 --- a/modules/homebrew/init.zsh +++ b/modules/homebrew/init.zsh @@ -6,7 +6,7 @@ # # Return if requirements are not found. -if [[ "$OSTYPE" != darwin* ]]; then +if [[ "$OSTYPE" != (darwin|linux)* ]]; then return 1 fi @@ -20,8 +20,7 @@ alias brewC='brew cleanup --force' alias brewi='brew install' alias brewl='brew list' alias brews='brew search' -alias brewu='brew upgrade' -alias brewU='brew update && brew upgrade' +alias brewu='brew update && brew upgrade --all' alias brewx='brew remove' # Homebrew Cask diff --git a/modules/macports/README.md b/modules/macports/README.md index 97f67ea0..70e4b8b9 100644 --- a/modules/macports/README.md +++ b/modules/macports/README.md @@ -1,4 +1,4 @@ -Macports +MacPorts ======== Defines MacPorts aliases and adds MacPorts directories to path variables. diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 6fedb3c8..6d600789 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -13,10 +13,9 @@ if [[ -s "$HOME/.nvm/nvm.sh" ]]; then # Load package manager installed NVM into the shell session. elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then source $(brew --prefix nvm)/nvm.sh -fi # Return if requirements are not found. -if (( ! $+commands[node] )); then +elif (( ! $+commands[node] )); then return 1 fi diff --git a/modules/prompt/README.md b/modules/prompt/README.md index d72c6cf6..dc024977 100644 --- a/modules/prompt/README.md +++ b/modules/prompt/README.md @@ -46,7 +46,7 @@ The most basic example of this function can be seen below. If the `prompt_name_setup` function is customizable via parameters, a help function **should** be defined. The user will access it via `prompt -h name`. -The most basic example of this function can be seen bellow. +The most basic example of this function can be seen below. function prompt_name_help { cat < 0 )); then @@ -91,7 +91,7 @@ a function before you calling it. **Do not register hook functions. They will be registered by the `prompt` function.** -The most basic example of this function can be seen bellow. +The most basic example of this function can be seen below. function prompt_name_precmd { if (( $+functions[git-info] )); then diff --git a/modules/prompt/external/agnoster b/modules/prompt/external/agnoster new file mode 160000 index 00000000..43cb371f --- /dev/null +++ b/modules/prompt/external/agnoster @@ -0,0 +1 @@ +Subproject commit 43cb371f361eecf62e9dac7afc73a1c16edf89c7 diff --git a/modules/prompt/external/powerline b/modules/prompt/external/powerline new file mode 160000 index 00000000..8e811523 --- /dev/null +++ b/modules/prompt/external/powerline @@ -0,0 +1 @@ +Subproject commit 8e81152340c4beb2d941340d1feb2dc29bbcc309 diff --git a/modules/prompt/external/pure b/modules/prompt/external/pure new file mode 160000 index 00000000..04212522 --- /dev/null +++ b/modules/prompt/external/pure @@ -0,0 +1 @@ +Subproject commit 04212522f39f43998d001b4a94b05856f010a54b diff --git a/modules/prompt/functions/async b/modules/prompt/functions/async new file mode 120000 index 00000000..d4b591e1 --- /dev/null +++ b/modules/prompt/functions/async @@ -0,0 +1 @@ +../external/pure/async.zsh \ No newline at end of file diff --git a/modules/prompt/functions/prompt_agnoster_setup b/modules/prompt/functions/prompt_agnoster_setup new file mode 120000 index 00000000..34d8bc6d --- /dev/null +++ b/modules/prompt/functions/prompt_agnoster_setup @@ -0,0 +1 @@ +../external/agnoster/agnoster.zsh-theme \ No newline at end of file diff --git a/modules/prompt/functions/prompt_cloud_setup b/modules/prompt/functions/prompt_cloud_setup new file mode 100644 index 00000000..3b048df1 --- /dev/null +++ b/modules/prompt/functions/prompt_cloud_setup @@ -0,0 +1,121 @@ +# +# A minimal two-color theme. +# +# Authors: +# Kevin Laude +# +# Features: +# - One line, left aligned. +# - The prompt is prefixed by a character sequence of your choice. +# - Only displays the current directory instead of the full path. +# - Displays the current branch when in a git project (this requires loading +# the git module before prompt in ~/.zpreztorc). +# - Displays a character at the end of the prompt when in a git project with +# "dirty" files. +# +# Usage: +# This prompt's prefix symbol and colors are customizable: +# prompt cloud [] [] [] +# +# In ~/.zpreztorc: +# zstyle ':prezto:module:prompt' theme 'cloud' \ +# [''] \ +# [''] \ +# [''] +# +# If these options are not provided, the symbol defaults to "☁" with colors +# cyan and green. +# +# Screenshots: +# http://i.imgur.com/mJCZ8rE.png +# +# Note: +# This is a port of the oh-my-zsh cloud theme, originally written by Phillip +# Ridlen and Mark Drago +# + +# Load dependencies. +pmodload 'helper' + +function prompt_cloud_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi +} + +function prompt_cloud_help { + cat <] [] [] + +In ~/.zpreztorc: + zstyle ':prezto:module:prompt' theme 'cloud' [''] [''] [''] + +If these options are not provided, the symbol defaults to ☁ with colors cyan +and green. +EOT +} + +function prompt_cloud_preview { + if (( $# > 0 )); then + prompt_preview_theme 'cloud' "$@" + else + prompt_preview_theme 'cloud' + print + prompt_preview_theme 'cloud' "✯" + print + prompt_preview_theme 'cloud' ">" "yellow" "red" + fi +} + +function prompt_cloud_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent subst) + + # Set the theme prefix to a cloud or to the user's given characters. + if [[ -n "$1" ]]; then + prefix="$1" + else + prefix='☁' + fi + + # Assign colors. + if [[ -n "$2" ]]; then + primary_color="$2" + else + primary_color='cyan' + fi + + if [[ -n "$3" ]]; then + secondary_color="$3" + else + secondary_color='green' + fi + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info before each command. + add-zsh-hook precmd prompt_cloud_precmd + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:dirty' format "%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f" + zstyle ':prezto:module:git:info:clean' format "%B%F{$secondary_color}]%f%b" + zstyle ':prezto:module:git:info:branch' format "%%B%F{$secondary_color}[%f%%b%%B%F{$primary_color}%b%f%%b" + zstyle ':prezto:module:git:info:keys' format \ + 'prompt' '%b%C%D' \ + 'rprompt' '' + + # Define prompts. + PROMPT='%B%F{$primary_color}${prefix}%f%b %B%F{$secondary_color}%c%f%b ${git_info:+${(e)git_info[prompt]}} ' + RPROMPT='' +} + +prompt_cloud_setup "$@" diff --git a/modules/prompt/functions/prompt_damoekri_setup b/modules/prompt/functions/prompt_damoekri_setup new file mode 100644 index 00000000..58c4d352 --- /dev/null +++ b/modules/prompt/functions/prompt_damoekri_setup @@ -0,0 +1,76 @@ +# +# A simple theme inspired by the Sorin and PeepCode themes. +# +# Authors: +# Daniel Møller Kristensen +# +# Screenshots: +# http://i.imgur.com/AX9HnPF.png +# + +# Load dependencies. +pmodload 'helper' + +function prompt_damoekri_pwd { + local pwd="${PWD/#$HOME/~}" + + if [[ "$pwd" == (#m)[/~] ]]; then + _prompt_damoekri_pwd="$MATCH" + unset MATCH + else + _prompt_damoekri_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}" + fi +} + +function prompt_damoekri_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Format PWD. + prompt_damoekri_pwd + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Ruby version information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_damoekri_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info and ruby-info before each command. + add-zsh-hook precmd prompt_damoekri_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:action' format ':%F{magenta}%s%f' + zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f' + zstyle ':prezto:module:git:info:clean' format ' %F{green}✔%f' + zstyle ':prezto:module:git:info:dirty' format ' %F{red}✗%f' + zstyle ':prezto:module:git:info:commit' format '%F{blue}%.7c%f' + zstyle ':prezto:module:git:info:position' format '%F{blue}%p%f' + zstyle ':prezto:module:git:info:keys' format \ + 'rprompt' ' $(coalesce "%b" "%p" "%c")%s%C%D' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format ' %F{yellow}%v%f' + + # Define prompts. + PROMPT='%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} ' + RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}' +} + +prompt_damoekri_setup "$@" diff --git a/modules/prompt/functions/prompt_giddie_setup b/modules/prompt/functions/prompt_giddie_setup new file mode 100644 index 00000000..5a14ffe0 --- /dev/null +++ b/modules/prompt/functions/prompt_giddie_setup @@ -0,0 +1,76 @@ +# +# A colorful, friendly, multiline theme with some handy features. +# +# Authors: +# Paul Gideon Dann +# Sorin Ionescu +# +# Features: +# - Simple VCS branch, staged, and unstaged indication. +# - Prompt character is different in a VCS repository. +# - Last command exit status is displayed when non-zero. +# +# Screenshots: +# http://i.imgur.com/rCo3S.png +# + +function +vi-set_novcs_prompt_symbol { + _prompt_giddie_symbol=')' +} + +function +vi-set_vcs_prompt_symbol { + _prompt_giddie_symbol='±' +} + +function +vi-git_precmd { + # Check for untracked files, since vcs_info does not. + if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then + hook_com[unstaged]+='%F{green}?%f' + fi +} + +function prompt_giddie_precmd { + # Replace '/home/' with '~'. + _prompt_giddie_pwd="${PWD/#$HOME/~}" + vcs_info +} + +function prompt_giddie_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent subst) + + # Load required functions. + autoload -Uz vcs_info + autoload -Uz add-zsh-hook + + # Add hook to set up prompt parameters before each command. + add-zsh-hook precmd prompt_giddie_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f' + zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f' + + # Set vcs_info parameters. + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' formats ' on %F{magenta}%b%f%c%u' + zstyle ':vcs_info:*' actionformats ' on %F{magenta}%b%f%c%u %F{yellow}(%a)%f' + zstyle ':vcs_info:*' stagedstr '%F{green}+%f' + zstyle ':vcs_info:*' unstagedstr '%F{green}!%f' + + # Set vcs_info hooks. + # NOTE: Prior to Zsh v4.3.12, there are no static hooks, no vcs_info_hookadd + # function, and no 'no-vcs' hook. + zstyle ':vcs_info:*+start-up:*' hooks set_novcs_prompt_symbol + zstyle ':vcs_info:git*+set-message:*' hooks set_vcs_prompt_symbol git_precmd + zstyle ':vcs_info:*+set-message:*' hooks set_vcs_prompt_symbol + + # Define prompts. + PROMPT='%(?..%F{red}%B-> [%?]%b%f +)%F{magenta}%n%f@%F{yellow}%m%f|%F{green}${_prompt_giddie_pwd}%f${vcs_info_msg_0_} +%F{blue}${_prompt_giddie_symbol}%f ' + RPROMPT='${editor_info[keymap]}' + SPROMPT='zsh: correct %F{magenta}%R%f to %F{green}%r%f [nyae]? ' +} + +prompt_giddie_setup "$@" diff --git a/modules/prompt/functions/prompt_kylewest_setup b/modules/prompt/functions/prompt_kylewest_setup new file mode 100644 index 00000000..e4ee0c0e --- /dev/null +++ b/modules/prompt/functions/prompt_kylewest_setup @@ -0,0 +1,65 @@ +# +# A single line theme with Git information on the left and Ruby on the right. +# +# Authors: +# Kyle West +# Sorin Ionescu +# +# Features: +# - Indicates dirty Git repository. +# - Indicates the Ruby version. +# - Indicates vi modes. +# +# Screenshots: +# http://i.imgur.com/dCwhynn.png +# + +function prompt_kylewest_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Ruby information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_kylewest_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info before each command. + add-zsh-hook precmd prompt_kylewest_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' + zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}❯%f%b" + zstyle ':prezto:module:editor:info:keymap:alternate' format "%B%F{magenta}❮%f%b" + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'no' + zstyle ':prezto:module:git:info:branch' format '%F{yellow}%b%f' + zstyle ':prezto:module:git:info:dirty' format '%B%F{red}!%f%b' + zstyle ':prezto:module:git:info:indexed' format ' ' + zstyle ':prezto:module:git:info:unindexed' format ' ' + zstyle ':prezto:module:git:info:untracked' format ' ' + zstyle ':prezto:module:git:info:keys' format 'prompt' '- %b%D ' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format '%F{blue}[%v]%f' + + # Define prompts. + PROMPT='%F{cyan}%c%f ${git_info:+${(e)git_info[prompt]}}${editor_info[keymap]} ' + RPROMPT='${ruby_info[version]}' +} + +prompt_kylewest_setup "$@" diff --git a/modules/prompt/functions/prompt_minimal_setup b/modules/prompt/functions/prompt_minimal_setup index 218efb2a..8c07e70e 100644 --- a/modules/prompt/functions/prompt_minimal_setup +++ b/modules/prompt/functions/prompt_minimal_setup @@ -9,7 +9,7 @@ # http://i.imgur.com/zLZNK.png # -function +vi-git-status() { +function +vi-git_status { # Check for untracked files or updated submodules since vcs_info does not. if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then hook_com[unstaged]='%F{red}●%f' @@ -40,7 +40,7 @@ function prompt_minimal_setup { zstyle ':vcs_info:*' formats ' - [%b%c%u]' zstyle ':vcs_info:*' actionformats " - [%b%c%u|%F{cyan}%a%f]" zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b|%F{cyan}%r%f' - zstyle ':vcs_info:git*+set-message:*' hooks git-status + zstyle ':vcs_info:git*+set-message:*' hooks git_status # Define prompts. PROMPT='%2~${vcs_info_msg_0_} » ' diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup new file mode 100644 index 00000000..36ae40ec --- /dev/null +++ b/modules/prompt/functions/prompt_paradox_setup @@ -0,0 +1,154 @@ +# +# A two-line, Powerline-inspired theme that displays contextual information. +# +# This theme requires a patched Powerline font, get them from +# https://github.com/Lokaltog/powerline-fonts. +# +# Authors: +# Isaac Wolkerstorfer +# Jeff Sandberg +# Sorin Ionescu +# +# Screenshots: +# http://i.imgur.com/0XIWX.png +# + +# Load dependencies. +pmodload 'helper' + +# Define variables. +_prompt_paradox_current_bg='NONE' +_prompt_paradox_segment_separator='' +_prompt_paradox_start_time=$SECONDS + +function prompt_paradox_start_segment { + local bg fg + [[ -n "$1" ]] && bg="%K{$1}" || bg="%k" + [[ -n "$2" ]] && fg="%F{$2}" || fg="%f" + if [[ "$_prompt_paradox_current_bg" != 'NONE' && "$1" != "$_prompt_paradox_current_bg" ]]; then + print -n " $bg%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator$fg " + else + print -n "$bg$fg " + fi + _prompt_paradox_current_bg="$1" + [[ -n "$3" ]] && print -n "$3" +} + +function prompt_paradox_end_segment { + if [[ -n "$_prompt_paradox_current_bg" ]]; then + print -n " %k%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator" + else + print -n "%k" + fi + print -n "%f" + _prompt_paradox_current_bg='' +} + +function prompt_paradox_build_prompt { + prompt_paradox_start_segment black default '%(?::%F{red}✘ )%(!:%F{yellow}⚡ :)%(1j:%F{cyan}⚙ :)%F{blue}%n%F{red}@%F{green}%m%f' + prompt_paradox_start_segment blue black '$_prompt_paradox_pwd' + + if [[ -n "$git_info" ]]; then + prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}' + fi + + prompt_paradox_end_segment +} + +function prompt_paradox_pwd { + local pwd="${PWD/#$HOME/~}" + + if [[ "$pwd" == (#m)[/~] ]]; then + _prompt_paradox_pwd="$MATCH" + unset MATCH + else + _prompt_paradox_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}" + fi +} + +function prompt_paradox_print_elapsed_time { + local end_time=$(( SECONDS - _prompt_paradox_start_time )) + local hours minutes seconds remainder + + if (( end_time >= 3600 )); then + hours=$(( end_time / 3600 )) + remainder=$(( end_time % 3600 )) + minutes=$(( remainder / 60 )) + seconds=$(( remainder % 60 )) + print -P "%B%F{red}>>> elapsed time ${hours}h${minutes}m${seconds}s%b" + elif (( end_time >= 60 )); then + minutes=$(( end_time / 60 )) + seconds=$(( end_time % 60 )) + print -P "%B%F{yellow}>>> elapsed time ${minutes}m${seconds}s%b" + elif (( end_time > 10 )); then + print -P "%B%F{green}>>> elapsed time ${end_time}s%b" + fi +} + +function prompt_paradox_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Format PWD. + prompt_paradox_pwd + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Calculate and print the elapsed time. + prompt_paradox_print_elapsed_time +} + +function prompt_paradox_preexec { + _prompt_paradox_start_time="$SECONDS" +} + +function prompt_paradox_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info before each command. + add-zsh-hook preexec prompt_paradox_preexec + add-zsh-hook precmd prompt_paradox_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' + zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}❯%f%b' + zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format '%F{red}♺%f' + zstyle ':prezto:module:editor:info:keymap:alternate' format '%B%F{red}❮%f%b' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:action' format ' ⁝ %s' + zstyle ':prezto:module:git:info:added' format ' ✚' + zstyle ':prezto:module:git:info:ahead' format ' ⬆' + zstyle ':prezto:module:git:info:behind' format ' ⬇' + zstyle ':prezto:module:git:info:branch' format ' %b' + zstyle ':prezto:module:git:info:commit' format '➦ %.7c' + zstyle ':prezto:module:git:info:deleted' format ' ✖' + zstyle ':prezto:module:git:info:dirty' format ' ⁝' + zstyle ':prezto:module:git:info:modified' format ' ✱' + zstyle ':prezto:module:git:info:position' format '%p' + zstyle ':prezto:module:git:info:renamed' format ' ➙' + zstyle ':prezto:module:git:info:stashed' format ' S' + zstyle ':prezto:module:git:info:unmerged' format ' ═' + zstyle ':prezto:module:git:info:untracked' format ' ?' + zstyle ':prezto:module:git:info:keys' format \ + 'ref' '$(coalesce "%b" "%p" "%c")' \ + 'status' '%s%D%A%B%S%a%d%m%r%U%u' + + # Define prompts. + PROMPT=' +${(e)$(prompt_paradox_build_prompt)} + ${editor_info[keymap]} ' + RPROMPT='%F{blue}[%F{green}%D{%H:%M:%S}%F{blue}]%f' + SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' +} + +prompt_paradox_setup "$@" diff --git a/modules/prompt/functions/prompt_peepcode_setup b/modules/prompt/functions/prompt_peepcode_setup index a83710ef..c70fb9a7 100644 --- a/modules/prompt/functions/prompt_peepcode_setup +++ b/modules/prompt/functions/prompt_peepcode_setup @@ -10,16 +10,13 @@ # http://i.imgur.com/LhgmW.png # -function +vi-git-status() { - # Check for untracked files or updated submodules since vcs_info does not. - if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then - hook_com[unstaged]=' %F{8}✗%f' - fi -} - function prompt_peepcode_precmd { - vcs_info + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + # Get Ruby information. if (( $+functions[ruby-info] )); then ruby-info fi @@ -34,18 +31,19 @@ function prompt_peepcode_setup { autoload -Uz add-zsh-hook autoload -Uz vcs_info - # Add hook for calling vcs_info before each command. + # Add a hook for calling info functions before each command. add-zsh-hook precmd prompt_peepcode_precmd - # Set vcs_info parameters. - zstyle ':vcs_info:*' enable git - zstyle ':vcs_info:*' check-for-changes true - zstyle ':vcs_info:*' get-revision true - zstyle ':vcs_info:*' use-simple true - zstyle ':vcs_info:*' unstagedstr ' %F{8}✗%f' - zstyle ':vcs_info:*' formats ' %F{8}%b%f %F{white}%.7i%f%u' - zstyle ':vcs_info:*' actionformats ' %F{8}%b%f %F{white}%.7i%f +%a%u' - zstyle ':vcs_info:git*+set-message:*' hooks git-status + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'no' + zstyle ':prezto:module:git:info:action' format ' +%s' + zstyle ':prezto:module:git:info:branch' format ' %F{8}%b%f' + zstyle ':prezto:module:git:info:commit' format ' %F{white}%.7c%f' + zstyle ':prezto:module:git:info:indexed' format ' ' + zstyle ':prezto:module:git:info:unindexed' format ' ' + zstyle ':prezto:module:git:info:untracked' format ' ' + zstyle ':prezto:module:git:info:dirty' format ' %F{8}✗%f' + zstyle ':prezto:module:git:info:keys' format 'rprompt' '%b%c%s%D' # Set ruby-info parameters. zstyle ':prezto:module:ruby:info:version' format ' %F{white}%v%f' @@ -54,7 +52,7 @@ function prompt_peepcode_setup { PROMPT=" %~ %(?.%F{green}${1:-☻ }%f.%F{red}${1:-☻ }%f) " -RPROMPT='${ruby_info[version]}${vcs_info_msg_0_}' +RPROMPT='${ruby_info[version]}${git_info[rprompt]}' } diff --git a/modules/prompt/functions/prompt_powerline_setup b/modules/prompt/functions/prompt_powerline_setup new file mode 120000 index 00000000..3715d75b --- /dev/null +++ b/modules/prompt/functions/prompt_powerline_setup @@ -0,0 +1 @@ +../external/powerline/prompt_powerline_setup \ No newline at end of file diff --git a/modules/prompt/functions/prompt_pure_setup b/modules/prompt/functions/prompt_pure_setup new file mode 120000 index 00000000..1480fcfd --- /dev/null +++ b/modules/prompt/functions/prompt_pure_setup @@ -0,0 +1 @@ +../external/pure/pure.zsh \ No newline at end of file diff --git a/modules/prompt/functions/prompt_skwp_setup b/modules/prompt/functions/prompt_skwp_setup new file mode 100644 index 00000000..1c8f0a90 --- /dev/null +++ b/modules/prompt/functions/prompt_skwp_setup @@ -0,0 +1,75 @@ +# +# A single line theme with Git information on the left and Ruby on the right. +# +# Authors: +# Steve Losh +# Bart Trojanowski +# Brian Carper +# steeef +# Sorin Ionescu +# Yan Pritzker +# +# Screenshots: +# http://i.imgur.com/gLgVp6Y.png +# + +function prompt_skwp_precmd { + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Ruby information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_skwp_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook to set up prompt parameters before each command. + add-zsh-hook precmd prompt_skwp_precmd + + # Use extended color pallete if available. + if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then + _prompt_skwp_colors=( + "%F{81}" # Turquoise + "%F{166}" # Orange + "%F{135}" # Purple + "%F{161}" # Hotpink + "%F{118}" # Limegreen + ) + else + _prompt_skwp_colors=( + "%F{cyan}" + "%F{yellow}" + "%F{magenta}" + "%F{red}" + "%F{green}" + ) + fi + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:branch' format "${_prompt_skwp_colors[1]}%b%f" + zstyle ':prezto:module:git:info:added' format "${_prompt_skwp_colors[5]}●%f" + zstyle ':prezto:module:git:info:deleted' format "${_prompt_skwp_colors[2]}●%f" + zstyle ':prezto:module:git:info:modified' format "${_prompt_skwp_colors[4]}●%f" + zstyle ':prezto:module:git:info:untracked' format "${_prompt_skwp_colors[3]}●%f" + zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%d%a%m%u)' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format '[%v]' + + # Define prompts. + PROMPT="${_prompt_skwp_colors[3]}%n%f@${_prompt_skwp_colors[2]}%m%f ${_prompt_skwp_colors[5]}%~%f "'${git_info:+${(e)git_info[prompt]}}'"$ " + RPROMPT='%F{blue}${ruby_info[version]}' +} + +prompt_skwp_setup "$@" diff --git a/modules/prompt/functions/prompt_smiley_setup b/modules/prompt/functions/prompt_smiley_setup new file mode 100644 index 00000000..3066a2dc --- /dev/null +++ b/modules/prompt/functions/prompt_smiley_setup @@ -0,0 +1,65 @@ +# +# A simple theme that displays: +# - Python virtual environment. +# - Git branch. +# - Git state. +# - Last command exit state (smiley/X). +# +# Authors: +# Nadav Shatz +# +# Screenshots: +# http://i.imgur.com/ijycV6n.png +# + +# Load dependencies. +pmodload 'helper' + +function prompt_smiley_precmd { + unsetopt XTRACE KSH_ARRAYS + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Python environment information. + if (( $+functions[python-info] )); then + python-info + fi + + # Get Ruby version information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_smiley_setup { + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(percent subst) + + # Add hook for calling git-info before each command. + add-zsh-hook precmd prompt_smiley_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' + + # Set python-info parameters. + zstyle ':prezto:module:python:info:virtualenv' format '%F{yellow}[%v]%f ' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format '%F{yellow}[%v]%f ' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f' + zstyle ':prezto:module:git:info:dirty' format '%%B%F{red} ±%f%%b' + zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%D)' + + # Define prompts. + PROMPT='$python_info[virtualenv]$ruby_info[version]${git_info:+${(e)git_info[prompt]}} %B%c%b %(?:%F{green}ツ%f:%F{red}✖%f) ' + RPROMPT='${editor_info[overwrite]}${VIM:+" %B%F{green}V%f%b"}' + SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' +} + +prompt_smiley_setup "$@" diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index c05fc420..e339dffe 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -5,7 +5,28 @@ # Sorin Ionescu # # Screenshots: -# http://i.imgur.com/nBEEZ.png +# http://i.imgur.com/nrGV6pg.png +# + +# +# 16 Terminal Colors +# -- --------------- +# 0 black +# 1 red +# 2 green +# 3 yellow +# 4 blue +# 5 magenta +# 6 cyan +# 7 white +# 8 bright black +# 9 bright red +# 10 bright green +# 11 bright yellow +# 12 bright blue +# 13 bright magenta +# 14 bright cyan +# 15 bright white # # Load dependencies. @@ -22,6 +43,35 @@ function prompt_sorin_pwd { fi } +function prompt_sorin_git_info { + if (( _prompt_sorin_precmd_async_pid > 0 )); then + # Append Git status. + if [[ -s "$_prompt_sorin_precmd_async_data" ]]; then + alias typeset='typeset -g' + source "$_prompt_sorin_precmd_async_data" + RPROMPT+='${git_info:+${(e)git_info[status]}}' + unalias typeset + fi + + # Reset PID. + _prompt_sorin_precmd_async_pid=0 + + # Redisplay prompt. + zle && zle reset-prompt + fi +} + +function prompt_sorin_precmd_async { + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + typeset -p git_info >! "$_prompt_sorin_precmd_async_data" + fi + + # Signal completion to parent process. + kill -WINCH $$ +} + function prompt_sorin_precmd { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS @@ -29,16 +79,26 @@ function prompt_sorin_precmd { # Format PWD. prompt_sorin_pwd - # Get Git repository information. - if (( $+functions[git-info] )); then - git-info + # Define prompts. + RPROMPT='${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}' + + # Kill the old process of slow commands if it is still running. + if (( _prompt_sorin_precmd_async_pid > 0 )); then + kill -KILL "$_prompt_sorin_precmd_async_pid" &>/dev/null fi + + # Compute slow commands in the background. + trap prompt_sorin_git_info WINCH + prompt_sorin_precmd_async &! + _prompt_sorin_precmd_async_pid=$! } function prompt_sorin_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent subst) + _prompt_sorin_precmd_async_pid=0 + _prompt_sorin_precmd_async_data="${TMPPREFIX}-prompt_sorin_data" # Load required functions. autoload -Uz add-zsh-hook @@ -47,34 +107,42 @@ function prompt_sorin_setup { add-zsh-hook precmd prompt_sorin_precmd # Set editor-info parameters. - zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' - zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{red}❯%F{yellow}❯%F{green}❯%f%b' - zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{red}♺%f' - zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{green}❮%F{yellow}❮%F{red}❮%f%b' + zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b' + zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b' + zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{3}♺%f' + zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{2}❮%F{3}❮%F{1}❮%f%b' # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' - zstyle ':prezto:module:git:info:action' format ':%%B%F{yellow}%s%f%%b' - zstyle ':prezto:module:git:info:added' format ' %%B%F{green}✚%f%%b' - zstyle ':prezto:module:git:info:ahead' format ' %%B%F{yellow}⬆%f%%b' - zstyle ':prezto:module:git:info:behind' format ' %%B%F{yellow}⬇%f%%b' - zstyle ':prezto:module:git:info:branch' format ':%F{green}%b%f' - zstyle ':prezto:module:git:info:commit' format ':%F{green}%.7c%f' - zstyle ':prezto:module:git:info:deleted' format ' %%B%F{red}✖%f%%b' - zstyle ':prezto:module:git:info:modified' format ' %%B%F{blue}✱%f%%b' - zstyle ':prezto:module:git:info:position' format ':%F{red}%p%f' - zstyle ':prezto:module:git:info:renamed' format ' %%B%F{magenta}➜%f%%b' - zstyle ':prezto:module:git:info:stashed' format ' %%B%F{cyan}✭%f%%b' - zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{yellow}═%f%%b' - zstyle ':prezto:module:git:info:untracked' format ' %%B%F{white}◼%f%%b' + zstyle ':prezto:module:git:info:action' format '%F{7}:%f%%B%F{9}%s%f%%b' + zstyle ':prezto:module:git:info:added' format ' %%B%F{2}✚%f%%b' + zstyle ':prezto:module:git:info:ahead' format ' %%B%F{13}⬆%f%%b' + zstyle ':prezto:module:git:info:behind' format ' %%B%F{13}⬇%f%%b' + zstyle ':prezto:module:git:info:branch' format ' %%B%F{2}%b%f%%b' + zstyle ':prezto:module:git:info:commit' format ' %%B%F{3}%.7c%f%%b' + zstyle ':prezto:module:git:info:deleted' format ' %%B%F{1}✖%f%%b' + zstyle ':prezto:module:git:info:modified' format ' %%B%F{4}✱%f%%b' + zstyle ':prezto:module:git:info:position' format ' %%B%F{13}%p%f%%b' + zstyle ':prezto:module:git:info:renamed' format ' %%B%F{5}➜%f%%b' + zstyle ':prezto:module:git:info:stashed' format ' %%B%F{6}✭%f%%b' + zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{3}═%f%%b' + zstyle ':prezto:module:git:info:untracked' format ' %%B%F{7}◼%f%%b' zstyle ':prezto:module:git:info:keys' format \ - 'prompt' ' %F{blue}git%f$(coalesce "%b" "%p" "%c")%s' \ - 'rprompt' '%A%B%S%a%d%m%r%U%u' + 'status' '$(coalesce "%b" "%p" "%c")%s%A%B%S%a%d%m%r%U%u' # Define prompts. - PROMPT='%F{cyan}${_prompt_sorin_pwd}%f${git_info:+${(e)git_info[prompt]}}%(!. %B%F{red}#%f%b.)${editor_info[keymap]} ' - RPROMPT='${editor_info[overwrite]}%(?:: %F{red}⏎%f)${VIM:+" %B%F{green}V%f%b"}${git_info[rprompt]}' - SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' + PROMPT='${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{4}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]} ' + RPROMPT='' + SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? ' +} + +function prompt_sorin_preview { + local +h PROMPT='' + local +h RPROMPT='' + local +h SPROMPT='' + + editor-info 2>/dev/null + prompt_preview_theme 'sorin' } prompt_sorin_setup "$@" diff --git a/modules/prompt/init.zsh b/modules/prompt/init.zsh index d976615a..0ec007c4 100644 --- a/modules/prompt/init.zsh +++ b/modules/prompt/init.zsh @@ -10,9 +10,9 @@ autoload -Uz promptinit && promptinit # Load the prompt theme. zstyle -a ':prezto:module:prompt' theme 'prompt_argv' -if (( $#prompt_argv > 0 )); then - prompt "$prompt_argv[@]" -else +if [[ "$TERM" == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then prompt 'off' +else + prompt "$prompt_argv[@]" fi unset prompt_argv diff --git a/modules/ruby/init.zsh b/modules/ruby/init.zsh index 174d1858..fd707d00 100644 --- a/modules/ruby/init.zsh +++ b/modules/ruby/init.zsh @@ -28,6 +28,9 @@ elif (( $+commands[chruby-exec] )); then source "${commands[chruby-exec]:h:h}/share/chruby/chruby.sh" if zstyle -t ':prezto:module:ruby:chruby' auto-switch; then source "${commands[chruby-exec]:h:h}/share/chruby/auto.sh" + + # If a default Ruby is set, switch to it. + chruby_auto fi # Prepend local gems bin directories to PATH. diff --git a/modules/ssh/README.md b/modules/ssh/README.md index 45bd2bd2..7324ae9a 100644 --- a/modules/ssh/README.md +++ b/modules/ssh/README.md @@ -4,7 +4,8 @@ SSH Provides for an easier use of [SSH][1] by setting up [ssh-agent][2]. This module is disabled on Mac OS X due to custom Apple SSH support rendering it -unnecessary. +unnecessary. Use `ssh-add -K` to store identities in Keychain; they will be +added to `ssh-agent` automatically and persist between reboots. Settings -------- diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index d8b59377..f632328d 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -25,7 +25,7 @@ if [[ ! -S "$SSH_AUTH_SOCK" ]]; then source "$_ssh_agent_env" 2> /dev/null # Start ssh-agent if not started. - if ! ps -U "$USER" -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then + if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")" fi fi diff --git a/modules/terminal/init.zsh b/modules/terminal/init.zsh index 01140d8c..b0be5023 100644 --- a/modules/terminal/init.zsh +++ b/modules/terminal/init.zsh @@ -6,7 +6,7 @@ # # Return if requirements are not found. -if [[ "$TERM" == (dumb|linux|*bsd*) ]]; then +if [[ "$TERM" == (dumb|linux|*bsd*|eterm*) ]]; then return 1 fi diff --git a/modules/tmux/README.md b/modules/tmux/README.md index 9a15be09..11c8a08a 100644 --- a/modules/tmux/README.md +++ b/modules/tmux/README.md @@ -30,6 +30,15 @@ in *tmux.conf*: set-option -g destroy-unattached [on | off] +#### iTerm2 Integration + +[iTerm2][6] offers significant integration with tmux. This can be enabled by +adding the following line to *zpreztorc*: + + zstyle ':prezto:module:tmux:iterm' integrate 'yes' + +Read [iTerm2 and tmux Integration][7] for more information. + Aliases ------- @@ -64,3 +73,5 @@ Authors [3]: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard [4]: https://github.com/mxcl/homebrew [5]: https://github.com/sorin-ionescu/prezto/issues +[6]: http://iterm2.com +[7]: https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh index 29b547f3..070abcaf 100644 --- a/modules/tmux/init.zsh +++ b/modules/tmux/init.zsh @@ -17,6 +17,12 @@ fi # Auto Start # +if ([[ "$TERM_PROGRAM" = 'iTerm.app' ]] && \ + zstyle -t ':prezto:module:tmux:iterm' integrate \ +); then + _tmux_iterm_integration='-CC' +fi + if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" ]] && ( \ ( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) || ( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' local ) \ @@ -32,12 +38,12 @@ if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" ]] && ( \ fi # Attach to the 'prezto' session or to the last session used. - exec tmux attach-session + exec tmux $_tmux_iterm_integration attach-session fi # # Aliases # -alias tmuxa='tmux attach-session' +alias tmuxa="tmux $_tmux_iterm_integration new-session -A" alias tmuxl='tmux list-sessions' diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index 102ae5a1..fd7aaf6e 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -71,9 +71,9 @@ if is-callable 'dircolors'; then eval "$(dircolors --sh)" fi - alias ls="$aliases[ls] --color=auto" + alias ls="${aliases[ls]:-ls} --color=auto" else - alias ls="$aliases[ls] -F" + alias ls="${aliases[ls]:-ls} -F" fi else # BSD Core Utilities @@ -84,9 +84,9 @@ else # Define colors for the completion system. export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:' - alias ls='ls -G' + alias ls="${aliases[ls]:-ls} -G" else - alias ls='ls -F' + alias ls="${aliases[ls]:-ls} -F" fi fi @@ -102,6 +102,14 @@ alias lc='lt -c' # Lists sorted by date, most recent last, shows change alias lu='lt -u' # Lists sorted by date, most recent last, shows access time. alias sl='ls' # I often screw this up. +# Grep +if zstyle -t ':prezto:module:utility:grep' color; then + export GREP_COLOR='37;45' # BSD. + export GREP_COLORS="mt=$GREP_COLOR" # GNU. + + alias grep="${aliases[grep]:-grep} --color=auto" +fi + # Mac OS X Everywhere if [[ "$OSTYPE" == darwin* ]]; then alias o='open' @@ -138,8 +146,13 @@ alias du='du -kh' if (( $+commands[htop] )); then alias top=htop else - alias topc='top -o cpu' - alias topm='top -o vsize' + if [[ "$OSTYPE" == (darwin*|*bsd*) ]]; then + alias topc='top -o cpu' + alias topm='top -o vsize' + else + alias topc='top -o %CPU' + alias topm='top -o %MEM' + fi fi # Miscellaneous @@ -183,5 +196,5 @@ function find-exec { # Displays user owned processes status. function psu { - ps -U "${1:-$USER}" -o 'pid,%cpu,%mem,command' "${(@)argv[2,-1]}" + ps -U "${1:-$LOGNAME}" -o 'pid,%cpu,%mem,command' "${(@)argv[2,-1]}" } diff --git a/runcoms/zlogin b/runcoms/zlogin index 9911de58..30549f33 100644 --- a/runcoms/zlogin +++ b/runcoms/zlogin @@ -17,7 +17,7 @@ # Print a random, hopefully interesting, adage. if (( $+commands[fortune] )); then if [[ -t 0 || -t 1 ]]; then - fortune -a + fortune -s print fi fi diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index a54fdb02..4778944c 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -152,3 +152,6 @@ zstyle ':prezto:module:prompt' theme 'sorin' # 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' diff --git a/runcoms/zprofile b/runcoms/zprofile index 08d39be1..d87cb3b0 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -67,11 +67,8 @@ fi # if [[ ! -d "$TMPDIR" ]]; then - export TMPDIR="/tmp/$USER" + export TMPDIR="/tmp/$LOGNAME" mkdir -p -m 700 "$TMPDIR" fi TMPPREFIX="${TMPDIR%/}/zsh" -if [[ ! -d "$TMPPREFIX" ]]; then - mkdir -p "$TMPPREFIX" -fi