mirror of
https://github.com/dcarrillo/prezto.git
synced 2025-07-01 18:39:26 +00:00
Compare commits
36 Commits
module/upd
...
pull/517-a
Author | SHA1 | Date | |
---|---|---|---|
e3696d2c28 | |||
2ebdbdcff5 | |||
eea1eea7dc | |||
4e9553e896 | |||
a57d545639 | |||
cdc4f36f25 | |||
50edc45132 | |||
b1abe7a845 | |||
d368d0536b | |||
254b7c36d9 | |||
d19c349f3f | |||
9f60ddb96b | |||
5b4dcea595 | |||
b98c7469e5 | |||
f6bd76a90b | |||
d877617734 | |||
76fc07ba9f | |||
52ea7152ad | |||
b159ddb02b | |||
5cfe250e52 | |||
cc4a58bee3 | |||
3a5fff9c6d | |||
8993a8dfad | |||
28e956691c | |||
1c6a016644 | |||
e18f18af92 | |||
a4bacb8bb9 | |||
aacff80984 | |||
eb1a20552a | |||
a914a87aa9 | |||
e1e2c85392 | |||
8ee6634c93 | |||
959887013d | |||
b769505857 | |||
622e7b117b | |||
459238b2bb |
13
README.md
13
README.md
@ -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:
|
||||
|
||||
@ -39,6 +40,13 @@ 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
|
||||
window or tab.
|
||||
|
||||
Updating
|
||||
--------
|
||||
|
||||
Pull the latest changes and update submodules.
|
||||
|
||||
git pull && git submodule update --init --recursive
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
@ -78,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
|
||||
@ -106,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
init.zsh
2
init.zsh
@ -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
|
||||
|
@ -31,6 +31,16 @@ Dpkg
|
||||
|
||||
Defines dpkg aliases and functions.
|
||||
|
||||
Editor
|
||||
------
|
||||
|
||||
Sets key bindings.
|
||||
|
||||
Emacs
|
||||
-----
|
||||
|
||||
Enables Emacs dependency management.
|
||||
|
||||
Environment
|
||||
-----------
|
||||
|
||||
@ -41,13 +51,19 @@ Fasd
|
||||
|
||||
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
|
||||
-----------
|
||||
|
||||
Provides for the interactive use of GNU utilities on non-GNU systems.
|
||||
|
||||
GPG
|
||||
---------
|
||||
---
|
||||
|
||||
Provides for an easier use of GPG by setting up gpg-agent.
|
||||
|
||||
@ -61,16 +77,16 @@ Helper
|
||||
|
||||
Provides helper functions for developing modules.
|
||||
|
||||
History Substring Search
|
||||
------------------------
|
||||
|
||||
Integrates zsh-history-substring-search into Prezto.
|
||||
|
||||
History
|
||||
-------
|
||||
|
||||
Sets history options and defines history aliases.
|
||||
|
||||
History Substring Search
|
||||
------------------------
|
||||
|
||||
Integrates zsh-history-substring-search into Prezto.
|
||||
|
||||
Homebrew
|
||||
--------
|
||||
|
||||
@ -86,6 +102,11 @@ Node.js
|
||||
|
||||
Provides utility functions for Node.js and loads npm completion.
|
||||
|
||||
Ocaml
|
||||
-----
|
||||
|
||||
Initializes Ocaml package management.
|
||||
|
||||
OSX
|
||||
---
|
||||
|
||||
@ -137,10 +158,10 @@ Spectrum
|
||||
|
||||
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
|
||||
-------------------
|
||||
|
@ -1,7 +1,8 @@
|
||||
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
|
||||
-------
|
||||
|
@ -5,10 +5,14 @@
|
||||
# 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.
|
||||
if [[ ! -s '/etc/zsh_command_not_found' ]]; then
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
|
||||
source '/etc/zsh_command_not_found'
|
||||
|
||||
|
Submodule modules/completion/external updated: 662229f6f0...1d6a2aa024
Submodule modules/history-substring-search/external updated: d9b28ed7f9...1e76804052
@ -10,7 +10,7 @@
|
||||
pmodload 'editor'
|
||||
|
||||
# Source module files.
|
||||
source "${0:h}/external/zsh-history-substring-search.zsh"
|
||||
source "${0:h}/external/zsh-history-substring-search.zsh" || return 1
|
||||
|
||||
#
|
||||
# Search
|
||||
|
28
modules/ocaml/README.md
Normal file
28
modules/ocaml/README.md
Normal 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
15
modules/ocaml/init.zsh
Normal 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)"
|
||||
|
@ -55,10 +55,10 @@ alias pacq='pacman --sync --info'
|
||||
alias pacQ='pacman --query --info'
|
||||
|
||||
# Searches for packages in the repositories.
|
||||
alias pacs='pacman --sync --recursive'
|
||||
alias pacs='pacman --sync --search'
|
||||
|
||||
# Searches for packages in the local database.
|
||||
alias pacS='pacman --query --recursive'
|
||||
alias pacS='pacman --query --search'
|
||||
|
||||
# Lists orphan packages.
|
||||
alias pacman-list-orphans='sudo pacman --query --deps --unrequired'
|
||||
|
@ -6,15 +6,15 @@ Enables local Python and local Python package 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.
|
||||
|
||||
This module prepends the pythonz directory to the path variable to enable the
|
||||
execution of `pythonz`.
|
||||
This module prepends the pyenv directory to the path variable to enable the
|
||||
execution of `pyenv`.
|
||||
|
||||
### Usage
|
||||
|
||||
Install Python versions with `pythonz install` into *~/.pythonz/pythons*.
|
||||
Install Python versions with `pyenv install` into *~/.pyenv/versions*.
|
||||
|
||||
Local Package Installation
|
||||
--------------------------
|
||||
@ -61,21 +61,34 @@ system site-packages directory.
|
||||
|
||||
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
|
||||
|
||||
### Settings
|
||||
|
||||
#### Lazy loading
|
||||
|
||||
By default, virtualenvwrapper is loaded in lazy mode. This behaviour can be disabled adding the following line to *~/.zpreztorc*:
|
||||
|
||||
zstyle ':prezto:module:python' lazy_venv 'no'
|
||||
|
||||
#### Automatic virtualenv initialization
|
||||
|
||||
To enable autoenv, add the following line to *~/.zpreztorc*:
|
||||
|
||||
zstyle ':prezto:module:python' autoenv 'yes'
|
||||
|
||||
If a virtualenv is active, and was not activated by autoenv, then autoenv does nothing.
|
||||
Otherwise, autoenv activated or deactivates a virtual environment whenever a directory is changed; based on the following priority:
|
||||
|
||||
1. Name specified in a file named *.venv* in the cwd.
|
||||
2. *.venv* file in git root. If folder is inside git repository.
|
||||
3. Name of git root folder.
|
||||
4. No virtualenv.
|
||||
|
||||
|
||||
Aliases
|
||||
-------
|
||||
|
||||
- `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
|
||||
---------
|
||||
|
||||
@ -105,6 +118,6 @@ Authors
|
||||
[1]: http://www.python.org/dev/peps/pep-0370/
|
||||
[2]: http://www.doughellmann.com/projects/virtualenvwrapper/
|
||||
[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
|
||||
|
||||
|
@ -6,50 +6,94 @@
|
||||
# Sebastian Wiesner <lunaryorn@googlemail.com>
|
||||
#
|
||||
|
||||
# Load pythonz into the shell session.
|
||||
if [[ -s $HOME/.pythonz/bin/pythonz ]]; then
|
||||
path=($HOME/.pythonz/bin $path)
|
||||
fi
|
||||
# Load manually installed pyenv into the shell session.
|
||||
if [[ -s "$HOME/.pyenv/bin/pyenv" ]]; then
|
||||
path=("$HOME/.pyenv/bin" $path)
|
||||
eval "$(pyenv init -)"
|
||||
|
||||
# Return if requirements are not found.
|
||||
if (( ! $+commands[python] && ! $+commands[pythonz] )); then
|
||||
return 1
|
||||
fi
|
||||
# Load package manager installed pyenv into the shell session.
|
||||
elif (( $+commands[pyenv] )); then
|
||||
eval "$(pyenv init -)"
|
||||
|
||||
# Prepend PEP 370 per user site packages directory, which defaults to
|
||||
# ~/Library/Python on Mac OS X and ~/.local elsewhere, to PATH.
|
||||
if [[ "$OSTYPE" == darwin* ]]; then
|
||||
path=($HOME/Library/Python/*/bin(N) $path)
|
||||
else
|
||||
# This is subject to change.
|
||||
path=($HOME/.local/bin $path)
|
||||
if [[ "$OSTYPE" == darwin* ]]; then
|
||||
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
|
||||
|
||||
local venv_script=virtualenvwrapper
|
||||
if zstyle -T ':prezto:module:python' lazy_venv; then
|
||||
venv_script+=_lazy
|
||||
fi
|
||||
|
||||
# Load virtualenvwrapper into the shell session.
|
||||
if (( $+commands[virtualenvwrapper_lazy.sh] )); then
|
||||
if (( $+commands[$venv_script.sh] )); then
|
||||
# Set the directory where virtual environments are stored.
|
||||
export WORKON_HOME=$HOME/.virtualenvs
|
||||
export WORKON_HOME="$HOME/.virtualenvs"
|
||||
|
||||
# Disable the virtualenv prompt.
|
||||
VIRTUAL_ENV_DISABLE_PROMPT=1
|
||||
|
||||
source "$commands[virtualenvwrapper_lazy.sh]"
|
||||
source "$commands[$venv_script.sh]"
|
||||
fi
|
||||
|
||||
function autoenv {
|
||||
#Don't run in shell scripts etc.
|
||||
if [[ $ZSH_SUBSHELL -ne 0 ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#Don't run if currently in virtual env not set by autoenv
|
||||
if (( ($+VIRTUAL_ENV) && !($+AUTOENV) )); then
|
||||
return
|
||||
fi
|
||||
|
||||
local name=""
|
||||
if [[ -f .venv ]]; then
|
||||
#.venv file in current dir gets highest priority
|
||||
name=$(<.venv)
|
||||
elif is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||
local gitroot="$(git rev-parse --show-toplevel 2> /dev/null)"
|
||||
if [ -f "$gitroot/.venv" ]; then
|
||||
#If there is a .venv file in gitroot
|
||||
name=$(<$gitroot/.venv)
|
||||
else
|
||||
#Else use the name of the folder as venv name
|
||||
name=$gitroot:t
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
local venv_name="$VIRTUAL_ENV:t"
|
||||
if [[ $name != $venv_name ]]; then
|
||||
if [[ -z $name ]]; then
|
||||
deactivate && unset AUTOENV
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ -d "$WORKON_HOME/$name" ]]; then
|
||||
workon $name && export AUTOENV=1
|
||||
return
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
if zstyle -T ':prezto:module:python' autoenv; then
|
||||
add-zsh-hook chpwd autoenv
|
||||
fi
|
||||
#
|
||||
# Aliases
|
||||
#
|
||||
|
||||
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
|
||||
|
||||
|
@ -7,39 +7,30 @@
|
||||
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||
#
|
||||
|
||||
# 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)
|
||||
# Aliases
|
||||
#
|
||||
|
||||
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
|
||||
#
|
||||
|
||||
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'
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
19
modules/ruby/functions/ruby-app-root
Normal file
19
modules/ruby/functions/ruby-app-root
Normal 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
|
||||
|
@ -23,14 +23,9 @@ elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then
|
||||
elif (( $+commands[rbenv] )); then
|
||||
eval "$(rbenv init - --no-rehash zsh)"
|
||||
|
||||
# Install local gems according to operating system conventions.
|
||||
# Prepend local gems bin directories to PATH.
|
||||
else
|
||||
if [[ "$OSTYPE" == darwin* ]]; then
|
||||
export GEM_HOME="$HOME/Library/Ruby/Gems/1.8"
|
||||
path=("$GEM_HOME/bin" $path)
|
||||
else
|
||||
path=($HOME/.gem/ruby/*/bin(N) $path)
|
||||
fi
|
||||
path=($HOME/.gem/ruby/*/bin(N) $path)
|
||||
fi
|
||||
|
||||
# Return if requirements are not found.
|
||||
@ -49,7 +44,7 @@ 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'
|
||||
@ -57,6 +52,8 @@ if (( $+commands[bundle] )); then
|
||||
alias rbbI='rbbi \
|
||||
&& rbb package \
|
||||
&& print .bundle >>! .gitignore \
|
||||
&& print vendor/assets >>! .gitignore \
|
||||
&& print vendor/bundle >>! .gitignore \
|
||||
&& print vendor/cache >>! .gitignore'
|
||||
fi
|
||||
|
||||
|
@ -21,10 +21,13 @@ _ssh_agent_sock="$TMPDIR/ssh-agent.sock"
|
||||
|
||||
# Start ssh-agent if not started.
|
||||
if [[ ! -S "$SSH_AUTH_SOCK" ]]; then
|
||||
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
|
||||
else
|
||||
# Export environment variables.
|
||||
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
|
||||
|
||||
# Create a persistent SSH authentication socket.
|
||||
|
Submodule modules/syntax-highlighting/external updated: dbd27cb30a...f289a9f8e7
@ -11,7 +11,7 @@ if ! zstyle -t ':prezto:module:syntax-highlighting' color; then
|
||||
fi
|
||||
|
||||
# Source module files.
|
||||
source "${0:h}/external/zsh-syntax-highlighting.zsh"
|
||||
source "${0:h}/external/zsh-syntax-highlighting.zsh" || return 1
|
||||
|
||||
# Set highlighters.
|
||||
zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS'
|
||||
|
@ -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
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
# Sets terminal window and tab titles.
|
||||
#
|
||||
# Authors:
|
||||
# James Cox <james@imaj.es>
|
||||
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||
#
|
||||
|
||||
@ -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
|
||||
|
||||
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
|
||||
set-window-title "$abbreviated_path"
|
||||
set-tab-title "$truncated_path"
|
||||
}
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
|
@ -104,17 +104,13 @@ alias sl='ls' # I often screw this up.
|
||||
# Mac OS X Everywhere
|
||||
if [[ "$OSTYPE" == darwin* ]]; then
|
||||
alias o='open'
|
||||
alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time'
|
||||
else
|
||||
alias o='xdg-open'
|
||||
alias get='wget --continue --progress=bar --timestamping'
|
||||
|
||||
if (( $+commands[xclip] )); then
|
||||
alias pbcopy='xclip -selection clipboard -in'
|
||||
alias pbpaste='xclip -selection clipboard -out'
|
||||
fi
|
||||
|
||||
if (( $+commands[xsel] )); then
|
||||
elif (( $+commands[xsel] )); then
|
||||
alias pbcopy='xsel --clipboard --input'
|
||||
alias pbpaste='xsel --clipboard --output'
|
||||
fi
|
||||
@ -123,6 +119,13 @@ fi
|
||||
alias pbc='pbcopy'
|
||||
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
|
||||
alias df='df -kh'
|
||||
alias du='du -kh'
|
||||
|
@ -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.
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
#
|
||||
|
||||
# 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).
|
||||
zstyle ':prezto:*:*' color 'yes'
|
||||
@ -122,14 +122,19 @@ zstyle ':prezto:module:prompt' theme 'sorin'
|
||||
# 'builtin' 'bg=blue' \
|
||||
# 'command' 'bg=blue' \
|
||||
# 'function' 'bg=blue'
|
||||
#
|
||||
|
||||
#
|
||||
# Terminal
|
||||
#
|
||||
|
||||
# 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
|
||||
|
@ -5,3 +5,73 @@
|
||||
# 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
|
||||
|
||||
|
@ -5,72 +5,8 @@
|
||||
# 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
|
||||
#
|
||||
|
||||
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"
|
||||
# Ensure that a non-login, non-interactive shell has a defined environment.
|
||||
if [[ "$SHLVL" -eq 1 && ! -o LOGIN ]]; then
|
||||
source "${ZDOTDIR:-$HOME}/.zprofile"
|
||||
fi
|
||||
|
||||
|
Reference in New Issue
Block a user