Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
* upstream/master: (22 commits)
  Update external completions
  Update external history-substring-search
  Update external syntax-highlighting
  Update copyright
  Fix heading level for "zpreztorc"
  [Fix sorin-ionescu#503] Prefix rails aliases with 'bundle exec'
  Warn that Cygwin is not supported
  Remove utility aliases for Cygwin
  [Fix sorin-ionescu#324] Add configurable terminal window and tab title formats
  Unsufix internal functions
  Prefix internal functions
  Simplify auto-titling
  Rewrite terminal auto-title
  Remove unused GNU Screen window number format
  [Fix sorin-ionescu#362, Fix sorin-ionescu#384] Set Mac OS X 10.6 terminal window title
  Comment a typeset
  Git ignore bundler vendor/assets
  Do not specify a bundler install path
  Rewrite _rails-command to work from app subdirectories
  Add Rails 4 bin path
  ...

Conflicts:
	modules/completion/external
	modules/history-substring-search/external
	modules/syntax-highlighting/external
  • Loading branch information
luxflux committed Nov 30, 2013
2 parents 3a787a9 + 2ebdbdc commit e723d1c
Show file tree
Hide file tree
Showing 13 changed files with 215 additions and 182 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ Installation
------------

Prezto will work with any recent release of Zsh, but the minimum recommended
version is 4.3.10.
version is 4.3.11. Unfortunately, [Cygwin][9] is not supported due to
non-standard core utilities.

1. Launch Zsh:

Expand Down Expand Up @@ -85,7 +86,7 @@ License

(The MIT License)

Copyright (c) 2009-2012 Robby Russell, Sorin Ionescu, and contributors.
Copyright (c) 2009-2014 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
Expand Down Expand Up @@ -113,4 +114,5 @@ SOFTWARE.
[6]: http://gitref.org
[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
[8]: http://grml.org/zsh/zsh-lovers.html
[9]: http://www.cygwin.com

2 changes: 1 addition & 1 deletion init.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#

# Check for the minimum supported version.
min_zsh_version='4.3.10'
min_zsh_version='4.3.11'
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "prezto: old shell detected, minimum required: $min_zsh_version" >&2
return 1
Expand Down
47 changes: 19 additions & 28 deletions modules/rails/init.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,30 @@
# Sorin Ionescu <[email protected]>
#

# Load dependencies.
pmodload 'ruby'

# Return if requirements are not found.
if (( ! $+commands[rails] )); then
if (( ! $+commands[bundle] )); then
return 1
fi

#
# Aliases (Compatible with Rails 2)
#

alias ror='rails'
alias rorc='_rails-command console'
alias rordc='_rails-command dbconsole'
alias rordm='rake db:migrate'
alias rordM='rake db:migrate db:test:clone'
alias rordr='rake db:rollback'
alias rorg='_rails-command generate'
alias rorl='tail -f log/development.log'
alias rorlc='rake log:clear'
alias rorp='_rails-command plugin'
alias rorr='_rails-command runner'
alias rors='_rails-command server'
alias rorsd='_rails-command server --debugger'
alias rorx='_rails-command destroy'

#
# Functions
# Aliases
#

function _rails-command {
if [[ -e "script/server" ]]; then
ruby script/"$@"
else
ruby script/rails "$@"
fi
}
alias ror='bundle exec rails'
alias rorc='bundle exec rails console'
alias rordc='bundle exec rails dbconsole'
alias rordm='bundle exec rake db:migrate'
alias rordM='bundle exec rake db:migrate db:test:clone'
alias rordr='bundle exec rake db:rollback'
alias rorg='bundle exec rails generate'
alias rorl='tail -f "$(ruby-app-root)/log/development.log"'
alias rorlc='bundle exec rake log:clear'
alias rorp='bundle exec rails plugin'
alias rorr='bundle exec rails runner'
alias rors='bundle exec rails server'
alias rorsd='bundle exec rails server --debugger'
alias rorx='bundle exec rails destroy'

1 change: 1 addition & 0 deletions modules/ruby/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ Aliases
Functions
---------

- `ruby-app-root` displays the path to the Ruby application root directory.
- `ruby-info` exposes information about the Ruby environment via the
`$ruby_info` associative array.

Expand Down
19 changes: 19 additions & 0 deletions modules/ruby/functions/ruby-app-root
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#
# Displays the path to the Ruby application root directory.
#
# Authors:
# Sorin Ionescu <[email protected]>
#

local root_dir="$PWD"

while [[ "$root_dir" != '/' ]]; do
if [[ -f "$root_dir/Gemfile" ]]; then
print "$root_dir"
break
fi
root_dir="$root_dir:h"
done

return 1

4 changes: 3 additions & 1 deletion modules/ruby/init.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,16 @@ alias rb='ruby'
if (( $+commands[bundle] )); then
alias rbb='bundle'
alias rbbe='rbb exec'
alias rbbi='rbb install --path vendor/bundle'
alias rbbi='rbb install'
alias rbbl='rbb list'
alias rbbo='rbb open'
alias rbbp='rbb package'
alias rbbu='rbb update'
alias rbbI='rbbi \
&& rbb package \
&& print .bundle >>! .gitignore \
&& print vendor/assets >>! .gitignore \
&& print vendor/bundle >>! .gitignore \
&& print vendor/cache >>! .gitignore'
fi

28 changes: 19 additions & 9 deletions modules/terminal/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,33 @@ directory, add the following to *zpreztorc*:

zstyle ':prezto:module:terminal' auto-title 'yes'

Auto titling is disabled inside terminal multiplexers, except inside dvtm, since
it interferes with window names defined in configuration files and profile
managers.

To format terminal window and tab titles, add the following to *zpreztorc*:

zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
zstyle ':prezto:module:terminal:tab-title' format '%m: %s'

`%s` will be replaced with the current working directory path or the currently
executing program name.

For a list of sequences, see [Expansion of Prompt Sequences][1].

Functions
---------

- `set-screen-window-title` sets the screen title.
- `set-terminal-tab-title` sets the terminal tab title.
- `set-terminal-window-title` sets the terminal window title.
- `set-titles-with-command` sets the screen and terminal titles with
a given command.
- `set-titles-with-path` sets the screen and terminal titles with a given path.
- `set-tab-title` sets the terminal tab title.
- `set-window-title` sets the terminal or terminal multiplexer window title.

Authors
-------

*The authors of this module should be contacted via the [issue tracker][1].*
*The authors of this module should be contacted via the [issue tracker][2].*

- [James Cox](https://github.com/imajes)
- [Sorin Ionescu](https://github.com/sorin-ionescu)

[1]: https://github.com/sorin-ionescu/prezto/issues
[1]: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences
[2]: https://github.com/sorin-ionescu/prezto/issues

135 changes: 68 additions & 67 deletions modules/terminal/init.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
# Sets terminal window and tab titles.
#
# Authors:
# James Cox <[email protected]>
# Sorin Ionescu <[email protected]>
#

Expand All @@ -11,113 +10,115 @@ if [[ "$TERM" == 'dumb' ]]; then
return 1
fi

# Set the GNU Screen window number.
if [[ -n "$WINDOW" ]]; then
export SCREEN_NO="%B${WINDOW}%b "
else
export SCREEN_NO=""
fi
# Sets the terminal or terminal multiplexer window title.
function set-window-title {
local title_format{,ted}
zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format="%s"
zformat -f title_formatted "$title_format" "s:$argv"

# Sets the GNU Screen title.
function set-screen-window-title {
if [[ "$TERM" == screen* ]]; then
printf "\ek%s\e\\" ${(V)argv}
title_format="\ek%s\e\\"
else
title_format="\e]2;%s\a"
fi
}

# Sets the terminal window title.
function set-terminal-window-title {
if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then
printf "\e]2;%s\a" ${(V)argv}
fi
printf "$title_format" "${(V%)title_formatted}"
}

# Sets the terminal tab title.
function set-terminal-tab-title {
if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then
printf "\e]1;%s\a" ${(V)argv}
fi
function set-tab-title {
local title_format{,ted}
zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format="%s"
zformat -f title_formatted "$title_format" "s:$argv"

printf "\e]1;%s\a" ${(V%)title_formatted}
}

# Sets the tab and window titles with a given command.
function set-titles-with-command {
# Do not set the window and tab titles in Terminal.app because they are not
# reset upon command termination.
if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]]; then
return 1
fi
function _terminal-set-titles-with-command {
emulate -L zsh
setopt EXTENDED_GLOB

# Get the command name that is under job control.
if [[ "${1[(w)1]}" == (fg|%*)(\;|) ]]; then
if [[ "${2[(w)1]}" == (fg|%*)(\;|) ]]; then
# Get the job name, and, if missing, set it to the default %+.
local job_name="${${1[(wr)%*(\;|)]}:-%+}"
local job_name="${${2[(wr)%*(\;|)]}:-%+}"

# Make a local copy for use in the subshell.
local -A jobtexts_from_parent_shell
jobtexts_from_parent_shell=(${(kv)jobtexts})

jobs $job_name 2>/dev/null > >(
jobs "$job_name" 2>/dev/null > >(
read index discarded
# The index is already surrounded by brackets: [1].
set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}"
_terminal-set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}"
)
else
# Set the command name, or in the case of sudo or ssh, the next command.
local cmd=${${1[(wr)^(*=*|sudo|ssh|-*)]}:t}
local cmd="${${2[(wr)^(*=*|sudo|ssh|-*)]}:t}"
local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}"
unset MATCH

if [[ "$TERM" == screen* ]]; then
set-screen-window-title "$truncated_cmd"
else
set-terminal-window-title "$cmd"
set-terminal-tab-title "$truncated_cmd"
fi
set-window-title "$cmd"
set-tab-title "$truncated_cmd"
fi
}

# Sets the tab and window titles with a given path.
function set-titles-with-path {
function _terminal-set-titles-with-path {
emulate -L zsh
setopt EXTENDED_GLOB

local absolute_path="${${1:a}:-$PWD}"
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH

if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]]; then
printf '\e]7;%s\a' "file://$HOST${absolute_path// /%20}"
else
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
set-window-title "$abbreviated_path"
set-tab-title "$truncated_path"
}

if [[ "$TERM" == screen* ]]; then
set-screen-window-title "$truncated_path"
else
set-terminal-window-title "$abbreviated_path"
set-terminal-tab-title "$truncated_path"
fi
fi
# Sets the Terminal.app proxy icon.
function _terminal-set-terminal-app-proxy-icon {
printf '\e]7;%s\a' "file://$HOST${${1:-$PWD}// /%20}"
}

# Don't override precmd/preexec; append to hook array.
# Do not override precmd/preexec; append to the hook array.
autoload -Uz add-zsh-hook

# Sets the tab and window titles before the prompt is displayed.
function set-titles-precmd {
if zstyle -t ':prezto:module:terminal' auto-title; then
set-titles-with-path
fi
}
add-zsh-hook precmd set-titles-precmd
# Set up the Apple Terminal.
if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] \
&& ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] )
then
# Sets the Terminal.app current working directory before the prompt is
# displayed.
add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon

# Unsets the Terminal.app current working directory when a terminal
# multiplexer or remote connection is started since it can no longer be
# updated, and it becomes confusing when the directory displayed in the title
# bar is no longer synchronized with real current working directory.
function _terminal-unset-terminal-app-proxy-icon {
if [[ "${2[(w)1]:t}" == (screen|tmux|dvtm|ssh|mosh) ]]; then
_terminal-set-terminal-app-proxy-icon ' '
fi
}
add-zsh-hook preexec _terminal-unset-terminal-app-proxy-icon

# Sets the tab and window titles before command execution.
function set-titles-preexec {
if zstyle -t ':prezto:module:terminal' auto-title; then
set-titles-with-command "$2"
fi
}
add-zsh-hook preexec set-titles-preexec
# Do not set the tab and window titles in Terminal.app since it sets the tab
# title to the currently running process by default and the current working
# directory is set separately.
return
fi

# Set up non-Apple terminals.
if zstyle -t ':prezto:module:terminal' auto-title \
&& ( ! [[ -n "$STY" || -n "$TMUX" ]] )
then
# Sets the tab and window titles before the prompt is displayed.
add-zsh-hook precmd _terminal-set-titles-with-path

# Sets the tab and window titles before command execution.
add-zsh-hook preexec _terminal-set-titles-with-command
fi

4 changes: 0 additions & 4 deletions modules/utility/init.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,6 @@ alias sl='ls' # I often screw this up.
# Mac OS X Everywhere
if [[ "$OSTYPE" == darwin* ]]; then
alias o='open'
elif [[ "$OSTYPE" == cygwin* ]]; then
alias o='cygstart'
alias pbcopy='tee > /dev/clipboard'
alias pbpaste='cat /dev/clipboard'
else
alias o='xdg-open'

Expand Down
2 changes: 1 addition & 1 deletion runcoms/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ zprofile and zlogin are not meant to be used concurrently but can be done so.
This file is sourced by interactive shells. It should define aliases,
functions, shell options, and key bindings.

## zpreztorc
### zpreztorc

This file configures Prezto.

Expand Down
Loading

0 comments on commit e723d1c

Please sign in to comment.