updated for version 7.2a
diff --git a/runtime/autoload/getscript.vim b/runtime/autoload/getscript.vim
index 729be83..c1e1aa3 100644
--- a/runtime/autoload/getscript.vim
+++ b/runtime/autoload/getscript.vim
@@ -1,8 +1,8 @@
 " ---------------------------------------------------------------------
 " getscript.vim
 "  Author:	Charles E. Campbell, Jr.
-"  Date:	May 11, 2007
-"  Version:	27
+"  Date:	May 30, 2008
+"  Version:	30
 "  Installing:	:help glvs-install
 "  Usage:	:help glvs
 "
@@ -11,7 +11,7 @@
 " ---------------------------------------------------------------------
 " Initialization:	{{{1
 " if you're sourcing this file, surely you can't be
-" expecting vim to be in its vi-compatible mode
+" expecting vim to be in its vi-compatible mode!
 if &cp
  echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
  finish
@@ -23,11 +23,44 @@
 if exists("g:loaded_getscript")
  finish
 endif
-let g:loaded_getscript= "v27"
+let g:loaded_getscript= "v30"
 
-" ---------------------------------------------------------------------
-"  Global Variables: {{{1
-" allow user to change the command for obtaining scripts (does fetch work?)
+" ---------------------------
+" Global Variables: {{{1
+" ---------------------------
+" Cygwin Detection ------- {{{2
+if !exists("g:getscript_cygwin")
+ if has("win32") || has("win95") || has("win64") || has("win16")
+  if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
+   let g:getscript_cygwin= 1
+  else
+   let g:getscript_cygwin= 0
+  endif
+ else
+  let g:getscript_cygwin= 0
+ endif
+endif
+" shell quoting character {{{2
+if exists("g:netrw_shq") && !exists("g:getscript_shq")
+ let g:getscript_shq= g:netrw_shq
+elseif !exists("g:getscript_shq")
+ if exists("&shq") && &shq != ""
+  let g:getscript_shq= &shq
+ elseif exists("&sxq") && &sxq != ""
+  let g:getscript_shq= &sxq
+ elseif has("win32") || has("win95") || has("win64") || has("win16")
+  if g:getscript_cygwin
+   let g:getscript_shq= "'"
+  else
+   let g:getscript_shq= '"'
+  endif
+ else
+  let g:getscript_shq= "'"
+ endif
+" call Decho("g:getscript_shq<".g:getscript_shq.">")
+endif
+
+" wget vs curl {{{2
 if !exists("g:GetLatestVimScripts_wget")
  if executable("wget")
   let g:GetLatestVimScripts_wget= "wget"
@@ -94,262 +127,6 @@
 silent! com -nargs=0 GLVS                call getscript#GetLatestVimScripts()
 
 " ---------------------------------------------------------------------
-"  GetOneScript: (Get Latest Vim Script) this function operates {{{1
-"    on the current line, interpreting two numbers and text as
-"    ScriptID, SourceID, and Filename.
-"    It downloads any scripts that have newer versions from vim.sf.net.
-fun! s:GetOneScript(...)
-"   call Dfunc("GetOneScript()")
-
- " set options to allow progress to be shown on screen
-  let t_ti= &t_ti
-  let t_te= &t_te
-  let rs  = &rs
-  set t_ti= t_te= nors
-
- " put current line on top-of-screen and interpret it into
- " a      script identifer  : used to obtain webpage
- "        source identifier : used to identify current version
- " and an associated comment: used to report on what's being considered
-  if a:0 >= 3
-   let scriptid = a:1
-   let srcid    = a:2
-   let fname    = a:3
-   let cmmnt    = ""
-"   call Decho("scriptid<".scriptid.">")
-"   call Decho("srcid   <".srcid.">")
-"   call Decho("fname   <".fname.">")
-  else
-   let curline  = getline(".")
-   if curline =~ '^\s*#'
-"    call Dret("GetOneScript : skipping a pure comment line")
-    return
-   endif
-   let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$'
-   try
-    let scriptid = substitute(curline,parsepat,'\1','e')
-   catch /^Vim\%((\a\+)\)\=:E486/
-    let scriptid= 0
-   endtry
-   try
-    let srcid    = substitute(curline,parsepat,'\2','e')
-   catch /^Vim\%((\a\+)\)\=:E486/
-    let srcid= 0
-   endtry
-   try
-    let fname= substitute(curline,parsepat,'\3','e')
-   catch /^Vim\%((\a\+)\)\=:E486/
-    let fname= ""
-   endtry
-   try
-    let cmmnt= substitute(curline,parsepat,'\4','e')
-   catch /^Vim\%((\a\+)\)\=:E486/
-    let cmmnt= ""
-   endtry
-"   call Decho("curline <".curline.">")
-"   call Decho("parsepat<".parsepat.">")
-"   call Decho("scriptid<".scriptid.">")
-"   call Decho("srcid   <".srcid.">")
-"   call Decho("fname   <".fname.">")
-  endif
-
-  if scriptid == 0 || srcid == 0
-   " When looking for :AutoInstall: lines, skip scripts that
-   " have  0 0 scriptname
-"   call Dret("GetOneScript : skipping a scriptid==srcid==0 line")
-   return
-  endif
-
-  let doautoinstall= 0
-  if fname =~ ":AutoInstall:"
-"   call Decho("fname<".fname."> has :AutoInstall:...")
-   let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','')
-"   call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall)
-   if s:autoinstall != ""
-    let doautoinstall = g:GetLatestVimScripts_allowautoinstall
-   endif
-  else
-   let aicmmnt= fname
-  endif
-"  call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall)
-
-  exe "norm z\<CR>"
-  redraw!
-"  call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid)
-  echomsg 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid
-
-  " grab a copy of the plugin's vim.sf.net webpage
-  let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid
-  let tmpfile    = tempname()
-  let v:errmsg   = ""
-
-  " make up to three tries at downloading the description
-  let itry= 1
-  while itry <= 3
-"   	call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
-  	if has("win32") || has("win16") || has("win95")
-"     call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"')
-     exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"'
-	else
-"     call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'")
-     exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'"
-	endif
-	if itry == 1
-    exe "silent vsplit ".tmpfile
-	else
-	 silent! e %
-	endif
-  
-   " find the latest source-id in the plugin's webpage
-   silent! 1
-   let findpkg= search('Click on the package to download','W')
-   if findpkg > 0
-    break
-   endif
-   let itry= itry + 1
-  endwhile
-"  call Decho(" --- end downloading tries while loop --- itry=".itry)
-
-  " testing: did finding "Click on the package..." fail?
-  if findpkg == 0 || itry >= 4
-    silent q!
-    call delete(tmpfile)
-   " restore options
-    let &t_ti        = t_ti
-    let &t_te        = t_te
-    let &rs          = rs
-    let s:downerrors = s:downerrors + 1
-"    call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">")
-    echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">"
-"    call Dret("GetOneScript : srch for /Click on the package/ failed")
-    return
-  endif
-"  call Decho('found "Click on the package to download"')
-
-  let findsrcid= search('src_id=','W')
-  if findsrcid == 0
-    silent q!
-    call delete(tmpfile)
-   " restore options
-	let &t_ti        = t_ti
-	let &t_te        = t_te
-	let &rs          = rs
-	let s:downerrors = s:downerrors + 1
-"  	call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">")
-  	echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">"
-"	call Dret("GetOneScript : srch for /src_id/ failed")
-  	return
-  endif
-"  call Decho('found "src_id=" in description page')
-
-  let srcidpat   = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$'
-  let latestsrcid= substitute(getline("."),srcidpat,'\1','')
-  let sname      = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded
-"  call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> sname<".sname.">")
-  silent q!
-  call delete(tmpfile)
-
-  " convert the strings-of-numbers into numbers
-  let srcid       = srcid       + 0
-  let latestsrcid = latestsrcid + 0
-"  call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">")
-
-  " has the plugin's most-recent srcid increased, which indicates
-  " that it has been updated
-  if latestsrcid > srcid
-"   call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">")
-
-   let s:downloads= s:downloads + 1
-   if sname == bufname("%")
-    " GetLatestVimScript has to be careful about downloading itself
-    let sname= "NEW_".sname
-   endif
-
-   " the plugin has been updated since we last obtained it, so download a new copy
-"   call Decho("...downloading new <".sname.">")
-   echomsg "...downloading new <".sname.">"
-   if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")
-"    call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"')
-    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"'
-   else
-"    call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'")
-    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'"
-   endif
-
-   " AutoInstall: only if doautoinstall is so indicating
-   if doautoinstall
-"     call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
-     if filereadable(sname)
-"       call Decho("move <".sname."> to ".s:autoinstall)
-       exe "silent !".g:GetLatestVimScripts_mv." ".sname." ".s:autoinstall
-       let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
-"       call Decho("exe cd ".s:autoinstall)
-       exe "cd ".s:autoinstall
-      
-       " decompress
-       if sname =~ '\.bz2$'
-"         call Decho("decompress: attempt to bunzip2 ".sname)
-         exe "silent !bunzip2 ".sname
-         let sname= substitute(sname,'\.bz2$','','')
-"         call Decho("decompress: new sname<".sname."> after bunzip2")
-       elseif sname =~ '\.gz$'
-"         call Decho("decompress: attempt to gunzip ".sname)
-         exe "silent !gunzip ".sname
-         let sname= substitute(sname,'\.gz$','','')
-"         call Decho("decompress: new sname<".sname."> after gunzip")
-       endif
-      
-       " distribute archive(.zip, .tar, .vba) contents
-       if sname =~ '\.zip$'
-"         call Decho("dearchive: attempt to unzip ".sname)
-         exe "silent !unzip -o ".sname
-       elseif sname =~ '\.tar$'
-"         call Decho("dearchive: attempt to untar ".sname)
-         exe "silent !tar -xvf ".sname
-       elseif sname =~ '\.vba$'
-"         call Decho("dearchive: attempt to handle a vimball: ".sname)
-         silent 1split
-         exe "silent e ".sname
-         silent so %
-         silent q
-       endif
-      
-       if sname =~ '.vim$'
-"         call Decho("dearchive: attempt to simply move ".sname." to plugin")
-         exe "silent !".g:GetLatestVimScripts_mv." ".sname." plugin"
-       endif
-      
-       " helptags step
-       let docdir= substitute(&rtp,',.*','','e')."/doc"
-"       call Decho("helptags: docdir<".docdir.">")
-       exe "helptags ".docdir
-       exe "cd ".curdir
-     endif
-     if fname !~ ':AutoInstall:'
-      let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt
-     else
-      let modline=scriptid." ".latestsrcid." ".fname.cmmnt
-     endif
-   else
-     let modline=scriptid." ".latestsrcid." ".fname.cmmnt
-   endif
-
-   " update the data in the <GetLatestVimScripts.dat> file
-   call setline(line("."),modline)
-"   call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
-"  else " Decho
-"   call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update")
-  endif
-
- " restore options
-  let &t_ti= t_ti
-  let &t_te= t_te
-  let &rs  = rs
-
-"  call Dret("GetOneScript")
-endfun
-
-" ---------------------------------------------------------------------
 " GetLatestVimScripts: this function gets the latest versions of {{{1
 "                      scripts based on the list in
 "   (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat
@@ -409,9 +186,11 @@
   " record current directory, change to datadir, open split window with
   " datafile
   let origdir= getcwd()
-  exe "cd ".escape(substitute(datadir,'\','/','ge'),"|[]*'\" #")
+"  call Decho("exe cd ".fnameescape(substitute(datadir,'\','/','ge')))
+  exe "cd ".fnameescape(substitute(datadir,'\','/','ge'))
   split
-  exe "e ".escape(substitute(datafile,'\','/','ge'),"|[]*'\" #")
+"  call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge')))
+  exe "e ".fnameescape(substitute(datafile,'\','/','ge'))
   res 1000
   let s:downloads = 0
   let s:downerrors= 0
@@ -421,36 +200,41 @@
 "  call Decho("searching plugins for GetLatestVimScripts dependencies")
   let lastline    = line("$")
 "  call Decho("lastline#".lastline)
-  let plugins     = split(globpath(&rtp,"plugin/*.vim"))
+  let plugins     = split(globpath(&rtp,"plugin/*.vim"),'\n')
   let foundscript = 0
   let firstdir= ""
 
   for plugin in plugins
+"   call Decho("plugin<".plugin.">")
 
    " don't process plugins in system directories
    if firstdir == ""
     let firstdir= substitute(plugin,'[/\\][^/\\]\+$','','')
-"    call Decho("firstdir<".firstdir.">")
+"    call Decho("setting firstdir<".firstdir.">")
    else
     let curdir= substitute(plugin,'[/\\][^/\\]\+$','','')
 "    call Decho("curdir<".curdir.">")
     if curdir != firstdir
+"     call Decho("skipping subsequent plugins: curdir<".curdir."> != firstdir<".firstdir.">")
      break
     endif
    endif
 
    " read plugin in
+   " evidently a :r creates a new buffer (the "#" buffer) that is subsequently unused -- bwiping it
    $
 "   call Decho(" ")
 "   call Decho(".dependency checking<".plugin."> line$=".line("$"))
-   exe "silent r ".plugin
+"   call Decho("exe silent r ".fnameescape(plugin))
+   exe "silent r ".fnameescape(plugin)
+   exe "silent bwipe ".bufnr("#")
 
    while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0
     let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
     let llp1     = lastline+1
 "    call Decho("..newscript<".newscript.">")
 
-    " don't process ""GetLatestVimScripts lines
+    " don't process ""GetLatestVimScripts lines -- those that have been doubly-commented out
     if newscript !~ '^"'
      " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile
      let curline     = line(".")
@@ -485,14 +269,15 @@
   endfor
 "  call Decho("--- end dependency checking loop ---  foundscript=".foundscript)
 "  call Decho(" ")
+"  call Dredir("BUFFER TEST (GetLatestVimScripts 1)","ls!")
 
   if foundscript == 0
-   set nomod
+   setlocal nomod
   endif
 
   " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
 "  call Decho("begin: checking out-of-date scripts using datafile<".datafile.">")
-  set lz
+  setlocal lz
   1
 "  /^-----/,$g/^\s*\d/call Decho(getline("."))
   1
@@ -529,14 +314,302 @@
   q
 
   " restore events and current directory
-  exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #")
+  exe "cd ".fnameescape(substitute(origdir,'\','/','ge'))
   let &ei= eikeep
-  set nolz
+  setlocal nolz
+"  call Dredir("BUFFER TEST (GetLatestVimScripts 2)","ls!")
 "  call Dret("GetLatestVimScripts : did ".s:downloads." downloads")
 endfun
-" ---------------------------------------------------------------------
 
+" ---------------------------------------------------------------------
+"  GetOneScript: (Get Latest Vim Script) this function operates {{{1
+"    on the current line, interpreting two numbers and text as
+"    ScriptID, SourceID, and Filename.
+"    It downloads any scripts that have newer versions from vim.sf.net.
+fun! s:GetOneScript(...)
+"   call Dfunc("GetOneScript()")
+
+ " set options to allow progress to be shown on screen
+  let rega= @a
+  let t_ti= &t_ti
+  let t_te= &t_te
+  let rs  = &rs
+  set t_ti= t_te= nors
+
+ " put current line on top-of-screen and interpret it into
+ " a      script identifer  : used to obtain webpage
+ "        source identifier : used to identify current version
+ " and an associated comment: used to report on what's being considered
+  if a:0 >= 3
+   let scriptid = a:1
+   let srcid    = a:2
+   let fname    = a:3
+   let cmmnt    = ""
+"   call Decho("scriptid<".scriptid.">")
+"   call Decho("srcid   <".srcid.">")
+"   call Decho("fname   <".fname.">")
+  else
+   let curline  = getline(".")
+   if curline =~ '^\s*#'
+    let @a= rega
+"    call Dret("GetOneScript : skipping a pure comment line")
+    return
+   endif
+   let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$'
+   try
+    let scriptid = substitute(curline,parsepat,'\1','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let scriptid= 0
+   endtry
+   try
+    let srcid    = substitute(curline,parsepat,'\2','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let srcid= 0
+   endtry
+   try
+    let fname= substitute(curline,parsepat,'\3','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let fname= ""
+   endtry
+   try
+    let cmmnt= substitute(curline,parsepat,'\4','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let cmmnt= ""
+   endtry
+"   call Decho("curline <".curline.">")
+"   call Decho("parsepat<".parsepat.">")
+"   call Decho("scriptid<".scriptid.">")
+"   call Decho("srcid   <".srcid.">")
+"   call Decho("fname   <".fname.">")
+  endif
+
+  if scriptid == 0 || srcid == 0
+   " When looking for :AutoInstall: lines, skip scripts that have   0 0 scriptname
+   let @a= rega
+"   call Dret("GetOneScript : skipping a scriptid==srcid==0 line")
+   return
+  endif
+
+  let doautoinstall= 0
+  if fname =~ ":AutoInstall:"
+"   call Decho("case AutoInstall: fname<".fname.">")
+   let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','')
+"   call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall)
+   if s:autoinstall != ""
+    let doautoinstall = g:GetLatestVimScripts_allowautoinstall
+   endif
+  else
+   let aicmmnt= fname
+  endif
+"  call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall)
+
+  exe "norm z\<CR>"
+  redraw!
+"  call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid)
+  echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid
+
+  " grab a copy of the plugin's vim.sf.net webpage
+  let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid
+  let tmpfile    = tempname()
+  let v:errmsg   = ""
+
+  " make up to three tries at downloading the description
+  let itry= 1
+  while itry <= 3
+"   call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
+   if has("win32") || has("win16") || has("win95")
+"    call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)."|bw!")
+    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)|bw!
+   else
+"    call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr))
+    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr)
+   endif
+   if itry == 1
+    exe "silent vsplit ".fnameescape(tmpfile)
+   else
+    silent! e %
+   endif
+   setlocal bh=wipe
+  
+   " find the latest source-id in the plugin's webpage
+   silent! 1
+   let findpkg= search('Click on the package to download','W')
+   if findpkg > 0
+    break
+   endif
+   let itry= itry + 1
+  endwhile
+"  call Decho(" --- end downloading tries while loop --- itry=".itry)
+
+  " testing: did finding "Click on the package..." fail?
+  if findpkg == 0 || itry >= 4
+   silent q!
+   call delete(tmpfile)
+  " restore options
+   let &t_ti        = t_ti
+   let &t_te        = t_te
+   let &rs          = rs
+   let s:downerrors = s:downerrors + 1
+"   call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">")
+   echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">"
+"   call Dret("GetOneScript : srch for /Click on the package/ failed")
+   let @a= rega
+   return
+  endif
+"  call Decho('found "Click on the package to download"')
+
+  let findsrcid= search('src_id=','W')
+  if findsrcid == 0
+   silent q!
+   call delete(tmpfile)
+  " restore options
+   let &t_ti        = t_ti
+   let &t_te        = t_te
+   let &rs          = rs
+   let s:downerrors = s:downerrors + 1
+"   call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">")
+   echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">"
+   let @a= rega
+"  call Dret("GetOneScript : srch for /src_id/ failed")
+   return
+  endif
+"  call Decho('found "src_id=" in description page')
+
+  let srcidpat   = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$'
+  let latestsrcid= substitute(getline("."),srcidpat,'\1','')
+  let sname      = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded
+"  call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> sname<".sname.">")
+  silent q!
+  call delete(tmpfile)
+
+  " convert the strings-of-numbers into numbers
+  let srcid       = srcid       + 0
+  let latestsrcid = latestsrcid + 0
+"  call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">")
+
+  " has the plugin's most-recent srcid increased, which indicates
+  " that it has been updated
+  if latestsrcid > srcid
+"   call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">")
+
+   let s:downloads= s:downloads + 1
+   if sname == bufname("%")
+    " GetLatestVimScript has to be careful about downloading itself
+    let sname= "NEW_".sname
+   endif
+
+   " the plugin has been updated since we last obtained it, so download a new copy
+"   call Decho("...downloading new <".sname.">")
+   echomsg "...downloading new <".sname.">"
+   if has("win32") || has("win16") || has("win95")
+"    call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)."|q")
+    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)|q
+   else
+"    call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='))
+    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id=')
+   endif
+
+   " AutoInstall: only if doautoinstall has been requested by the plugin itself
+   if doautoinstall
+"    call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
+    if filereadable(sname)
+     call Decho("exe silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall))
+     exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall)
+     let curdir    = escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
+     let installdir= curdir."/Installed"
+     if !isdirectory(installdir)
+      call mkdir(installdir)
+     endif
+"    call Decho("exe cd ".fnameescape(s:autoinstall))
+     exe "cd ".fnameescape(s:autoinstall)
+     
+     " decompress
+     if sname =~ '\.bz2$'
+"      call Decho("decompress: attempt to bunzip2 ".sname)
+      exe "silent !bunzip2 ".s:Escape(sname)
+      let sname= substitute(sname,'\.bz2$','','')
+"      call Decho("decompress: new sname<".sname."> after bunzip2")
+     elseif sname =~ '\.gz$'
+"      call Decho("decompress: attempt to gunzip ".sname)
+      exe "silent !gunzip ".s:Escape(sname)
+      let sname= substitute(sname,'\.gz$','','')
+"      call Decho("decompress: new sname<".sname."> after gunzip")
+     endif
+     
+     " distribute archive(.zip, .tar, .vba) contents
+     if sname =~ '\.zip$'
+"      call Decho("dearchive: attempt to unzip ".sname)
+      exe "silent !unzip -o ".s:Escape(sname)
+     elseif sname =~ '\.tar$'
+"      call Decho("dearchive: attempt to untar ".sname)
+      exe "silent !tar -xvf ".s:Escape(sname)
+     elseif sname =~ '\.vba$'
+"      call Decho("dearchive: attempt to handle a vimball: ".sname)
+      silent 1split
+      exe "silent e ".fnameescape(sname)
+      silent so %
+      silent q
+     endif
+     
+     if sname =~ '.vim$'
+"      call Decho("dearchive: attempt to simply move ".sname." to plugin")
+      exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." plugin"
+     else
+"      call Decho("dearchive: move <".sname."> to installdir<".installdir.">")
+      exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".installdir
+     endif
+     
+     " helptags step
+     let docdir= substitute(&rtp,',.*','','e')."/doc"
+"     call Decho("helptags: docdir<".docdir.">")
+     exe "helptags ".fnameescape(docdir)
+     exe "cd ".fnameescape(curdir)
+    endif
+    if fname !~ ':AutoInstall:'
+     let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt
+    else
+     let modline=scriptid." ".latestsrcid." ".fname.cmmnt
+    endif
+   else
+    let modline=scriptid." ".latestsrcid." ".fname.cmmnt
+   endif
+
+   " update the data in the <GetLatestVimScripts.dat> file
+   call setline(line("."),modline)
+"   call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
+"  else " Decho
+"   call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update")
+  endif
+
+ " restore options
+  let &t_ti = t_ti
+  let &t_te = t_te
+  let &rs   = rs
+  let @a    = rega
+"  call Dredir("BUFFER TEST (GetOneScript)","ls!")
+
+"  call Dret("GetOneScript")
+endfun
+
+" ---------------------------------------------------------------------
+" s:Escape: makes a string safe&suitable for the shell {{{2
+fun! s:Escape(name)
+"  call Dfunc("s:Escape(name<".a:name.">)")
+  if exists("*shellescape")
+   " shellescape() was added by patch 7.0.111
+   let name= shellescape(a:name)
+  else
+   let name= g:getscript_shq . a:name . g:getscript_shq
+  endif
+"  call Dret("s:Escape ".name)
+  return name
+endfun
+
+" ---------------------------------------------------------------------
 " Restore Options: {{{1
 let &cpo= s:keepcpo
+unlet s:keepcpo
 
+" ---------------------------------------------------------------------
+"  Modelines: {{{1
 " vim: ts=8 sts=2 fdm=marker nowrap