xref: /vim-8.2.3635/runtime/doc/pi_getscript.txt (revision 17fb0e89)
1*pi_getscript.txt*  For Vim version 7.0.  Last change: 2011 May 31
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-2010 by Charles E. Campbell, Jr.	*glvs-copyright*
9           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
54Your computer needs to have wget or curl for GetLatestVimScripts to do its work.
55
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
79Unless it has been defined elsewhere, >
80
81	:GLVS
82
83will 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
132download the associated page, and is assigned by vim.sf.net itself
133during initial uploading of the plugin.
134
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
142vim.sf.net; whenever it is greater than the one stored in the
143GetLatestVimScripts.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
157	884 1 :AutoInstall: AutoAlign.vim
158<
159assuming that such a line isn't already in GetLatestVimScripts.dat file.
160See |glvs-plugins| for more.  Thus, GetLatestVimScripts thus provides a
161comprehensive ability to keep your plugins up-to-date!
162
163In 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
183						*GetLatestVimScripts_dat*
184As an example of a <GetLatestVimScripts.dat> file:
185>
186    ScriptID SourceID Filename
187    --------------------------
188    294 1 :AutoInstall: Align.vim
189    120 2 Decho.vim
190     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
202		(this section is for plugin authors)~
203
204If 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
219are, then you may include :AutoInstall: just before "yourscriptname":
220>
221	                         src_id
222	                            v
223	" GetLatestVimScripts: ### ### :AutoInstall: yourscriptname
224	                        ^
225	                    scriptid
226<
227NOTE: The :AutoInstall: feature requires both the plugin author's and~
228      the user's permission to operate!~
229
230GetLatestVimScripts commands for those scripts are then appended, if not
231already present, to the user's GetLatest/GetLatestVimScripts.dat file.  It is
232a relatively painless way to automate the acquisition of any scripts your
233plugins depend upon.
234
235Now, as an author, you probably don't want GetLatestVimScripts to download
236your own scripts atop your own copy, thereby overwriting your not-yet-released
237hard 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>
327 	g:GetLatestVimScripts_allowautoinstall
328<	default= 1
329		This variable indicates whether GetLatestVimScripts is allowed
330		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.
340
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
351recorded for the script in GetLatestVimScripts then it's time to download a
352newer 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
377v33 May 31, 2011 : * using fnameescape() instead of escape()
378		   * *.xz support
379v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
380v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
381		   * (David Schaefer) the acd option interferes with vimballs
382		     Solution: bypass the acd option
383v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
384		     issue an error message if it is not supported
385v29 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
391v24 Apr 16, 2007 : * removed save&restore of the fo option during script
392                     loading
393v23 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
462