changeset 719:82ef0c58b012

updated for version 7.0219
author vimboss
date Thu, 09 Mar 2006 22:32:39 +0000
parents 7b21554be7a1
children e180933b876a
files Filelist runtime/autoload/netrw.vim runtime/autoload/netrwSettings.vim runtime/doc/os_mac.txt runtime/doc/pi_netrw.txt runtime/doc/tags runtime/menu.vim runtime/syntax/sqlanywhere.vim src/ex_getln.c src/gui_mac.c src/option.c src/version.h
diffstat 12 files changed, 1199 insertions(+), 288 deletions(-) [+]
line wrap: on
line diff
--- a/Filelist
+++ b/Filelist
@@ -498,6 +498,7 @@ RT_SCRIPTS =	\
 		runtime/filetype.vim \
 		runtime/scripts.vim \
 		runtime/menu.vim \
+		runtime/macmap.vim \
 		runtime/delmenu.vim \
 		runtime/synmenu.vim \
 		runtime/makemenu.vim \
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Jan 30, 2006
-" Version:	78
+" Date:		Mar 09, 2006
+" Version:	79
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v78"
+let g:loaded_netrw = "v79"
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
@@ -76,7 +76,7 @@ if !exists("g:netrw_ssh_cmd")
  let g:netrw_ssh_cmd= "ssh"
 endif
 
-if has("win32") || has("win95") || has("win64") || has("win16")
+if (has("win32") || has("win95") || has("win64") || has("win16"))
   \ && exists("g:netrw_use_nt_rcp")
   \ && g:netrw_use_nt_rcp
   \ && executable( $SystemRoot .'/system32/rcp.exe')
@@ -191,6 +191,9 @@ if exists("g:netrw_silent") && g:netrw_s
 else
  let g:netrw_silentxfer= ""
 endif
+if !exists("g:netrw_fastbrowse")
+ let g:netrw_fastbrowse= 1
+endif
 if !exists("g:netrw_sort_by")
  " alternatives: date size
  let g:netrw_sort_by= "name"
@@ -224,6 +227,12 @@ if !exists("s:netrw_cd_escape")
   let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\"
  endif
 endif
+if !exists("g:netrw_fname_escape")
+ let g:netrw_fname_escape= ' ?&;'
+endif
+if !exists("g:netrw_tmpfile_escape")
+ let g:netrw_tmpfile_escape= ' ?&;'
+endif
 if !exists("s:netrw_glob_escape")
  if has("win32") || has("win95") || has("win64") || has("win16")
   let s:netrw_glob_escape= ""
@@ -292,49 +301,48 @@ endfun
 
 " ------------------------------------------------------------------------
 " NetRead: responsible for reading a file over the net {{{2
-fun! netrw#NetRead(...)
-"  call Dfunc("NetRead(a:1<".a:1.">)")
- 
+fun! netrw#NetRead(mode,...)
+"  call Dfunc("NetRead(mode=".a:mode.",...) a:0=".a:0)
+
   " save options
   call s:NetOptionSave()
- 
-  " Special Exception: if a file is named "0r", then {{{3
-  "		      "0r" will be used to read the
-  "		      following files instead of "r"
-  if	a:0 == 0
-   let readcmd= "r"
-   let ichoice= 0
-  elseif a:1 == "0r"
+
+  if     a:mode == 0 " read remote file before current line
    let readcmd = "0r"
-   let ichoice = 2
-  else
+  elseif a:mode == 1 " read file after current line
    let readcmd = "r"
-   let ichoice = 1
+  elseif a:mode == 2 " replace with remote file
+   let readcmd = "%r"
+  else
+   exe a:mode
+   let readcmd = "r"
   endif
- 
+  let ichoice = (a:0 == 0)? 0 : 1
+"  call Decho("readcmd<".readcmd."> ichoice=".ichoice)
+
   " get name of a temporary file and set up shell-quoting character {{{3
   let tmpfile= tempname()
-  let tmpfile= substitute(tmpfile,'\','/','ge')
+  let tmpfile= escape(substitute(tmpfile,'\','/','ge'),g:netrw_tmpfile_escape)
   if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
    echohl Error | echo "***netrw*** your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!" | echohl None
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("NetRead")
    return
   endif
- 
-"  call Decho("ichoice=".ichoice." readcmd<".readcmd.">")
+"  call Decho("tmpfile<".tmpfile.">")
+
   while ichoice <= a:0
- 
+
    " attempt to repeat with previous host-file-etc
    if exists("b:netrw_lastfile") && a:0 == 0
 "    call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">")
     let choice = b:netrw_lastfile
     let ichoice= ichoice + 1
- 
+
    else
     exe "let choice= a:" . ichoice
 "    call Decho("no lastfile: choice<" . choice . ">")
- 
+
     if match(choice,"?") == 0
      " give help
      echomsg 'NetRead Usage:'
@@ -361,7 +369,7 @@ fun! netrw#NetRead(...)
        "  case "... ... ..."
       let choice      = strpart(choice,1,strlen(choice)-1)
       let wholechoice = ""
- 
+
       while match(choice,"\"$") == -1
        let wholechoice = wholechoice . " " . choice
        let ichoice     = ichoice + 1
@@ -382,7 +390,7 @@ fun! netrw#NetRead(...)
 
 "   call Decho("choice<" . choice . ">")
    let ichoice= ichoice + 1
- 
+
    " fix up windows urls
    if has("win32") || has("win95") || has("win64") || has("win16")
     let choice = substitute(choice,'\\','/','ge')
@@ -391,10 +399,10 @@ fun! netrw#NetRead(...)
     exe 'lcd ' . fnamemodify(tmpfile,':h')
     let tmpfile = fnamemodify(tmpfile,':t')
    endif
- 
+
    " Determine method of read (ftp, rcp, etc) {{{3
    call s:NetMethod(choice)
- 
+
    " Check if NetBrowse() should be handling this request
 "   call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">")
    if choice =~ "^.*[\/]$"
@@ -409,14 +417,14 @@ fun! netrw#NetRead(...)
     let tmpfile= substitute(tmpfile,"$",suffix,'e')
 "    call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix) netrw_fname<".b:netrw_fname.">")
    endif
- 
+
    " ============
    " Perform Protocol-Based Read {{{3
    " ===========================
    if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
     echo "(netrw) Processing your read request..."
    endif
- 
+
    ".........................................
    " rcp:  NetRead Method #1 {{{3
    if  b:netrw_method == 1 " read with rcp
@@ -439,16 +447,16 @@ fun! netrw#NetRead(...)
      let uid_machine = g:netrw_machine
     endif
    endif
-"   call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
-   exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
+"   call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile)
+   exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile
    let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
    let b:netrw_lastfile = choice
- 
+
    ".........................................
    " ftp + <.netrc>:  NetRead Method #2 {{{3
    elseif b:netrw_method  == 2		" read with ftp + <.netrc>
 "     call Decho("read via ftp+.netrc (method #2)")
-     let netrw_fname= b:netrw_fname
+     let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
      new
      setlocal ff=unix
      exe "put ='".g:netrw_ftpmode."'"
@@ -473,13 +481,13 @@ fun! netrw#NetRead(...)
      bd!
      let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
      let b:netrw_lastfile = choice
- 
+
    ".........................................
    " ftp + machine,id,passwd,filename:  NetRead Method #3 {{{3
    elseif b:netrw_method == 3		" read with ftp + machine, id, passwd, and fname
     " Construct execution string (four lines) which will be passed through filter
 "    call Decho("read via ftp+mipf (method #3)")
-    let netrw_fname= b:netrw_fname
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     new
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -489,7 +497,7 @@ fun! netrw#NetRead(...)
      put ='open '.g:netrw_machine
 "     call Decho("filter input: ".getline("."))
     endif
- 
+
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
 "     call Decho("filter input: ".getline("."))
@@ -499,14 +507,14 @@ fun! netrw#NetRead(...)
      put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
 "     call Decho("filter input: ".getline("."))
     endif
- 
+
     if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
      put =g:netrw_ftpmode
 "     call Decho("filter input: ".getline("."))
     endif
     put ='get \"'.netrw_fname.'\" '.tmpfile
 "     call Decho("filter input: ".getline("."))
- 
+
     " perform ftp:
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
@@ -525,7 +533,7 @@ fun! netrw#NetRead(...)
     bd!
     let result		= s:NetGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " scp: NetRead Method #4 {{{3
    elseif     b:netrw_method  == 4	" read with scp
@@ -537,15 +545,15 @@ fun! netrw#NetRead(...)
     endif
     if g:netrw_cygwin == 1
      let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
-"     call  Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".cygtmpfile)
-     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".cygtmpfile
+"     call  Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".cygtmpfile)
+     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".cygtmpfile
     else
-"     call  Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".tmpfile)
-     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".tmpfile
+"     call  Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".tmpfile)
+     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".tmpfile
     endif
     let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " http: NetRead Method #5 (wget) {{{3
    elseif     b:netrw_method  == 5
@@ -558,17 +566,18 @@ fun! netrw#NetRead(...)
 "     call Dret("NetRead")
      return
     endif
- 
+
     if match(b:netrw_fname,"#") == -1
      " simple wget
-"     call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&'))
-     exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&')
+     let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+"     call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_fname)
+     exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_fname
      let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
- 
+
     else
      " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker)
-     let netrw_html= substitute(b:netrw_fname,"#.*$","","")
-     let netrw_tag = substitute(b:netrw_fname,"^.*#","","")
+     let netrw_html= substitute(netrw_fname,"#.*$","","")
+     let netrw_tag = substitute(netrw_fname,"^.*#","","")
 "     call Decho("netrw_html<".netrw_html.">")
 "     call Decho("netrw_tag <".netrw_tag.">")
 "     call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_html)
@@ -578,14 +587,14 @@ fun! netrw#NetRead(...)
      exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>"
     endif
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " cadaver: NetRead Method #6 {{{3
    elseif     b:netrw_method  == 6
 "    call Decho("read via cadaver (method #6)")
- 
+
     " Construct execution string (four lines) which will be passed through filter
-    let netrw_fname= b:netrw_fname
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     new
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -594,7 +603,7 @@ fun! netrw#NetRead(...)
      put ='open '.g:netrw_machine
     endif
     put ='user '.g:netrw_uid.' '.g:netrw_passwd
- 
+
     if g:netrw_cygwin == 1
      let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
      put ='get '.netrw_fname.' '.cygtmpfile
@@ -602,7 +611,7 @@ fun! netrw#NetRead(...)
      put ='get '.netrw_fname.' '.tmpfile
     endif
     put ='quit'
- 
+
     " perform cadaver operation:
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_dav_cmd)
@@ -610,26 +619,28 @@ fun! netrw#NetRead(...)
     bd!
     let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " rsync: NetRead Method #7 {{{3
    elseif     b:netrw_method  == 7
 "    call Decho("read via rsync (method #7)")
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     if g:netrw_cygwin == 1
      let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
-"     call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile)
-     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile
+"     call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile)
+     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile
     else
-"     call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
-     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
+"     call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile)
+     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile
     endif
     let result		= s:NetGetFile(readcmd,tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " fetch: NetRead Method #8 {{{3
    "    fetch://[user@]host[:http]/path
    elseif     b:netrw_method  == 8
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     if g:netrw_fetch_cmd == ""
      if !exists("g:netrw_quiet")
       echohl Error | echo "***netrw*** fetch command not available" | echohl None
@@ -643,41 +654,42 @@ fun! netrw#NetRead(...)
      let netrw_option= "ftp"
     endif
 "    call Decho("read via fetch for ".netrw_option)
- 
+
     if exists("g:netrw_uid") && g:netrw_uid != "" && exists("g:netrw_passwd") && g:netrw_passwd != ""
-"     call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&'))
-     exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&')
+"     call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname)
+     exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname
     else
-"     call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&'))
-     exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&')
+"     call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".netrw_fname)
+     exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".netrw_fname
     endif
- 
+
     let result		= s:NetGetFile(readcmd,tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " sftp: NetRead Method #9 {{{3
    elseif     b:netrw_method  == 9
 "    call Decho("read via sftp (method #4)")
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     if g:netrw_cygwin == 1
      let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
-"     call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile)
-"     call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile)
-     exe "!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile
+"     call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile)
+"     call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile)
+     exe "!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile
     else
-"     call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
-     exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
+"     call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile)
+     exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile
     endif
     let result		= s:NetGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " Complain {{{3
    else
     echo "***warning*** unable to comply with your request<" . choice . ">"
    endif
   endwhile
- 
+
   " cleanup {{{3
 "  call Decho("cleanup")
   if exists("b:netrw_method")
@@ -691,18 +703,21 @@ endfun
 
 " ------------------------------------------------------------------------
 " NetGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2
+"    readcmd == %r : replace buffer with newly read file
+"            == 0r : read file at top of buffer
+"            == r  : read file after current line
 fun! s:NetGetFile(readcmd, tfile, method)
-"   call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)")
+"  call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)")
 
   " get name of remote filename (ie. url and all)
   let rfile= bufname("%")
 "  call Decho("rfile<".rfile.">")
- 
+
   if exists("*NetReadFixup")
    " for the use of NetReadFixup (not otherwise used internally)
    let line2= line("$")
   endif
- 
+
   " transform paths from / to \ for Windows (except for cygwin)
   if &term == "win32"
    if g:netrw_cygwin
@@ -716,8 +731,8 @@ fun! s:NetGetFile(readcmd, tfile, method
    let tfile= a:tfile
 "   call Decho("tfile=a:tfile<".tfile.">")
   endif
- 
-  if a:readcmd[0] == '0'
+
+  if a:readcmd[0] == '%'
   " get file into buffer
 
 "   call Dredir("ls!","starting buffer list")
@@ -749,18 +764,17 @@ fun! s:NetGetFile(readcmd, tfile, method
    let lastline= line("$")
 "   call Decho("exe<".a:readcmd." ".v:cmdarg." ".tfile.">  line#".curline)
    exe a:readcmd." ".v:cmdarg." ".tfile
-   let line1        = curline + 1
-   let line2        = line("$") - lastline + 1
+   let line1= curline + 1
+   let line2= line("$") - lastline + 1
 
   else
    " not readable
-"   call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)")
    echohl WarningMsg | echo "***netrw*** file <".tfile."> not readable"| echohl None
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("NetGetFile : tfile<".tfile."> not readable")
    return
   endif
- 
+
   " User-provided (ie. optional) fix-it-up command
   if exists("*NetReadFixup")
 "   call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
@@ -773,9 +787,9 @@ fun! s:NetGetFile(readcmd, tfile, method
   if has("gui") && has("gui_running")
    silent! emenu Buffers.Refresh\ menu
   endif
- 
+
 "  call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".filereadable(a:tfile))
- 
+
  " make sure file is being displayed
   redraw!
 "  call Dret("NetGetFile")
@@ -785,26 +799,26 @@ endfun
 " NetWrite: responsible for writing a file over the net {{{2
 fun! netrw#NetWrite(...) range
 "  call Dfunc("NetWrite(a:0=".a:0.")")
- 
+
   " option handling
   let mod= 0
   call s:NetOptionSave()
- 
+
   " Get Temporary Filename {{{3
-  let tmpfile= tempname()
+  let tmpfile= escape(tempname(),g:netrw_tmpfile_escape)
   if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
    echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!"
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("NetWrite")
    return
   endif
- 
+
   if a:0 == 0
    let ichoice = 0
   else
    let ichoice = 1
   endif
- 
+
   if &binary
    " for binary writes, write entire file.  Line numbers don't really make sense.
    " Supports the writing of tar and zip files.
@@ -815,9 +829,9 @@ fun! netrw#NetWrite(...) range
 "   call Decho("silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile)
    silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile
   endif
- 
+
   while ichoice <= a:0
- 
+
    " Process arguments: {{{3
    " attempt to repeat with previous host-file-etc
    if exists("b:netrw_lastfile") && a:0 == 0
@@ -826,7 +840,7 @@ fun! netrw#NetWrite(...) range
     let ichoice= ichoice + 1
    else
     exe "let choice= a:" . ichoice
- 
+
     " Reconstruct Choice if choice starts with '"'
     if match(choice,"?") == 0
      echomsg 'NetWrite Usage:"'
@@ -841,7 +855,7 @@ fun! netrw#NetWrite(...) range
      echomsg ':Nwrite scp://[user@]machine[[:#]port]/path uses scp'
      echomsg ':Nwrite sftp://[user@]machine/path          uses sftp'
      break
- 
+
     elseif match(choice,"^\"") != -1
      if match(choice,"\"$") != -1
        " case "..."
@@ -850,7 +864,7 @@ fun! netrw#NetWrite(...) range
       "  case "... ... ..."
       let choice      = strpart(choice,1,strlen(choice)-1)
       let wholechoice = ""
- 
+
       while match(choice,"\"$") == -1
        let wholechoice= wholechoice . " " . choice
        let ichoice    = ichoice + 1
@@ -870,7 +884,7 @@ fun! netrw#NetWrite(...) range
    endif
 "   call Decho("choice<" . choice . ">")
    let ichoice= ichoice + 1
- 
+
    " fix up windows urls
    if has("win32") || has("win95") || has("win64") || has("win16")
     let choice= substitute(choice,'\\','/','ge')
@@ -878,17 +892,17 @@ fun! netrw#NetWrite(...) range
     exe 'lcd ' . fnamemodify(tmpfile,':h')
     let tmpfile = fnamemodify(tmpfile,':t')
    endif
- 
+
    " Determine method of read (ftp, rcp, etc) {{{3
    call s:NetMethod(choice)
- 
+
    " =============
    " Perform Protocol-Based Write {{{3
    " ============================
    if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
     echo "(netrw) Processing your write request..."
    endif
- 
+
    ".........................................
    " rcp: NetWrite Method #1 {{{3
    if  b:netrw_method == 1
@@ -906,14 +920,15 @@ fun! netrw#NetWrite(...) range
       let uid_machine = g:netrw_machine
      endif
     endif
-"    call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&'))
-    exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&')
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+"    call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".netrw_fname)
+    exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".netrw_fname
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " ftp + <.netrc>: NetWrite Method #2 {{{3
    elseif b:netrw_method == 2
-    let netrw_fname = b:netrw_fname
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     new
     setlocal ff=unix
     exe "put ='".g:netrw_ftpmode."'"
@@ -937,11 +952,11 @@ fun! netrw#NetWrite(...) range
     endif
     bd!
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{3
    elseif b:netrw_method == 3
-    let netrw_fname= b:netrw_fname
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     new
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -964,7 +979,7 @@ fun! netrw#NetWrite(...) range
 "    call Decho("filter input: ".getline("."))
     " save choice/id/password for future use
     let b:netrw_lastfile = choice
- 
+
     " perform ftp:
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
@@ -981,10 +996,11 @@ fun! netrw#NetWrite(...) range
      let mod=1
     endif
     bd!
- 
+
    ".........................................
    " scp: NetWrite Method #4 {{{3
    elseif     b:netrw_method == 4
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     if exists("g:netrw_port") && g:netrw_port != ""
      let useport= " -P ".g:netrw_port
     else
@@ -992,14 +1008,14 @@ fun! netrw#NetWrite(...) range
     endif
     if g:netrw_cygwin == 1
      let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
-"     call  Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'")
-     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'"
+"     call  Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".netrw_fname."'")
+     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".netrw_fname."'"
     else
-"     call  Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'")
-     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'"
+"     call  Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".netrw_fname."'")
+     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".netrw_fname."'"
     endif
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " http: NetWrite Method #5 {{{3
    elseif     b:netrw_method == 5
@@ -1007,14 +1023,14 @@ fun! netrw#NetWrite(...) range
      echohl Error | echo "***netrw*** currently <netrw.vim> does not support writing using http:" | echohl None
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     endif
- 
+
    ".........................................
    " dav: NetWrite Method #6 (cadaver) {{{3
    elseif     b:netrw_method == 6
 "    call Decho("write via cadaver (method #6)")
- 
+
     " Construct execution string (four lines) which will be passed through filter
-    let netrw_fname= b:netrw_fname
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     new
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -1023,38 +1039,39 @@ fun! netrw#NetWrite(...) range
      put ='open '.g:netrw_machine
     endif
     put ='user '.g:netrw_uid.' '.g:netrw_passwd
- 
+
     if g:netrw_cygwin == 1
      let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
      put ='put '.cygtmpfile.' '.netrw_fname
     else
      put ='put '.tmpfile.' '.netrw_fname
     endif
- 
+
     " perform cadaver operation:
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_dav_cmd)
     exe g:netrw_silentxfer."%!".g:netrw_dav_cmd
     bd!
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " rsync: NetWrite Method #7 {{{3
    elseif     b:netrw_method == 7
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     if g:netrw_cygwin == 1
      let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
-"     call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&'))
-     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')
+"     call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".netrw_fname)
+     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".netrw_fname
     else
-"     call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&'))
-     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')
+"     call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname)
+     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname
     endif
     let b:netrw_lastfile = choice
- 
+
    ".........................................
    " sftp: NetWrite Method #9 {{{3
    elseif     b:netrw_method == 9
-    let netrw_fname= b:netrw_fname
+    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
     if exists("g:netrw_uid") &&  ( g:netrw_uid != "" )
      let uid_machine = g:netrw_uid .'@'. g:netrw_machine
     else
@@ -1068,23 +1085,23 @@ fun! netrw#NetWrite(...) range
     exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine
     bd!
     let b:netrw_lastfile= choice
- 
+
    ".........................................
    " Complain {{{3
    else
     echo "***warning*** unable to comply with your request<" . choice . ">"
    endif
   endwhile
- 
+
   " cleanup {{{3
 "  call Decho("cleanup")
   let result=delete(tmpfile)
   call s:NetOptionRestore()
- 
+
   if a:firstline == 1 && a:lastline == line("$")
    let &mod= mod	" usually equivalent to set nomod
   endif
- 
+
 "  call Dret("NetWrite")
 endfun
 
@@ -1135,6 +1152,10 @@ fun! s:NetBrowse(dirname)
   " use buffer-oriented WinVars if buffer ones exist but window ones don't
   call s:UseBufWinVars()
 
+  " set up menus
+  let b:netrw_browser_active= 1
+  call s:NetMenu()
+
   " make this buffer modifiable
   setlocal ma nonu nowrap
 
@@ -1216,14 +1237,14 @@ fun! s:NetBrowse(dirname)
 "   call Decho("exe file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape))
    exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape)
    exe "silent doau BufReadPre ".fname
-   silent call netrw#NetRead(method."://".user.machine."/".path)
+   silent call netrw#NetRead(2,method."://".user.machine."/".path)
    exe "silent doau BufReadPost ".fname
    keepjumps 1d
 
    " save certain window-oriented variables into buffer-oriented variables
    call s:SetBufWinVars()
    call s:NetOptionRestore()
-   setlocal nomod
+   setlocal nomod nowrap
 
 "   call Dret("NetBrowse : file<".fname.">")
    return
@@ -1256,7 +1277,10 @@ fun! s:NetBrowse(dirname)
 "  call Decho("exe file ".escape(bufname,s:netrw_cd_escape))
   exe 'file '.escape(bufname,s:netrw_cd_escape)
 "  call Decho("renaming file to bufname<".bufname.">")
-  setlocal bh=hide bt=nofile nobl nonu noswf
+  setlocal bt=nofile nobl nonu noswf
+  if g:netrw_fastbrowse >= 1
+   setlocal bh=hide
+  endif
 
   " save current directory on directory history list
   call s:NetBookmarkDir(3,expand("%"))
@@ -1276,7 +1300,7 @@ fun! s:NetBrowse(dirname)
   nnoremap <buffer> <silent> <c-h>	:call <SID>NetHideEdit(0)<cr>
   nnoremap <buffer> <silent> i		:call <SID>NetLongList(0)<cr>
   nnoremap <buffer> <silent> o		:call <SID>NetSplit(0)<cr>
-  nnoremap <buffer> <silent> O		:call <SID>NetObtain()<cr>
+  nnoremap <buffer> <silent> O		:call netrw#NetObtain()<cr>
   nnoremap <buffer> <silent> P		:call <SID>NetPrevWinOpen(0)<cr>
   nnoremap <buffer> <silent> q		:<c-u>call <SID>NetBookmarkDir(2,expand("%"))<cr>
   nnoremap <buffer> <silent> r		:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
@@ -1475,12 +1499,16 @@ fun! s:NetBrowseChgDir(dirname,newdir)
     rightb vert new
     wincmd |
    endif
+   call s:NetMenu()
 "   call Decho("handling a file: dirname<".dirname.">")
 
   elseif newdir == './'
    " refresh the directory list
 "   call Decho("refresh directory listing")
-   setlocal ma nobl bh=hide
+   setlocal ma nobl
+   if g:netrw_fastbrowse >= 1
+    setlocal bh=hide
+   endif
    %d
 
   elseif newdir == '../'
@@ -1630,7 +1658,7 @@ fun! s:NetBrowseRm(usrhost,path) range
     elseif ok =~ 'q\%[uit]'
      break
     endif
-  
+
    else
     " attempt to remove directory
     if !all
@@ -1661,7 +1689,7 @@ fun! s:NetBrowseRm(usrhost,path) range
 "       call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")")
        let ret= system(netrw_rmf_cmd)
 "       call Decho("returned=".ret." errcode=".v:shell_error)
-     
+
        if v:shell_error != 0 && !exists("g:netrw_quiet")
         echohl Error | echo "***netrw*** unable to remove directory<".rmfile."> -- is it empty?" | echohl None
         call inputsave()|call input("Press <cr> to continue")|call inputrestore()
@@ -1795,25 +1823,23 @@ fun! netrw#NetBrowseX(fname,remote)
 
   " seems kde systems often have gnome-open due to dependencies, even though
   " gnome-open's subsidiary display tools are largely absent.  Kde systems
-  " usually have "kicker" running, though...  (tnx Mikolaj Machowski)
-  if !exists("s:haskicker")
+  " usually have "kdeinit" running, though...  (tnx Mikolaj Machowski)
+  if !exists("s:haskdeinit")
    if has("unix")
-    let v:shell_error=0
-    silent! let s:haskicker= system('ps -e') =~ 'kicker'
+    silent! let s:haskdeinit= system('ps -e') =~ 'kdeinit'
     if v:shell_error
-     let s:haskicker   = 0
-     let v:shell_error = 0
+     let s:haskdeinit = 0
     endif
    else
-    let s:haskicker= 0
+    let s:haskdeinit= 0
    endif
-"   call Decho("setting s:haskicker=".s:haskicker)
+"   call Decho("setting s:haskdeinit=".s:haskdeinit)
   endif
 
   if a:remote == 1
    " create a local copy
    let fname= tempname().".".exten
-"   call Decho("create a local copy of <".a:fname."> as <".fname.">")
+"   call Decho("a:remote==1: create a local copy of <".a:fname."> as <".fname.">")
    exe "silent keepjumps bot 1new ".a:fname
    set bh=delete
    exe "w! ".fname
@@ -1827,15 +1853,12 @@ fun! netrw#NetBrowseX(fname,remote)
   else
    let redir= &srr . "/dev/null"
   endif
-"  call Decho("redir:".redir.":")
+"  call Decho("redir{".redir."} srr{".&srr."}")
 
   if exists("g:netrw_browsex_viewer") && executable(g:netrw_browsex_viewer)
+"   call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">")
    if g:netrw_browsex_viewer == '-'
-    call netrwFileHandlers#Init()
-    if exten != "" && exists("*netrwFileHandlers#NFH_".exten)
-"     call Decho("let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")')
-     exe "let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")'
-    endif
+    let ret= netrwFileHandlers#Invoke(exten,fname)
    else
 "    call Decho("exe silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."' ".redir)
     exe "silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."'".redir
@@ -1848,23 +1871,26 @@ fun! netrw#NetBrowseX(fname,remote)
    exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"'
    let ret= v:shell_error
 
-  elseif has("unix") && executable("gnome-open") && !s:haskicker
+  elseif has("unix") && executable("gnome-open") && !s:haskdeinit
 "   call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir)
    exe "silent !gnome-open '".escape(fname,'%#')."'".redir
    let ret= v:shell_error
 
-  elseif has("unix") && executable("kfmclient") && s:haskicker
+  elseif has("unix") && executable("kfmclient") && s:haskdeinit
 "   call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir)
    exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir
    let ret= v:shell_error
 
   else
-   call netrwFileHandlers#Init()
-   if exten != "" && exists("*netrwFileHandlers#NFH_".exten)
-"    call Decho("let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")')
-    exe "let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")'
-   endif
+   " netrwFileHandlers#Invoke() always returns 0
+   let ret= netrwFileHandlers#Invoke(exten,fname)
   endif
+
+  " if unsuccessful, attempt netrwFileHandlers#Invoke()
+  if ret
+   let ret= netrwFileHandlers#Invoke(exten,fname)
+  endif
+
   redraw!
 
   " cleanup: remove temporary file,
@@ -1928,19 +1954,19 @@ fun! s:NetBrowseFtpCmd(path,cmd)
     else
      put ='open '.g:netrw_machine
     endif
- 
+
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
      put ='\"'.g:netrw_passwd.'\"'
     else
      put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
     endif
- 
+
    if a:path != ""
     put ='cd \"'.a:path.'\"'
    endif
    exe "put ='".a:cmd."'"
- 
+
     " perform ftp:
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
@@ -2123,6 +2149,9 @@ fun! s:NetrwWideListing()
 
    " determine qty files per line (fpl)
    let w:netrw_fpl= winwidth(0)/b:netrw_cpf
+   if w:netrw_fpl <= 0
+    let w:netrw_fpl= 1
+   endif
 "   call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
 
    " make wide display
@@ -2258,7 +2287,7 @@ fun! s:NetMakeDir(usrhost)
    endif
    redraw!
   endif
-  
+
 "  call Dret("NetMakeDir")
 endfun
 
@@ -2376,13 +2405,40 @@ endfun
 
 " ---------------------------------------------------------------------
 " NetObtain: obtain file under cursor (for remote browsing support) {{{2
-fun! s:NetObtain()
-  let fname= expand("<cWORD>")
+fun! netrw#NetObtain(...)
+"  call Dfunc("NetObtain() a:0=".a:0)
+
+  if a:0==0
+   " no arguments -- use word under cursor
+   let fname= expand("<cWORD>")
+"   call Decho("no arguments, use <".fname.">")
+  elseif a:0 > 1
+   " more than one argument, recurse with each argument separately
+"   call Decho("more than 1 argument, use recursion")
+   let i=1
+   while i <= a:0
+    call netrw#NetObtain(a:{i})
+    let i=i+1
+   endwhile
+   return
+  else
+   " one argument provided
+   let fname              = a:1
+   let keep_netrw_choice  = exists("b:netrw_choice")?  b:netrw_choice  : ""
+   let keep_netrw_fname   = exists("b:netrw_fname")?   b:netrw_fname   : ""
+   let keep_netrw_wmethod = exists("w:netrw_method")?  w:netrw_method  : ""
+   call s:NetMethod(fname)
+   let w:netrw_method= b:netrw_method
+   let fname         = b:netrw_fname
+"   call Decho("g:netrw_scp_cmd<".g:netrw_scp_cmd.">")
+"   call Decho("g:netrw_machine<".g:netrw_machine.">")
+"   call Decho("fname<".fname.">")
+  endif
 
   " NetrwStatusLine support - for obtaining support
   call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
 
-"  call Dfunc("NetObtain() method=".w:netrw_method)
+"  call Decho("method=".w:netrw_method)
   if exists("w:netrw_method") && w:netrw_method =~ '[235]'
    if executable("ftp")
     let curdir = expand("%")
@@ -2419,9 +2475,9 @@ fun! s:NetObtain()
 "     call Decho('ftp:  open '.g:netrw_machine.' '.g:netrw_port)
     else
      put ='open '.g:netrw_machine
-"     call Decho('ftp:  open '.g:netrw_machine
+"     call Decho('ftp:  open '.g:netrw_machine)
     endif
- 
+
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
      put ='\"'.g:netrw_passwd.'\"'
@@ -2431,21 +2487,21 @@ fun! s:NetObtain()
      put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
 "     call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
     endif
- 
+
    if a:path != ""
     put ='cd '.a:path
 "    call Decho('cd '.a:path)
    endif
    exe "put ='".a:cmd."'"
 "   call Decho("ftp:  ".a:cmd)
- 
+
     " perform ftp:
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
 "    call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i -n")
     exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i -n"
-   
+
     ".........................................
     else
       echo "***warning*** unable to comply with your request<" . choice . ">"
@@ -2459,8 +2515,14 @@ fun! s:NetObtain()
      echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     endif
+    " restore status line
     let &stl        = s:netrw_users_stl
     let &laststatus = s:netrw_users_ls
+    " restore NetMethod
+    if exists("keep_netrw_method")
+     call s:NetMethod(keep_netrw_choice)
+     let w:netrw_method  = keep_netrw_wmethod
+    endif
 "    call Dret("NetObtain")
     return
    endif
@@ -2470,6 +2532,7 @@ fun! s:NetObtain()
    " scp: Method#4
    let curdir = expand("%")
    let path   = substitute(curdir,'scp://[^/]\+/','','e')
+"   call Decho("path<".path.">")
    if exists("g:netrw_port") && g:netrw_port != ""
     let useport= " -P ".g:netrw_port
    else
@@ -2490,6 +2553,12 @@ fun! s:NetObtain()
   let &laststatus = s:netrw_users_ls
   redraw!
 
+  " restore NetMethod
+  if exists("keep_netrw_method")
+   call s:NetMethod(keep_netrw_choice)
+   let w:netrw_method  = keep_netrw_wmethod
+  endif
+
 "  call Dret("NetObtain")
 endfun
 
@@ -2569,6 +2638,77 @@ fun! s:NetPrevWinOpen(islocal)
 "  call Dret("NetPrevWinOpen")
 endfun
 
+" ---------------------------------------------------------------------
+" NetMenu: generates the menu for gvim and netrw {{{2
+fun! s:NetMenu()
+
+  if has("menu") && has("gui_running") && &go =~ 'm'
+"   call Dfunc("NetMenu()")
+   if !exists("s:netrw_menu_enabled")
+    let s:netrw_menu_enabled= 1
+    if !exists("g:DrChipTopLvlMenu")
+     let g:DrChipTopLvlMenu= "DrChip."
+    endif
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Help<tab>?	?'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Apply\ Special\ Viewer<tab>x	x'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Bookmark\ Current\ Directory<tab>b	Nb'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Go\ Up\ Directory<tab>-	-'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Goto\ Bookmarked\ Directory<tab>B	NB'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Recently\ Used\ Directory<tab>u	u'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Subsequently\ Used\ Directory<tab>U	U'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Delete\ File/Directory<tab>D	D'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File\ Hiding\ List<tab>'."<ctrl-h>	\<c-h>"
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory<tab><cr>	'."\<cr>"
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory,\ New\ Window<tab>o	o'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory,\ New\ Vertical\ Window\ <tab>v	v'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.List\ Bookmarks\ and\ History<tab>q	q'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Listing\ Style\ (thin-long-wide)<tab>i	i'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Make\ Subdirectory<tab>d	d'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Normal-Hide-Show<tab>a	a'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Obtain\ File<tab>O	O'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Preview\ File/Directory<tab>p	p'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Previous\ Window\ Browser<tab>P	P'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Rename\ File/Directory<tab>R	R'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Reverse\ Sorting\ Order<tab>'."r	r"
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Select\ Sorting\ Style<tab>s	s'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Sorting\ Sequence\ Edit<tab>S	S'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Set\ Current\ Directory<tab>c	c'
+    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
+   else
+"    call Decho("clear menus")
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Help'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Apply\ Special\ Viewer'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Bookmark\ Current\ Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Go\ Up\ Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Goto\ Bookmarked\ Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Recently\ Used\ Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Subsequently\ Used\ Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Delete\ File/Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File\ Hiding\ List'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Enter\ File/Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Enter\ File/Directory\ (vertical\ split)'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.List\ Bookmarks\ and\ History'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Listing\ Style\ (thin-long-wide)'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Make\ Subdirectory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Normal-Hide-Show'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Obtain\ File'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Preview\ File'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Previous\ Window\ Browser'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Refresh\ Listing'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Rename\ File/Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Reverse\ Sorting\ Order'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Select\ Sorting\ Style'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Sorting\ Sequence\ Edit'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Set\ Current\ Directory'
+    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Settings/Options'
+   endif
+"   call Dret("NetMenu")
+  endif
+
+endfun
+
 " ==========================================
 "  Local Directory Browsing Support:    {{{1
 " ==========================================
@@ -2597,6 +2737,13 @@ fun! netrw#DirBrowse(dirname)
 "   call Dret("DirBrowse")
    return
   endif
+  if &fo =~ '[ta]'
+   set fo-=t
+   set fo-=a
+   echohl Warning
+   echo '***warning*** directory browsing and formatoptions "ta" are incompatible'
+   echohl None
+  endif
 
   call s:NetOptionSave()
 
@@ -2613,6 +2760,10 @@ fun! netrw#DirBrowse(dirname)
   " use buffer-oriented WinVars if buffer ones exist but window ones don't
   call s:UseBufWinVars()
 
+  " set up menus
+  let b:netrw_browser_active= 1
+  call s:NetMenu()
+
   " find buffer number of buffer named precisely the same as a:dirname
   let bufnum= bufnr(escape(a:dirname,'\'))
 "  call Decho("findbuf: bufnum=".bufnum)
@@ -2692,7 +2843,10 @@ fun! netrw#DirBrowse(dirname)
   exe 'silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape)
 
   " make this buffer not-a-file, modifiable, not line-numbered, etc
-  setlocal bh=hide bt=nofile nobl ma nonu noswf
+  setlocal bt=nofile nobl ma nonu noswf nowrap
+  if g:netrw_fastbrowse >= 2
+   setlocal bh=hide
+  endif
   keepalt silent! %d
 
   " ---------------------------
@@ -2845,7 +2999,10 @@ fun! netrw#DirBrowse(dirname)
   " save certain window-oriented variables into buffer-oriented variables
   call s:SetBufWinVars()
   call s:NetOptionRestore()
-  setlocal noma nomod nonu bh=hide nobl
+  setlocal noma nomod nonu nobl nowrap
+  if g:netrw_fastbrowse >= 2
+   setlocal bh=hide
+  endif
 
 "  call Dret("DirBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
 endfun
@@ -2941,7 +3098,7 @@ fun! s:LocalBrowseList()
     keepjumps silent! put=pfile
    endif
   endwhile
-  
+
   " cleanup any windows mess at end-of-line
   silent! keepjumps %s/\r$//e
   setlocal ts=32
@@ -2981,6 +3138,7 @@ fun! s:LocalBrowseChgDir(dirname,newdir,
      wincmd |
     endif
     exe "e! ".escape(dirname,s:netrw_cd_escape)
+    call s:NetMenu()
     set ma nomod
    endif
 
@@ -3058,7 +3216,7 @@ fun! s:LocalBrowseRm(path) range
     elseif ok =~ 'q\%[uit]'
      break
     endif
-  
+
    else
     " attempt to remove directory
     if !all
@@ -3434,13 +3592,14 @@ endfun
 "	     9: sftp
 fun! s:NetMethod(choice)  " globals: method machine id passwd fname
 "   call Dfunc("NetMethod(a:choice<".a:choice.">)")
- 
+
   " initialization
   let b:netrw_method  = 0
   let g:netrw_machine = ""
   let b:netrw_fname   = ""
   let g:netrw_port    = ""
- 
+  let g:netrw_choice  = a:choice
+
   " Patterns:
   " mipf     : a:machine a:id password filename	     Use ftp
   " mf	    : a:machine filename		     Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
@@ -3464,7 +3623,7 @@ fun! s:NetMethod(choice)  " globals: met
   let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
   let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
   let sftpurm  = '^sftp://\([^/]\{-}\)/\(.*\)\=$'
- 
+
 "  call Decho("determine method:")
   " Determine Method
   " rcp://user@hostname/...path-to-file
@@ -3477,7 +3636,7 @@ fun! s:NetMethod(choice)  " globals: met
    if userid != ""
     let g:netrw_uid= userid
    endif
- 
+
   " scp://user@hostname/...path-to-file
   elseif match(a:choice,scpurm) == 0
 "   call Decho("scp://...")
@@ -3485,14 +3644,14 @@ fun! s:NetMethod(choice)  " globals: met
    let g:netrw_machine = substitute(a:choice,scpurm,'\1',"")
    let g:netrw_port    = substitute(a:choice,scpurm,'\2',"")
    let b:netrw_fname   = substitute(a:choice,scpurm,'\3',"")
- 
+
   " http://user@hostname/...path-to-file
   elseif match(a:choice,httpurm) == 0
 "   call Decho("http://...")
    let b:netrw_method = 5
    let g:netrw_machine= substitute(a:choice,httpurm,'\1',"")
    let b:netrw_fname  = substitute(a:choice,httpurm,'\2',"")
- 
+
   " dav://hostname[:port]/..path-to-file..
   elseif match(a:choice,davurm) == 0
 "   call Decho("dav://...")
@@ -3503,14 +3662,14 @@ fun! s:NetMethod(choice)  " globals: met
     let g:netrw_machine= 'http://'.substitute(a:choice,davurm,'\1/\2',"")
    endif
    let b:netrw_fname  = substitute(a:choice,davurm,'\3',"")
- 
+
   " rsync://user@hostname/...path-to-file
   elseif match(a:choice,rsyncurm) == 0
 "   call Decho("rsync://...")
    let b:netrw_method = 7
    let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"")
    let b:netrw_fname  = substitute(a:choice,rsyncurm,'\2',"")
- 
+
   " ftp://[user@]hostname[[:#]port]/...path-to-file
   elseif match(a:choice,ftpurm) == 0
 "   call Decho("ftp://...")
@@ -3536,7 +3695,7 @@ fun! s:NetMethod(choice)  " globals: met
      let b:netrw_method= 3
     endif
    endif
- 
+
   elseif match(a:choice,fetchurm) == 0
 "   call Decho("fetch://...")
    let b:netrw_method = 8
@@ -3544,7 +3703,7 @@ fun! s:NetMethod(choice)  " globals: met
    let g:netrw_machine= substitute(a:choice,fetchurm,'\3',"")
    let b:netrw_option = substitute(a:choice,fetchurm,'\4',"")
    let b:netrw_fname  = substitute(a:choice,fetchurm,'\5',"")
- 
+
   " Issue an ftp : "machine id password [path/]filename"
   elseif match(a:choice,mipf) == 0
 "   call Decho("(ftp) host id pass file")
@@ -3553,7 +3712,7 @@ fun! s:NetMethod(choice)  " globals: met
    let g:netrw_uid     = substitute(a:choice,mipf,'\2',"")
    let g:netrw_passwd  = substitute(a:choice,mipf,'\3',"")
    let b:netrw_fname   = substitute(a:choice,mipf,'\4',"")
- 
+
   " Issue an ftp: "hostname [path/]filename"
   elseif match(a:choice,mf) == 0
 "   call Decho("(ftp) host file")
@@ -3561,20 +3720,20 @@ fun! s:NetMethod(choice)  " globals: met
     let b:netrw_method  = 3
     let g:netrw_machine = substitute(a:choice,mf,'\1',"")
     let b:netrw_fname   = substitute(a:choice,mf,'\2',"")
- 
+
    elseif filereadable(expand("$HOME/.netrc"))
     let b:netrw_method  = 2
     let g:netrw_machine = substitute(a:choice,mf,'\1',"")
     let b:netrw_fname   = substitute(a:choice,mf,'\2',"")
    endif
- 
+
   " sftp://user@hostname/...path-to-file
   elseif match(a:choice,sftpurm) == 0
 "   call Decho("sftp://...")
    let b:netrw_method = 9
    let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"")
    let b:netrw_fname  = substitute(a:choice,sftpurm,'\2',"")
- 
+
   " Issue an rcp: hostname:filename"  (this one should be last)
   elseif match(a:choice,rcphf) == 0
 "   call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">")
@@ -3593,7 +3752,7 @@ fun! s:NetMethod(choice)  " globals: met
     " don't let PCs try <.netrc>
     let b:netrw_method = 3
    endif
- 
+
   else
    if !exists("g:netrw_quiet")
     echohl Error | echo "***netrw*** cannot determine method" | echohl None
@@ -3606,7 +3765,7 @@ fun! s:NetMethod(choice)  " globals: met
   if g:netrw_port != ""
     let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
   endif
- 
+
 "  call Decho("a:choice       <".a:choice.">")
 "  call Decho("b:netrw_method <".b:netrw_method.">")
 "  call Decho("g:netrw_machine<".g:netrw_machine.">")
@@ -3618,7 +3777,7 @@ fun! s:NetMethod(choice)  " globals: met
 "   call Decho("g:netrw_passwd <".g:netrw_passwd.">")
 "  endif					"Decho
 "  call Decho("b:netrw_fname  <".b:netrw_fname.">")
-"  call Dret("NetMethod")
+"  call Dret("NetMethod : b:netrw_method=".b:netrw_method)
 endfun
 
 " ------------------------------------------------------------------------
@@ -3666,14 +3825,18 @@ fun! s:NetOptionSave()
   " Get Temporary Filename
   let w:aikeep   = &ai
   " record autochdir setting and then insure its unset (tnx to David Fishburn)
-  if has("netbeans_intg") || has("sun_workshop")
-   let w:acdkeep = &autochdir
-   set noautochdir
+  if &acd && (has("netbeans_intg") || has("sun_workshop"))
+   set noacd
+   echohl Warning | echomsg "***warning*** directory browsing and the acd setting are incompatible" |echohl None
   endif
+  let w:fokeep    = &fo
+  let w:aikeep    = &ai
+  let w:cikeep    = &ci
   let w:cinkeep   = &cin
   let w:cinokeep  = &cino
   let w:comkeep   = &com
   let w:cpokeep   = &cpo
+  let w:magickeep = &magic
   if !g:netrw_keepdir
    let w:dirkeep  = getcwd()
   endif
@@ -3684,7 +3847,7 @@ fun! s:NetOptionSave()
   setlocal cino =
   setlocal com  =
   setlocal cpo -=aA
-  setlocal nocin noai nospell
+  setlocal nocin noai noci magic nospell fo=nroql2
   setlocal tw   =0
   setlocal report=10000
   if has("win32") && !has("win95")
@@ -3705,18 +3868,18 @@ fun! s:NetOptionRestore()
    return
   endif
   unlet w:netoptionsave
- 
+
   if exists("w:aikeep")| let &ai= w:aikeep|endif
-  if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep")
-   let &acd= w:acdkeep
-   unlet w:acdkeep
-  endif
+  if exists("w:aikeep")   |let &ai     = w:aikeep      |unlet w:aikeep   |endif
+  if exists("w:cikeep")   |let &ci     = w:cikeep      |unlet w:cikeep   |endif
   if exists("w:cinkeep")  |let &cin    = w:cinkeep     |unlet w:cinkeep  |endif
   if exists("w:cinokeep") |let &cino   = w:cinokeep    |unlet w:cinokeep |endif
   if exists("w:comkeep")  |let &com    = w:comkeep     |unlet w:comkeep  |endif
   if exists("w:cpokeep")  |let &cpo    = w:cpokeep     |unlet w:cpokeep  |endif
   if exists("w:dirkeep")  |exe "lcd ".w:dirkeep        |unlet w:dirkeep  |endif
+  if exists("w:fokeep")   |let &fo     = w:fokeep      |unlet w:fokeep   |endif
   if exists("w:gdkeep")   |let &gd     = w:gdkeep      |unlet w:gdkeep   |endif
+  if exists("w:magic")    |let &magic  = w:magic       |unlet w:magic    |endif
   if exists("w:repkeep")  |let &report = w:repkeep     |unlet w:repkeep  |endif
   if exists("w:spellkeep")|let &spell  = w:spellkeep   |unlet w:spellkeep|endif
   if exists("w:twkeep")   |let &tw     = w:twkeep      |unlet w:twkeep   |endif
@@ -3733,7 +3896,7 @@ fun! s:NetOptionRestore()
    endif
    unlet w:swfkeep
   endif
- 
+
 "  call Dret("NetOptionRestore")
 endfun
 
@@ -3760,7 +3923,7 @@ endif
 if v:version < 700
  fun! s:NetSort() range
 " "  call Dfunc("NetSort()")
- 
+
   let i = a:firstline + 1
   while i <= a:lastline
     " find insertion point via binary search
@@ -3795,7 +3958,7 @@ if v:version < 700
     endif
     let i = i + 1
   endwhile
- 
+
 " "  call Dret("NetSort")
  endfun
 endif
--- a/runtime/autoload/netrwSettings.vim
+++ b/runtime/autoload/netrwSettings.vim
@@ -96,6 +96,7 @@ fun! netrwSettings#NetrwSettings()
    put = 'let g:netrw_browsex_viewer    = (not defined)'
   endif
   put = 'let g:netrw_dirhistmax        = '.g:netrw_dirhistmax
+  put = 'let g:netrw_fastbrowse        = '.g:netrw_fastbrowse
   put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
   put = 'let g:netrw_ftp_list_cmd      = '.g:netrw_ftp_list_cmd
   put = 'let g:netrw_hide              = '.g:netrw_hide
--- a/runtime/doc/os_mac.txt
+++ b/runtime/doc/os_mac.txt
@@ -1,4 +1,4 @@
-*os_mac.txt*    For Vim version 7.0aa.  Last change: 2005 Mar 29
+*os_mac.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 09
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
@@ -33,9 +33,10 @@ Indianapolis IN 46220 USA
 ==============================================================================
 1. Filename Convention					*mac-filename*
 
-You can use either the unix or mac path separator or a mix of both.  In order
-to determine if the specified filename is relative to the current folder or
-absolute (i.e. relative to the "Desktop"), the following algorithm is used:
+Starting with Vim version 7 you can just use the unix path separators with
+Vim. In order to determine if the specified filename is relative to the
+current folder or absolute (i.e. relative to the "Desktop"), the following
+algorithm is used:
 
 	If the path start by a "/", the path is absolute
 	If the path start by a ":", the path is relative
@@ -58,10 +59,16 @@ You can use the |$VIM| and |$VIMRUNTIME|
 ==============================================================================
 2. .vimrc and .vim files				*mac-vimfile*
 
-On the Mac files starting with a dot "." are discouraged, thus the rc files
-are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc".  These files can be in
-any format (mac, dos or unix).  Vim can handle any file format when the
-|'nocompatible'| option is set, otherwise it will only handle mac format
+It is recommended to use Unix style line separators for Vim scripts, thus a
+single newline character.
+
+When starting up Vim will load the $VIMRUNTIME/macmap.vim script to define
+default command-key mappings.
+
+On older systems files starting with a dot "." are discouraged, thus the rc
+files are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc".  These files
+can be in any format (mac, dos or unix).  Vim can handle any file format when
+the |'nocompatible'| option is set, otherwise it will only handle mac format
 files.
 
 ==============================================================================
@@ -80,14 +87,6 @@ A: Assuming that Vim.app is located in /
 ==============================================================================
 4. Mac Lack						*mac-lack*
 
-The filenames containing both ":" and "/" are sometimes misinterpreted.  (just
-re-execute the command)
-
-Scrollbar are not scrolling live, and  when only the arrow or scroll area, a
-limit of 32 line or page is scrolled.
-
-Syntax highlighting works on 68k Macs but is _really_ slow.
-
 In a terminal CTRL-^ needs to be entered as Shift-Control-6.  CTRL-@ as
 Shift-Control-2.
 
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 7.0.  Last change: Jan 27, 2006
+*pi_netrw.txt*  For Vim version 7.0.  Last change: Mar 09, 2006
 
 		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
 
@@ -12,7 +12,7 @@ 0. Contents						*netrw-contents*
 
 1.  Starting With Netrw.................................|netrw-start|
 2.  Netrw Reference......................................|netrw-ref|
-      CONTROLLING EXTERNAL APPLICTIONS...................|netrw-externapp|
+      CONTROLLING EXTERNAL APPLICATIONS..................|netrw-externapp|
       READING............................................|netrw-read|
       WRITING............................................|netrw-write|
       DIRECTORY LISTING..................................|netrw-dirlist|
@@ -32,6 +32,7 @@ 8.  Directory Browsing..................
       Quick Reference Commands Table.....................|netrw-browse-cmds|
       Netrw Browser Variables............................|netrw-browse-var|
       Introduction To Directory Browsing.................|netrw-browse-intro|
+      Netrw Browsing And Option Incompatibilities........|netrw-incompatible|
       Directory Exploring Commands.......................|netrw-explore|
       Refreshing The Listing.............................|netrw-ctrl-l|
       Going Up...........................................|netrw--|
@@ -39,7 +40,7 @@ 8.  Directory Browsing..................
       Obtaining A File...................................|netrw-O|
       Thin, Long, and Wide Listings......................|netrw-i|
       Making A New Directory.............................|netrw-d|
-      Deleting Files Or Directories......................|netrw-delete|
+      Deleting Files Or Directories......................|netrw-D|
       Renaming Files Or Directories......................|netrw-move|
       Hiding Files Or Directories........................|netrw-a|
       Edit File Or Directory Hiding List.................|netrw-ctrl-h|
@@ -132,7 +133,7 @@ section, |netrw-externapp|.
 ==============================================================================
 2. Netrw Reference						*netrw-ref*
 
-CONTROLLING EXTERNAL APPLICTIONS			*netrw-externapp*
+CONTROLLING EXTERNAL APPLICATIONS			*netrw-externapp*
 
 	Protocol  Variable	    Default Value
 	--------  ----------------  -------------
@@ -719,6 +720,7 @@ NETRW BROWSER VARIABLES					*netrw-brows
 				=0: re-using the same window
 				=1: horizontally splitting the window first  
 				=2: vertically   splitting the window first  
+
   *g:netrw_browsex_viewer*	specify user's preference for a viewer: >
 					"kfmclient exec"
 					"gnome-open"
@@ -727,7 +729,27 @@ NETRW BROWSER VARIABLES					*netrw-brows
 <				is used, then netrwFileHandler() will look for
 				a script/function to handle the given
 				extension.  (see |netrw_filehandler|).
-<
+
+  *g:netrw_fastbrowse*		=0: slow speed browsing, never re-use
+  				    directory listings; always obtain
+				    directory listings.
+				=1: medium speed browsing, re-use directory
+				    listings only when remote browsing.
+				    (default value)
+				=2: fast browsing, only obtains directory
+				    listings when the directory hasn't been
+				    seen before (or |netrw-ctrl-l| is used).
+				Fast browsing retains old directory listing
+				buffers so that they don't need to be
+				re-acquired.  This feature is especially
+				important for remote browsing.  However, if
+				a file is introduced or deleted into or from
+				such directories, the old directory buffer
+				becomes out-of-date.  One may always refresh
+				such a directory listing with |netrw-ctrl-l|.
+				This option gives the choice of the trade-off
+				between accuracy and speed to the user.
+
   *g:netrw_ftp_browse_reject*	ftp can produce a number of errors and warnings
 				that can show up as "directories" and "files"
 				in the listing.  This pattern is used to
@@ -819,6 +841,12 @@ NETRW BROWSER VARIABLES					*netrw-brows
   *g:netrw_winsize*		specify initial size of new o/v windows
 				 default: ""
 
+  *g:DrChipTopLvlMenu*		This variable specifies the top level
+  				submenu name; by default, its "DrChip.".
+				If you wish to change this, do so in your
+				.vimrc.  It affects all of my plugins which
+				have menus.
+
 INTRODUCTION TO DIRECTORY BROWSING			*netrw-browse-intro*
 
 Netrw supports the browsing of directories on the local system and on remote
@@ -843,6 +871,18 @@ For local directories, the trailing slas
 If you'd like to avoid entering the password in for remote directory listings
 with ssh or scp, see |netrw-listhack|.
 
+
+NETRW BROWSING AND OPTION INCOMPATIBILITIES		*netrw-incompatible*
+
+Netrw will not work properly with >
+
+	:set acd
+	:set fo=...ta...
+<
+If either of these options are present when browsing is attempted, netrw
+will change them by using noacd and removing the ta suboptions from the
+|formatoptions|.
+
 				*netrw-explore*  *netrw-pexplore*
 				*netrw-hexplore* *netrw-sexplore*
 DIRECTORY EXPLORING COMMANDS	*netrw-nexplore* *netrw-vexplore*
@@ -1094,9 +1134,9 @@ One may use a preview window (currently 
 
 PREVIOUS WINDOW					*netrw-P* *netrw-prvwin*
 
-To edit a file or directory in the previously used window (see :he |CTRL-W_P|),
+To edit a file or directory in the previously used window (see :he |ctrl-w_p|),
 press a "P".  If there's only one window, then the one window will be
-horizontally split (above/below splitting is controlled by |g:netrw_alto|,
+horizontally split (above/below splitting is controlled by |g:netrw-alto|,
 and its initial size is controlled by |g:netrw_winsize|).
 
 If there's more than one window, the previous window will be re-used on
@@ -1399,6 +1439,11 @@ which is loaded automatically at startup
 ==============================================================================
 11. History						*netrw-history* {{{1
 
+	v79: * directories are now displayed with nowrap
+	     * (bugfix) if the column width was smaller than the largest
+	       file's name, then netrw would hang when using wide-listing
+	       mode - fixed
+	     * g:netrw_fastbrowse introduced
 	v78: * progress has been made on allowing spaces inside directory
 	       names for remote work (reading, writing, browsing).  (scp)
 	v77: * Mikolaj Machowski fixed a bug in a substitute command
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4117,6 +4117,7 @@ Ruby	if_ruby.txt	/*Ruby*
 Russian	russian.txt	/*Russian*
 S	change.txt	/*S*
 SHELL	starting.txt	/*SHELL*
+SQLSetType	sql.txt	/*SQLSetType*
 Select	visual.txt	/*Select*
 Select-mode	visual.txt	/*Select-mode*
 Select-mode-mapping	visual.txt	/*Select-mode-mapping*
@@ -4132,6 +4133,7 @@ Syntax	autocmd.txt	/*Syntax*
 T	motion.txt	/*T*
 TCL	if_tcl.txt	/*TCL*
 TERM	starting.txt	/*TERM*
+TSQL	sql.txt	/*TSQL*
 TTpro-telnet	syntax.txt	/*TTpro-telnet*
 Tab	intro.txt	/*Tab*
 TabEnter	autocmd.txt	/*TabEnter*
@@ -4139,6 +4141,7 @@ TabLeave	autocmd.txt	/*TabLeave*
 Tcl	if_tcl.txt	/*Tcl*
 TermChanged	autocmd.txt	/*TermChanged*
 TermResponse	autocmd.txt	/*TermResponse*
+Transact-SQL	sql.txt	/*Transact-SQL*
 U	undo.txt	/*U*
 UTF-8	mbyte.txt	/*UTF-8*
 UTF8-xterm	mbyte.txt	/*UTF8-xterm*
@@ -5217,7 +5220,9 @@ ft-sgml-syntax	syntax.txt	/*ft-sgml-synt
 ft-sh-syntax	syntax.txt	/*ft-sh-syntax*
 ft-spec-plugin	filetype.txt	/*ft-spec-plugin*
 ft-spup-syntax	syntax.txt	/*ft-spup-syntax*
+ft-sql	filetype.txt	/*ft-sql*
 ft-sql-syntax	syntax.txt	/*ft-sql-syntax*
+ft-sqlanywhere-syntax	syntax.txt	/*ft-sqlanywhere-syntax*
 ft-sqlinformix-syntax	syntax.txt	/*ft-sqlinformix-syntax*
 ft-syntax-omni	insert.txt	/*ft-syntax-omni*
 ft-tcsh-syntax	syntax.txt	/*ft-tcsh-syntax*
@@ -5260,12 +5265,14 @@ g'a	motion.txt	/*g'a*
 g,	motion.txt	/*g,*
 g0	motion.txt	/*g0*
 g8	various.txt	/*g8*
+g:DrChipTopLvlMenu	pi_netrw.txt	/*g:DrChipTopLvlMenu*
 g:netrw_alto	pi_netrw.txt	/*g:netrw_alto*
 g:netrw_altv	pi_netrw.txt	/*g:netrw_altv*
 g:netrw_browse_split	pi_netrw.txt	/*g:netrw_browse_split*
 g:netrw_browsex_viewer	pi_netrw.txt	/*g:netrw_browsex_viewer*
 g:netrw_cygwin	pi_netrw.txt	/*g:netrw_cygwin*
 g:netrw_dav_cmd	pi_netrw.txt	/*g:netrw_dav_cmd*
+g:netrw_fastbrowse	pi_netrw.txt	/*g:netrw_fastbrowse*
 g:netrw_fetch_cmd	pi_netrw.txt	/*g:netrw_fetch_cmd*
 g:netrw_ftp	pi_netrw.txt	/*g:netrw_ftp*
 g:netrw_ftp_browse_reject	pi_netrw.txt	/*g:netrw_ftp_browse_reject*
@@ -5484,7 +5491,6 @@ hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
-help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -5734,6 +5740,7 @@ index()	eval.txt	/*index()*
 index.txt	index.txt	/*index.txt*
 info-message	starting.txt	/*info-message*
 inform.vim	syntax.txt	/*inform.vim*
+informix	sql.txt	/*informix*
 initialization	starting.txt	/*initialization*
 input()	eval.txt	/*input()*
 inputdialog()	eval.txt	/*inputdialog()*
@@ -6019,6 +6026,7 @@ multilang-messages	mlang.txt	/*multilang
 multilang-scripts	mlang.txt	/*multilang-scripts*
 myfiletypefile	syntax.txt	/*myfiletypefile*
 myscriptsfile	syntax.txt	/*myscriptsfile*
+mysql	sql.txt	/*mysql*
 mysyntaxfile	syntax.txt	/*mysyntaxfile*
 mysyntaxfile-add	syntax.txt	/*mysyntaxfile-add*
 mysyntaxfile-replace	syntax.txt	/*mysyntaxfile-replace*
@@ -6107,6 +6115,7 @@ netrw-hexplore	pi_netrw.txt	/*netrw-hexp
 netrw-history	pi_netrw.txt	/*netrw-history*
 netrw-horiz	pi_netrw.txt	/*netrw-horiz*
 netrw-i	pi_netrw.txt	/*netrw-i*
+netrw-incompatible	pi_netrw.txt	/*netrw-incompatible*
 netrw-list	pi_netrw.txt	/*netrw-list*
 netrw-listbookmark	pi_netrw.txt	/*netrw-listbookmark*
 netrw-listhack	pi_netrw.txt	/*netrw-listhack*
@@ -6269,6 +6278,7 @@ option-summary	options.txt	/*option-summ
 options	options.txt	/*options*
 options-changed	version5.txt	/*options-changed*
 options.txt	options.txt	/*options.txt*
+oracle	sql.txt	/*oracle*
 os2	os_os2.txt	/*os2*
 os2ansi	os_os2.txt	/*os2ansi*
 os390	os_390.txt	/*os390*
@@ -6341,6 +6351,7 @@ pi_gzip.txt	pi_gzip.txt	/*pi_gzip.txt*
 pi_netrw.txt	pi_netrw.txt	/*pi_netrw.txt*
 pi_paren.txt	pi_paren.txt	/*pi_paren.txt*
 pi_spec.txt	pi_spec.txt	/*pi_spec.txt*
+plsql	sql.txt	/*plsql*
 plugin	usr_05.txt	/*plugin*
 plugin-details	filetype.txt	/*plugin-details*
 plugin-filetype	usr_41.txt	/*plugin-filetype*
@@ -6356,6 +6367,7 @@ ports-6	version6.txt	/*ports-6*
 posix	vi_diff.txt	/*posix*
 posix-compliance	vi_diff.txt	/*posix-compliance*
 posix-screen-size	vi_diff.txt	/*posix-screen-size*
+postgress	sql.txt	/*postgress*
 postscr.vim	syntax.txt	/*postscr.vim*
 postscript-cjk-printing	print.txt	/*postscript-cjk-printing*
 postscript-print-encoding	print.txt	/*postscript-print-encoding*
@@ -6379,6 +6391,7 @@ profiling	repeat.txt	/*profiling*
 profiling-variable	eval.txt	/*profiling-variable*
 progname-variable	eval.txt	/*progname-variable*
 progress.vim	syntax.txt	/*progress.vim*
+psql	sql.txt	/*psql*
 ptcap.vim	syntax.txt	/*ptcap.vim*
 pterm-mouse	options.txt	/*pterm-mouse*
 pumvisible()	eval.txt	/*pumvisible()*
@@ -6769,8 +6782,23 @@ sponsor-faq	sponsor.txt	/*sponsor-faq*
 sponsor.txt	sponsor.txt	/*sponsor.txt*
 spoon	os_unix.txt	/*spoon*
 spup.vim	syntax.txt	/*spup.vim*
+sql-adding-dialects	sql.txt	/*sql-adding-dialects*
+sql-dialects	sql.txt	/*sql-dialects*
+sql-macros	sql.txt	/*sql-macros*
+sql-matchit	sql.txt	/*sql-matchit*
+sql-navigation	sql.txt	/*sql-navigation*
+sql-object-motions	sql.txt	/*sql-object-motions*
+sql-predefined-objects	sql.txt	/*sql-predefined-objects*
+sql-type-default	sql.txt	/*sql-type-default*
+sql-types	sql.txt	/*sql-types*
+sql.txt	sql.txt	/*sql.txt*
 sql.vim	syntax.txt	/*sql.vim*
+sqlanywhere	sql.txt	/*sqlanywhere*
+sqlanywhere.vim	syntax.txt	/*sqlanywhere.vim*
 sqlinformix.vim	syntax.txt	/*sqlinformix.vim*
+sqlj	sql.txt	/*sqlj*
+sqlserver	sql.txt	/*sqlserver*
+sqlsettype	sql.txt	/*sqlsettype*
 sscanf	eval.txt	/*sscanf*
 standard-plugin	usr_05.txt	/*standard-plugin*
 standard-plugin-list	help.txt	/*standard-plugin-list*
@@ -6824,6 +6852,7 @@ swapchoice-variable	eval.txt	/*swapchoic
 swapcommand-variable	eval.txt	/*swapcommand-variable*
 swapfile-changed	version4.txt	/*swapfile-changed*
 swapname-variable	eval.txt	/*swapname-variable*
+sybase	sql.txt	/*sybase*
 syn-sync-grouphere	syntax.txt	/*syn-sync-grouphere*
 syn-sync-groupthere	syntax.txt	/*syn-sync-groupthere*
 syn-sync-linecont	syntax.txt	/*syn-sync-linecont*
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Mar 05
+" Last Change:	2006 Mar 09
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -131,41 +131,6 @@ an 10.600 &File.-SEP4-				<Nop>
 an 10.610 &File.Sa&ve-Exit<Tab>:wqa		:confirm wqa<CR>
 an 10.620 &File.E&xit<Tab>:qa			:confirm qa<CR>
 
-" Pasting blockwise and linewise selections is not possible in Insert and
-" Visual mode without the +virtualedit feature.  They are pasted as if they
-" were characterwise instead.  Add to that some tricks to leave the cursor in
-" the right position, also for "gi".
-" Note: the same stuff appears in mswin.vim.
-if has("virtualedit")
-  let s:paste_cmd = ":call <SID>Paste()<CR>"
-  func! <SID>Paste()
-    let ove = &ve
-    set ve=all
-    normal! `^
-    if @+ != ''
-      normal! "+gP
-    endif
-    let c = col(".")
-    normal! i
-    if col(".") < c	" compensate for i<ESC> moving the cursor left
-      normal! l
-    endif
-    let &ve = ove
-  endfunc
-else
-  let s:paste_cmd = "\"=@+.'xy'<CR>gPFx\"_2x"
-endif
-
-" Define the string to use for items that are present both in Edit, Popup and
-" Toolbar menu.
-if has("virtualedit")
-  let s:paste_v_cmd = '"-c<Esc>' . s:paste_cmd
-  let s:paste_i_cmd = '<Esc>' . s:paste_cmd . 'gi'
-else
-  let s:paste_v_cmd = '"-c<Esc>gix<Esc>' . s:paste_cmd . '"_x'
-  let s:paste_i_cmd = 'x<Esc>' . s:paste_cmd . '"_s'
-endif
-
 func! <SID>SelectAll()
   exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
 endfunc
@@ -182,8 +147,8 @@ vnoremenu 20.350 &Edit.&Copy<Tab>"+y		"+
 cnoremenu 20.350 &Edit.&Copy<Tab>"+y		<C-Y>
 nnoremenu 20.360 &Edit.&Paste<Tab>"+gP		"+gP
 cnoremenu	 &Edit.&Paste<Tab>"+gP		<C-R>+
-exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP	' . s:paste_v_cmd
-exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP	' . s:paste_i_cmd
+exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['v']
+exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['i']
 nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p	[p
 inoremenu	 &Edit.Put\ &Before<Tab>[p	<C-O>[p
 nnoremenu 20.380 &Edit.Put\ &After<Tab>]p	]p
@@ -199,10 +164,10 @@ an 20.405	 &Edit.-SEP2-				<Nop>
 if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
   an 20.410	 &Edit.&Find\.\.\.			:promptfind<CR>
   vunmenu	 &Edit.&Find\.\.\.
-  vnoremenu <silent>	 &Edit.&Find\.\.\.			y:call <SID>FixFText()<CR>:promptfind <C-R>"<CR>
+  vnoremenu <silent>	 &Edit.&Find\.\.\.		y:promptfind <C-R>=<SID>FixFText()<CR><CR>
   an 20.420	 &Edit.Find\ and\ Rep&lace\.\.\.	:promptrepl<CR>
   vunmenu	 &Edit.Find\ and\ Rep&lace\.\.\.
-  vnoremenu <silent>	 &Edit.Find\ and\ Rep&lace\.\.\.	y:call <SID>FixFText()<CR>:promptrepl <C-R>"<CR>
+  vnoremenu <silent>	 &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
 else
   an 20.410	 &Edit.&Find<Tab>/			/
   an 20.420	 &Edit.Find\ and\ Rep&lace<Tab>:%s	:%s/
@@ -215,7 +180,7 @@ an 20.430	 &Edit.Settings\ &Window		:opt
 
 fun! s:FixFText()
   " Fix text in nameless register to be used with :promptfind.
-  let @" = substitute(@", "[\r\n]", '\\n', 'g')
+  return substitute(@", "[\r\n]", '\\n', 'g')
 endfun
 
 " Edit/Global Settings
@@ -851,8 +816,8 @@ vnoremenu 1.30 PopUp.&Copy		"+y
 cnoremenu 1.30 PopUp.&Copy		<C-Y>
 nnoremenu 1.40 PopUp.&Paste		"+gP
 cnoremenu 1.40 PopUp.&Paste		<C-R>+
-exe 'vnoremenu <script> 1.40 PopUp.&Paste	' . s:paste_v_cmd
-exe 'inoremenu <script> 1.40 PopUp.&Paste	' . s:paste_i_cmd
+exe 'vnoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['v']
+exe 'inoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['i']
 vnoremenu 1.50 PopUp.&Delete		x
 an 1.55 PopUp.-SEP2-			<Nop>
 vnoremenu 1.60 PopUp.Select\ Blockwise	<C-V>
@@ -976,14 +941,14 @@ if has("toolbar")
   cnoremenu 1.80 ToolBar.Copy		<C-Y>
   nnoremenu 1.90 ToolBar.Paste		"+gP
   cnoremenu	 ToolBar.Paste		<C-R>+
-  exe 'vnoremenu <script>	 ToolBar.Paste	' . s:paste_v_cmd
-  exe 'inoremenu <script>	 ToolBar.Paste	' . s:paste_i_cmd
+  exe 'vnoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['v']
+  exe 'inoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['i']
 
   if !has("gui_athena")
     an 1.95   ToolBar.-sep3-		<Nop>
     an 1.100  ToolBar.Replace		:promptrepl<CR>
     vunmenu   ToolBar.Replace
-    vnoremenu ToolBar.Replace		y:promptrepl <C-R>"<CR>
+    vnoremenu ToolBar.Replace		y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
     an 1.110  ToolBar.FindNext		n
     an 1.120  ToolBar.FindPrev		N
   endif
@@ -1099,8 +1064,6 @@ an 50.730 &Syntax.&Convert\ to\ HTML	:ru
 
 endif " !exists("did_install_syntax_menu")
 
-unlet! s:paste_i_cmd s:paste_v_cmd s:paste_cmd
-
 " Restore the previous value of 'cpoptions'.
 let &cpo = s:cpo_save
 unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/sqlanywhere.vim
@@ -0,0 +1,706 @@
+" Vim syntax file
+" Language:    SQL, Adaptive Server Anywhere
+" Maintainer:  David Fishburn <fishburn at ianywhere dot com>
+" Last Change: Thu Sep 15 2005 10:30:09 AM
+" Version:     9.0.2
+
+" Description: Updated to Adaptive Server Anywhere 9.0.2
+"              Updated to Adaptive Server Anywhere 9.0.1
+"              Updated to Adaptive Server Anywhere 9.0.0
+"
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+    syntax clear
+elseif exists("b:current_syntax")
+    finish
+endif
+
+syn case ignore
+
+" The SQL reserved words, defined as keywords.
+
+syn keyword sqlSpecial  false null true
+
+" common functions
+syn keyword sqlFunction	count sum avg min max debug_eng isnull
+syn keyword sqlFunction	greater lesser argn string ymd todate
+syn keyword sqlFunction	totimestamp date today now utc_now
+syn keyword sqlFunction	number identity years months weeks days
+syn keyword sqlFunction	hours minutes seconds second minute hour
+syn keyword sqlFunction	day month year dow date_format substr
+syn keyword sqlFunction	substring byte_substr length byte_length
+syn keyword sqlFunction	datalength ifnull evaluate list
+syn keyword sqlFunction	soundex similar difference like_start
+syn keyword sqlFunction	like_end regexp_compile
+syn keyword sqlFunction	regexp_compile_patindex remainder abs
+syn keyword sqlFunction	graphical_plan plan explanation ulplan
+syn keyword sqlFunction	graphical_ulplan long_ulplan
+syn keyword sqlFunction	short_ulplan rewrite watcomsql
+syn keyword sqlFunction	transactsql dialect estimate
+syn keyword sqlFunction	estimate_source index_estimate
+syn keyword sqlFunction	experience_estimate traceback wsql_state
+syn keyword sqlFunction	lang_message dateadd datediff datepart
+syn keyword sqlFunction	datename dayname monthname quarter
+syn keyword sqlFunction	tsequal hextoint inttohex rand textptr
+syn keyword sqlFunction	rowid grouping stddev variance rank
+syn keyword sqlFunction	dense_rank density percent_rank user_name
+syn keyword sqlFunction	user_id str stuff char_length nullif
+syn keyword sqlFunction	sortkey compare ts_index_statistics
+syn keyword sqlFunction	ts_table_statistics isdate isnumeric
+syn keyword sqlFunction	get_identity lookup newid uuidtostr
+syn keyword sqlFunction	strtouuid varexists
+
+" 9.0.1 functions
+syn keyword sqlFunction	acos asin atan atn2 cast ceiling convert cos cot 
+syn keyword sqlFunction	char_length coalesce dateformat datetime degrees exp
+syn keyword sqlFunction	floor getdate insertstr 
+syn keyword sqlFunction	log log10 lower mod pi power
+syn keyword sqlFunction	property radians replicate round sign sin 
+syn keyword sqlFunction	sqldialect tan truncate truncnum
+syn keyword sqlFunction	base64_encode base64_decode
+syn keyword sqlFunction	hash compress decompress encrypt decrypt
+
+" string functions
+syn keyword sqlFunction	ascii char left ltrim repeat
+syn keyword sqlFunction	space right rtrim trim lcase ucase
+syn keyword sqlFunction	locate charindex patindex replace
+syn keyword sqlFunction	errormsg csconvert 
+
+" property functions
+syn keyword sqlFunction	db_id db_name property_name
+syn keyword sqlFunction	property_description property_number
+syn keyword sqlFunction	next_connection next_database property
+syn keyword sqlFunction	connection_property db_property db_extended_property
+syn keyword sqlFunction	event_parmeter event_condition event_condition_name
+
+" sa_ procedures
+syn keyword sqlFunction	sa_add_index_consultant_analysis
+syn keyword sqlFunction	sa_add_workload_query
+syn keyword sqlFunction sa_app_deregister
+syn keyword sqlFunction sa_app_get_infoStr
+syn keyword sqlFunction sa_app_get_status
+syn keyword sqlFunction sa_app_register
+syn keyword sqlFunction sa_app_registration_unlock
+syn keyword sqlFunction sa_app_set_infoStr
+syn keyword sqlFunction sa_audit_string
+syn keyword sqlFunction sa_check_commit
+syn keyword sqlFunction sa_checkpoint_execute
+syn keyword sqlFunction sa_conn_activity
+syn keyword sqlFunction sa_conn_compression_info
+syn keyword sqlFunction sa_conn_deregister
+syn keyword sqlFunction sa_conn_info
+syn keyword sqlFunction sa_conn_properties
+syn keyword sqlFunction sa_conn_properties_by_conn
+syn keyword sqlFunction sa_conn_properties_by_name
+syn keyword sqlFunction sa_conn_register
+syn keyword sqlFunction sa_conn_set_status
+syn keyword sqlFunction sa_create_analysis_from_query
+syn keyword sqlFunction sa_db_info
+syn keyword sqlFunction sa_db_properties
+syn keyword sqlFunction sa_disable_auditing_type
+syn keyword sqlFunction sa_disable_index
+syn keyword sqlFunction sa_disk_free_space
+syn keyword sqlFunction sa_enable_auditing_type
+syn keyword sqlFunction sa_enable_index
+syn keyword sqlFunction sa_end_forward_to
+syn keyword sqlFunction sa_eng_properties
+syn keyword sqlFunction sa_event_schedules
+syn keyword sqlFunction sa_exec_script
+syn keyword sqlFunction sa_flush_cache
+syn keyword sqlFunction sa_flush_statistics
+syn keyword sqlFunction sa_forward_to
+syn keyword sqlFunction sa_get_dtt
+syn keyword sqlFunction sa_get_histogram
+syn keyword sqlFunction sa_get_request_profile
+syn keyword sqlFunction sa_get_request_profile_sub
+syn keyword sqlFunction sa_get_request_times
+syn keyword sqlFunction sa_get_server_messages
+syn keyword sqlFunction sa_get_simulated_scale_factors
+syn keyword sqlFunction sa_get_workload_capture_status
+syn keyword sqlFunction sa_index_density
+syn keyword sqlFunction sa_index_levels
+syn keyword sqlFunction sa_index_statistics
+syn keyword sqlFunction sa_internal_alter_index_ability
+syn keyword sqlFunction sa_internal_create_analysis_from_query
+syn keyword sqlFunction sa_internal_disk_free_space
+syn keyword sqlFunction sa_internal_get_dtt
+syn keyword sqlFunction sa_internal_get_histogram
+syn keyword sqlFunction sa_internal_get_request_times
+syn keyword sqlFunction sa_internal_get_simulated_scale_factors
+syn keyword sqlFunction sa_internal_get_workload_capture_status
+syn keyword sqlFunction sa_internal_index_density
+syn keyword sqlFunction sa_internal_index_levels
+syn keyword sqlFunction sa_internal_index_statistics
+syn keyword sqlFunction sa_internal_java_loaded_classes
+syn keyword sqlFunction sa_internal_locks
+syn keyword sqlFunction sa_internal_pause_workload_capture
+syn keyword sqlFunction sa_internal_procedure_profile
+syn keyword sqlFunction sa_internal_procedure_profile_summary
+syn keyword sqlFunction sa_internal_read_backup_history
+syn keyword sqlFunction sa_internal_recommend_indexes
+syn keyword sqlFunction sa_internal_reset_identity
+syn keyword sqlFunction sa_internal_resume_workload_capture
+syn keyword sqlFunction sa_internal_start_workload_capture
+syn keyword sqlFunction sa_internal_stop_index_consultant
+syn keyword sqlFunction sa_internal_stop_workload_capture
+syn keyword sqlFunction sa_internal_table_fragmentation
+syn keyword sqlFunction sa_internal_table_page_usage
+syn keyword sqlFunction sa_internal_table_stats
+syn keyword sqlFunction sa_internal_virtual_sysindex
+syn keyword sqlFunction sa_internal_virtual_sysixcol
+syn keyword sqlFunction sa_java_loaded_classes
+syn keyword sqlFunction sa_jdk_version
+syn keyword sqlFunction sa_locks
+syn keyword sqlFunction sa_make_object
+syn keyword sqlFunction sa_pause_workload_capture
+syn keyword sqlFunction sa_proc_debug_attach_to_connection
+syn keyword sqlFunction sa_proc_debug_connect
+syn keyword sqlFunction sa_proc_debug_detach_from_connection
+syn keyword sqlFunction sa_proc_debug_disconnect
+syn keyword sqlFunction sa_proc_debug_get_connection_name
+syn keyword sqlFunction sa_proc_debug_release_connection
+syn keyword sqlFunction sa_proc_debug_request
+syn keyword sqlFunction sa_proc_debug_version
+syn keyword sqlFunction sa_proc_debug_wait_for_connection
+syn keyword sqlFunction sa_procedure_profile
+syn keyword sqlFunction sa_procedure_profile_summary
+syn keyword sqlFunction sa_read_backup_history
+syn keyword sqlFunction sa_recommend_indexes
+syn keyword sqlFunction sa_recompile_views
+syn keyword sqlFunction sa_remove_index_consultant_analysis
+syn keyword sqlFunction sa_remove_index_consultant_workload
+syn keyword sqlFunction sa_reset_identity
+syn keyword sqlFunction sa_resume_workload_capture
+syn keyword sqlFunction sa_server_option
+syn keyword sqlFunction sa_set_simulated_scale_factor
+syn keyword sqlFunction sa_setremoteuser
+syn keyword sqlFunction sa_setsubscription
+syn keyword sqlFunction sa_start_recording_commits
+syn keyword sqlFunction sa_start_workload_capture
+syn keyword sqlFunction sa_statement_text
+syn keyword sqlFunction sa_stop_index_consultant
+syn keyword sqlFunction sa_stop_recording_commits
+syn keyword sqlFunction sa_stop_workload_capture
+syn keyword sqlFunction sa_sync
+syn keyword sqlFunction sa_sync_sub
+syn keyword sqlFunction sa_table_fragmentation
+syn keyword sqlFunction sa_table_page_usage
+syn keyword sqlFunction sa_table_stats
+syn keyword sqlFunction sa_update_index_consultant_workload
+syn keyword sqlFunction sa_validate
+syn keyword sqlFunction sa_virtual_sysindex
+syn keyword sqlFunction sa_virtual_sysixcol
+
+" sp_ procedures
+syn keyword sqlFunction sp_addalias
+syn keyword sqlFunction sp_addauditrecord
+syn keyword sqlFunction sp_adddumpdevice
+syn keyword sqlFunction sp_addgroup
+syn keyword sqlFunction sp_addlanguage
+syn keyword sqlFunction sp_addlogin
+syn keyword sqlFunction sp_addmessage
+syn keyword sqlFunction sp_addremotelogin
+syn keyword sqlFunction sp_addsegment
+syn keyword sqlFunction sp_addserver
+syn keyword sqlFunction sp_addthreshold
+syn keyword sqlFunction sp_addtype
+syn keyword sqlFunction sp_adduser
+syn keyword sqlFunction sp_auditdatabase
+syn keyword sqlFunction sp_auditlogin
+syn keyword sqlFunction sp_auditobject
+syn keyword sqlFunction sp_auditoption
+syn keyword sqlFunction sp_auditsproc
+syn keyword sqlFunction sp_bindefault
+syn keyword sqlFunction sp_bindmsg
+syn keyword sqlFunction sp_bindrule
+syn keyword sqlFunction sp_changedbowner
+syn keyword sqlFunction sp_changegroup
+syn keyword sqlFunction sp_checknames
+syn keyword sqlFunction sp_checkperms
+syn keyword sqlFunction sp_checkreswords
+syn keyword sqlFunction sp_clearstats
+syn keyword sqlFunction sp_column_privileges
+syn keyword sqlFunction sp_columns
+syn keyword sqlFunction sp_commonkey
+syn keyword sqlFunction sp_configure
+syn keyword sqlFunction sp_cursorinfo
+syn keyword sqlFunction sp_databases
+syn keyword sqlFunction sp_datatype_info
+syn keyword sqlFunction sp_dboption
+syn keyword sqlFunction sp_dbremap
+syn keyword sqlFunction sp_depends
+syn keyword sqlFunction sp_diskdefault
+syn keyword sqlFunction sp_displaylogin
+syn keyword sqlFunction sp_dropalias
+syn keyword sqlFunction sp_dropdevice
+syn keyword sqlFunction sp_dropgroup
+syn keyword sqlFunction sp_dropkey
+syn keyword sqlFunction sp_droplanguage
+syn keyword sqlFunction sp_droplogin
+syn keyword sqlFunction sp_dropmessage
+syn keyword sqlFunction sp_dropremotelogin
+syn keyword sqlFunction sp_dropsegment
+syn keyword sqlFunction sp_dropserver
+syn keyword sqlFunction sp_dropthreshold
+syn keyword sqlFunction sp_droptype
+syn keyword sqlFunction sp_dropuser
+syn keyword sqlFunction sp_estspace
+syn keyword sqlFunction sp_extendsegment
+syn keyword sqlFunction sp_fkeys
+syn keyword sqlFunction sp_foreignkey
+syn keyword sqlFunction sp_getmessage
+syn keyword sqlFunction sp_help
+syn keyword sqlFunction sp_helpconstraint
+syn keyword sqlFunction sp_helpdb
+syn keyword sqlFunction sp_helpdevice
+syn keyword sqlFunction sp_helpgroup
+syn keyword sqlFunction sp_helpindex
+syn keyword sqlFunction sp_helpjoins
+syn keyword sqlFunction sp_helpkey
+syn keyword sqlFunction sp_helplanguage
+syn keyword sqlFunction sp_helplog
+syn keyword sqlFunction sp_helpprotect
+syn keyword sqlFunction sp_helpremotelogin
+syn keyword sqlFunction sp_helpsegment
+syn keyword sqlFunction sp_helpserver
+syn keyword sqlFunction sp_helpsort
+syn keyword sqlFunction sp_helptext
+syn keyword sqlFunction sp_helpthreshold
+syn keyword sqlFunction sp_helpuser
+syn keyword sqlFunction sp_indsuspect
+syn keyword sqlFunction sp_lock
+syn keyword sqlFunction sp_locklogin
+syn keyword sqlFunction sp_logdevice
+syn keyword sqlFunction sp_login_environment
+syn keyword sqlFunction sp_modifylogin
+syn keyword sqlFunction sp_modifythreshold
+syn keyword sqlFunction sp_monitor
+syn keyword sqlFunction sp_password
+syn keyword sqlFunction sp_pkeys
+syn keyword sqlFunction sp_placeobject
+syn keyword sqlFunction sp_primarykey
+syn keyword sqlFunction sp_procxmode
+syn keyword sqlFunction sp_recompile
+syn keyword sqlFunction sp_remap
+syn keyword sqlFunction sp_remote_columns
+syn keyword sqlFunction sp_remote_exported_keys
+syn keyword sqlFunction sp_remote_imported_keys
+syn keyword sqlFunction sp_remote_pcols
+syn keyword sqlFunction sp_remote_primary_keys
+syn keyword sqlFunction sp_remote_procedures
+syn keyword sqlFunction sp_remote_tables
+syn keyword sqlFunction sp_remoteoption
+syn keyword sqlFunction sp_rename
+syn keyword sqlFunction sp_renamedb
+syn keyword sqlFunction sp_reportstats
+syn keyword sqlFunction sp_reset_tsql_environment
+syn keyword sqlFunction sp_role
+syn keyword sqlFunction sp_server_info
+syn keyword sqlFunction sp_servercaps
+syn keyword sqlFunction sp_serverinfo
+syn keyword sqlFunction sp_serveroption
+syn keyword sqlFunction sp_setlangalias
+syn keyword sqlFunction sp_setreplicate
+syn keyword sqlFunction sp_setrepproc
+syn keyword sqlFunction sp_setreptable
+syn keyword sqlFunction sp_spaceused
+syn keyword sqlFunction sp_special_columns
+syn keyword sqlFunction sp_sproc_columns
+syn keyword sqlFunction sp_statistics
+syn keyword sqlFunction sp_stored_procedures
+syn keyword sqlFunction sp_syntax
+syn keyword sqlFunction sp_table_privileges
+syn keyword sqlFunction sp_tables
+syn keyword sqlFunction sp_tsql_environment
+syn keyword sqlFunction sp_tsql_feature_not_supported
+syn keyword sqlFunction sp_unbindefault
+syn keyword sqlFunction sp_unbindmsg
+syn keyword sqlFunction sp_unbindrule
+syn keyword sqlFunction sp_volchanged
+syn keyword sqlFunction sp_who
+syn keyword sqlFunction xp_scanf
+syn keyword sqlFunction xp_sprintf
+
+" server functions
+syn keyword sqlFunction col_length
+syn keyword sqlFunction col_name
+syn keyword sqlFunction index_col
+syn keyword sqlFunction object_id
+syn keyword sqlFunction object_name
+syn keyword sqlFunction proc_role
+syn keyword sqlFunction show_role
+syn keyword sqlFunction xp_cmdshell
+syn keyword sqlFunction xp_msver
+syn keyword sqlFunction xp_read_file
+syn keyword sqlFunction xp_real_cmdshell
+syn keyword sqlFunction xp_real_read_file
+syn keyword sqlFunction xp_real_sendmail
+syn keyword sqlFunction xp_real_startmail
+syn keyword sqlFunction xp_real_startsmtp
+syn keyword sqlFunction xp_real_stopmail
+syn keyword sqlFunction xp_real_stopsmtp
+syn keyword sqlFunction xp_real_write_file
+syn keyword sqlFunction xp_scanf
+syn keyword sqlFunction xp_sendmail
+syn keyword sqlFunction xp_sprintf
+syn keyword sqlFunction xp_startmail
+syn keyword sqlFunction xp_startsmtp
+syn keyword sqlFunction xp_stopmail
+syn keyword sqlFunction xp_stopsmtp
+syn keyword sqlFunction xp_write_file
+
+" http functions
+syn keyword sqlFunction	http_header http_variable
+syn keyword sqlFunction	next_http_header next_http_variable
+syn keyword sqlFunction	sa_set_http_header sa_set_http_option
+syn keyword sqlFunction	sa_http_variable_info sa_http_header_info
+
+" http functions 9.0.1 
+syn keyword sqlFunction	http_encode http_decode
+syn keyword sqlFunction	html_encode html_decode
+
+" keywords
+syn keyword sqlKeyword	absolute action activ add address after
+syn keyword sqlKeyword	algorithm allow_dup_row
+syn keyword sqlKeyword	alter and any as asc ascii ase at atomic
+syn keyword sqlKeyword	attended audit authorization 
+syn keyword sqlKeyword	autoincrement autostop bcp before
+syn keyword sqlKeyword	between blank
+syn keyword sqlKeyword	blanks block bottom unbounded break bufferpool
+syn keyword sqlKeyword	bulk by byte cache calibrate calibration
+syn keyword sqlKeyword	capability cascade cast
+syn keyword sqlKeyword	catalog changes char char_convert check
+syn keyword sqlKeyword	class classes client 
+syn keyword sqlKeyword	cluster clustered collation column
+syn keyword sqlKeyword	command comment comparisons
+syn keyword sqlKeyword	compatible component compressed compute
+syn keyword sqlKeyword	concat confirm connection
+syn keyword sqlKeyword	console consolidate consolidated
+syn keyword sqlKeyword	constraint constraints continue
+syn keyword sqlKeyword	convert count crc cross cube
+syn keyword sqlKeyword	current cursor data data database
+syn keyword sqlKeyword	current_timestamp current_user
+syn keyword sqlKeyword	datatype dba dbfile
+syn keyword sqlKeyword	dbspace debug
+syn keyword sqlKeyword	decrypted default defaults definition
+syn keyword sqlKeyword	delay deleting delimited desc
+syn keyword sqlKeyword	description deterministic directory
+syn keyword sqlKeyword	disable distinct do domain 
+syn keyword sqlKeyword	dsetpass dttm dynamic each editproc ejb
+syn keyword sqlKeyword	else elseif enable encrypted end endif
+syn keyword sqlKeyword	engine erase error escape escapes event
+syn keyword sqlKeyword	every exception exclusive exec 
+syn keyword sqlKeyword	existing exists expanded express
+syn keyword sqlKeyword	external externlogin factor false
+syn keyword sqlKeyword	fastfirstrow fieldproc file filler
+syn keyword sqlKeyword	fillfactor finish first first_keyword 
+syn keyword sqlKeyword	following force foreign format 
+syn keyword sqlKeyword	freepage full function go global
+syn keyword sqlKeyword	group handler hash having hexadecimal 
+syn keyword sqlKeyword	hidden high hng hold holdlock
+syn keyword sqlKeyword	hours id identified identity ignore
+syn keyword sqlKeyword	ignore_dup_key ignore_dup_row immediate
+syn keyword sqlKeyword	in inactive incremental index info inner
+syn keyword sqlKeyword	inout insensitive inserting
+syn keyword sqlKeyword	instead integrated
+syn keyword sqlKeyword	internal into iq is isolation jar java
+syn keyword sqlKeyword	jconnect jdk join kb key language last
+syn keyword sqlKeyword	last_keyword lateral left level like
+syn keyword sqlKeyword	limit local location log
+syn keyword sqlKeyword	logging login long low main
+syn keyword sqlKeyword	match max maximum membership 
+syn keyword sqlKeyword	minutes mirror mode modify monitor 
+syn keyword sqlKeyword	name named native natural new next no
+syn keyword sqlKeyword	noholdlock nolock nonclustered none not
+syn keyword sqlKeyword	notify null nulls of off old on
+syn keyword sqlKeyword	only optimization optimizer option
+syn keyword sqlKeyword	or order others out outer over
+syn keyword sqlKeyword	package packetsize padding page pages
+syn keyword sqlKeyword	paglock parallel part partition path
+syn keyword sqlKeyword	pctfree plan preceding precision prefetch prefix
+syn keyword sqlKeyword	preserve preview primary 
+syn keyword sqlKeyword	prior priqty private privileges
+syn keyword sqlKeyword	procedure public publication publish publisher
+syn keyword sqlKeyword	quotes range readcommitted
+syn keyword sqlKeyword	readpast readuncommitted 
+syn keyword sqlKeyword	received recompile recursive references
+syn keyword sqlKeyword	referencing relative 
+syn keyword sqlKeyword	rename repeatableread
+syn keyword sqlKeyword	replicate rereceive resend reset
+syn keyword sqlKeyword	resolve resource respect
+syn keyword sqlKeyword	restrict result retain
+syn keyword sqlKeyword	returns right 
+syn keyword sqlKeyword	rollup row rowlock rows save 
+syn keyword sqlKeyword	schedule schema scroll seconds secqty
+syn keyword sqlKeyword	send sensitive sent serializable
+syn keyword sqlKeyword	server server session sets 
+syn keyword sqlKeyword	share since site size skip
+syn keyword sqlKeyword	some sorted_data sqlcode sqlid
+syn keyword sqlKeyword	sqlstate stacker statement
+syn keyword sqlKeyword	statistics status stogroup store
+syn keyword sqlKeyword	strip subpages subscribe subscription
+syn keyword sqlKeyword	subtransaction synchronization
+syn keyword sqlKeyword	syntax_error table tablock
+syn keyword sqlKeyword	tablockx tb temp template temporary then
+syn keyword sqlKeyword	timezone to top
+syn keyword sqlKeyword	transaction transactional tries true 
+syn keyword sqlKeyword	tsequal type unconditionally unenforced
+syn keyword sqlKeyword	unique union unknown unload 
+syn keyword sqlKeyword	updating updlock upgrade use user
+syn keyword sqlKeyword	using utc utilities validproc
+syn keyword sqlKeyword	value values varchar variable
+syn keyword sqlKeyword	varying vcat verify view virtual wait 
+syn keyword sqlKeyword	warning wd when where window with within
+syn keyword sqlKeyword	with_lparen work writefile 
+syn keyword sqlKeyword	xlock zeros
+" XML function support
+syn keyword sqlFunction	openxml xmlelement xmlforest xmlgen xmlconcat xmlagg 
+syn keyword sqlFunction	xmlattributes 
+syn keyword sqlKeyword	raw auto elements explicit
+" HTTP support
+syn keyword sqlKeyword	authorization secure url service
+" HTTP 9.0.2 new procedure keywords
+syn keyword sqlKeyword	namespace certificate clientport proxy
+" OLAP support 9.0.0
+syn keyword sqlKeyword	covar_pop covar_samp corr regr_slope regr_intercept 
+syn keyword sqlKeyword	regr_count regr_r2 regr_avgx regr_avgy
+syn keyword sqlKeyword	regr_sxx regr_syy regr_sxy
+
+" Alternate keywords
+syn keyword sqlKeyword	character dec options proc reference
+syn keyword sqlKeyword	subtrans tran syn keyword 
+
+
+syn keyword sqlOperator	in any some all between exists
+syn keyword sqlOperator	like escape not is and or 
+syn keyword sqlOperator intersect minus
+syn keyword sqlOperator prior distinct
+
+syn keyword sqlStatement allocate alter backup begin call case
+syn keyword sqlStatement checkpoint clear close commit configure connect
+syn keyword sqlStatement create deallocate declare delete describe
+syn keyword sqlStatement disconnect drop execute exit explain fetch
+syn keyword sqlStatement for forward from get goto grant help if include
+syn keyword sqlStatement input insert install leave load lock loop
+syn keyword sqlStatement message open output parameter parameters passthrough
+syn keyword sqlStatement prepare print put raiserror read readtext release
+syn keyword sqlStatement remote remove reorganize resignal restore resume
+syn keyword sqlStatement return revoke rollback savepoint select
+syn keyword sqlStatement set setuser signal start stop synchronize
+syn keyword sqlStatement system trigger truncate unload update
+syn keyword sqlStatement validate waitfor whenever while writetext
+
+
+syn keyword sqlType	char long varchar text
+syn keyword sqlType	bigint decimal double float int integer numeric 
+syn keyword sqlType	smallint tinyint real
+syn keyword sqlType	money smallmoney
+syn keyword sqlType	bit 
+syn keyword sqlType	date datetime smalldate time timestamp 
+syn keyword sqlType	binary image varbinary uniqueidentifier
+syn keyword sqlType	xml unsigned
+
+syn keyword sqlOption Allow_nulls_by_default
+syn keyword sqlOption Ansi_blanks
+syn keyword sqlOption Ansi_close_cursors_on_rollback
+syn keyword sqlOption Ansi_integer_overflow
+syn keyword sqlOption Ansi_permissions
+syn keyword sqlOption Ansi_update_constraints
+syn keyword sqlOption Ansinull
+syn keyword sqlOption Assume_distinct_servers
+syn keyword sqlOption Auditing
+syn keyword sqlOption Auditing_options
+syn keyword sqlOption Auto_commit
+syn keyword sqlOption Auto_refetch
+syn keyword sqlOption Automatic_timestamp
+syn keyword sqlOption Background_priority
+syn keyword sqlOption Bell
+syn keyword sqlOption Blob_threshold
+syn keyword sqlOption Blocking
+syn keyword sqlOption Blocking_timeout
+syn keyword sqlOption Chained
+syn keyword sqlOption Char_OEM_Translation
+syn keyword sqlOption Checkpoint_time
+syn keyword sqlOption Cis_option
+syn keyword sqlOption Cis_rowset_size
+syn keyword sqlOption Close_on_endtrans
+syn keyword sqlOption Command_delimiter
+syn keyword sqlOption Commit_on_exit
+syn keyword sqlOption Compression
+syn keyword sqlOption Connection_authentication
+syn keyword sqlOption Continue_after_raiserror
+syn keyword sqlOption Conversion_error
+syn keyword sqlOption Cooperative_commit_timeout
+syn keyword sqlOption Cooperative_commits
+syn keyword sqlOption Database_authentication
+syn keyword sqlOption Date_format
+syn keyword sqlOption Date_order
+syn keyword sqlOption Debug_messages
+syn keyword sqlOption Dedicated_task
+syn keyword sqlOption Default_timestamp_increment
+syn keyword sqlOption Delayed_commit_timeout
+syn keyword sqlOption Delayed_commits
+syn keyword sqlOption Delete_old_logs
+syn keyword sqlOption Describe_Java_Format
+syn keyword sqlOption Divide_by_zero_error
+syn keyword sqlOption Echo
+syn keyword sqlOption Escape_character
+syn keyword sqlOption Exclude_operators
+syn keyword sqlOption Extended_join_syntax
+syn keyword sqlOption External_remote_options
+syn keyword sqlOption Fire_triggers
+syn keyword sqlOption First_day_of_week
+syn keyword sqlOption Float_as_double
+syn keyword sqlOption For_xml_null_treatment
+syn keyword sqlOption Force_view_creation
+syn keyword sqlOption Global_database_id
+syn keyword sqlOption Headings
+syn keyword sqlOption Input_format
+syn keyword sqlOption Integrated_server_name
+syn keyword sqlOption Isolation_level
+syn keyword sqlOption ISQL_command_timing
+syn keyword sqlOption ISQL_escape_character
+syn keyword sqlOption ISQL_field_separator
+syn keyword sqlOption ISQL_log
+syn keyword sqlOption ISQL_plan
+syn keyword sqlOption ISQL_plan_cursor_sensitivity
+syn keyword sqlOption ISQL_plan_cursor_writability
+syn keyword sqlOption ISQL_quote
+syn keyword sqlOption Java_heap_size
+syn keyword sqlOption Java_input_output
+syn keyword sqlOption Java_namespace_size
+syn keyword sqlOption Java_page_buffer_size
+syn keyword sqlOption Lock_rejected_rows
+syn keyword sqlOption Log_deadlocks
+syn keyword sqlOption Log_detailed_plans
+syn keyword sqlOption Log_max_requests
+syn keyword sqlOption Login_mode
+syn keyword sqlOption Login_procedure
+syn keyword sqlOption Max_cursor_count
+syn keyword sqlOption Max_hash_size
+syn keyword sqlOption Max_plans_cached
+syn keyword sqlOption Max_recursive_iterations
+syn keyword sqlOption Max_statement_count
+syn keyword sqlOption Max_work_table_hash_size
+syn keyword sqlOption Min_password_length
+syn keyword sqlOption Nearest_century
+syn keyword sqlOption Non_keywords
+syn keyword sqlOption NULLS
+syn keyword sqlOption ODBC_describe_binary_as_varbinary
+syn keyword sqlOption ODBC_distinguish_char_and_varchar
+syn keyword sqlOption On_Charset_conversion_failure
+syn keyword sqlOption On_error
+syn keyword sqlOption On_tsql_error
+syn keyword sqlOption Optimistic_wait_for_commit
+syn keyword sqlOption Optimization_goal
+syn keyword sqlOption Optimization_level
+syn keyword sqlOption Optimization_logging
+syn keyword sqlOption Optimization_workload
+syn keyword sqlOption Output_format
+syn keyword sqlOption Output_length
+syn keyword sqlOption Output_nulls
+syn keyword sqlOption Percent_as_comment
+syn keyword sqlOption Pinned_cursor_percent_of_cache
+syn keyword sqlOption Precision
+syn keyword sqlOption Prefetch
+syn keyword sqlOption Preserve_source_format
+syn keyword sqlOption Prevent_article_pkey_update
+syn keyword sqlOption Qualify_owners
+syn keyword sqlOption Query_plan_on_open
+syn keyword sqlOption Quiet
+syn keyword sqlOption Quote_all_identifiers
+syn keyword sqlOption Quoted_identifier
+syn keyword sqlOption Read_past_deleted
+syn keyword sqlOption Recovery_time
+syn keyword sqlOption Remote_idle_timeout
+syn keyword sqlOption Replicate_all
+syn keyword sqlOption Replication_error
+syn keyword sqlOption Replication_error_piece
+syn keyword sqlOption Return_date_time_as_string
+syn keyword sqlOption Return_java_as_string
+syn keyword sqlOption RI_Trigger_time
+syn keyword sqlOption Rollback_on_deadlock
+syn keyword sqlOption Row_counts
+syn keyword sqlOption Save_remote_passwords
+syn keyword sqlOption Scale
+syn keyword sqlOption Screen_format
+syn keyword sqlOption Sort_Collation
+syn keyword sqlOption SQL_flagger_error_level
+syn keyword sqlOption SQL_flagger_warning_level
+syn keyword sqlOption SQLConnect
+syn keyword sqlOption SQLStart
+syn keyword sqlOption SR_Date_Format
+syn keyword sqlOption SR_Time_Format
+syn keyword sqlOption SR_TimeStamp_Format
+syn keyword sqlOption Statistics
+syn keyword sqlOption String_rtruncation
+syn keyword sqlOption Subscribe_by_remote
+syn keyword sqlOption Subsume_row_locks
+syn keyword sqlOption Suppress_TDS_debugging
+syn keyword sqlOption TDS_Empty_string_is_null
+syn keyword sqlOption Temp_space_limit_check
+syn keyword sqlOption Thread_count
+syn keyword sqlOption Thread_stack
+syn keyword sqlOption Thread_swaps
+syn keyword sqlOption Time_format
+syn keyword sqlOption Time_zone_adjustment
+syn keyword sqlOption Timestamp_format
+syn keyword sqlOption Truncate_date_values
+syn keyword sqlOption Truncate_timestamp_values
+syn keyword sqlOption Truncate_with_auto_commit
+syn keyword sqlOption Truncation_length
+syn keyword sqlOption Tsql_hex_constant
+syn keyword sqlOption Tsql_variables
+syn keyword sqlOption Update_statistics
+syn keyword sqlOption User_estimates
+syn keyword sqlOption Verify_all_columns
+syn keyword sqlOption Verify_threshold
+syn keyword sqlOption Wait_for_commit
+
+" Strings and characters:
+syn region sqlString		start=+"+    end=+"+ contains=@Spell
+syn region sqlString		start=+'+    end=+'+ contains=@Spell
+
+" Numbers:
+syn match sqlNumber		"-\=\<\d*\.\=[0-9_]\>"
+
+" Comments:
+syn region sqlDashComment	start=/--/ end=/$/ contains=@Spell
+syn region sqlSlashComment	start=/\/\// end=/$/ contains=@Spell
+syn region sqlMultiComment	start="/\*" end="\*/" contains=sqlMultiComment,@Spell
+syn cluster sqlComment	contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell
+syn sync ccomment sqlComment
+syn sync ccomment sqlDashComment
+syn sync ccomment sqlSlashComment
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_sql_syn_inits")
+    if version < 508
+        let did_sql_syn_inits = 1
+        command -nargs=+ HiLink hi link <args>
+    else
+        command -nargs=+ HiLink hi link <args>
+    endif
+
+    HiLink sqlDashComment	Comment
+    HiLink sqlSlashComment	Comment
+    HiLink sqlMultiComment	Comment
+    HiLink sqlNumber	        Number
+    HiLink sqlOperator	        Operator
+    HiLink sqlSpecial	        Special
+    HiLink sqlKeyword	        Keyword
+    HiLink sqlStatement	        Statement
+    HiLink sqlString	        String
+    HiLink sqlType	        Type
+    HiLink sqlFunction	        Function
+    HiLink sqlOption	        PreProc
+
+    delcommand HiLink
+endif
+
+let b:current_syntax = "sqlanywhere"
+
+" vim:sw=4:ff=unix:
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2465,7 +2465,7 @@ draw_cmdline(start, len)
 	int		j;
 	int		newlen = 0;
 	int		mb_l;
-	int		pc, pc1;
+	int		pc, pc1 = 0;
 	int		prev_c = 0;
 	int		prev_c1 = 0;
 	int		u8c;
@@ -3480,7 +3480,7 @@ ExpandEscape(xp, str, numfiles, files, o
 		    {
 			vim_free(files[i]);
 			files[i] = p;
-#if defined(BACKSLASH_IN_FILENAME) || defined(COLON_AS_PATHSEP)
+#if defined(BACKSLASH_IN_FILENAME)
 			p = vim_strsave_escaped(files[i], (char_u *)" ");
 			if (p != NULL)
 			{
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -3698,11 +3698,7 @@ gui_mch_get_color(char_u *name)
 	char	line[LINE_LEN];
 	char_u	*fname;
 
-#ifdef COLON_AS_PATHSEP
-	fname = expand_env_save((char_u *)"$VIMRUNTIME:rgb.txt");
-#else
 	fname = expand_env_save((char_u *)"$VIMRUNTIME/rgb.txt");
-#endif
 	if (fname == NULL)
 	    return INVALCOLOR;
 
--- a/src/option.c
+++ b/src/option.c
@@ -416,6 +416,14 @@ struct vimoption
 
 #define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
 
+/* 'isprint' for latin1 is also used for MS-Windows, where 0x80 is used for
+ * the currency sign.  Thus this isn't really latin1... */
+#if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+# define ISP_LATIN1 (char_u *)"@,128,161-255"
+#else
+# define ISP_LATIN1 (char_u *)"@,161-255"
+#endif
+
 /*
  * options[] is initialized here.
  * The order of the options MUST be alphabetic for ":set all" and findoption().
@@ -1440,7 +1448,7 @@ static struct vimoption
 			    /* all chars above 63 are printable */
 			    (char_u *)"63-255",
 # else
-			    (char_u *)"@,161-255",
+			    ISP_LATIN1,
 # endif
 #endif
 				(char_u *)0L}},
@@ -3210,11 +3218,11 @@ set_init_1()
 		 * latin1.  Also set the defaults for when 'nocompatible' is
 		 * set. */
 		set_string_option_direct((char_u *)"isp", -1,
-				   (char_u *)"@,161-255", OPT_FREE, SID_NONE);
+					      ISP_LATIN1, OPT_FREE, SID_NONE);
 		set_string_option_direct((char_u *)"isk", -1,
 					      ISK_LATIN1, OPT_FREE, SID_NONE);
 		opt_idx = findoption((char_u *)"isp");
-		options[opt_idx].def_val[VIM_DEFAULT] = (char_u *)"@,161-255";
+		options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1;
 		opt_idx = findoption((char_u *)"isk");
 		options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
 		(void)init_chartab();
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 8)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 8, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 9)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 9, compiled "