blob: 5543573eba2a003ba432614f2e4b61eccd32152d [file] [log] [blame]
Bram Moolenaar6be7f872012-01-20 21:08:56 +01001*pi_getscript.txt* For Vim version 7.0. Last change: 2011 Jun 23
Bram Moolenaar9964e462007-05-05 17:54:07 +00002>
3 GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr.
4<
5Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz>
6 (remove NOSPAM from the email address)
7 *GetLatestVimScripts-copyright*
Bram Moolenaar6be7f872012-01-20 21:08:56 +01008Copyright: (c) 2004-2012 by Charles E. Campbell, Jr. *glvs-copyright*
9 The VIM LICENSE (see |copyright|) applies to the files in this
10 package, including getscriptPlugin.vim, getscript.vim,
11 GetLatestVimScripts.dist, and pi_getscript.txt, except use "getscript"
12 instead of "VIM". Like anything else that's free, getscript and its
13 associated files are provided *as is* and comes with no warranty of
14 any kind, either expressed or implied. No guarantees of
15 merchantability. No guarantees of suitability for any purpose. By
16 using this plugin, you agree that in no event will the copyright
17 holder be liable for any damages resulting from the use of this
18 software. Use at your own risk!
Bram Moolenaar9964e462007-05-05 17:54:07 +000019
20Getscript is a plugin that simplifies retrieval of the latest versions of the
21scripts that you yourself use! Typing |:GLVS| will invoke getscript; it will
22then use the <GetLatestVimScripts.dat> (see |GetLatestVimScripts_dat|) file to
23get the latest versions of scripts listed therein from http://vim.sf.net/.
24
25==============================================================================
261. Contents *glvs-contents* *glvs* *getscript*
27 *GetLatestVimScripts*
28
29 1. Contents........................................: |glvs-contents|
30 2. GetLatestVimScripts -- Getting Started..........: |glvs-install|
31 3. GetLatestVimScripts Usage.......................: |glvs-usage|
32 4. GetLatestVimScripts Data File...................: |glvs-data|
33 5. GetLatestVimScripts Friendly Plugins............: |glvs-plugins|
34 6. GetLatestVimScripts AutoInstall.................: |glvs-autoinstall|
35 7. GetLatestViMScripts Options.....................: |glvs-options|
36 8. GetLatestVimScripts Algorithm...................: |glvs-alg|
37 9. GetLatestVimScripts History.....................: |glvs-hist|
38
39
40==============================================================================
412. GetLatestVimScripts -- Getting Started *getscript-start*
42 *getlatestvimscripts-install*
43
44 VERSION FROM VIM DISTRIBUTION *glvs-dist-install*
45
46Vim 7.0 does not include the GetLatestVimScripts.dist file which
47serves as an example and a template. So, you'll need to create
48your own! See |GetLatestVimScripts_dat|.
49
50 VERSION FROM VIM SF NET *glvs-install*
51
52NOTE: The last step, that of renaming/moving the GetLatestVimScripts.dist
53file, is for those who have just downloaded GetLatestVimScripts.tar.bz2 for
54the first time.
55
56The GetLatestVimScripts.dist file serves as an example and a template for your
57own personal list. Feel free to remove all the scripts mentioned within it;
58the "important" part of it is the first two lines.
59
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010060Your computer needs to have wget or curl for GetLatestVimScripts to do its work.
Bram Moolenaar9964e462007-05-05 17:54:07 +000061
62 1. if compressed: gunzip getscript.vba.gz
63 2. Unix:
64 vim getscript.vba
65 :so %
66 :q
67 cd ~/.vim/GetLatest
68 mv GetLatestVimScripts.dist GetLatestVimScripts.dat
69 (edit GetLatestVimScripts.dat to install your own personal
70 list of desired plugins -- see |GetLatestVimScripts_dat|)
71
72 3. Windows:
73 vim getscript.vba
74 :so %
75 :q
76 cd **path-to-vimfiles**/GetLatest
77 mv GetLatestVimScripts.dist GetLatestVimScripts.dat
78 (edit GetLatestVimScripts.dat to install your own personal
79 list of desired plugins -- see |GetLatestVimScripts_dat|)
80
81
82==============================================================================
833. GetLatestVimScripts Usage *glvs-usage* *:GLVS*
84
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010085Unless it has been defined elsewhere, >
Bram Moolenaar251e1912011-06-19 05:09:16 +020086
Bram Moolenaar9964e462007-05-05 17:54:07 +000087 :GLVS
Bram Moolenaar251e1912011-06-19 05:09:16 +020088
Bram Moolenaar9964e462007-05-05 17:54:07 +000089will invoke GetLatestVimScripts(). If some other plugin has defined that
90command, then you may type
91>
92 :GetLatestVimScripts
93<
94The script will attempt to update and, if permitted, will automatically
95install scripts from http://vim.sourceforge.net/. To do so it will peruse a
96file,
97>
98 .vim/GetLatest/GetLatestVimScripts.dat (unix)
99<
100or >
101 ..wherever..\vimfiles\GetLatest\GetLatestVimScripts.dat (windows)
102(see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin
103directory (see |glvs-plugins|).
104
105Scripts which have been downloaded will appear in the
106~/.vim/GetLatest (unix) or ..wherever..\vimfiles\GetLatest (windows)
107subdirectory. GetLatestVimScripts will attempt to automatically
108install them if you have the following line in your <.vimrc>: >
109
110 let g:GetLatestVimScripts_allowautoinstall=1
111
112The <GetLatestVimScripts.dat> file will be automatically be updated to
113reflect the latest version of script(s) so downloaded.
114(also see |glvs-options|)
115
116
117==============================================================================
1184. GetLatestVimScripts Data File *getscript-data* *glvs-data*
119 *:GetLatestVimScripts_dat*
120The data file <GetLatestVimScripts.dat> must have for its first two lines
121the following text:
122>
123 ScriptID SourceID Filename
124 --------------------------
125<
126Following those two lines are three columns; the first two are numeric
127followed by a text column. The GetLatest/GetLatestVimScripts.dist file
128contains an example of such a data file. Anything following a #... is
129ignored, so you may embed comments in the file.
130
131The first number on each line gives the script's ScriptID. When you're about
132to use a web browser to look at scripts on http://vim.sf.net/, just before you
133click on the script's link, you'll see a line resembling
134
135 http://vim.sourceforge.net/scripts/script.php?script_id=40
136
137The "40" happens to be a ScriptID that GetLatestVimScripts needs to
Bram Moolenaar251e1912011-06-19 05:09:16 +0200138download the associated page, and is assigned by vim.sf.net itself
139during initial uploading of the plugin.
Bram Moolenaar9964e462007-05-05 17:54:07 +0000140
141The second number on each line gives the script's SourceID. The SourceID
142records the count of uploaded scripts as determined by vim.sf.net; hence it
143serves to indicate "when" a script was uploaded. Setting the SourceID to 1
144insures that GetLatestVimScripts will assume that the script it has is
145out-of-date.
146
147The SourceID is extracted by GetLatestVimScripts from the script's page on
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100148vim.sf.net; whenever it is greater than the one stored in the
Bram Moolenaar9964e462007-05-05 17:54:07 +0000149GetLatestVimScripts.dat file, the script will be downloaded
150(see |GetLatestVimScripts_dat|).
151
152If your script's author has included a special comment line in his/her plugin,
153the plugin itself will be used by GetLatestVimScripts to build your
154<GetLatestVimScripts.dat> file, including any dependencies on other scripts it
155may have. As an example, consider: >
156
157 " GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim
158
159This comment line tells getscript.vim to check vimscript #884 and that the
160script is automatically installable. Getscript will also use this line to
161help build the GetLatestVimScripts.dat file, by including a line such as: >
162
Bram Moolenaar251e1912011-06-19 05:09:16 +0200163 884 1 :AutoInstall: AutoAlign.vim
Bram Moolenaar9964e462007-05-05 17:54:07 +0000164<
Bram Moolenaar251e1912011-06-19 05:09:16 +0200165assuming that such a line isn't already in GetLatestVimScripts.dat file.
Bram Moolenaar9964e462007-05-05 17:54:07 +0000166See |glvs-plugins| for more. Thus, GetLatestVimScripts thus provides a
167comprehensive ability to keep your plugins up-to-date!
168
Bram Moolenaar251e1912011-06-19 05:09:16 +0200169In summary:
170
171 * Optionally tell getscript that it is allowed to build/append a
172 GetLatestVimScripts.dat file based upon already installed plugins: >
173 let g:GetLatestVimScripts_allowautoinstall=1
174<
175 * A line such as >
176 " GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim
177< in an already-downloaded plugin constitutes the concurrence of the
178 plugin author that getscript may do AutoInstall. Not all plugins
179 may be AutoInstall-able, and the plugin's author is best situated
180 to know whether or not his/her plugin will AutoInstall properly.
181
182 * A line such as >
183 884 1 :AutoInstall: AutoAlign.vim
184< in your GetLatestVimScripts.dat file constitutes your permission
185 to getscript to do AutoInstall. AutoInstall requires both your
186 and the plugin author's permission. See |GetLatestVimScripts_dat|.
187
188
Bram Moolenaar9964e462007-05-05 17:54:07 +0000189 *GetLatestVimScripts_dat*
190As an example of a <GetLatestVimScripts.dat> file:
191>
192 ScriptID SourceID Filename
193 --------------------------
Bram Moolenaar251e1912011-06-19 05:09:16 +0200194 294 1 :AutoInstall: Align.vim
195 120 2 Decho.vim
Bram Moolenaar9964e462007-05-05 17:54:07 +0000196 40 3 DrawIt.tar.gz
197 451 4 EasyAccents.vim
198 195 5 engspchk.vim
199 642 6 GetLatestVimScripts.vim
200 489 7 Manpageview.vim
201<
202Note: the first two lines are required, but essentially act as comments.
203
204
205==============================================================================
2065. GetLatestVimScripts Friendly Plugins *getscript-plugins* *glvs-plugins*
207
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100208 (this section is for plugin authors)~
209
Bram Moolenaar9964e462007-05-05 17:54:07 +0000210If a plugin author includes the following comment anywhere in their plugin,
211GetLatestVimScripts will find it and use it to automatically build the user's
212GetLatestVimScripts.dat files:
213>
214 src_id
215 v
216 " GetLatestVimScripts: ### ### yourscriptname
217 ^
218 scriptid
219<
220As an author, you should include such a line in to refer to your own script
221plus any additional lines describing any plugin dependencies it may have.
222Same format, of course!
223
224If your command is auto-installable (see |glvs-autoinstall|), and most scripts
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100225are, then you may include :AutoInstall: just before "yourscriptname":
226>
227 src_id
228 v
229 " GetLatestVimScripts: ### ### :AutoInstall: yourscriptname
230 ^
231 scriptid
232<
Bram Moolenaar251e1912011-06-19 05:09:16 +0200233NOTE: The :AutoInstall: feature requires both the plugin author's and~
234 the user's permission to operate!~
Bram Moolenaar9964e462007-05-05 17:54:07 +0000235
236GetLatestVimScripts commands for those scripts are then appended, if not
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100237already present, to the user's GetLatest/GetLatestVimScripts.dat file. It is
238a relatively painless way to automate the acquisition of any scripts your
Bram Moolenaar9964e462007-05-05 17:54:07 +0000239plugins depend upon.
240
241Now, as an author, you probably don't want GetLatestVimScripts to download
Bram Moolenaar251e1912011-06-19 05:09:16 +0200242your own scripts atop your own copy, thereby overwriting your not-yet-released
Bram Moolenaar9964e462007-05-05 17:54:07 +0000243hard work. GetLatestVimScripts provides a solution for this: put
244>
245 0 0 yourscriptname
246<
247into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will skip
248examining the "yourscriptname" scripts for those GetLatestVimScripts comment
249lines. As a result, those lines won't be inadvertently installed into your
250<GetLatestVimScripts.dat> file and subsequently used to download your own
251scripts. This is especially important to do if you've included the
252:AutoInstall: option.
253
254Be certain to use the same "yourscriptname" in the "0 0 yourscriptname" line
255as you've used in your GetLatestVimScripts comment!
256
257
258==============================================================================
2596. GetLatestVimScripts AutoInstall *getscript-autoinstall*
260 *glvs-autoinstall*
261
262GetLatestVimScripts now supports "AutoInstall". Not all scripts are
263supportive of auto-install, as they may have special things you need to do to
264install them (please refer to the script's "install" directions). On the
265other hand, most scripts will be auto-installable.
266
267To let GetLatestVimScripts do an autoinstall, the data file's comment field
268should begin with (surrounding blanks are ignored): >
269
270 :AutoInstall:
271<
272Both colons are needed, and it should begin the comment (yourscriptname)
273field.
274
275One may prevent any autoinstalling by putting the following line in your
276<.vimrc>: >
277
278 let g:GetLatestVimScripts_allowautoinstall= 0
279<
280With :AutoInstall: enabled, as it is by default, files which end with
281
282 ---.tar.bz2 : decompressed & untarred in .vim/ directory
283 ---.vba.bz2 : decompressed in .vim/ directory, then vimball handles it
284 ---.vim.bz2 : decompressed & moved into .vim/plugin directory
285 ---.tar.gz : decompressed & untarred in .vim/ directory
286 ---.vba.gz : decompressed in .vim/ directory, then vimball handles it
287 ---.vim.gz : decompressed & moved into .vim/plugin directory
288 ---.vba : unzipped in .vim/ directory
289 ---.vim : moved to .vim/plugin directory
290 ---.zip : unzipped in .vim/ directory
291
292and which merely need to have their components placed by the untar/gunzip or
293move-to-plugin-directory process should be auto-installable. Vimballs, of
294course, should always be auto-installable.
295
296When is a script not auto-installable? Let me give an example:
297
298 .vim/after/syntax/blockhl.vim
299
300The <blockhl.vim> script provides block highlighting for C/C++ programs; it is
301available at:
302
303 http://vim.sourceforge.net/scripts/script.php?script_id=104
304
305Currently, vim's after/syntax only supports by-filetype scripts (in
306blockhl.vim's case, that's after/syntax/c.vim). Hence, auto-install would
307possibly overwrite the current user's after/syntax/c.vim file.
308
309In my own case, I use <aftersyntax.vim> (renamed to after/syntax/c.vim) to
310allow a after/syntax/c/ directory:
311
312 http://vim.sourceforge.net/scripts/script.php?script_id=1023
313
314The script allows multiple syntax files to exist separately in the
315after/syntax/c subdirectory. I can't bundle aftersyntax.vim in and build an
316appropriate tarball for auto-install because of the potential for the
317after/syntax/c.vim contained in it to overwrite a user's c.vim.
318
319
320==============================================================================
3217. GetLatestVimScripts Options *glvs-options*
322>
323 g:GetLatestVimScripts_wget
324< default= "wget"
325 This variable holds the name of the command for obtaining
326 scripts.
327>
328 g:GetLatestVimScripts_options
329< default= "-q -O"
330 This variable holds the options to be used with the
331 g:GetLatestVimScripts_wget command.
332>
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100333 g:GetLatestVimScripts_allowautoinstall
Bram Moolenaar9964e462007-05-05 17:54:07 +0000334< default= 1
335 This variable indicates whether GetLatestVimScripts is allowed
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100336 to attempt to automatically install scripts. Furthermore, the
337 plugin author has to have explicitly indicated that his/her
338 plugin is automatically installable (via the :AutoInstall:
339 keyword in the GetLatestVimScripts comment line).
340>
341 g:GetLatestVimScripts_autoinstalldir
342< default= $HOME/.vim (linux)
343 default= $HOME/vimfiles (windows)
344 Override where :AutoInstall: scripts will be installed.
345 Doesn't override vimball installation.
Bram Moolenaar9964e462007-05-05 17:54:07 +0000346
347==============================================================================
3488. GetLatestVimScripts Algorithm *glvs-algorithm* *glvs-alg*
349
350The Vim sourceforge page dynamically creates a page by keying off of the
351so-called script-id. Within the webpage of
352
353 http://vim.sourceforge.net/scripts/script.php?script_id=40
354
355is a line specifying the latest source-id (src_id). The source identifier
356numbers are always increasing, hence if the src_id is greater than the one
Bram Moolenaar7263a772007-05-10 17:35:54 +0000357recorded for the script in GetLatestVimScripts then it's time to download a
Bram Moolenaar9964e462007-05-05 17:54:07 +0000358newer copy of that script.
359
360GetLatestVimScripts will then download the script and update its internal
361database of script ids, source ids, and scriptnames.
362
363The AutoInstall process will:
364
365 Move the file from GetLatest/ to the following directory
366 Unix : $HOME/.vim
367 Windows: $HOME\vimfiles
368 if the downloaded file ends with ".bz2"
369 bunzip2 it
370 else if the downloaded file ends with ".gz"
371 gunzip it
372 if the resulting file ends with ".zip"
373 unzip it
374 else if the resulting file ends with ".tar"
375 tar -oxvf it
376 else if the resulting file ends with ".vim"
377 move it to the plugin subdirectory
378
379
380==============================================================================
3819. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
382
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100383v44 Jun 23, 2011 : * handles additional decompression options for tarballs
384 (tgz taz tbz txz)
Bram Moolenaar251e1912011-06-19 05:09:16 +0200385v33 May 31, 2011 : * using fnameescape() instead of escape()
386 * *.xz support
387v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
Bram Moolenaarc236c162008-07-13 17:41:49 +0000388v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100389 * (David Schaefer) the acd option interferes with vimballs
390 Solution: bypass the acd option
Bram Moolenaarc236c162008-07-13 17:41:49 +0000391v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100392 issue an error message if it is not supported
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000393v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that
394 getscriptPlugin.vim was setting it but not restoring it.
395v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin
396 interface, register-a bypass
397 Oct 29, 2007 * Bill McCarthy suggested a change to getscript that avoids
398 creating pop-up windows
Bram Moolenaar7263a772007-05-10 17:35:54 +0000399v24 Apr 16, 2007 : * removed save&restore of the fo option during script
400 loading
Bram Moolenaar9964e462007-05-05 17:54:07 +0000401v23 Nov 03, 2006 : * ignores comments (#...)
402 * handles vimballs
403v22 Oct 13, 2006 : * supports automatic use of curl if wget is not
404 available
405v21 May 01, 2006 : * now takes advantage of autoloading.
406v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
407 unzip needs the -o flag to overwrite.
408v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
409 script! Fixed.
410v18 Mar 21, 2005 : * bugfix to automatic database construction
411 * bugfix - nowrapscan caused an error
412 (tnx to David Green for the fix)
413 Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in
414 :AutoInstall:s, even though its o/s is windows
415 Apr 01, 2005 * when downloading errors occurred, GLVS was
416 terminating early. It now just goes on to trying
417 the next script (after trying three times to
418 download a script description page)
419 Apr 20, 2005 * bugfix - when a failure to download occurred,
420 GetLatestVimScripts would stop early and claim that
421 everything was current. Fixed.
422v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
423 defaults to 1, can be used to prevent all
424 :AutoInstall:
425v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
426 * fixed bug with :AutoInstall: use of helptags
427v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
428 always preventing downloads (just usually). Fixed.
429v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
430 s:dotvim. Fixed.
431v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
432 is zero. Useful for script authors; that way their
433 own GetLatestVimScripts activity won't overwrite
434 their scripts.
435v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
436 was intended only for testing. Removed, now works.
437 * :AutoInstall: implemented
438v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
439 * :GetLatestVimScripts command
440 * (runtimepath)/GetLatest/GetLatestVimScripts.dat
441 now holds scripts that need updating
442v10 Apr 19, 2004 : * moved history from script to doc
443v9 Jan 23, 2004 : windows (win32/win16/win95) will use
444 double quotes ("") whereas other systems will use
445 single quotes ('') around the urls in calls via wget
446v8 Dec 01, 2003 : makes three tries at downloading
447v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id="
448 not found in downloaded webpage
449 Uses t_ti, t_te, and rs to make progress visible
450v6 Aug 06, 2003 : final status messages now display summary of work
451 ( "Downloaded someqty scripts" or
452 "Everything was current")
453 Now GetLatestVimScripts is careful about downloading
454 GetLatestVimScripts.vim itself!
455 (goes to <NEW_GetLatestVimScripts.vim>)
456v5 Aug 04, 2003 : missing an endif near bottom
457v4 Jun 17, 2003 : redraw! just before each "considering" message
458v3 May 27, 2003 : Protects downloaded files from errant shell
459 expansions with single quotes: '...'
460v2 May 14, 2003 : extracts name of item to be obtained from the
461 script file. Uses it instead of comment field
462 for output filename; comment is used in the
463 "considering..." line and is now just a comment!
464 * Fixed a bug: a string-of-numbers is not the
465 same as a number, so I added zero to them
466 and they became numbers. Fixes comparison.
467
468==============================================================================
469vim:tw=78:ts=8:ft=help:fdm=marker