# Contributing

This project would not exist without all of its users and [contributors][1].

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.

## 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][2].
- Use a topic branch to easily amend a pull request later, if necessary.
- Write [good commit messages][3].
- Squash commits on the topic branch before opening a pull request.
- Use the same coding style and spacing.
- Open a [pull request][4] that relates to but one subject with a clear title
  and description in grammatically correct, complete sentences.

### Code Style

This project follows the [Google Shell Style Guide][5] when possible. However,
there are a number of additional things to keep in mind.

- Local variables should be used whenever possible.
- Prefer `zstyle` over environment variables for configuration.
- Prefer (( ... )) over [[ ... ]] for arithmetic expression.
- Use the function keyword to define functions.
- The 80 character hard limit can be waived for readability.

### Using an Alternative *zprezto* Directory

To work on Prezto without affecting your current configuration:

```sh
mkdir devel-zprezto
cd devel-zprezto
git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto
ZDOTDIR=$(pwd)
echo "Your development ZDOTDIR is $ZDOTDIR"
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
    ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```

Then to start zsh in this development environment you will run:

```console
ZDOTDIR=/path/to/devel-zprezto zsh
```

### 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 [embedded screenshots][6].

[1]: https://github.com/sorin-ionescu/prezto/contributors
[2]: https://gun.io/blog/how-to-github-fork-branch-and-pull-request
[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[4]: https://help.github.com/articles/using-pull-requests
[5]: https://google.github.io/styleguide/shell.xml
[6]: https://github.github.com/gfm/#images
