blob: 6fed2740223f3dab53a61fc0cc841e3050ca03e0 [file] [log] [blame]
Bram Moolenaar3b1db362013-08-10 15:00:24 +02001*pi_getscript.txt* For Vim version 7.4. Last change: 2012 Apr 07
Bram Moolenaar9964e462007-05-05 17:54:07 +00002>
Bram Moolenaarff034192013-04-24 18:51:19 +02003 GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
Bram Moolenaar9964e462007-05-05 17:54:07 +00004<
Bram Moolenaarff034192013-04-24 18:51:19 +02005Authors: Charles E. Campbell <NdrOchip@ScampbellPfamilyA.Mbiz>
Bram Moolenaar9964e462007-05-05 17:54:07 +00006 (remove NOSPAM from the email address)
7 *GetLatestVimScripts-copyright*
Bram Moolenaarff034192013-04-24 18:51:19 +02008Copyright: (c) 2004-2012 by Charles E. Campbell *glvs-copyright*
Bram Moolenaar6be7f872012-01-20 21:08:56 +01009 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 Moolenaarff034192013-04-24 18:51:19 +0200346>
347 g:GetLatestVimScripts_scriptaddr
348< default='http://vim.sourceforge.net/script.php?script_id='
349 Override this if your system needs
350 ... ='http://vim.sourceforge.net/script/script.php?script_id='
Bram Moolenaar9964e462007-05-05 17:54:07 +0000351
352==============================================================================
3538. GetLatestVimScripts Algorithm *glvs-algorithm* *glvs-alg*
354
355The Vim sourceforge page dynamically creates a page by keying off of the
356so-called script-id. Within the webpage of
357
358 http://vim.sourceforge.net/scripts/script.php?script_id=40
359
360is a line specifying the latest source-id (src_id). The source identifier
361numbers are always increasing, hence if the src_id is greater than the one
Bram Moolenaar7263a772007-05-10 17:35:54 +0000362recorded for the script in GetLatestVimScripts then it's time to download a
Bram Moolenaar9964e462007-05-05 17:54:07 +0000363newer copy of that script.
364
365GetLatestVimScripts will then download the script and update its internal
366database of script ids, source ids, and scriptnames.
367
368The AutoInstall process will:
369
370 Move the file from GetLatest/ to the following directory
371 Unix : $HOME/.vim
372 Windows: $HOME\vimfiles
373 if the downloaded file ends with ".bz2"
374 bunzip2 it
375 else if the downloaded file ends with ".gz"
376 gunzip it
377 if the resulting file ends with ".zip"
378 unzip it
379 else if the resulting file ends with ".tar"
380 tar -oxvf it
381 else if the resulting file ends with ".vim"
382 move it to the plugin subdirectory
383
384
385==============================================================================
3869. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
387
Bram Moolenaarff034192013-04-24 18:51:19 +0200388v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script url has
389 changed (somewhat). However, it doesn't work, and
390 the original one does (under Linux). I'll make it
391 yet-another-option.
392v34 Jun 23, 2011 : * handles additional decompression options for tarballs
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100393 (tgz taz tbz txz)
Bram Moolenaar251e1912011-06-19 05:09:16 +0200394v33 May 31, 2011 : * using fnameescape() instead of escape()
395 * *.xz support
396v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
Bram Moolenaarc236c162008-07-13 17:41:49 +0000397v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100398 * (David Schaefer) the acd option interferes with vimballs
399 Solution: bypass the acd option
Bram Moolenaarc236c162008-07-13 17:41:49 +0000400v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100401 issue an error message if it is not supported
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000402v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that
403 getscriptPlugin.vim was setting it but not restoring it.
404v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin
405 interface, register-a bypass
406 Oct 29, 2007 * Bill McCarthy suggested a change to getscript that avoids
407 creating pop-up windows
Bram Moolenaar7263a772007-05-10 17:35:54 +0000408v24 Apr 16, 2007 : * removed save&restore of the fo option during script
409 loading
Bram Moolenaar9964e462007-05-05 17:54:07 +0000410v23 Nov 03, 2006 : * ignores comments (#...)
411 * handles vimballs
412v22 Oct 13, 2006 : * supports automatic use of curl if wget is not
413 available
414v21 May 01, 2006 : * now takes advantage of autoloading.
415v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
416 unzip needs the -o flag to overwrite.
417v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
418 script! Fixed.
419v18 Mar 21, 2005 : * bugfix to automatic database construction
420 * bugfix - nowrapscan caused an error
421 (tnx to David Green for the fix)
422 Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in
423 :AutoInstall:s, even though its o/s is windows
424 Apr 01, 2005 * when downloading errors occurred, GLVS was
425 terminating early. It now just goes on to trying
426 the next script (after trying three times to
427 download a script description page)
428 Apr 20, 2005 * bugfix - when a failure to download occurred,
429 GetLatestVimScripts would stop early and claim that
430 everything was current. Fixed.
431v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
432 defaults to 1, can be used to prevent all
433 :AutoInstall:
434v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
435 * fixed bug with :AutoInstall: use of helptags
436v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
437 always preventing downloads (just usually). Fixed.
438v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
439 s:dotvim. Fixed.
440v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
441 is zero. Useful for script authors; that way their
442 own GetLatestVimScripts activity won't overwrite
443 their scripts.
444v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
445 was intended only for testing. Removed, now works.
446 * :AutoInstall: implemented
447v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
448 * :GetLatestVimScripts command
449 * (runtimepath)/GetLatest/GetLatestVimScripts.dat
450 now holds scripts that need updating
451v10 Apr 19, 2004 : * moved history from script to doc
452v9 Jan 23, 2004 : windows (win32/win16/win95) will use
453 double quotes ("") whereas other systems will use
454 single quotes ('') around the urls in calls via wget
455v8 Dec 01, 2003 : makes three tries at downloading
456v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id="
457 not found in downloaded webpage
458 Uses t_ti, t_te, and rs to make progress visible
459v6 Aug 06, 2003 : final status messages now display summary of work
460 ( "Downloaded someqty scripts" or
461 "Everything was current")
462 Now GetLatestVimScripts is careful about downloading
463 GetLatestVimScripts.vim itself!
464 (goes to <NEW_GetLatestVimScripts.vim>)
465v5 Aug 04, 2003 : missing an endif near bottom
466v4 Jun 17, 2003 : redraw! just before each "considering" message
467v3 May 27, 2003 : Protects downloaded files from errant shell
468 expansions with single quotes: '...'
469v2 May 14, 2003 : extracts name of item to be obtained from the
470 script file. Uses it instead of comment field
471 for output filename; comment is used in the
472 "considering..." line and is now just a comment!
473 * Fixed a bug: a string-of-numbers is not the
474 same as a number, so I added zero to them
475 and they became numbers. Fixes comparison.
476
477==============================================================================
478vim:tw=78:ts=8:ft=help:fdm=marker