Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into skwp-prompt
Browse files Browse the repository at this point in the history
* origin/master: (107 commits)
  [Fix ohmyzsh#209] Switch the casing of y/n
  Update completion module loading order
  Remove 'arrow keys' from history-substring-search description
  Fix a title in the history-substring-search README
  [Fix ohmyzsh#113] Add documentation for rails
  Rewrite some of the rails aliases
  Correct title casing in screen and tmux READMEs
  [Fix ohmyzsh#119] Add documentation for terminal
  [Fix ohmyzsh#118] Add documentation for syntax-highlighting
  Add a zstyle to set the syntax highlighter
  Correct the history-substring-search README
  [Fix ohmyzsh#105] Add documentation for gpg-agent
  [Fix ohmyzsh#114] Add documentation for rsync
  Rename variable rsync_cmd to _rsync_cmd
  [Fix ohmyzsh#122] Add documentation for yum
  Rewrite yum aliases
  [Fix ohmyzsh#196] Remove compdef calls
  [Fix ohmyzsh#195] Fallback to the default command
  [ohmyzsh#195] Add missing make, diff, wdiff calls
  [Fix ohmyzsh#115] Add documentation for ruby
  ...
  • Loading branch information
skwp committed Jun 23, 2012
2 parents 42744ba + 0f9a687 commit 3c1cc44
Show file tree
Hide file tree
Showing 89 changed files with 1,795 additions and 619 deletions.
148 changes: 105 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,91 +1,139 @@
# Oh My Zsh
Oh My Zsh
=========

OMZ is a configuration framework for [Zsh](http://www.zsh.org) that enriches
the command line interface environment with sane defaults, aliases, functions,
auto completion, and prompt themes.
OMZ is a configuration framework for [Zsh][1] that enriches the command line
interface environment with sane defaults, aliases, functions, auto completion,
and prompt themes.

## Installation
Installation
------------

Oh My Zsh will work with any recent release of Zsh, but the minimum recommended
version is 4.3.10.

1. Clone the repository:
1. Clone the repository:

`git clone https://github.com/sorin-ionescu/oh-my-zsh.git ~/.oh-my-zsh`
git clone https://github.com/sorin-ionescu/oh-my-zsh.git ~/.oh-my-zsh

2. Initialize the submodules:
2. Initialize the submodules:

`cd ~/.oh-my-zsh && git submodule update --init --recursive`
cd ~/.oh-my-zsh && git submodule update --init --recursive

3. Create a new Zsh configuration by copying the Zsh template provided:
3. Create a new Zsh configuration by copying the Zsh configuration file
templates provided:

`cp ~/.oh-my-zsh/templates/zshrc ~/.zshrc`
for rcfile in ~/.oh-my-zsh/templates/z{shenv,shrc,login,logout}; do
cp -f $rcfile ~/.$rcfile:t
done

4. Set Zsh as your default shell:
4. Set Zsh as your default shell:

`chsh -s /bin/zsh`
chsh -s /bin/zsh

5. Open a new Zsh terminal window or tab.
5. Open a new Zsh terminal window or tab.

### Mac OS X

If you have administrator privileges, you must fix an Apple misconfiguration
in Mac OS X 10.7 Lion by renaming `/etc/zshenv` to `/etc/zprofile`, or Zsh will
have the wrong `PATH` when executed non-interactively by scripts.
If you have administrator privileges, you must fix an Apple-introduced problem
in Mac OS X 10.5 Leopard by executing the following command, or BASH and Zsh
will have the wrong `PATH` when executed non-interactively.

sudo chmod ugo-x /usr/libexec/path_helper

`path_helper` is intended to make it easier for installers to add new paths to
the environment without having to edit shell configuration files by adding
a file with a path to the */etc/paths.d* directory.

Unfortunately, `path_helper` always reads paths from */etc/paths* set by Apple
then paths from */etc/paths.d* set by third party installers, and lastly paths
from the `PATH` environment variable set by the parent process, which
ultimately is set by the user with `export PATH=...` Thus, it reorders path
priorities, and user */bin* directories meant to override system */bin*
directories end up at the tail of the array.

### Troubleshooting

If you are not able to find certain commands after switching to *Oh My Zsh*,
modify the `PATH` variable in `environment.zsh` then open a new Zsh terminal
modify the `PATH` variable in *~/.zshenv* then open a new Zsh terminal
window or tab.

## Usage
Usage
-----

Oh My Zsh has many features disabled by default. Read the source code and
accompanying README files to learn of what is available.

### Modules

1. Browse `modules/` to see what is available.
2. Load the modules you need in `~/.zshrc` then open a new Zsh terminal window
or tab.
1. Browse */modules* to see what is available.
2. Load the modules you need in *~/.zshrc* then open a new Zsh terminal window
or tab.

### Themes

1. For a list of themes, type `prompt -l`.
2. To preview a theme, type `prompt -p name`.
3. Load the theme you like in `~/.zshrc` then open a new Zsh terminal window or
tab.
![sorin theme](http://i.imgur.com/aipDQ.png "sorin theme")
1. For a list of themes, type `prompt -l`.
2. To preview a theme, type `prompt -p name`.
3. Load the theme you like in *~/.zshrc* then open a new Zsh terminal window
or tab.

![sorin theme][2]

## Customization
Customization
-------------

The project is managed via [Git](http://git-scm.com). It is highly recommend
that you commit your changes and push them to [GitHub](http://github.com) to
not lose them. If you do not know how to use Git, follow this
[tutorial](http://gitimmersion.com) and bookmark this
[reference](http://gitref.org).
The project is managed via [Git][3]. It is highly recommend that you commit
your changes and push them to [GitHub][4] to not lose them. If you do not know
how to use Git, follow this [tutorial][5] and bookmark this [reference][6].

### Completions

Submit program completions to the
[zsh-completions](https://github.com/zsh-users/zsh-completions) project. The Oh
My Zsh completions directory will be synched against it.
Submit program completions to the [zsh-completions][7] project. The Oh My Zsh
completions directory will be synchronized against it.

## Resources
Resources
---------

The [Zsh Reference Card](http://www.bash2zsh.com/zsh_refcard/refcard.pdf) is
indispensable.
The [Zsh Reference Card][8] is indispensable.

## Contribute
Contribute
----------

This project would not exist without all of its users and
[contributors](https://github.com/sorin-ionescu/oh-my-zsh/contributors).
This project would not exist without all of its users and [contributors][9].

If you have ideas on how to make the configuration easier to maintain or
improve its performance, do not hesitate to fork and send pull requests.

## License
### Issue Reporting

- Check that the issue has not already been reported.
- Check that the issue has not already been fixed in the latest code.
- Open an issue with a clear title and description in grammatically correct,
complete sentences.

### Pull Request

- Read [how to properly contribute to open source projects on GitHub][10].
- Use a topic branch to easily amend a pull request later, if necessary.
- Write [good commit messages][11].
- Squash commits on the topic branch before opening a pull request.
- Use the same coding style and spacing.
- Open a [pull request][12] that relates to but one subject with a clear
title and description in gramatically correct, complete sentences.

#### Modules

- A *README.md* must be present.
- Large functions must be placed in a *functions* directory.
- Functions that take arguments must have completion.

#### Themes

- A screenshots section must be present in the file header.
- The pull request description must have must have [embedded
screenshots][13].

License
-------

(The MIT License)

Expand All @@ -109,3 +157,17 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
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/aipDQ.png "sorin theme"
[3]: http://git-scm.com
[4]: https://github.com
[5]: http://gitimmersion.com
[6]: http://gitref.org
[7]: https://github.com/zsh-users/zsh-completions
[8]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
[9]: https://github.com/sorin-ionescu/oh-my-zsh/contributors
[10]: http://gun.io/blog/how-to-github-fork-branch-and-pull-request
[11]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[12]: https://help.github.com/articles/using-pull-requests
[13]: http://daringfireball.net/projects/markdown/syntax#img

34 changes: 19 additions & 15 deletions helper.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -32,33 +32,37 @@ function autoloadable {

# Loads Oh My Zsh modules.
function omodload {
local -a omodules
local omodule
local ofunction

# Extended globbing is needed for autoloading of module functions.
setopt EXTENDED_GLOB
# $argv is overridden in the anonymous function.
omodules=("$argv[@]")

# Add functions to fpath.
fpath=(${argv:+${OMZ}/modules/${^argv}/functions(/FN)} $fpath)
function {
local ofunction

# Load Oh My Zsh functions.
for ofunction in \
$OMZ/modules/${^argv}/functions/^([_.]*|prompt_*_setup|README*)(.N:t)
do
autoload -Uz "$ofunction"
done
# Extended globbing is needed for listing autoloadable function directories.
setopt LOCAL_OPTIONS EXTENDED_GLOB

# Add functions to fpath.
fpath=(${omodules:+${OMZ}/modules/${^omodules}/functions(/FN)} $fpath)

# Extended globbing is no longer needed.
unsetopt EXTENDED_GLOB
# Load Oh My Zsh functions.
for ofunction in \
$OMZ/modules/${^omodules}/functions/^([_.]*|prompt_*_setup|README*)(.N:t)
do
autoload -Uz "$ofunction"
done
}

for omodule in "$argv[@]"; do
for omodule in "$omodules[@]"; do
if zstyle -t ":omz:module:$omodule" loaded; then
continue
elif [[ ! -d "$OMZ/modules/$omodule" ]]; then
print "$0: no such module: $omodule" >&2
continue
else
if [[ -f "$OMZ/modules/$omodule/init.zsh" ]]; then
if [[ -s "$OMZ/modules/$omodule/init.zsh" ]]; then
source "$OMZ/modules/$omodule/init.zsh"
fi

Expand Down
16 changes: 1 addition & 15 deletions init.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
min_zsh_version='4.3.10'
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "omz: old shell detected, minimum required: $min_zsh_version" >&2
return 1
fi
unset min_zsh_version

Expand Down Expand Up @@ -37,18 +38,3 @@ zstyle -a ':omz:load' omodule 'omodules'
omodload "$omodules[@]"
unset omodules

# Set environment variables for launchd processes.
if [[ "$OSTYPE" == darwin* ]]; then
for env_var in PATH MANPATH; do
launchctl setenv "$env_var" "${(P)env_var}" &!
done
unset env_var
fi

# Compile the completion dump, to increase startup speed.
dump_file="$HOME/.zcompdump"
if [[ "$dump_file" -nt "${dump_file}.zwc" || ! -f "${dump_file}.zwc" ]]; then
zcompile "$dump_file"
fi
unset dump_file

Loading

0 comments on commit 3c1cc44

Please sign in to comment.