xref: /vim-8.2.3635/runtime/doc/pi_getscript.txt (revision 30b65817)
1*pi_getscript.txt*  For Vim version 7.0.  Last change: 2011 Jun 23
2>
3		GETSCRIPT REFERENCE MANUAL  by Charles E. Campbell, Jr.
4<
5Authors:  Charles E. Campbell, Jr.  <[email protected]>
6	  (remove NOSPAM from the email address)
7						*GetLatestVimScripts-copyright*
8Copyright: (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!
19
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
60Your computer needs to have wget or curl for GetLatestVimScripts to do its work.
61
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
85Unless it has been defined elsewhere, >
86
87	:GLVS
88
89will 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
138download the associated page, and is assigned by vim.sf.net itself
139during initial uploading of the plugin.
140
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
148vim.sf.net; whenever it is greater than the one stored in the
149GetLatestVimScripts.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
163	884 1 :AutoInstall: AutoAlign.vim
164<
165assuming that such a line isn't already in GetLatestVimScripts.dat file.
166See |glvs-plugins| for more.  Thus, GetLatestVimScripts thus provides a
167comprehensive ability to keep your plugins up-to-date!
168
169In 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
189						*GetLatestVimScripts_dat*
190As an example of a <GetLatestVimScripts.dat> file:
191>
192    ScriptID SourceID Filename
193    --------------------------
194    294 1 :AutoInstall: Align.vim
195    120 2 Decho.vim
196     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
208		(this section is for plugin authors)~
209
210If 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
225are, then you may include :AutoInstall: just before "yourscriptname":
226>
227	                         src_id
228	                            v
229	" GetLatestVimScripts: ### ### :AutoInstall: yourscriptname
230	                        ^
231	                    scriptid
232<
233NOTE: The :AutoInstall: feature requires both the plugin author's and~
234      the user's permission to operate!~
235
236GetLatestVimScripts commands for those scripts are then appended, if not
237already present, to the user's GetLatest/GetLatestVimScripts.dat file.  It is
238a relatively painless way to automate the acquisition of any scripts your
239plugins depend upon.
240
241Now, as an author, you probably don't want GetLatestVimScripts to download
242your own scripts atop your own copy, thereby overwriting your not-yet-released
243hard 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>
333 	g:GetLatestVimScripts_allowautoinstall
334<	default= 1
335		This variable indicates whether GetLatestVimScripts is allowed
336		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.
346
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
357recorded for the script in GetLatestVimScripts then it's time to download a
358newer 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
383v44 Jun 23, 2011 : * handles additional decompression options for tarballs
384                     (tgz taz tbz txz)
385v33 May 31, 2011 : * using fnameescape() instead of escape()
386		   * *.xz support
387v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
388v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
389		   * (David Schaefer) the acd option interferes with vimballs
390		     Solution: bypass the acd option
391v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
392		     issue an error message if it is not supported
393v29 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
399v24 Apr 16, 2007 : * removed save&restore of the fo option during script
400                     loading
401v23 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
470