1
0
mirror of https://github.com/dcarrillo/prezto.git synced 2025-07-01 15:09:25 +00:00

Compare commits

...

47 Commits

Author SHA1 Message Date
8d9ec24335 Use command_not_found_handler to change to the previous directory 2014-01-09 23:27:41 -05:00
c091f71283 [Fix #522] Do not load the terminal module in non-graphical terminals 2014-01-09 20:07:40 -05:00
e1974ad58d [Fix #516] Define ZLE functions separately 2014-01-09 19:58:14 -05:00
391bc405d0 Revert "Warn that Cygwin is not supported"
This reverts commit b1abe7a845.
2014-01-04 17:30:38 -05:00
80ded5e33d Revert "Remove utility aliases for Cygwin"
This reverts commit d368d0536b.
2014-01-04 17:30:37 -05:00
fa6723a5ee Don't use sudo if implicitly called by Pacman frontend
Don't rely on alias expansion to handle Pacman because aliases
are not expanded in sudo.

Signed-off-by: Sorin Ionescu <sorin.ionescu@gmail.com>
2014-01-04 17:30:37 -05:00
57b283facd [Fix #514] Use /tmp when $TMPDIR is undefined 2014-01-03 14:20:32 -05:00
aefdce3fc3 Fix README.md: PATH was moved from .zshenv to .zprofile 2014-01-03 13:41:05 -05:00
e4e4f89c9f [Fix #523] Ensure zprofile exists before sourcing it 2014-01-03 13:37:36 -05:00
817dd3aa3a Allow functions in a module to be symlinks
Add the '-' flag to the function glob which makes the other flag test
against the target of the symlink, and not the symlink itself.

When using rcm (https://github.com/thoughtbot/rcm), the function files
are symlinked by default, but the current glob excludes them by
targeting normal files (with the '.' flag).

Signed-off-by: Sorin Ionescu <sorin.ionescu@gmail.com>
2014-01-03 13:30:55 -05:00
347928193f Update copyright 2013-12-08 01:34:27 -05:00
da1a837cd4 Refactor Bundler aliases 2013-11-30 19:25:11 -05:00
2ebdbdcff5 Update external completions 2013-11-29 20:37:01 -05:00
eea1eea7dc Update external history-substring-search 2013-11-29 20:36:33 -05:00
4e9553e896 Update external syntax-highlighting 2013-11-29 20:36:07 -05:00
a57d545639 Update copyright 2013-11-29 19:13:06 -05:00
cdc4f36f25 Fix heading level for "zpreztorc" 2013-11-29 17:34:34 -05:00
50edc45132 [Fix #503] Prefix rails aliases with 'bundle exec' 2013-11-29 08:46:14 -05:00
b1abe7a845 Warn that Cygwin is not supported 2013-11-29 08:46:14 -05:00
d368d0536b Remove utility aliases for Cygwin 2013-11-29 08:46:14 -05:00
254b7c36d9 [Fix #324] Add configurable terminal window and tab title formats 2013-11-26 00:25:37 -05:00
d19c349f3f Unsufix internal functions 2013-11-26 00:25:37 -05:00
9f60ddb96b Prefix internal functions 2013-11-26 00:25:36 -05:00
5b4dcea595 Simplify auto-titling 2013-11-26 00:25:36 -05:00
b98c7469e5 Rewrite terminal auto-title 2013-11-26 00:25:35 -05:00
f6bd76a90b Remove unused GNU Screen window number format 2013-11-26 00:25:35 -05:00
d877617734 [Fix #362, Fix #384] Set Mac OS X 10.6 terminal window title 2013-11-26 00:25:34 -05:00
76fc07ba9f Comment a typeset 2013-11-25 18:16:36 -05:00
52ea7152ad Git ignore bundler vendor/assets 2013-11-25 17:25:11 -05:00
b159ddb02b Do not specify a bundler install path 2013-11-25 17:25:10 -05:00
5cfe250e52 Rewrite _rails-command to work from app subdirectories 2013-11-25 17:25:10 -05:00
cc4a58bee3 Add Rails 4 bin path 2013-11-25 17:25:10 -05:00
3a5fff9c6d Don't override customized environments in subshells
Only set up environment for the top-level shell, and allow it to be
inherited normally.

A top level shell is usually a login shell, but can also be a
non-interactive, non-login shell in certain cases, such as when
executing an SSH remote command.

Signed-off-by: Sorin Ionescu <sorin.ionescu@gmail.com>
2013-11-25 17:16:33 -05:00
8993a8dfad Bump minimum supported Zsh to v4.3.11 2013-11-20 09:59:02 -05:00
28e956691c Add and update module descriptions 2013-11-17 15:58:53 -05:00
1c6a016644 Add Ocaml module
Manage local Ocaml modules with OPAM.

Signed-off-by: Sorin Ionescu <sorin.ionescu@gmail.com>
2013-11-17 15:56:17 -05:00
e18f18af92 Support command-not-found on Arch Linux
Signed-off-by: Sorin Ionescu <sorin.ionescu@gmail.com>
2013-11-17 15:09:03 -05:00
a4bacb8bb9 [Fix #479] Start only one ssh-agent instance 2013-09-26 14:46:21 -04:00
aacff80984 [Fix #477] Add instructions for updating Prezto 2013-09-26 14:08:44 -04:00
eb1a20552a Comment an unnecessary style 2013-08-27 22:29:20 -04:00
a914a87aa9 Stop module loading when external code fails to source 2013-08-27 22:22:55 -04:00
e1e2c85392 Use correct option for pacman search aliases 2013-08-27 16:08:10 -04:00
8ee6634c93 Do not define $GEM_HOME
Defining it breaks gems for all users who neither use RVM nor rbenv,
but have a different default Ruby version nonetheless.

Signed-off-by: Sorin Ionescu <sorin.ionescu@gmail.com>
2013-08-25 22:24:42 -04:00
959887013d Simplify a conditional 2013-08-20 08:47:18 -04:00
b769505857 Remove duplicate alias definitions 2013-08-20 08:46:37 -04:00
622e7b117b Add utility aliases for Cygwin
Signed-off-by: Sorin Ionescu <sorin.ionescu@gmail.com>
2013-08-20 08:35:55 -04:00
459238b2bb Replace pythonz with pyenv
Depending on Python to manage Python is silly.
2013-08-20 08:21:17 -04:00
34 changed files with 428 additions and 299 deletions

View File

@ -9,7 +9,7 @@ Installation
------------ ------------
Prezto will work with any recent release of Zsh, but the minimum recommended Prezto will work with any recent release of Zsh, but the minimum recommended
version is 4.3.10. version is 4.3.11.
1. Launch Zsh: 1. Launch Zsh:
@ -36,9 +36,16 @@ version is 4.3.10.
### Troubleshooting ### Troubleshooting
If you are not able to find certain commands after switching to *Prezto*, If you are not able to find certain commands after switching to *Prezto*,
modify the `PATH` variable in *~/.zshenv* then open a new Zsh terminal modify the `PATH` variable in *~/.zprofile* then open a new Zsh terminal
window or tab. window or tab.
Updating
--------
Pull the latest changes and update submodules.
git pull && git submodule update --init --recursive
Usage Usage
----- -----
@ -78,7 +85,8 @@ License
(The MIT License) (The MIT License)
Copyright (c) 2009-2012 Robby Russell, Sorin Ionescu, and contributors. Copyright (c) 2009-2011 Robby Russell and contributors.
Copyright (c) 2011-2014 Sorin Ionescu and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of 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 this software and associated documentation files (the "Software"), to deal in

View File

@ -10,7 +10,7 @@
# #
# Check for the minimum supported version. # 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 if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "prezto: old shell detected, minimum required: $min_zsh_version" >&2 print "prezto: old shell detected, minimum required: $min_zsh_version" >&2
return 1 return 1
@ -25,7 +25,7 @@ unset min_zsh_version
function pmodload { function pmodload {
local -a pmodules local -a pmodules
local pmodule local pmodule
local pfunction_glob='^([_.]*|prompt_*_setup|README*)(.N:t)' local pfunction_glob='^([_.]*|prompt_*_setup|README*)(-.N:t)'
# $argv is overridden in the anonymous function. # $argv is overridden in the anonymous function.
pmodules=("$argv[@]") pmodules=("$argv[@]")

View File

@ -31,6 +31,16 @@ Dpkg
Defines dpkg aliases and functions. Defines dpkg aliases and functions.
Editor
------
Sets key bindings.
Emacs
-----
Enables Emacs dependency management.
Environment Environment
----------- -----------
@ -41,13 +51,19 @@ Fasd
Maintains a frequently used file and directory list for fast access. Maintains a frequently used file and directory list for fast access.
Git
---
Enhances the Git distributed version control system by providing aliases,
functions and by exposing repository status information to prompts.
GNU Utility GNU Utility
----------- -----------
Provides for the interactive use of GNU utilities on non-GNU systems. Provides for the interactive use of GNU utilities on non-GNU systems.
GPG GPG
--------- ---
Provides for an easier use of GPG by setting up gpg-agent. Provides for an easier use of GPG by setting up gpg-agent.
@ -61,16 +77,16 @@ Helper
Provides helper functions for developing modules. Provides helper functions for developing modules.
History Substring Search
------------------------
Integrates zsh-history-substring-search into Prezto.
History History
------- -------
Sets history options and defines history aliases. Sets history options and defines history aliases.
History Substring Search
------------------------
Integrates zsh-history-substring-search into Prezto.
Homebrew Homebrew
-------- --------
@ -86,6 +102,11 @@ Node.js
Provides utility functions for Node.js and loads npm completion. Provides utility functions for Node.js and loads npm completion.
Ocaml
-----
Initializes Ocaml package management.
OSX OSX
--- ---
@ -137,10 +158,10 @@ Spectrum
Provides for easier use of 256 colors and effects. Provides for easier use of 256 colors and effects.
SSH-Agent SSH
--------- ---
Provides for an easier use of ssh-agent. Provides for an easier use of SSH by setting up ssh-agent.
Syntax Highlighting Syntax Highlighting
------------------- -------------------

View File

@ -1,7 +1,8 @@
Command-Not-Found Command-Not-Found
================= =================
Loads the [command-not-found][1] tool on Debian-based distributions. Displays installation information for not found commands by loading the
[command-not-found][1] tool on Debian-based and Arch Linux-based distributions.
Authors Authors
------- -------

View File

@ -5,10 +5,14 @@
# Joseph Jon Booker <joe@neoturbine.net> # Joseph Jon Booker <joe@neoturbine.net>
# #
# Load command-not-found on Debian-based distributions.
if [[ -s '/etc/zsh_command_not_found' ]]; then
source '/etc/zsh_command_not_found'
# Load command-not-found on Arch Linux-based distributions.
elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then
source '/usr/share/doc/pkgfile/command-not-found.zsh'
# Return if requirements are not found. # Return if requirements are not found.
if [[ ! -s '/etc/zsh_command_not_found' ]]; then else
return 1 return 1
fi fi
source '/etc/zsh_command_not_found'

View File

@ -22,7 +22,11 @@ Aliases
------- -------
- `d` prints the contents of the directory stack. - `d` prints the contents of the directory stack.
- `1 ... 9` changes the directory to the **n** previous one.
Functions
---------
- `command_not_found_handler` changes the directory to the **n** previous one.
Authors Authors
------- -------

View File

@ -0,0 +1,13 @@
#
# Changes the directory to the n previous one.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
if [[ "$1" == [[:digit:]]## ]]; then
builtin cd "+$1"
else
return 127
fi

View File

@ -27,5 +27,4 @@ unsetopt CLOBBER # Do not overwrite existing files with > and >>.
# #
alias d='dirs -v' alias d='dirs -v'
for index ({1..9}) alias "$index"="cd +${index}"; unset index

View File

@ -107,31 +107,40 @@ function editor-info {
} }
zle -N editor-info zle -N editor-info
# Ensures that $terminfo values are valid and updates editor information when # Updates editor information when the keymap changes.
# the keymap changes. function zle-keymap-select {
function zle-keymap-select zle-line-init zle-line-finish { zle editor-info
}
zle -N zle-keymap-select
# Enables terminal application mode and updates editor information.
function zle-line-init {
# The terminal must be in application mode when ZLE is active for $terminfo # The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid. # values to be valid.
if (( $+terminfo[smkx] && $+terminfo[rmkx] )); then if (( $+terminfo[smkx] )); then
case "$0" in # Enable terminal application mode.
(zle-line-init) echoti smkx
# Enable terminal application mode.
echoti smkx
;;
(zle-line-finish)
# Disable terminal application mode.
echoti rmkx
;;
esac
fi fi
# Update editor information. # Update editor information.
zle editor-info zle editor-info
} }
zle -N zle-keymap-select
zle -N zle-line-finish
zle -N zle-line-init zle -N zle-line-init
# Disables terminal application mode and updates editor information.
function zle-line-finish {
# The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid.
if (( $+terminfo[rmkx] )); then
# Disable terminal application mode.
echoti rmkx
fi
# Update editor information.
zle editor-info
}
zle -N zle-line-finish
# Toggles emacs overwrite mode and updates editor information. # Toggles emacs overwrite mode and updates editor information.
function overwrite-mode { function overwrite-mode {
zle .overwrite-mode zle .overwrite-mode

View File

@ -12,7 +12,7 @@ fi
# Set the default paths to gpg-agent files. # Set the default paths to gpg-agent files.
_gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf" _gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf"
_gpg_agent_env="$TMPDIR/gpg-agent.env" _gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env"
# Start gpg-agent if not started. # Start gpg-agent if not started.
if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then

View File

@ -10,7 +10,7 @@
pmodload 'editor' pmodload 'editor'
# Source module files. # Source module files.
source "${0:h}/external/zsh-history-substring-search.zsh" source "${0:h}/external/zsh-history-substring-search.zsh" || return 1
# #
# Search # Search

28
modules/ocaml/README.md Normal file
View File

@ -0,0 +1,28 @@
Ocaml
=====
Initializes [Ocaml][1] package management.
OPAM
----
[OPAM][2] is a package manager for Ocaml.
This module enables local package installation with OPAM by extending the
relevant path and Ocaml variables.
### Usage
Install packages to your local package directory with `opam install`.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][3].*
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: http://ocaml.org/
[2]: http://opam.ocamlpro.com/
[3]: https://github.com/sorin-ionescu/prezto/issues

15
modules/ocaml/init.zsh Normal file
View File

@ -0,0 +1,15 @@
#
# Initializes Ocaml package management.
#
# Authors:
# Sebastian Wiesner <lunaryorn@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[opam] )); then
return 1
fi
# Initialize OPAM.
eval "$(opam config env)"

View File

@ -6,7 +6,7 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
local tmp="$TMPDIR/pacman-disowned-$UID-$$" local tmp="${TMPDIR:-/tmp}/pacman-disowned-$UID-$$"
local db="$tmp/db" local db="$tmp/db"
local fs="$tmp/fs" local fs="$tmp/fs"

View File

@ -27,6 +27,8 @@ if (( $+commands[$_pacman_frontend] )); then
if [[ -s "${0:h}/${_pacman_frontend}.zsh" ]]; then if [[ -s "${0:h}/${_pacman_frontend}.zsh" ]]; then
source "${0:h}/${_pacman_frontend}.zsh" source "${0:h}/${_pacman_frontend}.zsh"
fi fi
else
_pacman_sudo='sudo '
fi fi
# #
@ -34,49 +36,49 @@ fi
# #
# Pacman. # Pacman.
alias pac='pacman' alias pac= "${_pacman_frontend}"
# Installs packages from repositories. # Installs packages from repositories.
alias paci='sudo pacman --sync' alias paci="${_pacman_sudo}${_pacman_frontend} --sync"
# Installs packages from files. # Installs packages from files.
alias pacI='sudo pacman --upgrade' alias pacI="${_pacman_sudo}${_pacman_frontend} --upgrade"
# Removes packages and unneeded dependencies. # Removes packages and unneeded dependencies.
alias pacx='sudo pacman --remove' alias pacx="${_pacman_sudo}${_pacman_frontend} --remove"
# Removes packages, their configuration, and unneeded dependencies. # Removes packages, their configuration, and unneeded dependencies.
alias pacX='sudo pacman --remove --nosave --recursive' alias pacX="${_pacman_sudo}${_pacman_frontend} --remove --nosave --recursive"
# Displays information about a package from the repositories. # Displays information about a package from the repositories.
alias pacq='pacman --sync --info' alias pacq="${_pacman_frontend} --sync --info"
# Displays information about a package from the local database. # Displays information about a package from the local database.
alias pacQ='pacman --query --info' alias pacQ="${_pacman_frontend} --query --info"
# Searches for packages in the repositories. # Searches for packages in the repositories.
alias pacs='pacman --sync --recursive' alias pacs="${_pacman_frontend} --sync --search"
# Searches for packages in the local database. # Searches for packages in the local database.
alias pacS='pacman --query --recursive' alias pacS="${_pacman_frontend} --query --search"
# Lists orphan packages. # Lists orphan packages.
alias pacman-list-orphans='sudo pacman --query --deps --unrequired' alias pacman-list-orphans="${_pacman_sudo}${_pacman_frontend} --query --deps --unrequired"
# Removes orphan packages. # Removes orphan packages.
alias pacman-remove-orphans='sudo pacman --remove --recursive $(pacman --quiet --query --deps --unrequired)' alias pacman-remove-orphans="${_pacman_sudo}${_pacman_frontend} --remove --recursive \$(${_pacman_frontend} --quiet --query --deps --unrequired)"
# Synchronizes the local package and Arch Build System databases against the # Synchronizes the local package and Arch Build System databases against the
# repositories. # repositories.
if (( $+commands[abs] )); then if (( $+commands[abs] )); then
alias pacu='sudo pacman --sync --refresh && sudo abs' alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && ${_pacman_sudo}abs"
else else
alias pacu='sudo pacman --sync --refresh' alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh"
fi fi
# Synchronizes the local package database against the repositories then # Synchronizes the local package database against the repositories then
# upgrades outdated packages. # upgrades outdated packages.
alias pacU='sudo pacman --sync --refresh --sysupgrade' alias pacU="${_pacman_sudo}${_pacman_frontend} --sync --refresh --sysupgrade"
unset _pacman_frontend unset _pacman_{frontend,sudo}

View File

@ -11,9 +11,9 @@
# Disable color. # Disable color.
if ! zstyle -t ':prezto:module:pacman:yaourt' color; then if ! zstyle -t ':prezto:module:pacman:yaourt' color; then
alias pacman='pacman --nocolor' alias pacman='yaourt --nocolor'
fi fi
# Manages .pac* files. # Manages .pac* files.
alias pacc='pacman -C' alias pacc='yaourt -C'

View File

@ -6,15 +6,15 @@ Enables local Python and local Python package installation.
Local Python Installation Local Python Installation
------------------------- -------------------------
[pythonz][4] builds and installs multiple Python versions locally in the home [pyenv][4] builds and installs multiple Python versions locally in the home
directory. directory.
This module prepends the pythonz directory to the path variable to enable the This module prepends the pyenv directory to the path variable to enable the
execution of `pythonz`. execution of `pyenv`.
### Usage ### Usage
Install Python versions with `pythonz install` into *~/.pythonz/pythons*. Install Python versions with `pyenv install` into *~/.pyenv/versions*.
Local Package Installation Local Package Installation
-------------------------- --------------------------
@ -66,16 +66,6 @@ Aliases
- `py` is short for `python`. - `py` is short for `python`.
### Pythonz
- `pyz` is short for `pythonz`.
- `pyzc` removes stale source folders and archives.
- `pyzi` installs Python versions.
- `pyzl` lists installed Python versions.
- `pyzL` lists available Python versions.
- `pyzu` updates itself to the latest version.
- `pyzx` uninstalls Python versions.
Functions Functions
--------- ---------
@ -105,6 +95,6 @@ Authors
[1]: http://www.python.org/dev/peps/pep-0370/ [1]: http://www.python.org/dev/peps/pep-0370/
[2]: http://www.doughellmann.com/projects/virtualenvwrapper/ [2]: http://www.doughellmann.com/projects/virtualenvwrapper/
[3]: http://pypi.python.org/pypi/virtualenv [3]: http://pypi.python.org/pypi/virtualenv
[4]: http://saghul.github.com/pythonz/ [4]: https://github.com/yyuu/pyenv
[5]: https://github.com/sorin-ionescu/prezto/issues [5]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -6,29 +6,35 @@
# Sebastian Wiesner <lunaryorn@googlemail.com> # Sebastian Wiesner <lunaryorn@googlemail.com>
# #
# Load pythonz into the shell session. # Load manually installed pyenv into the shell session.
if [[ -s $HOME/.pythonz/bin/pythonz ]]; then if [[ -s "$HOME/.pyenv/bin/pyenv" ]]; then
path=($HOME/.pythonz/bin $path) path=("$HOME/.pyenv/bin" $path)
fi eval "$(pyenv init -)"
# Return if requirements are not found. # Load package manager installed pyenv into the shell session.
if (( ! $+commands[python] && ! $+commands[pythonz] )); then elif (( $+commands[pyenv] )); then
return 1 eval "$(pyenv init -)"
fi
# Prepend PEP 370 per user site packages directory, which defaults to # Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on Mac OS X and ~/.local elsewhere, to PATH. # ~/Library/Python on Mac OS X and ~/.local elsewhere, to PATH.
if [[ "$OSTYPE" == darwin* ]]; then
path=($HOME/Library/Python/*/bin(N) $path)
else else
# This is subject to change. if [[ "$OSTYPE" == darwin* ]]; then
path=($HOME/.local/bin $path) path=($HOME/Library/Python/*/bin(N) $path)
else
# This is subject to change.
path=($HOME/.local/bin $path)
fi
fi
# Return if requirements are not found.
if (( ! $+commands[python] && ! $+commands[pyenv] )); then
return 1
fi fi
# Load virtualenvwrapper into the shell session. # Load virtualenvwrapper into the shell session.
if (( $+commands[virtualenvwrapper_lazy.sh] )); then if (( $+commands[virtualenvwrapper_lazy.sh] )); then
# Set the directory where virtual environments are stored. # Set the directory where virtual environments are stored.
export WORKON_HOME=$HOME/.virtualenvs export WORKON_HOME="$HOME/.virtualenvs"
# Disable the virtualenv prompt. # Disable the virtualenv prompt.
VIRTUAL_ENV_DISABLE_PROMPT=1 VIRTUAL_ENV_DISABLE_PROMPT=1
@ -42,14 +48,3 @@ fi
alias py='python' alias py='python'
# pythonz
if (( $+commands[pythonz] )); then
alias pyz='pythonz'
alias pyzc='pythonz cleanup'
alias pyzi='pythonz install'
alias pyzl='pythonz list'
alias pyzL='pythonz list -a'
alias pyzu='pythonz update'
alias pyzx='pythonz uninstall'
fi

View File

@ -7,39 +7,30 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Load dependencies.
pmodload 'ruby'
# Return if requirements are not found. # Return if requirements are not found.
if (( ! $+commands[rails] )); then if (( ! $+commands[bundle] )); then
return 1 return 1
fi fi
# #
# Aliases (Compatible with Rails 2) # Aliases
# #
alias ror='rails' alias ror='bundle exec rails'
alias rorc='_rails-command console' alias rorc='bundle exec rails console'
alias rordc='_rails-command dbconsole' alias rordc='bundle exec rails dbconsole'
alias rordm='rake db:migrate' alias rordm='bundle exec rake db:migrate'
alias rordM='rake db:migrate db:test:clone' alias rordM='bundle exec rake db:migrate db:test:clone'
alias rordr='rake db:rollback' alias rordr='bundle exec rake db:rollback'
alias rorg='_rails-command generate' alias rorg='bundle exec rails generate'
alias rorl='tail -f log/development.log' alias rorl='tail -f "$(ruby-app-root)/log/development.log"'
alias rorlc='rake log:clear' alias rorlc='bundle exec rake log:clear'
alias rorp='_rails-command plugin' alias rorp='bundle exec rails plugin'
alias rorr='_rails-command runner' alias rorr='bundle exec rails runner'
alias rors='_rails-command server' alias rors='bundle exec rails server'
alias rorsd='_rails-command server --debugger' alias rorsd='bundle exec rails server --debugger'
alias rorx='_rails-command destroy' alias rorx='bundle exec rails destroy'
#
# Functions
#
function _rails-command {
if [[ -e "script/server" ]]; then
ruby script/"$@"
else
ruby script/rails "$@"
fi
}

View File

@ -59,6 +59,7 @@ Aliases
Functions 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` exposes information about the Ruby environment via the
`$ruby_info` associative array. `$ruby_info` associative array.

View File

@ -0,0 +1,19 @@
#
# Displays the path to the Ruby application root directory.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
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

View File

@ -23,14 +23,9 @@ elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then
elif (( $+commands[rbenv] )); then elif (( $+commands[rbenv] )); then
eval "$(rbenv init - --no-rehash zsh)" eval "$(rbenv init - --no-rehash zsh)"
# Install local gems according to operating system conventions. # Prepend local gems bin directories to PATH.
else else
if [[ "$OSTYPE" == darwin* ]]; then path=($HOME/.gem/ruby/*/bin(N) $path)
export GEM_HOME="$HOME/Library/Ruby/Gems/1.8"
path=("$GEM_HOME/bin" $path)
else
path=($HOME/.gem/ruby/*/bin(N) $path)
fi
fi fi
# Return if requirements are not found. # Return if requirements are not found.
@ -48,15 +43,17 @@ alias rb='ruby'
# Bundler # Bundler
if (( $+commands[bundle] )); then if (( $+commands[bundle] )); then
alias rbb='bundle' alias rbb='bundle'
alias rbbe='rbb exec' alias rbbe='bundle exec'
alias rbbi='rbb install --path vendor/bundle' alias rbbi='bundle install --path vendor/bundle'
alias rbbl='rbb list' alias rbbl='bundle list'
alias rbbo='rbb open' alias rbbo='bundle open'
alias rbbp='rbb package' alias rbbp='bundle package'
alias rbbu='rbb update' alias rbbu='bundle update'
alias rbbI='rbbi \ alias rbbI='rbbi \
&& rbb package \ && bundle package \
&& print .bundle >>! .gitignore \ && print .bundle >>! .gitignore \
&& print vendor/assets >>! .gitignore \
&& print vendor/bundle >>! .gitignore \ && print vendor/bundle >>! .gitignore \
&& print vendor/cache >>! .gitignore' && print vendor/cache >>! .gitignore'
fi fi

View File

@ -14,17 +14,20 @@ fi
_ssh_dir="$HOME/.ssh" _ssh_dir="$HOME/.ssh"
# Set the path to the environment file if not set by another module. # Set the path to the environment file if not set by another module.
_ssh_agent_env="${_ssh_agent_env:-$TMPDIR/ssh-agent.env}" _ssh_agent_env="${_ssh_agent_env:-${TMPDIR:-/tmp}/ssh-agent.env}"
# Set the path to the persistent authentication socket. # Set the path to the persistent authentication socket.
_ssh_agent_sock="$TMPDIR/ssh-agent.sock" _ssh_agent_sock="${TMPDIR:-/tmp}/ssh-agent.sock"
# Start ssh-agent if not started. # Start ssh-agent if not started.
if [[ ! -S "$SSH_AUTH_SOCK" ]]; then if [[ ! -S "$SSH_AUTH_SOCK" ]]; then
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
else
# Export environment variables. # Export environment variables.
source "$_ssh_agent_env" 2> /dev/null 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} ssh-agent"; then
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
fi
fi fi
# Create a persistent SSH authentication socket. # Create a persistent SSH authentication socket.

View File

@ -11,7 +11,7 @@ if ! zstyle -t ':prezto:module:syntax-highlighting' color; then
fi fi
# Source module files. # Source module files.
source "${0:h}/external/zsh-syntax-highlighting.zsh" source "${0:h}/external/zsh-syntax-highlighting.zsh" || return 1
# Set highlighters. # Set highlighters.
zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS' zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS'

View File

@ -13,23 +13,33 @@ directory, add the following to *zpreztorc*:
zstyle ':prezto:module:terminal' auto-title 'yes' 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 Functions
--------- ---------
- `set-screen-window-title` sets the screen title. - `set-tab-title` sets the terminal tab title.
- `set-terminal-tab-title` sets the terminal tab title. - `set-window-title` sets the terminal or terminal multiplexer window 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.
Authors 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) - [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

View File

@ -2,122 +2,123 @@
# Sets terminal window and tab titles. # Sets terminal window and tab titles.
# #
# Authors: # Authors:
# James Cox <james@imaj.es>
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Return if requirements are not found. # Return if requirements are not found.
if [[ "$TERM" == 'dumb' ]]; then if [[ "$TERM" == (dumb|linux|*bsd*) ]]; then
return 1 return 1
fi fi
# Set the GNU Screen window number. # Sets the terminal or terminal multiplexer window title.
if [[ -n "$WINDOW" ]]; then function set-window-title {
export SCREEN_NO="%B${WINDOW}%b " local title_format{,ted}
else zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format="%s"
export SCREEN_NO="" zformat -f title_formatted "$title_format" "s:$argv"
fi
# Sets the GNU Screen title.
function set-screen-window-title {
if [[ "$TERM" == screen* ]]; then if [[ "$TERM" == screen* ]]; then
printf "\ek%s\e\\" ${(V)argv} title_format="\ek%s\e\\"
else
title_format="\e]2;%s\a"
fi fi
}
# Sets the terminal window title. printf "$title_format" "${(V%)title_formatted}"
function set-terminal-window-title {
if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then
printf "\e]2;%s\a" ${(V)argv}
fi
} }
# Sets the terminal tab title. # Sets the terminal tab title.
function set-terminal-tab-title { function set-tab-title {
if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then local title_format{,ted}
printf "\e]1;%s\a" ${(V)argv} zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format="%s"
fi 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. # Sets the tab and window titles with a given command.
function set-titles-with-command { function _terminal-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
emulate -L zsh emulate -L zsh
setopt EXTENDED_GLOB setopt EXTENDED_GLOB
# Get the command name that is under job control. # 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 %+. # 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. # Make a local copy for use in the subshell.
local -A jobtexts_from_parent_shell local -A jobtexts_from_parent_shell
jobtexts_from_parent_shell=(${(kv)jobtexts}) jobtexts_from_parent_shell=(${(kv)jobtexts})
jobs $job_name 2>/dev/null > >( jobs "$job_name" 2>/dev/null > >(
read index discarded read index discarded
# The index is already surrounded by brackets: [1]. # 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 else
# Set the command name, or in the case of sudo or ssh, the next command. # 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]}...}" local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}"
unset MATCH unset MATCH
if [[ "$TERM" == screen* ]]; then set-window-title "$cmd"
set-screen-window-title "$truncated_cmd" set-tab-title "$truncated_cmd"
else
set-terminal-window-title "$cmd"
set-terminal-tab-title "$truncated_cmd"
fi
fi fi
} }
# Sets the tab and window titles with a given path. # Sets the tab and window titles with a given path.
function set-titles-with-path { function _terminal-set-titles-with-path {
emulate -L zsh emulate -L zsh
setopt EXTENDED_GLOB setopt EXTENDED_GLOB
local absolute_path="${${1:a}:-$PWD}" 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 set-window-title "$abbreviated_path"
printf '\e]7;%s\a' "file://$HOST${absolute_path// /%20}" set-tab-title "$truncated_path"
else
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
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
} }
# Don't override precmd/preexec; append to hook array. # Sets the Terminal.app proxy icon.
function _terminal-set-terminal-app-proxy-icon {
printf '\e]7;%s\a' "file://$HOST${${1:-$PWD}// /%20}"
}
# Do not override precmd/preexec; append to the hook array.
autoload -Uz add-zsh-hook autoload -Uz add-zsh-hook
# Sets the tab and window titles before the prompt is displayed. # Set up the Apple Terminal.
function set-titles-precmd { if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] \
if zstyle -t ':prezto:module:terminal' auto-title; then && ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] )
set-titles-with-path then
fi # Sets the Terminal.app current working directory before the prompt is
} # displayed.
add-zsh-hook precmd set-titles-precmd add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon
# Sets the tab and window titles before command execution. # Unsets the Terminal.app current working directory when a terminal
function set-titles-preexec { # multiplexer or remote connection is started since it can no longer be
if zstyle -t ':prezto:module:terminal' auto-title; then # updated, and it becomes confusing when the directory displayed in the title
set-titles-with-command "$2" # bar is no longer synchronized with real current working directory.
fi function _terminal-unset-terminal-app-proxy-icon {
} if [[ "${2[(w)1]:t}" == (screen|tmux|dvtm|ssh|mosh) ]]; then
add-zsh-hook preexec set-titles-preexec _terminal-set-terminal-app-proxy-icon ' '
fi
}
add-zsh-hook preexec _terminal-unset-terminal-app-proxy-icon
# 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

View File

@ -104,17 +104,17 @@ alias sl='ls' # I often screw this up.
# Mac OS X Everywhere # Mac OS X Everywhere
if [[ "$OSTYPE" == darwin* ]]; then if [[ "$OSTYPE" == darwin* ]]; then
alias o='open' alias o='open'
alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time' elif [[ "$OSTYPE" == cygwin* ]]; then
alias o='cygstart'
alias pbcopy='tee > /dev/clipboard'
alias pbpaste='cat /dev/clipboard'
else else
alias o='xdg-open' alias o='xdg-open'
alias get='wget --continue --progress=bar --timestamping'
if (( $+commands[xclip] )); then if (( $+commands[xclip] )); then
alias pbcopy='xclip -selection clipboard -in' alias pbcopy='xclip -selection clipboard -in'
alias pbpaste='xclip -selection clipboard -out' alias pbpaste='xclip -selection clipboard -out'
fi elif (( $+commands[xsel] )); then
if (( $+commands[xsel] )); then
alias pbcopy='xsel --clipboard --input' alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output' alias pbpaste='xsel --clipboard --output'
fi fi
@ -123,6 +123,13 @@ fi
alias pbc='pbcopy' alias pbc='pbcopy'
alias pbp='pbpaste' alias pbp='pbpaste'
# File Download
if (( $+commands[curl] )); then
alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time'
elif (( $+commands[wget] )); then
alias get='wget --continue --progress=bar --timestamping'
fi
# Resource Usage # Resource Usage
alias df='df -kh' alias df='df -kh'
alias du='du -kh' alias du='du -kh'

View File

@ -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, This file is sourced by interactive shells. It should define aliases,
functions, shell options, and key bindings. functions, shell options, and key bindings.
## zpreztorc ### zpreztorc
This file configures Prezto. This file configures Prezto.

View File

@ -10,7 +10,7 @@
# #
# Set case-sensitivity for completion, history lookup, etc. # Set case-sensitivity for completion, history lookup, etc.
zstyle ':prezto:*:*' case-sensitive 'no' # zstyle ':prezto:*:*' case-sensitive 'yes'
# Color output (auto set to 'no' on dumb terminals). # Color output (auto set to 'no' on dumb terminals).
zstyle ':prezto:*:*' color 'yes' zstyle ':prezto:*:*' color 'yes'
@ -122,14 +122,19 @@ zstyle ':prezto:module:prompt' theme 'sorin'
# 'builtin' 'bg=blue' \ # 'builtin' 'bg=blue' \
# 'command' 'bg=blue' \ # 'command' 'bg=blue' \
# 'function' 'bg=blue' # 'function' 'bg=blue'
#
# #
# Terminal # Terminal
# #
# Auto set the tab and window titles. # Auto set the tab and window titles.
zstyle ':prezto:module:terminal' auto-title 'yes' # 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'
# #
# Tmux # Tmux

View File

@ -5,3 +5,73 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
#
# Browser
#
if [[ "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
export EDITOR='nano'
export VISUAL='nano'
export PAGER='less'
#
# Language
#
if [[ -z "$LANG" ]]; then
export LANG='en_US.UTF-8'
fi
#
# Paths
#
# Ensure path arrays do not contain duplicates.
typeset -gU cdpath fpath mailpath path
# Set the the list of directories that cd searches.
# cdpath=(
# $cdpath
# )
# Set the list of directories that Zsh searches for programs.
path=(
/usr/local/{bin,sbin}
$path
)
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X and -F (exit if the content fits on one screen) to enable it.
export LESS='-F -g -i -M -R -S -w -X -z-4'
# Set the Less input preprocessor.
if (( $+commands[lesspipe.sh] )); then
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
fi
#
# Temporary Files
#
if [[ ! -d "$TMPDIR" ]]; then
export TMPDIR="/tmp/$USER"
mkdir -p -m 700 "$TMPDIR"
fi
TMPPREFIX="${TMPDIR%/}/zsh"
if [[ ! -d "$TMPPREFIX" ]]; then
mkdir -p "$TMPPREFIX"
fi

View File

@ -5,72 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# # Ensure that a non-login, non-interactive shell has a defined environment.
# Browser if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then
# source "${ZDOTDIR:-$HOME}/.zprofile"
if [[ "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
export EDITOR='nano'
export VISUAL='nano'
export PAGER='less'
#
# Language
#
if [[ -z "$LANG" ]]; then
export LANG='en_US.UTF-8'
fi
#
# Paths
#
typeset -gU cdpath fpath mailpath path
# Set the the list of directories that cd searches.
# cdpath=(
# $cdpath
# )
# Set the list of directories that Zsh searches for programs.
path=(
/usr/local/{bin,sbin}
$path
)
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X and -F (exit if the content fits on one screen) to enable it.
export LESS='-F -g -i -M -R -S -w -X -z-4'
# Set the Less input preprocessor.
if (( $+commands[lesspipe.sh] )); then
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
fi
#
# Temporary Files
#
if [[ ! -d "$TMPDIR" ]]; then
export TMPDIR="/tmp/$USER"
mkdir -p -m 700 "$TMPDIR"
fi
TMPPREFIX="${TMPDIR%/}/zsh"
if [[ ! -d "$TMPPREFIX" ]]; then
mkdir -p "$TMPPREFIX"
fi fi