Blame view

README.mkd 22.8 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
d6d8e5504   Shrikant Sharat   Merge remote-trac...
72
      antigen use oh-my-zsh
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.
d6d8e5504   Shrikant Sharat   Merge remote-trac...
90
      antigen use oh-my-zsh
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
ffad68b97   Adam Stankiewicz   Suggest tabbing c...
253
254
        # Guess what to install when running an unknown command.
        command-not-found
78ea5a9f4   Shrikant Sharat   Add notes on anti...
255

ffad68b97   Adam Stankiewicz   Suggest tabbing c...
256
257
        # 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.
57819c9aa   Shrikant Sharat   Add a note to REA...
269
270
  *Note*: Indenting the contents inside the EOBUNDLES heredoc is not required for
  antigen-bundles to work. Its allowed (and encouraged) to improve readability.
05cfb1bc3   Adam Stankiewicz   Change default co...
271
  ### antigen update
5e26a8e26   Shrikant Sharat   Docs on using inl...
272

7ba3548fd   Shrikant Sharat   Updated README wi...
273
274
  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...
275

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

7ba3548fd   Shrikant Sharat   Updated README wi...
278
279
280
281
282
  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.
283

2fe4683b3   Shrikant Sharat   Update README wit...
284
  **Please note**: This command is not for updating *antigen* itself. Its for
3201f76b9   Shrikant Sharat   Add readme notes ...
285
286
  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...
287

05cfb1bc3   Adam Stankiewicz   Change default co...
288
  ### antigen revert <sup>&alpha;</sup>
8cf9a21d1   Shrikant Sharat   Add docs about -r...
289
290
  
  Reverts the state of all your plugins to how they were before the last
05cfb1bc3   Adam Stankiewicz   Change default co...
291
  `antigen update`. This command is currently experimental, so don't rely too much
8cf9a21d1   Shrikant Sharat   Add docs about -r...
292
293
294
295
296
297
  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...
298
  ### antigen list
de2f0c562   Shrikant Sharat   Add a note in REA...
299

7ba3548fd   Shrikant Sharat   Updated README wi...
300
301
  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...
302

63088f869   Shrikant Sharat   Proof read README.
303
304
305
306
307
308
309
310
311
312
  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...
313

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

63088f869   Shrikant Sharat   Proof read README.
316
317
318
  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.
319

7f742ef26   Shrikant Sharat   Add docs on `--fo...
320
321
322
323
  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.
324

b5516f331   Shrikant Sharat   Group and improve...
325
326
327
328
329
330
331
332
333
334
335
  ### antigen use
  
  This command lets you load any (supported) zsh pre-packaged framework, like
  oh-my-zsh. Usage is
  
      antigen use oh-my-zsh
  
  Additional arguments may be present depending on the framework you are
  `use`-ing. Here are the supported frameworks.
  
  #### oh-my-zsh
b84833b4c   Shrikant Sharat   Add readme.
336

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

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

63088f869   Shrikant Sharat   Proof read README.
341
  So, it basically installs the oh-my-zsh's library as a bundle.
c3198e0aa   Shrikant Sharat   Set `$ZSH` to oh-...
342
343
344
  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.
345
346
  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,
d6d8e5504   Shrikant Sharat   Merge remote-trac...
347
348
  then you can't use the `antigen use oh-my-zsh` short cut. You have to do that
  directly with the `antigen bundle` command.
7ba3548fd   Shrikant Sharat   Updated README wi...
349

7ba3548fd   Shrikant Sharat   Updated README wi...
350
  Use
b84833b4c   Shrikant Sharat   Add readme.
351

d6d8e5504   Shrikant Sharat   Merge remote-trac...
352
      antigen use oh-my-zsh
b84833b4c   Shrikant Sharat   Add readme.
353

b5516f331   Shrikant Sharat   Group and improve...
354
  in  your `.zshrc`, before any `antigen bundle` declarations. It takes no further
2fe4683b3   Shrikant Sharat   Update README wit...
355
  arguments.
b84833b4c   Shrikant Sharat   Add readme.
356

b5516f331   Shrikant Sharat   Group and improve...
357
  #### prezto
bac244cc1   Shrikant Sharat   Added notes on pr...
358
359
  
  This is (almost, but not quite) the same as doing,
05cfb1bc3   Adam Stankiewicz   Change default co...
360
      antigen bundle sorin-ionescu/prezto
bac244cc1   Shrikant Sharat   Added notes on pr...
361
362
363
364
  
  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.
b5516f331   Shrikant Sharat   Group and improve...
365
  Takes no further arguments.
05cfb1bc3   Adam Stankiewicz   Change default co...
366
  ### antigen theme
b84833b4c   Shrikant Sharat   Add readme.
367
368
369
  
  Used for switching the prompt theme. Invoke it with the name of the theme you
  want to use.
05cfb1bc3   Adam Stankiewicz   Change default co...
370
      antigen theme fox
b84833b4c   Shrikant Sharat   Add readme.
371

fb91d6087   Shrikant Sharat   Update docs on th...
372
373
  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...
374
375
  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...
376
377
378
  combination point to a theme file, having a `.zsh-theme` extension.
  
  For example,
05cfb1bc3   Adam Stankiewicz   Change default co...
379
      antigen theme robbyrussell/oh-my-zsh themes/apple
fb91d6087   Shrikant Sharat   Update docs on th...
380
381
382
  
  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.
383

7ba3548fd   Shrikant Sharat   Updated README wi...
384
385
  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`.
d6d8e5504   Shrikant Sharat   Merge remote-trac...
386
387
388
  **Note**: Some themes use functions that are loaded by `antigen use oh-my-zsh`.
  So, to avoid any trouble, run `antigen use oh-my-zsh` if you haven't already
  before experimenting with themes. If you have `antigen use oh-my-zsh` in your
843a7ea31   Shrikant Sharat   Correct formattin...
389
  `.zshrc`, you're covered.
63088f869   Shrikant Sharat   Proof read README.
390

05cfb1bc3   Adam Stankiewicz   Change default co...
391
  **Note**: Do *not* provide the `--btype` argument to `antigen theme`. Its an
fb91d6087   Shrikant Sharat   Update docs on th...
392
  internal argument.
05cfb1bc3   Adam Stankiewicz   Change default co...
393
  ### antigen apply
1af74ea9e   Shrikant Sharat   Load completions ...
394
395
396
397
398
399
  
  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.
400
  the completions is a time-consuming process, so if the completions were loaded
05cfb1bc3   Adam Stankiewicz   Change default co...
401
  at every call to `antigen bundle`, your shell will start noticeably slow when
63088f869   Shrikant Sharat   Proof read README.
402
  you have a good number of bundle specifications.
1af74ea9e   Shrikant Sharat   Load completions ...
403

63088f869   Shrikant Sharat   Proof read README.
404
405
  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 ...
406

05cfb1bc3   Adam Stankiewicz   Change default co...
407
  ### antigen snapshot <sup>&alpha;</sup>
fb74da6ce   Shrikant Sharat   Add some notes on...
408
409
410
  
  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...
411
  clones for those listed by `antigen cleanup` are not included in the snapshot.
fb74da6ce   Shrikant Sharat   Add some notes on...
412
413
  
  Takes one optional argument, the file name in which the snapshot is to be saved.
05cfb1bc3   Adam Stankiewicz   Change default co...
414
  Defaults to `antigen snapshot`.
fb74da6ce   Shrikant Sharat   Add some notes on...
415
416
417
418
419
  
  **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...
420
  ### antigen restore <sup>&alpha;</sup>
fb74da6ce   Shrikant Sharat   Add some notes on...
421
422
423
424
425
426
427
  
  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...
428
  ### antigen selfupdate
3201f76b9   Shrikant Sharat   Add readme notes ...
429
430
431
432
433
434
  
  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...
435
  ### antigen help
4a1cecfff   Shrikant Sharat   Add notes about a...
436
437
438
439
440
441
442
443
  
  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.
444
  ## Configuration
b84833b4c   Shrikant Sharat   Add readme.
445
446
  
  The following environment variables can be set to customize the behavior of
7ba3548fd   Shrikant Sharat   Updated README wi...
447
  antigen. Make sure you set them *before* source-ing `antigen.zsh`.
b84833b4c   Shrikant Sharat   Add readme.
448
449
450
451
  
  `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...
452
453
454
  `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.
455

911cc8cb5   Shrikant Sharat   Use ADOTDIR as th...
456
457
458
  **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.
459

72e36b84e   Shrikant Sharat   Notes on running ...
460
  ## Running the tests
79953f965   Shrikant Sharat   Fix readme links....
461
  All the tests are in the `tests` folder and are run using the [cram][] test
dbbcf97bc   Shrikant Sharat   Add notes on inst...
462
463
464
  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 ...
465

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

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

dbbcf97bc   Shrikant Sharat   Add notes on inst...
470
      make
72e36b84e   Shrikant Sharat   Notes on running ...
471
472
473
474
475
  
  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.
476
  ## Notes on writing plugins
b36de9bb3   Shrikant Sharat   Add links in READ...
477

b33b9e9d4   Shrikant Sharat   Fix #24. Add reco...
478
479
480
481
482
483
484
  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 ...
485
486
487
488
  
  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...
489
490
491
492
493
494
  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 ...
495
496
497
498
499
500
501
502
503
504
505
  
  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.
506
507
508
509
510
  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...
511

e6888036d   Shrikant Sharat   Added note on che...
512
513
514
515
516
517
518
519
520
521
522
  ## A note on external zsh plugins
  
  Antigen downloads zsh scripts and sources them, according to your
  specifications. As such, these scripts are capable of doing some *real* damage
  to your system. If you are only downloading scripts from oh-my-zsh and/or
  prezto, you're probably fine, since there is a second level of manual checking
  before a script gets into the framework.
  
  But, if you are adding a script from any other source, please check the source
  code of the plugin to see its not doing anything malicious, before adding it to
  your `.zshrc`.
ac6ddd7d4   Shrikant Sharat   Heading levels + 1.
523
  ## Meta
b84833b4c   Shrikant Sharat   Add readme.
524

72e36b84e   Shrikant Sharat   Notes on running ...
525
  ### Helping out
dd62b3331   Shrikant Sharat   Added link to con...
526
527
528
529
530
  Antigen is licensed with the [MIT License][license].
  
  To contribute, please read the [contributing wiki page][contributing] before
  sending pull requests. If its a long/complicated change, please consider opening
  an [issue][] first so we can discuss it out. Thanks!
b84833b4c   Shrikant Sharat   Add readme.
531

72e36b84e   Shrikant Sharat   Notes on running ...
532
  ### Feedback please
f76ba3b6c   Shrikant Sharat   Removed link to r...
533
534
535
  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...
536

f1387e5be   Shrikant Sharat   Mild reformatting...
537

b84833b4c   Shrikant Sharat   Add readme.
538
  [Vundle]: https://github.com/gmarik/vundle
b36de9bb3   Shrikant Sharat   Add links in READ...
539
  [page on themes]: https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
08e06125d   Shrikant Sharat   Add link to the e...
540
  [wild]: https://github.com/zsh-users/antigen/wiki/In-the-wild
b36de9bb3   Shrikant Sharat   Add links in READ...
541
  [syntax highlighting plugin]: https://github.com/zsh-users/zsh-syntax-highlighting
3e16c4709   Shrikant Sharat   Add autoenv as an...
542
  [autoenv]: https://github.com/kennethreitz/autoenv
6e2c0fbd6   Shrikant Sharat   Point autoenv exa...
543
  [f-autoenv]: https://github.com/sharat87/autoenv
b84833b4c   Shrikant Sharat   Add readme.
544
  [oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh
72e36b84e   Shrikant Sharat   Notes on running ...
545
  [cram]: https://bitheap.org/cram/
290edb005   Shrikant Sharat   Fix link to githu...
546
  [issue]: https://github.com/zsh-users/antigen/issues
7ba3548fd   Shrikant Sharat   Updated README wi...
547
  [license]: http://mit.sharats.me
dd62b3331   Shrikant Sharat   Added link to con...
548
  [contributing]: https://github.com/zsh-users/antigen/wiki/Contributing
7ba3548fd   Shrikant Sharat   Updated README wi...
549
  [twitter]: http://twitter.com/sharat87