xref: /vim-8.2.3635/runtime/doc/pi_getscript.txt (revision 8024f936)
1*pi_getscript.txt*  For Vim version 8.2.  Last change: 2017 Aug 01
2>
3		GETSCRIPT REFERENCE MANUAL  by Charles E. Campbell
4<
5Author:  Charles E. Campbell  <[email protected]>
6	 (remove NOSPAM from the email address)
7						*GetLatestVimScripts-copyright*
8Copyright: (c) 2004-2012 by Charles E. Campbell	*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	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='
351
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
362recorded for the script in GetLatestVimScripts then it's time to download a
363newer 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
388v36 Apr 22, 2013 : * (glts) suggested use of plugin/**/*.vim instead of
389		     plugin/*.vim in globpath() call.
390		   * (Andy Wokula) got warning message when setting
391		     g:loaded_getscriptPlugin
392v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script URL has
393		     changed (somewhat).  However, it doesn't work, and
394		     the original one does (under Linux). I'll make it
395		     yet-another-option.
396v34 Jun 23, 2011 : * handles additional decompression options for tarballs
397                     (tgz taz tbz txz)
398v33 May 31, 2011 : * using fnameescape() instead of escape()
399		   * *.xz support
400v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
401v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
402		   * (David Schaefer) the acd option interferes with vimballs
403		     Solution: bypass the acd option
404v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
405		     issue an error message if it is not supported
406v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that
407                     getscriptPlugin.vim was setting it but not restoring it.
408v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin
409		     interface, register-a bypass
410    Oct 29, 2007   * Bill McCarthy suggested a change to getscript that avoids
411                     creating pop-up windows
412v24 Apr 16, 2007 : * removed save&restore of the fo option during script
413                     loading
414v23 Nov 03, 2006 : * ignores comments (#...)
415                   * handles vimballs
416v22 Oct 13, 2006 : * supports automatic use of curl if wget is not
417                     available
418v21 May 01, 2006 : * now takes advantage of autoloading.
419v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
420                     unzip needs the -o flag to overwrite.
421v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
422                     script! Fixed.
423v18 Mar 21, 2005 : * bugfix to automatic database construction
424                   * bugfix - nowrapscan caused an error
425                     (tnx to David Green for the fix)
426    Apr 01, 2005   * if shell is bash, "mv" instead of "ren" used in
427                     :AutoInstall:s, even though its o/s is windows
428    Apr 01, 2005   * when downloading errors occurred, GLVS was
429                     terminating early.  It now just goes on to trying
430                     the next script (after trying three times to
431                     download a script description page)
432    Apr 20, 2005   * bugfix - when a failure to download occurred,
433                     GetLatestVimScripts would stop early and claim that
434                     everything was current.  Fixed.
435v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
436                     defaults to 1, can be used to prevent all
437                     :AutoInstall:
438v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
439                   * fixed bug with :AutoInstall: use of helptags
440v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
441                     always preventing downloads (just usually).  Fixed.
442v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
443                     s:dotvim.  Fixed.
444v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
445                     is zero.  Useful for script authors; that way their
446                     own GetLatestVimScripts activity won't overwrite
447                     their scripts.
448v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
449                     was intended only for testing.  Removed, now works.
450                   * :AutoInstall: implemented
451v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
452                   * :GetLatestVimScripts command
453                   * (runtimepath)/GetLatest/GetLatestVimScripts.dat
454                     now holds scripts that need updating
455v10 Apr 19, 2004 : * moved history from script to doc
456v9  Jan 23, 2004 :   windows (win32/win16/win95) will use
457                     double quotes ("") whereas other systems will use
458                     single quotes ('') around the urls in calls via wget
459v8  Dec 01, 2003 :   makes three tries at downloading
460v7  Sep 02, 2003 :   added error messages if "Click on..." or "src_id="
461                     not found in downloaded webpage
462                     Uses t_ti, t_te, and rs to make progress visible
463v6  Aug 06, 2003 :   final status messages now display summary of work
464                     ( "Downloaded someqty scripts" or
465                       "Everything was current")
466                     Now GetLatestVimScripts is careful about downloading
467                     GetLatestVimScripts.vim itself!
468                     (goes to <NEW_GetLatestVimScripts.vim>)
469v5  Aug 04, 2003 :   missing an endif near bottom
470v4  Jun 17, 2003 :   redraw! just before each "considering" message
471v3  May 27, 2003 :   Protects downloaded files from errant shell
472                     expansions with single quotes: '...'
473v2  May 14, 2003 :   extracts name of item to be obtained from the
474                     script file.  Uses it instead of comment field
475                     for output filename; comment is used in the
476                     "considering..." line and is now just a comment!
477                   * Fixed a bug: a string-of-numbers is not the
478                     same as a number, so I added zero to them
479                     and they became numbers.  Fixes comparison.
480
481==============================================================================
482vim:tw=78:ts=8:noet:ft=help:fdm=marker
483