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