Blame view

README.mkd 21.7 KB
c60bdf384   Shrikant Sharat   Add beta label to...
1
  # Antigen <sup>&beta;</sup>
b84833b4c   Shrikant Sharat   Add readme.
2

ec7f137bb   Shrikant Sharat   Add build status ...
3
  [![Build Status](https://secure.travis-ci.org/zsh-users/antigen.png)](http://travis-ci.org/zsh-users/antigen)
b84833b4c   Shrikant Sharat   Add readme.
4
5
6
  Antigen is a small set of functions that help you easily manage your shell (zsh)
  plugins, called bundles. The concept is pretty much the same as bundles in a
  typical vim+pathogen setup. Antigen is to zsh, what [Vundle][] is to vim.
015b9e5e9   Shrikant Sharat   Pronouns, please.
7
  Please note that this is a very new project and can be considered beta at best.
63088f869   Shrikant Sharat   Proof read README.
8
9
10
11
  That said, I am using antigen full time now on my work machine.
  
  Note: Please read the commit comments of the changesets when you pull a new
  version of antigen.
e1bf049d8   Shrikant Sharat   Add alpha notice ...
12

ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
13
  ## Show off
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  
  > Enough talk. Let's fight!
  >   -- Po, Kung-fu Panda.
  
  You're going to experience antigen right in your open shell. No `.zshrc`
  tweaking and reading the rest of this documentation. Kinda like an ice-cream
  sample, if you will.
  
  Get and load antigen.
  
      curl https://raw.github.com/zsh-users/antigen/master/antigen.zsh > antigen.zsh
      source antigen.zsh
  
  There. You now have all the antigen goodies. Let's try install some plugins. How
b36de9bb3   Shrikant Sharat   Add links in READ...
28
29
  about some color to start with. Get the [syntax highlighting plugin][] by
  running
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
30

05cfb1bc3   Adam Stankiewicz   Change default co...
31
      antigen bundle zsh-users/zsh-syntax-highlighting
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
32

63088f869   Shrikant Sharat   Proof read README.
33
34
  Now let it do its thing and once you're back at your prompt, try and type a
  command. See that? Colors!
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
35
36
37
  
  So, you do git? ruby? git and ruby? There are lots of awesome plugins over at
  oh-my-zsh. Treat yourself to some.
05cfb1bc3   Adam Stankiewicz   Change default co...
38
      antigen bundle robbyrussell/oh-my-zsh plugins/ruby
63088f869   Shrikant Sharat   Proof read README.
39
      # Or for the lazy,
05cfb1bc3   Adam Stankiewicz   Change default co...
40
      antigen bundle git
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
41
42
43
44
45
  
  There are lots of plugins out there in the wild and people are writing zsh
  utilities as small scripts all the time. Antigen is compatible with all of them.
  The plugins and scripts don't need any special handling to be compatible with
  antigen.
6e2c0fbd6   Shrikant Sharat   Point autoenv exa...
46
47
  Another example, [kennethreitz's autoenv][autoenv] (or [my fork][f-autoenv] of
  it). Just a bundle command away.
3e16c4709   Shrikant Sharat   Add autoenv as an...
48

05cfb1bc3   Adam Stankiewicz   Change default co...
49
      antigen bundle sharat87/autoenv
3e16c4709   Shrikant Sharat   Add autoenv as an...
50
51
  
  And boom! you have all the autoenv goodness. Just remember how you used to do
dc81603ff   Erlend Hamberg   Fix README: bashr...
52
  these before antigen, clone it, modify your zshrc to source it, load a new
3e16c4709   Shrikant Sharat   Add autoenv as an...
53
  terminal, all just to test it out. Duh!
63088f869   Shrikant Sharat   Proof read README.
54
  A subtle aspect of this is that you can tell antigen to grab just about anything
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
55
56
57
58
  from anyone's `dotfiles` repo, as long as it is in a directory under any repo on
  github.
  
  And themes? How would you like a fancy new prompt for yourself?
05cfb1bc3   Adam Stankiewicz   Change default co...
59
      antigen theme funky
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
60
61
  
  No? Not your taste? There are many themes available to you, check out the
149b3e8f1   Guilherme Espada   Update the README...
62
63
64
  oh-my-zsh's [page on themes][].
  
  You can install themes from unofficial repos too!
05cfb1bc3   Adam Stankiewicz   Change default co...
65
      antigen theme XsErG/zsh-themes themes/lazyuser
149b3e8f1   Guilherme Espada   Update the README...
66

d98510337   Shrikant Sharat   Reformatting in t...
67
  See? It's easy! To see how that works, refer to the section on the
05cfb1bc3   Adam Stankiewicz   Change default co...
68
  `antigen theme` command further down.
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
69
70
71
  
  Note: Many of those plugins and especially themes, assume you have the core
  library of oh-my-zsh loaded. So, if you want to experiment further, issue a
05cfb1bc3   Adam Stankiewicz   Change default co...
72
      antigen lib
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
73
74
75
  
  and continue until you're tired. At which point you can come back to this page
  ;)
ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
76
  ## Usage
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
77

63088f869   Shrikant Sharat   Proof read README.
78
  So, now that you're here, I suppose you are convinced and want antigen running
8f0e534f1   Shrikant Sharat   Added 'Show off' ...
79
  your shell all the time. Sweet. Let's do it.
b84833b4c   Shrikant Sharat   Add readme.
80

3c698aac0   Shrikant Sharat   Add information o...
81
82
  First, clone this repo, probably as a submodule if you have your dotfiles in a
  git repo,
fa33fe578   Arash Rouhani   Change clone url ...
83
      git clone https://github.com/zsh-users/antigen.git
3c698aac0   Shrikant Sharat   Add information o...
84

b84833b4c   Shrikant Sharat   Add readme.
85
86
  The usage should be very familiar to you if you use Vundle. A typical `.zshrc`
  might look like this
05cfb1bc3   Adam Stankiewicz   Change default co...
87
      source /path-to-antigen clone/antigen.zsh
b84833b4c   Shrikant Sharat   Add readme.
88
89
  
      # Load the oh-my-zsh's library.
05cfb1bc3   Adam Stankiewicz   Change default co...
90
      antigen lib
b84833b4c   Shrikant Sharat   Add readme.
91
92
  
      # Bundles from the default repo (robbyrussell's oh-my-zsh).
05cfb1bc3   Adam Stankiewicz   Change default co...
93
94
95
96
97
      antigen bundle git
      antigen bundle heroku
      antigen bundle pip
      antigen bundle lein
      antigen bundle command-not-found
b84833b4c   Shrikant Sharat   Add readme.
98
99
  
      # Syntax highlighting bundle.
05cfb1bc3   Adam Stankiewicz   Change default co...
100
      antigen bundle zsh-users/zsh-syntax-highlighting
b84833b4c   Shrikant Sharat   Add readme.
101
102
  
      # Load the theme.
05cfb1bc3   Adam Stankiewicz   Change default co...
103
      antigen theme robbyrussell
b84833b4c   Shrikant Sharat   Add readme.
104

1af74ea9e   Shrikant Sharat   Load completions ...
105
      # Tell antigen that you're done.
05cfb1bc3   Adam Stankiewicz   Change default co...
106
      antigen apply
1af74ea9e   Shrikant Sharat   Load completions ...
107

7ba3548fd   Shrikant Sharat   Updated README wi...
108
109
  Open your zsh with this zshrc and you should see all the bundles you defined
  here, getting installed. Once its done, you are ready to roll. The complete
05cfb1bc3   Adam Stankiewicz   Change default co...
110
  syntax for the `antigen bundle` command is discussed further down on this page.
b84833b4c   Shrikant Sharat   Add readme.
111

08e06125d   Shrikant Sharat   Add link to the e...
112
  You can find more examples in the wiki: [Antigen in the wild][wild].
ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
113
  ## Motivation
b84833b4c   Shrikant Sharat   Add readme.
114
115
  
  If you use zsh and [oh-my-zsh][], you know that having many different plugins
63088f869   Shrikant Sharat   Proof read README.
116
  that are developed by many different authors in a single (sub)repo is not very
b84833b4c   Shrikant Sharat   Add readme.
117
118
  easy to maintain. There are some really fantastic plugins and utilities in
  oh-my-zsh, but having them all in a single repo doesn't really scale well. And I
7ba3548fd   Shrikant Sharat   Updated README wi...
119
  admire robbyrussell's efforts for reviewing and merging the gigantic number of
63088f869   Shrikant Sharat   Proof read README.
120
  pull requests the project gets. We need a better way of plugin management.
b84833b4c   Shrikant Sharat   Add readme.
121
122
123
124
125
126
127
128
129
130
131
132
133
  
  This was discussed on [a][1] [few][2] [issues][3], but it doesn't look like
  there was any progress made. So, I'm trying to start this off with antigen,
  hoping to better this situation. Please note that I'm by no means a zsh or any
  shell script expert (far from it).
  
  [1]: https://github.com/robbyrussell/oh-my-zsh/issues/465
  [2]: https://github.com/robbyrussell/oh-my-zsh/issues/377
  [3]: https://github.com/robbyrussell/oh-my-zsh/issues/1014
  
  Inspired by vundle, antigen can pull oh-my-zsh style plugins from various github
  repositories. You are not limited to use plugins from the oh-my-zsh repository
  only and you don't need to maintain your own fork and pull from upstream every
63088f869   Shrikant Sharat   Proof read README.
134
135
136
  now and then. I actually encourage you to grab plugins and scripts from various
  sources, straight from the authors, before they even submit it to oh-my-zsh as a
  pull request.
b84833b4c   Shrikant Sharat   Add readme.
137
138
  
  Antigen also lets you switch the prompt theme with one command, just like that
05cfb1bc3   Adam Stankiewicz   Change default co...
139
      antigen theme candy
b84833b4c   Shrikant Sharat   Add readme.
140

63088f869   Shrikant Sharat   Proof read README.
141
142
  and your prompt is changed, just for this session of course (unless you put this
  line in your `.zshrc`).
b84833b4c   Shrikant Sharat   Add readme.
143

ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
144
  ## Commands
b84833b4c   Shrikant Sharat   Add readme.
145

05cfb1bc3   Adam Stankiewicz   Change default co...
146
  ### antigen bundle
b84833b4c   Shrikant Sharat   Add readme.
147

7ba3548fd   Shrikant Sharat   Updated README wi...
148
149
  This command tells antigen to install (if not already installed) and load the
  given plugin. The simplest usage follows the following syntax.
b84833b4c   Shrikant Sharat   Add readme.
150

05cfb1bc3   Adam Stankiewicz   Change default co...
151
      antigen bundle <plugin-name>
7e0aca7ce   Shrikant Sharat   Add notes about b...
152

63088f869   Shrikant Sharat   Proof read README.
153
  This will install and load the `plugins/<name>` directory from [robbyrussell's
7e0aca7ce   Shrikant Sharat   Add notes about b...
154
  oh-my-zsh][oh-my-zsh] (can be changed by setting `ANTIGEN_DEFAULT_REPO_URL`).
2fe4683b3   Shrikant Sharat   Update README wit...
155
  However, the above is just syntax sugar for the extended syntax of the
05cfb1bc3   Adam Stankiewicz   Change default co...
156
  `antigen bundle` command.
7e0aca7ce   Shrikant Sharat   Add notes about b...
157

05cfb1bc3   Adam Stankiewicz   Change default co...
158
      antigen bundle [<url> [<loc>]]
b84833b4c   Shrikant Sharat   Add readme.
159
160
  
  where `<url>` is the repository url and it defaults to [robbyrussell's
7ba3548fd   Shrikant Sharat   Updated README wi...
161
162
163
164
165
  oh-my-zsh][oh-my-zsh] repo (can be changed by setting `ANTIGEN_DEFAULT_REPO_URL`
  discussed further down). `<loc>` is the path under this repository which has the
  zsh plugin. This is typically the directory that contains a `*.plugin.zsh` file,
  but it could contain a completion file or just many `*.zsh` files to be sourced.
  `<loc>` defaults to `/`, which indicates the repository itself is a plugin.
b84833b4c   Shrikant Sharat   Add readme.
166
167
  
  An example invocation would be
05cfb1bc3   Adam Stankiewicz   Change default co...
168
      # The following is the same as `antigen bundle ant`. But for demonstration
2fe4683b3   Shrikant Sharat   Update README wit...
169
      # purposes, we use the extended syntax here.
05cfb1bc3   Adam Stankiewicz   Change default co...
170
      antigen bundle https://github.com/robbyrussell/oh-my-zsh.git plugins/ant
b84833b4c   Shrikant Sharat   Add readme.
171

7ba3548fd   Shrikant Sharat   Updated README wi...
172
173
  This would install the ant plugin from robbyrussell's oh-my-zsh repo. Of course,
  github url's can be shortened.
b84833b4c   Shrikant Sharat   Add readme.
174

05cfb1bc3   Adam Stankiewicz   Change default co...
175
      antigen bundle robbyrussell/oh-my-zsh plugins/ant
b84833b4c   Shrikant Sharat   Add readme.
176

7ba3548fd   Shrikant Sharat   Updated README wi...
177
178
  And since this repo is the default, even that isn't necessary. But we can't
  specify the `loc` without giving the first argument.
b84833b4c   Shrikant Sharat   Add readme.
179

05cfb1bc3   Adam Stankiewicz   Change default co...
180
  For this and a few other reasons, `antigen bundle` also supports a simple
2fe4683b3   Shrikant Sharat   Update README wit...
181
  keyword argument syntax, using which we can rewrite the above as
b84833b4c   Shrikant Sharat   Add readme.
182

05cfb1bc3   Adam Stankiewicz   Change default co...
183
      antigen bundle --loc=plugins/ant
b84833b4c   Shrikant Sharat   Add readme.
184

7ba3548fd   Shrikant Sharat   Updated README wi...
185
186
  Which picks up the default for the `url` argument, and uses the `loc` given to
  it.
7e0aca7ce   Shrikant Sharat   Add notes about b...
187

7ba3548fd   Shrikant Sharat   Updated README wi...
188
189
  *Note* that you can mix and match positional and keyword arguments. But you
  can't have positional arguments after keyword arguments.
b84833b4c   Shrikant Sharat   Add readme.
190

05cfb1bc3   Adam Stankiewicz   Change default co...
191
      antigen bundle robbyrussell/oh-my-zsh --loc=plugins/ant
b84833b4c   Shrikant Sharat   Add readme.
192
193
194
  
  And keyword arguments don't care about the order in which the arguments are
  specified. The following is perfectly valid.
05cfb1bc3   Adam Stankiewicz   Change default co...
195
      antigen bundle --loc=plugins/ant --url=robbyrussell/oh-my-zsh
5e26a8e26   Shrikant Sharat   Docs on using inl...
196

e97773908   Shrikant Sharat   Added docs on usi...
197
198
199
200
  You can also specify a local directory on your file system as a bundle. In this
  case, make sure the path you give is the absolute path (i.e., starts with a
  `/`). Relative paths are not supported. If the repo you gave is a local
  directory path, then it is not necessary that this path is a git repo. Please
e6cc15b5f   Shrikant Sharat   Fix local paths w...
201
  refer to the notes on `--no-local-clone` below.
e97773908   Shrikant Sharat   Added docs on usi...
202

63088f869   Shrikant Sharat   Proof read README.
203
204
205
  This command can also be used from your shell environment. This allows you to
  install plugins on the fly and try them out. Of course if you want a bundle to
  be available every time you open a shell, put it in your `.zshrc`.
5e26a8e26   Shrikant Sharat   Docs on using inl...
206

4129490ce   Shrikant Sharat   Add --branch note...
207
  Other keyword-only arguments accepted:
8a80d2b7a   Shrikant Sharat   Add docs on --no-...
208
209
210
  `--branch={git-branch-name}` &mdash; Specify the branch of the git repo to be
  used for this bundle (without the braces of course). The default is whatever
  branch the clone comes with, which is usually `master`. For example,
05cfb1bc3   Adam Stankiewicz   Change default co...
211
      antigen bundle github-user/repo --branch=develop
8a80d2b7a   Shrikant Sharat   Add docs on --no-...
212
213
214
215
216
217
218
219
220
221
222
223
224
  
  This will get the plugin as in the branch `develop`.
  
  Note that if you specify two plugins to be loaded from the same git repo, but
  different branches, then two separate clones of this repo will be maintained.
  This is a small implementation detail and shouldn't influence you in any way.
  
  `--no-local-clone` &mdash; This command can be useful if you are developing a
  plugin and already have a clone on your local file system. If this argument is
  not given, even if the given repo url is a local path, a clone is made in the
  `$ADOTDIR/repos`, and the plugin is loaded from that clone. But, if you give
  this argument, the plugin is sourced straight from the repo location, without
  creating a clone. For example,
05cfb1bc3   Adam Stankiewicz   Change default co...
225
      antigen bundle /absolute/path/to/the/plugin --no-local-clone
8a80d2b7a   Shrikant Sharat   Add docs on --no-...
226

e6cc15b5f   Shrikant Sharat   Fix local paths w...
227
228
229
230
  Note that if the repo url is *not* an absolute local path or a branch has been
  specified with the `--branch` option, this argument has no effect. That is,
  for this option to have any affect, the repo url must be an absolute local path
  and no `--branch` should be specified.
4129490ce   Shrikant Sharat   Add --branch note...
231

e97773908   Shrikant Sharat   Added docs on usi...
232
233
234
235
  Also, if the local path given as the url is not a git repo, then this
  argument is forced as it doesn't makes sense to *clone* something that's not a
  git repo. This property can be used to load any utility scripts you have in your
  dotfiles repo. For example,
05cfb1bc3   Adam Stankiewicz   Change default co...
236
      antigen bundle $HOME/dotfiles/oh-my-zsh/custom
e97773908   Shrikant Sharat   Added docs on usi...
237

05cfb1bc3   Adam Stankiewicz   Change default co...
238
  In addition to the above discussed arguments, `antigen bundle` also takes a
63088f869   Shrikant Sharat   Proof read README.
239
240
241
  `btype` keyword-only argument, that is used internally. You shouldn't be
  concerned with this argument, its only used internally and will probably go away
  in the future.  It indicates whether the bundle is a theme or a simple plugin.
05cfb1bc3   Adam Stankiewicz   Change default co...
242
  ### antigen bundles
78ea5a9f4   Shrikant Sharat   Add notes on anti...
243

05cfb1bc3   Adam Stankiewicz   Change default co...
244
245
246
  If you have a fair number of bundles, using the `antigen bundle` command can
  look cumbersome. You can use the `antigen bundles` command to *bulk* define
  bundles instead of individual calls to `antigen bundle`.
78ea5a9f4   Shrikant Sharat   Add notes on anti...
247
248
  
  Usage is pretty straightforward. Just pipe the bundle specifications, just as
05cfb1bc3   Adam Stankiewicz   Change default co...
249
250
  you would give to the `antigen bundle` command, one per line, into the
  `antigen bundles` command. The easiest way to do this, is using the heredoc
78ea5a9f4   Shrikant Sharat   Add notes on anti...
251
  syntax.
05cfb1bc3   Adam Stankiewicz   Change default co...
252
      antigen bundles <<EOBUNDLES
78ea5a9f4   Shrikant Sharat   Add notes on anti...
253
254
255
256
257
      # Guess what to install when running an unknown command.
      command-not-found
  
      # The heroku tool helper plugin.
      heroku
63088f869   Shrikant Sharat   Proof read README.
258
      EOBUNDLES
78ea5a9f4   Shrikant Sharat   Add notes on anti...
259
260
  
  This is equivalent to
05cfb1bc3   Adam Stankiewicz   Change default co...
261
262
      antigen bundle command-not-found
      antigen bundle heroku
78ea5a9f4   Shrikant Sharat   Add notes on anti...
263

05cfb1bc3   Adam Stankiewicz   Change default co...
264
  Of course, as you can see, from the lines piped to `antigen bundles`, empty
78ea5a9f4   Shrikant Sharat   Add notes on anti...
265
  lines and those starting with a `#` are ignored. The rest are passed to
05cfb1bc3   Adam Stankiewicz   Change default co...
266
267
  `antigen bundle` without any quoting rules applied. They are actually `eval`-ed
  with the `antigen bundle` command. See the source if you want to really
78ea5a9f4   Shrikant Sharat   Add notes on anti...
268
  understand how it works. Its a very small function.
05cfb1bc3   Adam Stankiewicz   Change default co...
269
  ### antigen update
5e26a8e26   Shrikant Sharat   Docs on using inl...
270

7ba3548fd   Shrikant Sharat   Updated README wi...
271
272
  This is something you might not want to put in your `.zshrc`. Instead, run it
  occasionally to update all your plugins. It doesn't take any arguments.
5e26a8e26   Shrikant Sharat   Docs on using inl...
273

05cfb1bc3   Adam Stankiewicz   Change default co...
274
      antigen update
5e26a8e26   Shrikant Sharat   Docs on using inl...
275

7ba3548fd   Shrikant Sharat   Updated README wi...
276
277
278
279
280
  Please note that the updates that are downloaded are not immediately available.
  You have to open a new shell to be able to see the changes. This is a limitation
  by design since reloading all the plugins *might* have some nasty side effects
  that may not be immediately apparent. Let's just say it can make your shell act
  real quirky.
b84833b4c   Shrikant Sharat   Add readme.
281

2fe4683b3   Shrikant Sharat   Update README wit...
282
  **Please note**: This command is not for updating *antigen* itself. Its for
3201f76b9   Shrikant Sharat   Add readme notes ...
283
284
  updating the bundles you are using with antigen. To update your copy of antigen,
  use the `selfupdate` command described further below.
2fe4683b3   Shrikant Sharat   Update README wit...
285

05cfb1bc3   Adam Stankiewicz   Change default co...
286
  ### antigen revert <sup>&alpha;</sup>
8cf9a21d1   Shrikant Sharat   Add docs about -r...
287
288
  
  Reverts the state of all your plugins to how they were before the last
05cfb1bc3   Adam Stankiewicz   Change default co...
289
  `antigen update`. This command is currently experimental, so don't rely too much
8cf9a21d1   Shrikant Sharat   Add docs about -r...
290
291
292
293
294
295
  on it. There is a test for it, and it passes, so it should work fine though.
  
  Takes no options.
  
  Insider detail: The information for reverting is stored in
  `$ADOTDIR/revert-info` file.  If its not present, reverting is not possible.
05cfb1bc3   Adam Stankiewicz   Change default co...
296
  ### antigen list
de2f0c562   Shrikant Sharat   Add a note in REA...
297

7ba3548fd   Shrikant Sharat   Updated README wi...
298
299
  Use this command to list out the currently *loaded* plugins. Keep in mind that
  this includes any bundles installed on-the-fly.
de2f0c562   Shrikant Sharat   Add a note in REA...
300

63088f869   Shrikant Sharat   Proof read README.
301
302
303
304
305
306
307
308
309
310
  Takes no arguments. Gives out four entries per line of output, denoting the
  following fields of each bundle.
  
      <repo-url> <loc> <btype> <has-local-clone?>
  
  The `btype` field is an internal detail, that specifies if the bundle is a
  `plugin` or a `theme`.
  
  The final field is `true` or `false` reflecting whether there is a local clone
  for this bundle.
de2f0c562   Shrikant Sharat   Add a note in REA...
311

05cfb1bc3   Adam Stankiewicz   Change default co...
312
  ### antigen cleanup
b84833b4c   Shrikant Sharat   Add readme.
313

63088f869   Shrikant Sharat   Proof read README.
314
315
316
  Used to clean up the clones of repos which are not used by any plugins currently
  loaded. It takes no arguments. When run, it lists out the repo-clones that are
  available but are not used by any plugin *currently loaded*.
b84833b4c   Shrikant Sharat   Add readme.
317

7f742ef26   Shrikant Sharat   Add docs on `--fo...
318
319
320
321
  This command, by default asks for confirmation before deleting the unused
  clones. If the `--force` argument is given, then this confirmation is not asked.
  It straight away deletes all the unused clones. This option makes this command
  usable in a non-interactive fashion.
b84833b4c   Shrikant Sharat   Add readme.
322

05cfb1bc3   Adam Stankiewicz   Change default co...
323
  ### antigen lib
b84833b4c   Shrikant Sharat   Add readme.
324

c3198e0aa   Shrikant Sharat   Set `$ZSH` to oh-...
325
  This is (almost) the same as
7ba3548fd   Shrikant Sharat   Updated README wi...
326

05cfb1bc3   Adam Stankiewicz   Change default co...
327
      antigen bundle --loc=lib
7ba3548fd   Shrikant Sharat   Updated README wi...
328

63088f869   Shrikant Sharat   Proof read README.
329
  So, it basically installs the oh-my-zsh's library as a bundle.
c3198e0aa   Shrikant Sharat   Set `$ZSH` to oh-...
330
331
332
  One other thing it does is that some oh-my-zsh plugins expect a `$ZSH` set to
  the full path of the oh-my-zsh clone being used. This is also set to the
  correct path, if not already set to something else.
63088f869   Shrikant Sharat   Proof read README.
333
334
  Please note that this assumes that the `ANTIGEN_DEFAULT_REPO_URL` is set to the
  oh-my-zsh repo or a fork of that repo. If you want to specify the `url` too,
05cfb1bc3   Adam Stankiewicz   Change default co...
335
336
  then you can't use the `antigen lib` short cut. You have to do that directly
  with the `antigen bundle` command.
7ba3548fd   Shrikant Sharat   Updated README wi...
337

c3198e0aa   Shrikant Sharat   Set `$ZSH` to oh-...
338
  This is present to ease dealing with oh-my-zsh plugins.
7ba3548fd   Shrikant Sharat   Updated README wi...
339
340
  
  Use
b84833b4c   Shrikant Sharat   Add readme.
341

05cfb1bc3   Adam Stankiewicz   Change default co...
342
      antigen lib
b84833b4c   Shrikant Sharat   Add readme.
343

05cfb1bc3   Adam Stankiewicz   Change default co...
344
  in  your `.zshrc`, before any `antigen bundle` declarations. It takes no
2fe4683b3   Shrikant Sharat   Update README wit...
345
  arguments.
b84833b4c   Shrikant Sharat   Add readme.
346

05cfb1bc3   Adam Stankiewicz   Change default co...
347
  ### antigen prezto-lib <sup>&alpha;</sup>
bac244cc1   Shrikant Sharat   Added notes on pr...
348
349
  
  This is (almost, but not quite) the same as doing,
05cfb1bc3   Adam Stankiewicz   Change default co...
350
      antigen bundle sorin-ionescu/prezto
bac244cc1   Shrikant Sharat   Added notes on pr...
351
352
353
354
  
  That is, initializes the canonical repo of the prezto framework. Please note
  that prezto support is very new and experimental in antigen. If you find any
  bugs, please report over on github issues.
05cfb1bc3   Adam Stankiewicz   Change default co...
355
  ### antigen theme
b84833b4c   Shrikant Sharat   Add readme.
356
357
358
  
  Used for switching the prompt theme. Invoke it with the name of the theme you
  want to use.
05cfb1bc3   Adam Stankiewicz   Change default co...
359
      antigen theme fox
b84833b4c   Shrikant Sharat   Add readme.
360

fb91d6087   Shrikant Sharat   Update docs on th...
361
362
  This will get the theme file located at `themes/fox.zsh-theme` in the repo
  specified by `ANTIGEN_DEFAULT_REPO_URL`.
05cfb1bc3   Adam Stankiewicz   Change default co...
363
364
  To pull themes from other repositories, use `antigen theme` just like
  `antigen bundle`. Exactly the same, just make sure the `url` and `loc`
fb91d6087   Shrikant Sharat   Update docs on th...
365
366
367
  combination point to a theme file, having a `.zsh-theme` extension.
  
  For example,
05cfb1bc3   Adam Stankiewicz   Change default co...
368
      antigen theme robbyrussell/oh-my-zsh themes/apple
fb91d6087   Shrikant Sharat   Update docs on th...
369
370
371
  
  Will pull the apple theme from the canonical oh-my-zsh repo. Also, note that the
  `.zsh-theme` extension is not present. It can be given, its optional.
b84833b4c   Shrikant Sharat   Add readme.
372

7ba3548fd   Shrikant Sharat   Updated README wi...
373
374
  You can use this command to change your theme on the fly in your shell. Go on,
  try out a few themes in your shell before you set it in your `.zshrc`.
05cfb1bc3   Adam Stankiewicz   Change default co...
375
376
377
  **Note**: Some themes use functions that are loaded by `antigen lib`. So, to
  avoid any trouble, run `antigen lib` if you haven't already before experimenting
  with themes. If you have `antigen lib` in your `.zshrc`, you're covered.
63088f869   Shrikant Sharat   Proof read README.
378

05cfb1bc3   Adam Stankiewicz   Change default co...
379
  **Note**: Do *not* provide the `--btype` argument to `antigen theme`. Its an
fb91d6087   Shrikant Sharat   Update docs on th...
380
  internal argument.
05cfb1bc3   Adam Stankiewicz   Change default co...
381
  ### antigen apply
1af74ea9e   Shrikant Sharat   Load completions ...
382
383
384
385
386
387
  
  You have to add this command after defining all bundles you need, in your zshrc.
  The completions defined by your bundles will be loaded at this step.
  
  It is possible to load completions as and when a bundle is specified with the
  bundle command, in which case this command would not be necessary. But loading
63088f869   Shrikant Sharat   Proof read README.
388
  the completions is a time-consuming process, so if the completions were loaded
05cfb1bc3   Adam Stankiewicz   Change default co...
389
  at every call to `antigen bundle`, your shell will start noticeably slow when
63088f869   Shrikant Sharat   Proof read README.
390
  you have a good number of bundle specifications.
1af74ea9e   Shrikant Sharat   Load completions ...
391

63088f869   Shrikant Sharat   Proof read README.
392
393
  However, if you can suggest a way so that this would not be necessary, I am very
  interested in discussing it. Please open up an issue with your details. Thanks.
1af74ea9e   Shrikant Sharat   Load completions ...
394

05cfb1bc3   Adam Stankiewicz   Change default co...
395
  ### antigen snapshot <sup>&alpha;</sup>
fb74da6ce   Shrikant Sharat   Add some notes on...
396
397
398
  
  Creates a snapshot of all the clones you currently have *active* including the
  git version hash they are at and save it to a snapshot file. *Active* means, the
05cfb1bc3   Adam Stankiewicz   Change default co...
399
  clones for those listed by `antigen cleanup` are not included in the snapshot.
fb74da6ce   Shrikant Sharat   Add some notes on...
400
401
  
  Takes one optional argument, the file name in which the snapshot is to be saved.
05cfb1bc3   Adam Stankiewicz   Change default co...
402
  Defaults to `antigen snapshot`.
fb74da6ce   Shrikant Sharat   Add some notes on...
403
404
405
406
407
  
  **Note**: The snapshot currently *only* contains the details of those bundles
  that have a clone. That is, bundles that have `--no-local-clone` set or are
  directly sourced from your file system (without a git repo), are not recorded
  in the snapshot file.
05cfb1bc3   Adam Stankiewicz   Change default co...
408
  ### antigen restore <sup>&alpha;</sup>
fb74da6ce   Shrikant Sharat   Add some notes on...
409
410
411
412
413
414
415
  
  Restore the bundles state as specified in the snapshot. Takes one required
  argument, the snapshot file name to read.
  
  Although it restores the clones of the repos specified in the snapshot file, any
  other clones present in your environment are not touched. This behavior may
  change in the future.
05cfb1bc3   Adam Stankiewicz   Change default co...
416
  ### antigen selfupdate
3201f76b9   Shrikant Sharat   Add readme notes ...
417
418
419
420
421
422
  
  Use this command to update your copy of antigen. It basically does a `git pull`
  on your antigen's clone, *if* it is a git clone. Otherwise, it doesn't do
  anything.
  
  Takes no options.
05cfb1bc3   Adam Stankiewicz   Change default co...
423
  ### antigen help
4a1cecfff   Shrikant Sharat   Add notes about a...
424
425
426
427
428
429
430
431
  
  This exists so that there can be some help right in the command line. Currently
  it doesn't provide much help other than redirecting you to the project page for
  documentation. It is intended to provide more meaning and sub-command specific
  help in the future.
  
  I could use some help here as I'm not that good at writing documentation that
  looks good as output on the command line.
ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
432
  ## Configuration
b84833b4c   Shrikant Sharat   Add readme.
433
434
  
  The following environment variables can be set to customize the behavior of
7ba3548fd   Shrikant Sharat   Updated README wi...
435
  antigen. Make sure you set them *before* source-ing `antigen.zsh`.
b84833b4c   Shrikant Sharat   Add readme.
436
437
438
439
  
  `ANTIGEN_DEFAULT_REPO_URL` &mdash; This is the default repository url that is
  used for `bundle` commands. The default value is robbyrussell's oh-my-zsh repo,
  but you can set this to the fork url of your own fork.
911cc8cb5   Shrikant Sharat   Use ADOTDIR as th...
440
441
442
  `ADOTDIR` &mdash; This directory is used to store all the repo clones, your
  bundles, themes, caches and everything else antigen requires to run smoothly.
  Defaults to `$HOME/.antigen`.
b84833b4c   Shrikant Sharat   Add readme.
443

911cc8cb5   Shrikant Sharat   Use ADOTDIR as th...
444
445
446
  **Note**: `ANTIGEN_REPO_CACHE` & `ANTIGEN_BUNDLE_DIR` &mdash; These variables
  were used previously but are now removed. Please use `ADOTDIR` instead, as
  mentioned above.
b84833b4c   Shrikant Sharat   Add readme.
447

72e36b84e   Shrikant Sharat   Notes on running ...
448
  ## Running the tests
79953f965   Shrikant Sharat   Fix readme links....
449
  All the tests are in the `tests` folder and are run using the [cram][] test
dbbcf97bc   Shrikant Sharat   Add notes on inst...
450
451
452
  system. The latest version on that website, as of today is v0.5, which does not
  have the `--shell` argument which is required to run our tests. So, to get the
  correct version of cram, run
72e36b84e   Shrikant Sharat   Notes on running ...
453

dbbcf97bc   Shrikant Sharat   Add notes on inst...
454
      pip install -r requirements.txt
72e36b84e   Shrikant Sharat   Notes on running ...
455

dbbcf97bc   Shrikant Sharat   Add notes on inst...
456
  With that, once you have cram installed, you can run the tests as
72e36b84e   Shrikant Sharat   Notes on running ...
457

dbbcf97bc   Shrikant Sharat   Add notes on inst...
458
      make
72e36b84e   Shrikant Sharat   Notes on running ...
459
460
461
462
463
  
  If you are making a feature addition, I'd really appreciate if you can add a
  test for your feature. Even if you can add a test for an existing feature, that
  would be great as the tests are currently seriously lagging behind the full
  functionality of antigen.
ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
464
  ## Notes on writing plugins
b36de9bb3   Shrikant Sharat   Add links in READ...
465

b33b9e9d4   Shrikant Sharat   Fix #24. Add reco...
466
467
468
469
470
471
472
  Most shell utilities/plugins are made up of just one file. For a plugin called
  `awesomeness`, create a `awesomeness.plugin.zsh` and code away.
  
  That said, even if you write a single file as a `.sh` file with the goodness you
  want to create, antigen will work just fine with it. The `*.plugin.zsh` way is
  recommended by antigen, because it is widely used because of the [oh-my-zsh][]
  project.
18249921c   Shrikant Sharat   Notes on writing ...
473
474
475
476
  
  If you want to know how antigen loads the plugins, do continue.
  
  Firstly, antigen looks for a `*.plugin.zsh` file in the plugin directory. If
bac244cc1   Shrikant Sharat   Added notes on pr...
477
478
479
480
481
482
  present, it will source *only* this script. Nothing else is sourced. This is for
  oh-my-zsh style plugins.
  
  Secondly, it looks for a `init.zsh` file in the plugin directory. If present, it
  will source *only* this script. Nothing else is sourced. This is for prezto
  style modules.
18249921c   Shrikant Sharat   Notes on writing ...
483
484
485
486
487
488
489
490
491
492
493
  
  Otherwise, it looks for `*.zsh` files and if there are any, *all* of them are
  sourced. The order in which they are sourced is not currently defined. Please
  don't rely on this order. Nothing else is sourced after all the `*.zsh` scripts.
  
  If no `*.zsh` files are present, it finally looks for any `*.sh` files and
  sources *all* of them. Again, the order in which they are sourced in not
  currently defined.
  
  No matter which (or none) of the above happen to be sourced, this plugin
  directory is added to the zsh's function path (`$fpath`) so that any completions
63088f869   Shrikant Sharat   Proof read README.
494
495
496
497
498
  in it are loaded.
  
  One exception to this rule is that if this plugin is a theme. In which case the
  theme script is just sourced and nothing else is done. Not even adding to
  `$fpath`.
b36de9bb3   Shrikant Sharat   Add links in READ...
499

ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
500
  ## Meta
b84833b4c   Shrikant Sharat   Add readme.
501

72e36b84e   Shrikant Sharat   Notes on running ...
502
503
504
  ### Helping out
  
  Antigen is licensed with the [MIT License][license]. To contribute, just fork,
7ba3548fd   Shrikant Sharat   Updated README wi...
505
506
  make changes and send a pull request. If its a rather long/complicated change,
  please consider opening an [issue][] first so we can discuss it out.
b84833b4c   Shrikant Sharat   Add readme.
507

72e36b84e   Shrikant Sharat   Notes on running ...
508
  ### Feedback please
f76ba3b6c   Shrikant Sharat   Removed link to r...
509
510
511
  Any comments/suggestions/feedback welcome. Please say hello to me
  ([@sharat87][twitter]) on twitter. Or open an issue to discuss something
  (anything!) about the project ;).
5c124ed5a   Shrikant Sharat   Add link to proje...
512

f1387e5be   Shrikant Sharat   Mild reformatting...
513

b84833b4c   Shrikant Sharat   Add readme.
514
  [Vundle]: https://github.com/gmarik/vundle
b36de9bb3   Shrikant Sharat   Add links in READ...
515
  [page on themes]: https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
08e06125d   Shrikant Sharat   Add link to the e...
516
  [wild]: https://github.com/zsh-users/antigen/wiki/In-the-wild
b36de9bb3   Shrikant Sharat   Add links in READ...
517
  [syntax highlighting plugin]: https://github.com/zsh-users/zsh-syntax-highlighting
3e16c4709   Shrikant Sharat   Add autoenv as an...
518
  [autoenv]: https://github.com/kennethreitz/autoenv
6e2c0fbd6   Shrikant Sharat   Point autoenv exa...
519
  [f-autoenv]: https://github.com/sharat87/autoenv
b84833b4c   Shrikant Sharat   Add readme.
520
  [oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh
72e36b84e   Shrikant Sharat   Notes on running ...
521
  [cram]: https://bitheap.org/cram/
290edb005   Shrikant Sharat   Fix link to githu...
522
  [issue]: https://github.com/zsh-users/antigen/issues
7ba3548fd   Shrikant Sharat   Updated README wi...
523
  [license]: http://mit.sharats.me
7ba3548fd   Shrikant Sharat   Updated README wi...
524
  [twitter]: http://twitter.com/sharat87