1*pi_getscript.txt* For Vim version 7.0. Last change: 2013 Nov 29 2> 3 GETSCRIPT REFERENCE MANUAL by Charles E. Campbell 4< 5Authors: 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:ft=help:fdm=marker 483