]> granicus.if.org Git - vim/commitdiff
updated for version 7.1a
authorBram Moolenaar <Bram@vim.org>
Sat, 5 May 2007 17:54:07 +0000 (17:54 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 5 May 2007 17:54:07 +0000 (17:54 +0000)
206 files changed:
README.txt
README_amibin.txt
README_dos.txt
README_extra.txt
README_mac.txt
README_ole.txt
runtime/autoload/adacomplete.vim [new file with mode: 0644]
runtime/autoload/csscomplete.vim
runtime/autoload/decada.vim [new file with mode: 0644]
runtime/autoload/getscript.vim [new file with mode: 0644]
runtime/autoload/netrw.vim
runtime/autoload/pythoncomplete.vim
runtime/autoload/rubycomplete.vim
runtime/autoload/syntaxcomplete.vim
runtime/autoload/xmlcomplete.vim
runtime/autoload/zip.vim
runtime/colors/blue.vim
runtime/colors/torte.vim
runtime/doc/change.txt
runtime/doc/cmdline.txt
runtime/doc/debug.txt
runtime/doc/debugger.txt
runtime/doc/develop.txt
runtime/doc/diff.txt
runtime/doc/digraph.txt
runtime/doc/editing.txt
runtime/doc/fold.txt
runtime/doc/gui_w16.txt
runtime/doc/gui_w32.txt
runtime/doc/gui_x11.txt
runtime/doc/hangulin.txt
runtime/doc/help.txt
runtime/doc/if_cscop.txt
runtime/doc/if_mzsch.txt
runtime/doc/if_ole.txt
runtime/doc/if_perl.txt
runtime/doc/if_pyth.txt
runtime/doc/if_ruby.txt
runtime/doc/if_sniff.txt
runtime/doc/insert.txt
runtime/doc/mbyte.txt
runtime/doc/mlang.txt
runtime/doc/motion.txt
runtime/doc/os_390.txt
runtime/doc/os_beos.txt
runtime/doc/os_mac.txt
runtime/doc/os_msdos.txt
runtime/doc/os_risc.txt
runtime/doc/os_unix.txt
runtime/doc/pi_getscript.txt [new file with mode: 0644]
runtime/doc/pi_gzip.txt
runtime/doc/pi_netrw.txt
runtime/doc/pi_paren.txt
runtime/doc/pi_tar.txt
runtime/doc/pi_vimball.txt
runtime/doc/pi_zip.txt
runtime/doc/print.txt
runtime/doc/quickref.txt
runtime/doc/recover.txt
runtime/doc/rileft.txt
runtime/doc/russian.txt
runtime/doc/sign.txt
runtime/doc/sponsor.txt
runtime/doc/tags
runtime/doc/term.txt
runtime/doc/tips.txt
runtime/doc/uganda.txt
runtime/doc/undo.txt
runtime/doc/usr_02.txt
runtime/doc/usr_03.txt
runtime/doc/usr_08.txt
runtime/doc/usr_09.txt
runtime/doc/usr_10.txt
runtime/doc/usr_25.txt
runtime/doc/usr_26.txt
runtime/doc/usr_29.txt
runtime/doc/usr_32.txt
runtime/doc/usr_42.txt
runtime/doc/usr_44.txt
runtime/doc/usr_90.txt
runtime/doc/usr_toc.txt
runtime/doc/version5.txt
runtime/doc/version6.txt
runtime/doc/vim2html.pl
runtime/doc/visual.txt
runtime/doc/xxd-it.1
runtime/doc/xxd-pl.UTF-8.1
runtime/doc/xxd-ru.UTF-8.1
runtime/ftplugin/ada.vim
runtime/ftplugin/bst.vim [new file with mode: 0644]
runtime/ftplugin/cobol.vim [new file with mode: 0644]
runtime/ftplugin/debchangelog.vim
runtime/ftplugin/hamster.vim [new file with mode: 0644]
runtime/ftplugin/haskell.vim
runtime/ftplugin/mail.vim
runtime/ftplugin/make.vim
runtime/ftplugin/ocaml.vim
runtime/indent/ada.vim
runtime/indent/eruby.vim
runtime/indent/html.vim
runtime/indent/htmldjango.vim [new file with mode: 0644]
runtime/indent/jsp.vim [new file with mode: 0644]
runtime/indent/ocaml.vim
runtime/indent/python.vim
runtime/indent/ruby.vim
runtime/indent/vhdl.vim
runtime/keymap/bulgarian-bds.vim [new file with mode: 0644]
runtime/keymap/bulgarian-phonetic.vim [new file with mode: 0644]
runtime/keymap/thaana.vim [new file with mode: 0644]
runtime/keymap/vietnamese-viqr_utf-8.vim [new file with mode: 0644]
runtime/lang/menu_sl_si.cp1250.vim [new file with mode: 0644]
runtime/lang/menu_sl_si.latin2.vim [new file with mode: 0644]
runtime/lang/menu_slovak_slovak_republic.1250.vim
runtime/plugin/README.txt
runtime/plugin/vimballPlugin.vim
runtime/plugin/zipPlugin.vim
runtime/spell/da/main.aap
runtime/spell/pl/main.aap
runtime/spell/pt/pt_PT.diff
runtime/synmenu.vim
runtime/syntax/amiga.vim
runtime/syntax/aspvbs.vim
runtime/syntax/autoit.vim [new file with mode: 0644]
runtime/syntax/automake.vim
runtime/syntax/b.vim
runtime/syntax/bzr.vim [new file with mode: 0644]
runtime/syntax/c.vim
runtime/syntax/cmusrc.vim [new file with mode: 0644]
runtime/syntax/csh.vim
runtime/syntax/dcl.vim
runtime/syntax/desc.vim
runtime/syntax/elmfilt.vim
runtime/syntax/eruby.vim
runtime/syntax/foxpro.vim
runtime/syntax/fvwm.vim
runtime/syntax/hamster.vim [new file with mode: 0644]
runtime/syntax/ia64.vim
runtime/syntax/ibasic.vim [new file with mode: 0644]
runtime/syntax/initng.vim [new file with mode: 0644]
runtime/syntax/javascript.vim
runtime/syntax/lua.vim
runtime/syntax/lynx.vim
runtime/syntax/make.vim
runtime/syntax/maple.vim
runtime/syntax/masm.vim
runtime/syntax/muttrc.vim
runtime/syntax/named.vim
runtime/syntax/netrw.vim
runtime/syntax/objc.vim
runtime/syntax/ocaml.vim
runtime/syntax/php.vim
runtime/syntax/privoxy.vim [new file with mode: 0644]
runtime/syntax/remind.vim
runtime/syntax/ruby.vim
runtime/syntax/sd.vim [new file with mode: 0644]
runtime/syntax/sh.vim
runtime/syntax/tcsh.vim
runtime/syntax/tex.vim
runtime/syntax/vim.vim
runtime/syntax/xdefaults.vim
runtime/tutor/tutor.cs [new file with mode: 0644]
runtime/tutor/tutor.cs.cp1250 [new file with mode: 0644]
runtime/tutor/tutor.cs.utf-8 [new file with mode: 0644]
runtime/tutor/tutor.hu [new file with mode: 0644]
runtime/tutor/tutor.hu.utf-8 [new file with mode: 0644]
runtime/tutor/tutor.it
runtime/tutor/tutor.tr.utf-8 [new file with mode: 0644]
src/GvimExt/GvimExt.reg
src/if_xcmdsrv.c
src/keymap.h
src/move.c
src/os_vms.c
src/po/README_mvc.txt
src/po/de.po
src/po/pl.UTF-8.po
src/po/pl.cp1250.po
src/proto/charset.pro
src/proto/diff.pro
src/proto/ex_eval.pro
src/proto/ex_getln.pro
src/proto/fold.pro
src/proto/gui.pro
src/proto/gui_gtk_x11.pro
src/proto/gui_xmdlg.pro
src/proto/hashtab.pro
src/proto/if_tcl.pro
src/proto/main.pro
src/proto/mark.pro
src/proto/memfile.pro
src/proto/message.pro
src/proto/netbeans.pro
src/proto/normal.pro
src/proto/option.pro
src/proto/os_riscos.pro
src/proto/os_vms.pro
src/proto/os_win16.pro
src/proto/popupmnu.pro
src/proto/regexp.pro
src/proto/spell.pro
src/proto/syntax.pro
src/proto/version.pro
src/proto/window.pro
src/proto/workshop.pro
src/testdir/test55.ok
src/vim16.def
src/vimrun.c

index 3289023d8942dd6ed9b7e9a0ba333ea3661acfbb..5f9d0e985379da2f799d1f2a1628677bd5583cd3 100644 (file)
@@ -1,4 +1,4 @@
-README.txt for version 7.0 of Vim: Vi IMproved.
+README.txt for version 7.1a of Vim: Vi IMproved.
 
 
 WHAT IS VIM
index c6bf424ba7b4b11be51becd23281001ecc18668c..c2df760c9d3cd4014dbfef0f92110a7b2d4f7d93 100644 (file)
@@ -1,4 +1,4 @@
-README_amibin.txt for version 7.0 of Vim: Vi IMproved.
+README_amibin.txt for version 7.1a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_ami.txt" for installation instructions for the Amiga.
index c153e5392bb2a60ca2f1c5e073e319503c92ea19..7cfef57c3dc9647fcc6f5d440b32e4a46c444121 100644 (file)
@@ -1,4 +1,4 @@
-README_dos.txt for version 7.0 of Vim: Vi IMproved.
+README_dos.txt for version 7.1a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on MS-DOS and MS-Windows systems.
 See "README.txt" for general information about Vim.
index a1de23fb4d1bdf1f1c037391a04eb49186e17260..649f62c490b025e78934c29d87c090eca3b295b6 100644 (file)
@@ -1,4 +1,4 @@
-README_extra.txt for version 7.0 of Vim: Vi IMproved.
+README_extra.txt for version 7.1a of Vim: Vi IMproved.
 
 The extra archive of Vim is to be used in combination with the source archive
 (vim-7.0-src.tar.gz).  The extra archive is useless without it.
index 39857110a20f62355152bf64d4d8514b223dea64..50d939ee7c713e595f564daeb9d396f27e743dc8 100644 (file)
@@ -1,4 +1,4 @@
-README_mac.txt for version 7.0 of Vim: Vi IMproved.
+README_mac.txt for version 7.1a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on Macintosh systems.
 See "README.txt" for general information about Vim.
index 4e8ba470d2950dbb31d5e8e7db6b5dee90ed1b4f..d6b20d94b292400e5c62c9c2af3c23e497d38a9a 100644 (file)
@@ -1,4 +1,4 @@
-README_ole.txt for version 7.0 of Vim: Vi IMproved.
+README_ole.txt for version 7.1a of Vim: Vi IMproved.
 
 This archive contains gvim.exe with OLE interface and VisVim.
 This version of gvim.exe can also load a number of interface dynamically (you
diff --git a/runtime/autoload/adacomplete.vim b/runtime/autoload/adacomplete.vim
new file mode 100644 (file)
index 0000000..28d68f6
--- /dev/null
@@ -0,0 +1,109 @@
+"------------------------------------------------------------------------------
+"  Description: Vim Ada omnicompletion file
+"     Language:        Ada (2005)
+"         $Id$
+"   Maintainer:        Martin Krischik
+"      $Author$
+"       $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
+"      History: 24.05.2006 MK Unified Headers
+"              26.05.2006 MK improved search for begin of word.
+"              16.07.2006 MK Ada-Mode as vim-ball
+"              15.10.2006 MK Bram's suggestion for runtime integration
+"              05.11.2006 MK Bram suggested not to use include protection for
+"                            autoload
+"              05.11.2006 MK Bram suggested agaist using setlocal omnifunc 
+"              05.11.2006 MK Bram suggested to save on spaces
+"    Help Page: ft-ada-omni
+"------------------------------------------------------------------------------
+
+if version < 700
+   finish
+endif
+
+" Section: adacomplete#Complete () {{{1
+"
+" This function is used for the 'omnifunc' option.
+"
+function! adacomplete#Complete (findstart, base)
+   if a:findstart == 1
+      return ada#User_Complete (a:findstart, a:base)
+   else
+      "
+      " look up matches
+      "
+      if exists ("g:ada_omni_with_keywords")
+        call ada#User_Complete (a:findstart, a:base)
+      endif
+      "
+      "  search tag file for matches
+      "
+      let l:Pattern  = '^' . a:base . '.*$'
+      let l:Tag_List = taglist (l:Pattern)
+      "
+      " add symbols
+      "
+      for Tag_Item in l:Tag_List
+        if l:Tag_Item['kind'] == ''
+           "
+           " Tag created by gnat xref
+           "
+           let l:Match_Item = {
+              \ 'word':  l:Tag_Item['name'],
+              \ 'menu':  l:Tag_Item['filename'],
+              \ 'info':  "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'],
+              \ 'kind':  's',
+              \ 'icase': 1}
+        else
+           "
+           " Tag created by ctags
+           "
+           let l:Info  = 'Symbol                : ' . l:Tag_Item['name']  . "\n"
+           let l:Info .= 'Of type               : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1]  . "\n"
+           let l:Info .= 'Defined in File       : ' . l:Tag_Item['filename'] . "\n"
+
+           if has_key( l:Tag_Item, 'package')
+              let l:Info .= 'Package               : ' . l:Tag_Item['package'] . "\n"
+              let l:Menu  = l:Tag_Item['package']
+           elseif has_key( l:Tag_Item, 'separate')
+              let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n"
+              let l:Menu  = l:Tag_Item['separate']
+           elseif has_key( l:Tag_Item, 'packspec')
+              let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n"
+              let l:Menu  = l:Tag_Item['packspec']
+           elseif has_key( l:Tag_Item, 'type')
+              let l:Info .= 'Datetype              : ' . l:Tag_Item['type'] . "\n"
+              let l:Menu  = l:Tag_Item['type']
+           else
+              let l:Menu  = l:Tag_Item['filename']
+           endif
+
+           let l:Match_Item = {
+              \ 'word':  l:Tag_Item['name'],
+              \ 'menu':  l:Menu,
+              \ 'info':  l:Info,
+              \ 'kind':  l:Tag_Item['kind'],
+              \ 'icase': 1}
+        endif
+        if complete_add (l:Match_Item) == 0
+           return []
+        endif
+        if complete_check ()
+           return []
+        endif
+      endfor
+      return []
+   endif
+endfunction adacomplete#Complete
+
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006 Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
index a6f7041ff389512377be81fc904dc7585aa309c3..c9a5997c1ac3f7f1e7247a0746f5ddaf66bf415c 100644 (file)
 " Vim completion script
 " Language:    CSS 2.1
 " Maintainer:  Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change: 2006 Apr 30
+" Last Change: 2007 Mar 11
 
 function! csscomplete#CompleteCSS(findstart, base)
+
 if a:findstart
        " We need whole line to proper checking
-    let line = getline('.')
-    let start = col('.') - 1
+       let line = getline('.')
+       let start = col('.') - 1
        let compl_begin = col('.') - 2
-       while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
+       while start >= 0 && line[start - 1] =~ '\%(\k\|-\)'
                let start -= 1
        endwhile
        let b:compl_context = getline('.')[0:compl_begin]
        return start
+endif
+
+" There are few chars important for context:
+" ^ ; : { } /* */
+" Where ^ is start of line and /* */ are comment borders
+" Depending on their relative position to cursor we will know what should
+" be completed. 
+" 1. if nearest are ^ or { or ; current word is property
+" 2. if : it is value (with exception of pseudo things)
+" 3. if } we are outside of css definitions
+" 4. for comments ignoring is be the easiest but assume they are the same
+"    as 1. 
+" 5. if @ complete at-rule
+" 6. if ! complete important
+if exists("b:compl_context")
+       let line = b:compl_context
+       unlet! b:compl_context
 else
-       " There are few chars important for context:
-       " ^ ; : { } /* */
-       " Where ^ is start of line and /* */ are comment borders
-       " Depending on their relative position to cursor we will now what should
-       " be completed.
-       " 1. if nearest are ^ or { or ; current word is property
-       " 2. if : it is value (with exception of pseudo things)
-       " 3. if } we are outside of css definitions
-       " 4. for comments ignoring is be the easiest but assume they are the same
-       "    as 1.
-       " 5. if @ complete at-rule
-       " 6. if ! complete important
-       if exists("b:compl_context")
-               let line = b:compl_context
-               unlet! b:compl_context
-       else
-               let line = a:base
-       endif
-
-       let res = []
-       let res2 = []
-       let borders = {}
-
-       " We need the last occurrence of char so reverse line
-       let revline = join(reverse(split(line, '.\zs')), '')
-
-       let openbrace  = stridx(revline, '{')
-       let closebrace = stridx(revline, '}')
-       let colon      = stridx(revline, ':')
-       let semicolon  = stridx(revline, ';')
-       let opencomm   = stridx(revline, '*/') " Line was reversed
-       let closecomm  = stridx(revline, '/*') " Line was reversed
-       let style      = stridx(revline, '=\s*elyts') " Line was reversed
-       let atrule     = stridx(revline, '@')
-       let exclam     = stridx(revline, '!')
-
-       if openbrace > -1
-               let borders[openbrace] = "openbrace"
-       endif
-       if closebrace > -1
-               let borders[closebrace] = "closebrace"
-       endif
-       if colon > -1
-               let borders[colon] = "colon"
-       endif
-       if semicolon > -1
-               let borders[semicolon] = "semicolon"
-       endif
-       if opencomm > -1
-               let borders[opencomm] = "opencomm"
-       endif
-       if closecomm > -1
-               let borders[closecomm] = "closecomm"
-       endif
-       if style > -1
-               let borders[style] = "style"
-       endif
-       if atrule > -1
-               let borders[atrule] = "atrule"
-       endif
-       if exclam > -1
-               let borders[exclam] = "exclam"
-       endif
-
-
-       if len(borders) == 0 || borders[min(keys(borders))] =~ '^\(openbrace\|semicolon\|opencomm\|closecomm\|style\)$'
-               " Complete properties
-
-               let values = split("azimuth background background-attachment background-color background-image background-position background-repeat border bottom border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color  border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width caption-side clear clip color content counter-increment counter-reset cue cue-after cue-before cursor display direction elevation empty-cells float font font-family font-size font-style font-variant font-weight height left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-right margin-left margin-top margin-bottom max-height max-width min-height min-width orphans outline outline-color outline-style outline-width overflow padding padding-top padding-right padding-bottom padding-left page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position quotes right richness speak speak-header speak-numeral speak-punctuation speech-rate stress table-layout text-align text-decoration text-indent text-transform top unicode-bidi vertical-align visibility voice-family volume white-space width widows word-spacing z-index")
-
-               let entered_property = matchstr(line, '.\{-}\zs[a-zA-Z-]*$')
-
-               for m in values
-                       if m =~? '^'.entered_property
-                               call add(res, m . ':')
-                       elseif m =~? entered_property
-                               call add(res2, m . ':')
-                       endif
-               endfor
-
-               return res + res2
-
-       elseif borders[min(keys(borders))] == 'colon'
-               " Get name of property
-               let prop = tolower(matchstr(line, '\zs[a-zA-Z-]*\ze\s*:[^:]\{-}$'))
-
-               if prop == 'azimuth'
-                       let values = ["left-side", "far-left", "left", "center-left", "center", "center-right", "right", "far-right", "right-side", "behind", "leftwards", "rightwards"]
-               elseif prop == 'background-attachment'
-                       let values = ["scroll", "fixed"]
-               elseif prop == 'background-color'
-                       let values = ["transparent", "rgb(", "#"]
-               elseif prop == 'background-image'
-                       let values = ["url(", "none"]
-               elseif prop == 'background-position'
-                       let vals = matchstr(line, '.*:\s*\zs.*')
-                       if vals =~ '^\([a-zA-Z]\+\)\?$'
-                               let values = ["top", "center", "bottom"]
-                       elseif vals =~ '^[a-zA-Z]\+\s\+\([a-zA-Z]\+\)\?$'
-                               let values = ["left", "center", "right"]
-                       else
-                               return []
-                       endif
-               elseif prop == 'background-repeat'
-                       let values = ["repeat", "repeat-x", "repeat-y", "no-repeat"]
-               elseif prop == 'background'
-                       let values = ["url(", "scroll", "fixed", "transparent", "rgb(", "#", "none", "top", "center", "bottom" , "left", "right", "repeat", "repeat-x", "repeat-y", "no-repeat"]
-               elseif prop == 'border-collapse'
-                       let values = ["collapse", "separate"]
-               elseif prop == 'border-color'
-                       let values = ["rgb(", "#", "transparent"]
-               elseif prop == 'border-spacing'
+       let line = a:base
+endif
+
+let res = []
+let res2 = []
+let borders = {}
+
+" Check last occurrence of sequence
+
+let openbrace  = strridx(line, '{')
+let closebrace = strridx(line, '}')
+let colon      = strridx(line, ':')
+let semicolon  = strridx(line, ';')
+let opencomm   = strridx(line, '/*')
+let closecomm  = strridx(line, '*/')
+let style      = strridx(line, 'style\s*=')
+let atrule     = strridx(line, '@')
+let exclam     = strridx(line, '!')
+
+if openbrace > -1
+       let borders[openbrace] = "openbrace"
+endif
+if closebrace > -1
+       let borders[closebrace] = "closebrace"
+endif
+if colon > -1
+       let borders[colon] = "colon"
+endif
+if semicolon > -1
+       let borders[semicolon] = "semicolon"
+endif
+if opencomm > -1
+       let borders[opencomm] = "opencomm"
+endif
+if closecomm > -1
+       let borders[closecomm] = "closecomm"
+endif
+if style > -1
+       let borders[style] = "style"
+endif
+if atrule > -1
+       let borders[atrule] = "atrule"
+endif
+if exclam > -1
+       let borders[exclam] = "exclam"
+endif
+
+
+if len(borders) == 0 || borders[max(keys(borders))] =~ '^\%(openbrace\|semicolon\|opencomm\|closecomm\|style\)$'
+       " Complete properties
+
+       let values = split("azimuth background background-attachment background-color background-image background-position background-repeat border bottom border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color  border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width caption-side clear clip color content counter-increment counter-reset cue cue-after cue-before cursor display direction elevation empty-cells float font font-family font-size font-style font-variant font-weight height left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-right margin-left margin-top margin-bottom max-height max-width min-height min-width orphans outline outline-color outline-style outline-width overflow padding padding-top padding-right padding-bottom padding-left page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position quotes right richness speak speak-header speak-numeral speak-punctuation speech-rate stress table-layout text-align text-decoration text-indent text-transform top unicode-bidi vertical-align visibility voice-family volume white-space width widows word-spacing z-index")
+
+       let entered_property = matchstr(line, '.\{-}\zs[a-zA-Z-]*$')
+
+       for m in values
+               if m =~? '^'.entered_property
+                       call add(res, m . ':')
+               elseif m =~? entered_property
+                       call add(res2, m . ':')
+               endif
+       endfor
+
+       return res + res2
+
+elseif borders[max(keys(borders))] == 'colon'
+       " Get name of property
+       let prop = tolower(matchstr(line, '\zs[a-zA-Z-]*\ze\s*:[^:]\{-}$'))
+
+       if prop == 'azimuth'
+               let values = ["left-side", "far-left", "left", "center-left", "center", "center-right", "right", "far-right", "right-side", "behind", "leftwards", "rightwards"]
+       elseif prop == 'background-attachment'
+               let values = ["scroll", "fixed"]
+       elseif prop == 'background-color'
+               let values = ["transparent", "rgb(", "#"]
+       elseif prop == 'background-image'
+               let values = ["url(", "none"]
+       elseif prop == 'background-position'
+               let vals = matchstr(line, '.*:\s*\zs.*')
+               if vals =~ '^\%([a-zA-Z]\+\)\?$'
+                       let values = ["top", "center", "bottom"]
+               elseif vals =~ '^[a-zA-Z]\+\s\+\%([a-zA-Z]\+\)\?$'
+                       let values = ["left", "center", "right"]
+               else
                        return []
-               elseif prop == 'border-style'
+               endif
+       elseif prop == 'background-repeat'
+               let values = ["repeat", "repeat-x", "repeat-y", "no-repeat"]
+       elseif prop == 'background'
+               let values = ["url(", "scroll", "fixed", "transparent", "rgb(", "#", "none", "top", "center", "bottom" , "left", "right", "repeat", "repeat-x", "repeat-y", "no-repeat"]
+       elseif prop == 'border-collapse'
+               let values = ["collapse", "separate"]
+       elseif prop == 'border-color'
+               let values = ["rgb(", "#", "transparent"]
+       elseif prop == 'border-spacing'
+               return []
+       elseif prop == 'border-style'
+               let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
+       elseif prop =~ 'border-\%(top\|right\|bottom\|left\)$'
+               let vals = matchstr(line, '.*:\s*\zs.*')
+               if vals =~ '^\%([a-zA-Z0-9.]\+\)\?$'
+                       let values = ["thin", "thick", "medium"]
+               elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\%([a-zA-Z]\+\)\?$'
                        let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
-               elseif prop =~ 'border-\(top\|right\|bottom\|left\)$'
-                       let vals = matchstr(line, '.*:\s*\zs.*')
-                       if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
-                               let values = ["thin", "thick", "medium"]
-                       elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
-                               let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
-                       elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
-                               let values = ["rgb(", "#", "transparent"]
-                       else
-                               return []
-                       endif
-               elseif prop =~ 'border-\(top\|right\|bottom\|left\)-color'
+               elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$'
                        let values = ["rgb(", "#", "transparent"]
-               elseif prop =~ 'border-\(top\|right\|bottom\|left\)-style'
-                       let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
-               elseif prop =~ 'border-\(top\|right\|bottom\|left\)-width'
-                       let values = ["thin", "thick", "medium"]
-               elseif prop == 'border-width'
-                       let values = ["thin", "thick", "medium"]
-               elseif prop == 'border'
-                       let vals = matchstr(line, '.*:\s*\zs.*')
-                       if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
-                               let values = ["thin", "thick", "medium"]
-                       elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
-                               let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
-                       elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
-                               let values = ["rgb(", "#", "transparent"]
-                       else
-                               return []
-                       endif
-               elseif prop == 'bottom'
-                       let values = ["auto"]
-               elseif prop == 'caption-side'
-                       let values = ["top", "bottom"]
-               elseif prop == 'clear'
-                       let values = ["none", "left", "right", "both"]
-               elseif prop == 'clip'
-                       let values = ["auto", "rect("]
-               elseif prop == 'color'
-                       let values = ["rgb(", "#"]
-               elseif prop == 'content'
-                       let values = ["normal", "attr(", "open-quote", "close-quote", "no-open-quote", "no-close-quote"]
-               elseif prop =~ 'counter-\(increment\|reset\)$'
-                       let values = ["none"]
-               elseif prop =~ '^\(cue-after\|cue-before\|cue\)$'
-                       let values = ["url(", "none"]
-               elseif prop == 'cursor'
-                       let values = ["url(", "auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress"]
-               elseif prop == 'direction'
-                       let values = ["ltr", "rtl"]
-               elseif prop == 'display'
-                       let values = ["inline", "block", "list-item", "run-in", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"]
-               elseif prop == 'elevation'
-                       let values = ["below", "level", "above", "higher", "lower"]
-               elseif prop == 'empty-cells'
-                       let values = ["show", "hide"]
-               elseif prop == 'float'
-                       let values = ["left", "right", "none"]
-               elseif prop == 'font-family'
-                       let values = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]
-               elseif prop == 'font-size'
-                        let values = ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller"]
-               elseif prop == 'font-style'
-                       let values = ["normal", "italic", "oblique"]
-               elseif prop == 'font-variant'
-                       let values = ["normal", "small-caps"]
-               elseif prop == 'font-weight'
-                       let values = ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"]
-               elseif prop == 'font'
-                       let values = ["normal", "italic", "oblique", "small-caps", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller", "sans-serif", "serif", "monospace", "cursive", "fantasy", "caption", "icon", "menu", "message-box", "small-caption", "status-bar"]
-               elseif prop =~ '^\(height\|width\)$'
-                       let values = ["auto"]
-               elseif prop =~ '^\(left\|rigth\)$'
-                       let values = ["auto"]
-               elseif prop == 'letter-spacing'
-                       let values = ["normal"]
-               elseif prop == 'line-height'
-                       let values = ["normal"]
-               elseif prop == 'list-style-image'
-                       let values = ["url(", "none"]
-               elseif prop == 'list-style-position'
-                       let values = ["inside", "outside"]
-               elseif prop == 'list-style-type'
-                       let values = ["disc", "circle", "square", "decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-latin", "upper-latin", "none"]
-               elseif prop == 'list-style'
+               else
                        return []
-               elseif prop == 'margin'
-                       let values = ["auto"]
-               elseif prop =~ 'margin-\(right\|left\|top\|bottom\)$'
-                       let values = ["auto"]
-               elseif prop == 'max-height'
-                       let values = ["auto"]
-               elseif prop == 'max-width'
-                       let values = ["none"]
-               elseif prop == 'min-height'
-                       let values = ["none"]
-               elseif prop == 'min-width'
-                       let values = ["none"]
-               elseif prop == 'orphans'
+               endif
+       elseif prop =~ 'border-\%(top\|right\|bottom\|left\)-color'
+               let values = ["rgb(", "#", "transparent"]
+       elseif prop =~ 'border-\%(top\|right\|bottom\|left\)-style'
+               let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
+       elseif prop =~ 'border-\%(top\|right\|bottom\|left\)-width'
+               let values = ["thin", "thick", "medium"]
+       elseif prop == 'border-width'
+               let values = ["thin", "thick", "medium"]
+       elseif prop == 'border'
+               let vals = matchstr(line, '.*:\s*\zs.*')
+               if vals =~ '^\%([a-zA-Z0-9.]\+\)\?$'
+                       let values = ["thin", "thick", "medium"]
+               elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\%([a-zA-Z]\+\)\?$'
+                       let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
+               elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$'
+                       let values = ["rgb(", "#", "transparent"]
+               else
                        return []
-               elseif prop == 'outline-color'
+               endif
+       elseif prop == 'bottom'
+               let values = ["auto"]
+       elseif prop == 'caption-side'
+               let values = ["top", "bottom"]
+       elseif prop == 'clear'
+               let values = ["none", "left", "right", "both"]
+       elseif prop == 'clip'
+               let values = ["auto", "rect("]
+       elseif prop == 'color'
+               let values = ["rgb(", "#"]
+       elseif prop == 'content'
+               let values = ["normal", "attr(", "open-quote", "close-quote", "no-open-quote", "no-close-quote"]
+       elseif prop =~ 'counter-\%(increment\|reset\)$'
+               let values = ["none"]
+       elseif prop =~ '^\%(cue-after\|cue-before\|cue\)$'
+               let values = ["url(", "none"]
+       elseif prop == 'cursor'
+               let values = ["url(", "auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress"]
+       elseif prop == 'direction'
+               let values = ["ltr", "rtl"]
+       elseif prop == 'display'
+               let values = ["inline", "block", "list-item", "run-in", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"]
+       elseif prop == 'elevation'
+               let values = ["below", "level", "above", "higher", "lower"]
+       elseif prop == 'empty-cells'
+               let values = ["show", "hide"]
+       elseif prop == 'float'
+               let values = ["left", "right", "none"]
+       elseif prop == 'font-family'
+               let values = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]
+       elseif prop == 'font-size'
+                let values = ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller"]
+       elseif prop == 'font-style'
+               let values = ["normal", "italic", "oblique"]
+       elseif prop == 'font-variant'
+               let values = ["normal", "small-caps"]
+       elseif prop == 'font-weight'
+               let values = ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"]
+       elseif prop == 'font'
+               let values = ["normal", "italic", "oblique", "small-caps", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller", "sans-serif", "serif", "monospace", "cursive", "fantasy", "caption", "icon", "menu", "message-box", "small-caption", "status-bar"]
+       elseif prop =~ '^\%(height\|width\)$'
+               let values = ["auto"]
+       elseif prop =~ '^\%(left\|rigth\)$'
+               let values = ["auto"]
+       elseif prop == 'letter-spacing'
+               let values = ["normal"]
+       elseif prop == 'line-height'
+               let values = ["normal"]
+       elseif prop == 'list-style-image'
+               let values = ["url(", "none"]
+       elseif prop == 'list-style-position'
+               let values = ["inside", "outside"]
+       elseif prop == 'list-style-type'
+               let values = ["disc", "circle", "square", "decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-latin", "upper-latin", "none"]
+       elseif prop == 'list-style'
+               return []
+       elseif prop == 'margin'
+               let values = ["auto"]
+       elseif prop =~ 'margin-\%(right\|left\|top\|bottom\)$'
+               let values = ["auto"]
+       elseif prop == 'max-height'
+               let values = ["auto"]
+       elseif prop == 'max-width'
+               let values = ["none"]
+       elseif prop == 'min-height'
+               let values = ["none"]
+       elseif prop == 'min-width'
+               let values = ["none"]
+       elseif prop == 'orphans'
+               return []
+       elseif prop == 'outline-color'
+               let values = ["rgb(", "#"]
+       elseif prop == 'outline-style'
+               let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
+       elseif prop == 'outline-width'
+               let values = ["thin", "thick", "medium"]
+       elseif prop == 'outline'
+               let vals = matchstr(line, '.*:\s*\zs.*')
+               if vals =~ '^\%([a-zA-Z0-9,()#]\+\)\?$'
                        let values = ["rgb(", "#"]
-               elseif prop == 'outline-style'
+               elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+\%([a-zA-Z]\+\)\?$'
                        let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
-               elseif prop == 'outline-width'
+               elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$'
                        let values = ["thin", "thick", "medium"]
-               elseif prop == 'outline'
-                       let vals = matchstr(line, '.*:\s*\zs.*')
-                       if vals =~ '^\([a-zA-Z0-9,()#]\+\)\?$'
-                               let values = ["rgb(", "#"]
-                       elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+\([a-zA-Z]\+\)\?$'
-                               let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
-                       elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
-                               let values = ["thin", "thick", "medium"]
-                       else
-                               return []
-                       endif
-               elseif prop == 'overflow'
-                       let values = ["visible", "hidden", "scroll", "auto"]
-               elseif prop == 'padding'
-                       return []
-               elseif prop =~ 'padding-\(top\|right\|bottom\|left\)$'
-                       return []
-               elseif prop =~ 'page-break-\(after\|before\)$'
-                       let values = ["auto", "always", "avoid", "left", "right"]
-               elseif prop == 'page-break-inside'
-                       let values = ["auto", "avoid"]
-               elseif prop =~ 'pause-\(after\|before\)$'
-                       return []
-               elseif prop == 'pause'
-                       return []
-               elseif prop == 'pitch-range'
-                       return []
-               elseif prop == 'pitch'
-                       let values = ["x-low", "low", "medium", "high", "x-high"]
-               elseif prop == 'play-during'
-                       let values = ["url(", "mix", "repeat", "auto", "none"]
-               elseif prop == 'position'
-                       let values = ["static", "relative", "absolute", "fixed"]
-               elseif prop == 'quotes'
-                       let values = ["none"]
-               elseif prop == 'richness'
-                       return []
-               elseif prop == 'speak-header'
-                       let values = ["once", "always"]
-               elseif prop == 'speak-numeral'
-                       let values = ["digits", "continuous"]
-               elseif prop == 'speak-punctuation'
-                       let values = ["code", "none"]
-               elseif prop == 'speak'
-                       let values = ["normal", "none", "spell-out"]
-               elseif prop == 'speech-rate'
-                       let values = ["x-slow", "slow", "medium", "fast", "x-fast", "faster", "slower"]
-               elseif prop == 'stress'
-                       return []
-               elseif prop == 'table-layout'
-                       let values = ["auto", "fixed"]
-               elseif prop == 'text-align'
-                       let values = ["left", "right", "center", "justify"]
-               elseif prop == 'text-decoration'
-                       let values = ["none", "underline", "overline", "line-through", "blink"]
-               elseif prop == 'text-indent'
-                       return []
-               elseif prop == 'text-transform'
-                       let values = ["capitalize", "uppercase", "lowercase", "none"]
-               elseif prop == 'top'
-                       let values = ["auto"]
-               elseif prop == 'unicode-bidi'
-                       let values = ["normal", "embed", "bidi-override"]
-               elseif prop == 'vertical-align'
-                       let values = ["baseline", "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom"]
-               elseif prop == 'visibility'
-                       let values = ["visible", "hidden", "collapse"]
-               elseif prop == 'voice-family'
-                       return []
-               elseif prop == 'volume'
-                       let values = ["silent", "x-soft", "soft", "medium", "loud", "x-loud"]
-               elseif prop == 'white-space'
-                       let values = ["normal", "pre", "nowrap", "pre-wrap", "pre-line"]
-               elseif prop == 'widows'
+               else
                        return []
-               elseif prop == 'word-spacing'
-                       let values = ["normal"]
-               elseif prop == 'z-index'
-                       let values = ["auto"]
+               endif
+       elseif prop == 'overflow'
+               let values = ["visible", "hidden", "scroll", "auto"]
+       elseif prop == 'padding'
+               return []
+       elseif prop =~ 'padding-\%(top\|right\|bottom\|left\)$'
+               return []
+       elseif prop =~ 'page-break-\%(after\|before\)$'
+               let values = ["auto", "always", "avoid", "left", "right"]
+       elseif prop == 'page-break-inside'
+               let values = ["auto", "avoid"]
+       elseif prop =~ 'pause-\%(after\|before\)$'
+               return []
+       elseif prop == 'pause'
+               return []
+       elseif prop == 'pitch-range'
+               return []
+       elseif prop == 'pitch'
+               let values = ["x-low", "low", "medium", "high", "x-high"]
+       elseif prop == 'play-during'
+               let values = ["url(", "mix", "repeat", "auto", "none"]
+       elseif prop == 'position'
+               let values = ["static", "relative", "absolute", "fixed"]
+       elseif prop == 'quotes'
+               let values = ["none"]
+       elseif prop == 'richness'
+               return []
+       elseif prop == 'speak-header'
+               let values = ["once", "always"]
+       elseif prop == 'speak-numeral'
+               let values = ["digits", "continuous"]
+       elseif prop == 'speak-punctuation'
+               let values = ["code", "none"]
+       elseif prop == 'speak'
+               let values = ["normal", "none", "spell-out"]
+       elseif prop == 'speech-rate'
+               let values = ["x-slow", "slow", "medium", "fast", "x-fast", "faster", "slower"]
+       elseif prop == 'stress'
+               return []
+       elseif prop == 'table-layout'
+               let values = ["auto", "fixed"]
+       elseif prop == 'text-align'
+               let values = ["left", "right", "center", "justify"]
+       elseif prop == 'text-decoration'
+               let values = ["none", "underline", "overline", "line-through", "blink"]
+       elseif prop == 'text-indent'
+               return []
+       elseif prop == 'text-transform'
+               let values = ["capitalize", "uppercase", "lowercase", "none"]
+       elseif prop == 'top'
+               let values = ["auto"]
+       elseif prop == 'unicode-bidi'
+               let values = ["normal", "embed", "bidi-override"]
+       elseif prop == 'vertical-align'
+               let values = ["baseline", "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom"]
+       elseif prop == 'visibility'
+               let values = ["visible", "hidden", "collapse"]
+       elseif prop == 'voice-family'
+               return []
+       elseif prop == 'volume'
+               let values = ["silent", "x-soft", "soft", "medium", "loud", "x-loud"]
+       elseif prop == 'white-space'
+               let values = ["normal", "pre", "nowrap", "pre-wrap", "pre-line"]
+       elseif prop == 'widows'
+               return []
+       elseif prop == 'word-spacing'
+               let values = ["normal"]
+       elseif prop == 'z-index'
+               let values = ["auto"]
+       else
+               " If no property match it is possible we are outside of {} and
+               " trying to complete pseudo-(class|element)
+               let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$'))
+               if stridx(',a,abbr,acronym,address,area,b,base,bdo,big,blockquote,body,br,button,caption,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,fieldset,form,head,h1,h2,h3,h4,h5,h6,hr,html,i,img,input,ins,kbd,label,legend,li,link,map,meta,noscript,object,ol,optgroup,option,p,param,pre,q,samp,script,select,small,span,strong,style,sub,sup,table,tbody,td,textarea,tfoot,th,thead,title,tr,tt,ul,var,', ','.element.',') > -1
+                       let values = ["first-child", "link", "visited", "hover", "active", "focus", "lang", "first-line", "first-letter", "before", "after"]
                else
-                       " If no property match it is possible we are outside of {} and
-                       " trying to complete pseudo-(class|element)
-                       let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$'))
-                       if ",a,abbr,acronym,address,area,b,base,bdo,big,blockquote,body,br,button,caption,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,fieldset,form,head,h1,h2,h3,h4,h5,h6,hr,html,i,img,input,ins,kbd,label,legend,li,link,map,meta,noscript,object,ol,optgroup,option,p,param,pre,q,samp,script,select,small,span,strong,style,sub,sup,table,tbody,td,textarea,tfoot,th,thead,title,tr,tt,ul,var," =~ ','.element.','
-                               let values = ["first-child", "link", "visited", "hover", "active", "focus", "lang", "first-line", "first-letter", "before", "after"]
-                       else
-                               return []
-                       endif
+                       return []
                endif
+       endif
 
-               " Complete values
-               let entered_value = matchstr(line, '.\{-}\zs[a-zA-Z0-9#,.(_-]*$')
-
-               for m in values
-                       if m =~? '^'.entered_value
-                               call add(res, m)
-                       elseif m =~? entered_value
-                               call add(res2, m)
-                       endif
-               endfor
-
-               return res + res2
-
-       elseif borders[min(keys(borders))] == 'closebrace'
+       " Complete values
+       let entered_value = matchstr(line, '.\{-}\zs[a-zA-Z0-9#,.(_-]*$')
 
-               return []
+       for m in values
+               if m =~? '^'.entered_value
+                       call add(res, m)
+               elseif m =~? entered_value
+                       call add(res2, m)
+               endif
+       endfor
 
-       elseif borders[min(keys(borders))] == 'exclam'
+       return res + res2
 
-               " Complete values
-               let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$')
+elseif borders[max(keys(borders))] == 'closebrace'
 
-               let values = ["important"]
+       return []
 
-               for m in values
-                       if m =~? '^'.entered_imp
-                               call add(res, m)
-                       endif
-               endfor
+elseif borders[max(keys(borders))] == 'exclam'
 
-               return res
+       " Complete values
+       let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$')
 
-       elseif borders[min(keys(borders))] == 'atrule'
+       let values = ["important"]
 
-               let afterat = matchstr(line, '.*@\zs.*')
+       for m in values
+               if m =~? '^'.entered_imp
+                       call add(res, m)
+               endif
+       endfor
 
-               if afterat =~ '\s'
+       return res
 
-                       let atrulename = matchstr(line, '.*@\zs[a-zA-Z-]\+\ze')
+elseif borders[max(keys(borders))] == 'atrule'
 
-                       if atrulename == 'media'
-                               let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
+       let afterat = matchstr(line, '.*@\zs.*')
 
-                               let atruleafterbase = matchstr(line, '.*@media\s\+\ze.*$')
-                               let entered_atruleafter = matchstr(line, '.*@media\s\+\zs.*$')
+       if afterat =~ '\s'
 
-                       elseif atrulename == 'import'
-                               let atruleafterbase = matchstr(line, '.*@import\s\+\ze.*$')
-                               let entered_atruleafter = matchstr(line, '.*@import\s\+\zs.*$')
+               let atrulename = matchstr(line, '.*@\zs[a-zA-Z-]\+\ze')
 
-                               if entered_atruleafter =~ "^[\"']"
-                                       let filestart = matchstr(entered_atruleafter, '^.\zs.*')
-                                       let files = split(glob(filestart.'*'), '\n')
-                                       let values = map(copy(files), '"\"".v:val')
+               if atrulename == 'media'
+                       let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
 
-                               elseif entered_atruleafter =~ "^url("
-                                       let filestart = matchstr(entered_atruleafter, "^url([\"']\\?\\zs.*")
-                                       let files = split(glob(filestart.'*'), '\n')
-                                       let values = map(copy(files), '"url(".v:val')
+                       let atruleafterbase = matchstr(line, '.*@media\s\+\ze.*$')
+                       let entered_atruleafter = matchstr(line, '.*@media\s\+\zs.*$')
 
-                               else
-                                       let values = ['"', 'url(']
+               elseif atrulename == 'import'
+                       let atruleafterbase = matchstr(line, '.*@import\s\+\ze.*$')
+                       let entered_atruleafter = matchstr(line, '.*@import\s\+\zs.*$')
 
-                               endif
+                       if entered_atruleafter =~ "^[\"']"
+                               let filestart = matchstr(entered_atruleafter, '^.\zs.*')
+                               let files = split(glob(filestart.'*'), '\n')
+                               let values = map(copy(files), '"\"".v:val')
 
+                       elseif entered_atruleafter =~ "^url("
+                               let filestart = matchstr(entered_atruleafter, "^url([\"']\\?\\zs.*")
+                               let files = split(glob(filestart.'*'), '\n')
+                               let values = map(copy(files), '"url(".v:val')
+                               
                        else
-                               return []
+                               let values = ['"', 'url(']
 
                        endif
 
-                       for m in values
-                               if m =~? '^'.entered_atruleafter
-                                       call add(res, m)
-                               elseif m =~? entered_atruleafter
-                                       call add(res2, m)
-                               endif
-                       endfor
-
-                       return res + res2
+               else
+                       return []
 
                endif
 
-               let values = ["charset", "page", "media", "import", "font-face"]
-
-               let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$')
-
                for m in values
-                       if m =~? '^'.entered_atrule
-                               call add(res, m .' ')
-                       elseif m =~? entered_atrule
-                               call add(res2, m .' ')
+                       if m =~? '^'.entered_atruleafter
+                               call add(res, m)
+                       elseif m =~? entered_atruleafter
+                               call add(res2, m)
                        endif
                endfor
 
@@ -424,7 +409,22 @@ else
 
        endif
 
-       return []
+       let values = ["charset", "page", "media", "import", "font-face"]
+
+       let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$')
+
+       for m in values
+               if m =~? '^'.entered_atrule
+                       call add(res, m .' ')
+               elseif m =~? entered_atrule
+                       call add(res2, m .' ')
+               endif
+       endfor
+
+       return res + res2
+
+endif
+
+return []
 
-       endif
 endfunction
diff --git a/runtime/autoload/decada.vim b/runtime/autoload/decada.vim
new file mode 100644 (file)
index 0000000..9f8aaf2
--- /dev/null
@@ -0,0 +1,75 @@
+"------------------------------------------------------------------------------
+"  Description: Vim Ada/Dec Ada compiler file
+"     Language: Ada (Dec Ada)
+"          $Id$
+"    Copyright: Copyright (C) 2006 Martin Krischik
+"   Maintainer:        Martin Krischik
+"      $Author$
+"        $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $
+"      History: 21.07.2006 MK New Dec Ada
+"               15.10.2006 MK Bram's suggestion for runtime integration
+"               05.11.2006 MK Bram suggested not to use include protection for
+"                             autoload
+"              05.11.2006 MK Bram suggested to save on spaces
+"    Help Page: compiler-decada
+"------------------------------------------------------------------------------
+
+if version < 700
+   finish
+endif
+
+function decada#Unit_Name () dict                                   " {{{1
+    "  Convert filename into acs unit:
+    "      1:  remove the file extenstion.
+    "      2:  replace all double '_' or '-' with an dot (which denotes a separate)
+    "      3:  remove a trailing '_' (wich denotes a specification)
+    return substitute (substitute (expand ("%:t:r"), '__\|-', ".", "g"), '_$', "", '')
+endfunction decada#Unit_Name                                        " }}}1
+
+function decada#Make () dict                                        " {{{1
+    let l:make_prg   = substitute (g:self.Make_Command, '%<', self.Unit_Name(), '')
+    let &errorformat = g:self.Error_Format
+    let &makeprg     = l:make_prg
+    wall
+    make
+    copen
+    set wrap
+    wincmd W
+endfunction decada#Build                                            " }}}1
+
+function decada#Set_Session (...) dict                              " {{{1
+   if a:0 > 0
+      call ada#Switch_Session (a:1)
+   elseif argc() == 0 && strlen (v:servername) > 0
+      call ada#Switch_Session (
+        \ expand('~')[0:-2] . ".vimfiles.session]" .
+        \ v:servername . ".vim")
+   endif
+   return
+endfunction decada#Set_Session                                      " }}}1
+
+function decada#New ()                                              " }}}1
+   let Retval = {
+      \ 'Make'         : function ('decada#Make'),
+      \ 'Unit_Name'    : function ('decada#Unit_Name'),
+      \ 'Set_Session'   : function ('decada#Set_Session'),
+      \ 'Project_Dir'   : '',
+      \ 'Make_Command'  : 'ACS COMPILE /Wait /Log /NoPreLoad /Optimize=Development /Debug %<',
+      \ 'Error_Format'  : '%+A%%ADAC-%t-%m,%C  %#%m,%Zat line number %l in file %f,' .
+                       \ '%+I%%ada-I-%m,%C  %#%m,%Zat line number %l in file %f'}
+
+   return Retval 
+endfunction decada#New                                              " }}}1
+
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006  Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
diff --git a/runtime/autoload/getscript.vim b/runtime/autoload/getscript.vim
new file mode 100644 (file)
index 0000000..bfe057c
--- /dev/null
@@ -0,0 +1,501 @@
+" ---------------------------------------------------------------------
+" getscript.vim
+"  Author:     Charles E. Campbell, Jr.
+"  Date:       Nov 27, 2006
+"  Version:    23
+"  Installing: :help glvs-install
+"  Usage:      :help glvs
+"
+" GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim
+" ---------------------------------------------------------------------
+" Initialization:      {{{1
+" if you're sourcing this file, surely you can't be
+" expecting vim to be in its vi-compatible mode
+if &cp
+ echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
+ finish
+endif
+let s:keepfo  = &fo
+let s:keepcpo = &cpo
+set cpo&vim
+
+if exists("g:loaded_getscript")
+ finish
+endif
+let g:loaded_getscript= "v23"
+
+" ---------------------------------------------------------------------
+"  Global Variables: {{{1
+" allow user to change the command for obtaining scripts (does fetch work?)
+if !exists("g:GetLatestVimScripts_wget")
+ if executable("wget")
+  let g:GetLatestVimScripts_wget= "wget"
+ elseif executable("curl")
+  let g:GetLatestVimScripts_wget= "curl"
+ else
+  let g:GetLatestVimScripts_wget    = 'echo "GetLatestVimScripts needs wget or curl"'
+  let g:GetLatestVimScripts_options = ""
+ endif
+endif
+
+" options that wget and curl require:
+if !exists("g:GetLatestVimScripts_options")
+ if g:GetLatestVimScripts_wget == "wget"
+  let g:GetLatestVimScripts_options= "-q -O"
+ elseif g:GetLatestVimScripts_wget == "curl"
+  let g:GetLatestVimScripts_options= "-s -O"
+ else
+  let g:GetLatestVimScripts_options= ""
+ endif
+endif
+
+" by default, allow autoinstall lines to work
+if !exists("g:GetLatestVimScripts_allowautoinstall")
+ let g:GetLatestVimScripts_allowautoinstall= 1
+endif
+
+"" For debugging:
+"let g:GetLatestVimScripts_wget    = "echo"
+"let g:GetLatestVimScripts_options = "options"
+
+" ---------------------------------------------------------------------
+" Check If AutoInstall Capable: {{{1
+let s:autoinstall= ""
+if g:GetLatestVimScripts_allowautoinstall
+
+ if (has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")) && &shell != "bash"
+  " windows (but not cygwin/bash)
+  let s:dotvim= "vimfiles"
+  if !exists("g:GetLatestVimScripts_mv")
+   let g:GetLatestVimScripts_mv= "ren"
+  endif
+
+ else
+  " unix
+  let s:dotvim= ".vim"
+  if !exists("g:GetLatestVimScripts_mv")
+   let g:GetLatestVimScripts_mv= "mv"
+  endif
+ endif
+
+ if exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim)
+  let s:autoinstall= $HOME."/".s:dotvim
+ endif
+" call Decho("s:autoinstall<".s:autoinstall.">")
+"else "Decho
+" call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled")
+endif
+
+" ---------------------------------------------------------------------
+"  Public Interface: {{{1
+com!        -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts()
+com!        -nargs=0 GetScript           call getscript#GetLatestVimScripts()
+silent! com -nargs=0 GLVS                call getscript#GetLatestVimScripts()
+
+" ---------------------------------------------------------------------
+"  GetOneScript: (Get Latest Vim Script) this function operates {{{1
+"    on the current line, interpreting two numbers and text as
+"    ScriptID, SourceID, and Filename.
+"    It downloads any scripts that have newer versions from vim.sf.net.
+fun! s:GetOneScript(...)
+"   call Dfunc("GetOneScript()")
+
+ " set options to allow progress to be shown on screen
+  let t_ti= &t_ti
+  let t_te= &t_te
+  let rs  = &rs
+  set t_ti= t_te= nors
+
+ " put current line on top-of-screen and interpret it into
+ " a      script identifer  : used to obtain webpage
+ "        source identifier : used to identify current version
+ " and an associated comment: used to report on what's being considered
+  if a:0 >= 3
+   let scriptid = a:1
+   let srcid    = a:2
+   let fname    = a:3
+   let cmmnt    = ""
+"   call Decho("scriptid<".scriptid.">")
+"   call Decho("srcid   <".srcid.">")
+"   call Decho("fname   <".fname.">")
+  else
+   let curline  = getline(".")
+   if curline =~ '^\s*#'
+"    call Dret("GetOneScript : skipping a pure comment line")
+    return
+   endif
+   let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$'
+   try
+    let scriptid = substitute(curline,parsepat,'\1','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let scriptid= 0
+   endtry
+   try
+    let srcid    = substitute(curline,parsepat,'\2','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let srcid= 0
+   endtry
+   try
+    let fname= substitute(curline,parsepat,'\3','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let fname= ""
+   endtry
+   try
+    let cmmnt= substitute(curline,parsepat,'\4','e')
+   catch /^Vim\%((\a\+)\)\=:E486/
+    let cmmnt= ""
+   endtry
+"   call Decho("curline <".curline.">")
+"   call Decho("parsepat<".parsepat.">")
+"   call Decho("scriptid<".scriptid.">")
+"   call Decho("srcid   <".srcid.">")
+"   call Decho("fname   <".fname.">")
+  endif
+
+  if scriptid == 0 || srcid == 0
+   " When looking for :AutoInstall: lines, skip scripts that
+   " have  0 0 scriptname
+"   call Dret("GetOneScript : skipping a scriptid==srcid==0 line")
+   return
+  endif
+
+  let doautoinstall= 0
+  if fname =~ ":AutoInstall:"
+"   call Decho("fname<".fname."> has :AutoInstall:...")
+   let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','')
+"   call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall)
+   if s:autoinstall != ""
+    let doautoinstall = g:GetLatestVimScripts_allowautoinstall
+   endif
+  else
+   let aicmmnt= fname
+  endif
+"  call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall)
+
+  exe "norm z\<CR>"
+  redraw!
+"  call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid)
+  echomsg 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid
+
+  " grab a copy of the plugin's vim.sf.net webpage
+  let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid
+  let tmpfile    = tempname()
+  let v:errmsg   = ""
+
+  " make three tries at downloading the description
+  let itry= 1
+  while itry <= 3
+"      call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
+       if has("win32") || has("win16") || has("win95")
+"     call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"')
+     exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"'
+       else
+"     call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'")
+     exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'"
+       endif
+       if itry == 1
+    exe "silent vsplit ".tmpfile
+       else
+        silent! e %
+       endif
+  
+   " find the latest source-id in the plugin's webpage
+   silent! 1
+   let findpkg= search('Click on the package to download','W')
+   if findpkg > 0
+    break
+   endif
+   let itry= itry + 1
+  endwhile
+"  call Decho(" --- end downloading tries while loop --- itry=".itry)
+
+  " testing: did finding /Click on the package.../ fail?
+  if findpkg == 0 || itry >= 4
+    silent q!
+    call delete(tmpfile)
+   " restore options
+       let &t_ti        = t_ti
+       let &t_te        = t_te
+       let &rs          = rs
+       let s:downerrors = s:downerrors + 1
+"      call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">")
+       echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">"
+"      call Dret("GetOneScript : srch for /Click on the package/ failed")
+       return
+  endif
+"  call Decho('found "Click on the package to download"')
+
+  let findsrcid= search('src_id=','W')
+  if findsrcid == 0
+    silent q!
+    call delete(tmpfile)
+   " restore options
+       let &t_ti        = t_ti
+       let &t_te        = t_te
+       let &rs          = rs
+       let s:downerrors = s:downerrors + 1
+"      call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">")
+       echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">"
+"      call Dret("GetOneScript : srch for /src_id/ failed")
+       return
+  endif
+"  call Decho('found "src_id=" in description page')
+
+  let srcidpat   = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$'
+  let latestsrcid= substitute(getline("."),srcidpat,'\1','')
+  let fname      = substitute(getline("."),srcidpat,'\2','')
+"  call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> fname<".fname.">")
+  silent q!
+  call delete(tmpfile)
+
+  " convert the strings-of-numbers into numbers
+  let srcid       = srcid       + 0
+  let latestsrcid = latestsrcid + 0
+"   call Decho("srcid=".srcid." latestsrcid=".latestsrcid." fname<".fname.">")
+
+  " has the plugin's most-recent srcid increased, which indicates
+  " that it has been updated
+  if latestsrcid > srcid
+   let s:downloads= s:downloads + 1
+   if fname == bufname("%")
+    " GetLatestVimScript has to be careful about downloading itself
+    let fname= "NEW_".fname
+   endif
+
+   " the plugin has been updated since we last obtained it, so download a new copy
+"   call Decho("...downloading new <".fname.">")
+   echomsg "...downloading new <".fname.">"
+   if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")
+"    call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"')
+    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"'
+   else
+"    call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'")
+    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'"
+   endif
+
+   " AutoInstall: only if doautoinstall is so indicating
+   if doautoinstall
+"      call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".fname.")=".filereadable(fname))
+       if filereadable(fname)
+"       call Decho("move <".fname."> to ".s:autoinstall)
+"       call Decho("DISABLED for testing")
+        exe "silent !".g:GetLatestVimScripts_mv." ".fname." ".s:autoinstall
+        let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
+        exe "cd ".s:autoinstall
+        if fname =~ '\.bz2$'
+"        call Decho("attempt to bunzip2 ".fname)
+         exe "silent !bunzip2 ".fname
+         let fname= substitute(fname,'\.bz2$','','')
+        elseif fname =~ '\.gz$'
+"        call Decho("attempt to gunzip ".fname)
+         exe "silent !gunzip ".fname
+         let fname= substitute(fname,'\.gz$','','')
+        endif
+        if fname =~ '\.zip$'
+"        call Decho("attempt to unzip ".fname)
+         exe "silent !unzip -o".fname
+        elseif fname =~ '\.tar$'
+"        call Decho("attempt to untar ".fname)
+         exe "silent !tar -xvf ".fname
+        elseif fname =~ '\.vba$'
+"        call Decho("attempt to handle a vimball: ".fname)
+          1split
+         exe "e ".fname
+         so %
+         q
+        endif
+        if fname =~ '.vim$'
+"        call Decho("attempt to simply move ".fname." to plugin")
+         exe "silent !".g:GetLatestVimScripts_mv." ".fname." plugin"
+        endif
+        let docdir= substitute(&rtp,',.*','','e')."/doc"
+"       call Decho("helptags docdir<".docdir.">")
+        exe "helptags ".docdir
+        exe "cd ".curdir
+       endif
+   endif
+
+   " update the data in the <GetLatestVimScripts.dat> file
+   let modline=scriptid." ".latestsrcid." ".fname.cmmnt
+   call setline(line("."),modline)
+"   call Decho("modline<".modline."> (updated GetLatestVimScripts.dat file)")
+  endif
+
+ " restore options
+  let &t_ti= t_ti
+  let &t_te= t_te
+  let &rs  = rs
+
+"  call Dret("GetOneScript")
+endfun
+
+" ---------------------------------------------------------------------
+" GetLatestVimScripts: this function gets the latest versions of {{{1
+"                      scripts based on the list in
+"   (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat
+fun! getscript#GetLatestVimScripts()
+"  call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">")
+
+" insure that wget is executable
+  if executable(g:GetLatestVimScripts_wget) != 1
+   echoerr "GetLatestVimScripts needs ".g:GetLatestVimScripts_wget." which apparently is not available on your system"
+"   call Dret("GetLatestVimScripts : wget not executable/availble")
+   return
+  endif
+
+  " Find the .../GetLatest subdirectory under the runtimepath
+  for datadir in split(&rtp,',') + ['']
+   if isdirectory(datadir."/GetLatest")
+"    call Decho("found directory<".datadir.">")
+    let datadir= datadir . "/GetLatest"
+    break
+   endif
+   if filereadable(datadir."GetLatestVimScripts.dat")
+"      call Decho("found ".datadir."/GetLatestVimScripts.dat")
+       break
+   endif
+  endfor
+  " Sanity checks: readability and writability
+  if datadir == ""
+   echoerr 'Missing "GetLatest/" on your runtimepath - see :help glvs-dist-install'
+"   call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory")
+   return
+  endif
+
+  if filewritable(datadir) != 2
+   echoerr "(getLatestVimScripts) Your ".datadir." isn't writable"
+"   call Dret("GetLatestVimScripts : non-writable directory<".datadir.">")
+   return
+  endif
+  let datafile= datadir."/GetLatestVimScripts.dat"
+  if !filereadable(datafile)
+   echoerr "Your data file<".datafile."> isn't readable"
+"   call Dret("GetLatestVimScripts : non-readable datafile<".datafile.">")
+   return
+  endif
+  if !filewritable(datafile)
+   echoerr "Your data file<".datafile."> isn't writable"
+"   call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">")
+   return
+  endif
+"  call Decho("datadir  <".datadir.">")
+"  call Decho("datafile <".datafile.">")
+
+  " don't let any events interfere (like winmanager's, taglist's, etc)
+  let eikeep= &ei
+  set ei=all
+
+  " record current directory, change to datadir, open split window with
+  " datafile
+  let origdir= getcwd()
+  exe "cd ".escape(substitute(datadir,'\','/','ge'),"|[]*'\" #")
+  split
+  exe "e ".escape(substitute(datafile,'\','/','ge'),"|[]*'\" #")
+  res 1000
+  let s:downloads = 0
+  let s:downerrors= 0
+
+  " Check on dependencies mentioned in plugins
+"  call Decho(" ")
+"  call Decho("searching plugins for GetLatestVimScripts dependencies")
+  let lastline    = line("$")
+  let plugins     = globpath(&rtp,"plugin/*.vim")
+  let foundscript = 0
+
+"  call Decho("plugins<".plugins."> lastline#".lastline)
+  while plugins != ""
+   let plugin = substitute(plugins,'\n.*$','','e')
+   let plugins= (plugins =~ '\n')? substitute(plugins,'^.\{-}\n\(.*\)$','\1','e') : ""
+   $
+"   call Decho(".dependency checking<".plugin."> line$=".line("$"))
+   exe "silent r ".plugin
+   while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0
+    let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
+    let llp1     = lastline+1
+
+       if newscript !~ '^"'
+        " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile
+        let curline     = line(".")
+        let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e')
+        exe llp1
+        let srchline    = search('\<'.noai_script.'\>','bW')
+"       call Decho("..newscript<".newscript."> noai_script<".noai_script."> srch=".srchline." lastline=".lastline)
+
+        if srchline == 0
+         " found a new script to permanently include in the datafile
+         let keep_rega   = @a
+         let @a          = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','')
+         exe lastline."put a"
+         echomsg "Appending <".@a."> to ".datafile." for ".newscript
+"        call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat")
+         let @a          = keep_rega
+         let lastline    = llp1
+         let curline     = curline     + 1
+         let foundscript = foundscript + 1
+"       else   " Decho
+"        call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")")
+        endif
+
+        let curline = curline + 1
+        exe curline
+       endif
+
+   endwhile
+   let llp1= lastline + 1
+"   call Decho(".deleting lines: ".llp1.",$d")
+   exe "silent! ".llp1.",$d"
+  endwhile
+
+  if foundscript == 0
+   set nomod
+  endif
+
+  " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
+  set lz
+"  call Decho(" --- end of dependency checking loop --- ")
+"  call Decho("call GetOneScript on lines at end of datafile<".datafile.">")
+  1
+  /^-----/,$g/^\s*\d/call <SID>GetOneScript()
+
+  " Final report (an echomsg)
+  try
+   silent! ?^-------?
+  catch /^Vim\%((\a\+)\)\=:E114/
+"   call Dret("GetLatestVimScripts : nothing done!")
+   return
+  endtry
+  exe "norm! kz\<CR>"
+  redraw!
+  let s:msg = ""
+  if s:downloads == 1
+  let s:msg = "Downloaded one updated script to <".datadir.">"
+  elseif s:downloads == 2
+   let s:msg= "Downloaded two updated scripts to <".datadir.">"
+  elseif s:downloads > 1
+   let s:msg= "Downloaded ".s:downloads." updated scripts to <".datadir.">"
+  else
+   let s:msg= "Everything was already current"
+  endif
+  if s:downerrors > 0
+   let s:msg= s:msg." (".s:downerrors." downloading errors)"
+  endif
+  echomsg s:msg
+  " save the file
+  if &mod
+   silent! w!
+  endif
+  q
+
+  " restore events and current directory
+  exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #")
+  let &ei= eikeep
+  set nolz
+"  call Dret("GetLatestVimScripts : did ".s:downloads." downloads")
+endfun
+" ---------------------------------------------------------------------
+
+" Restore Options: {{{1
+let &fo = s:keepfo
+let &cpo= s:keepcpo
+
+" vim: ts=8 sts=2 fdm=marker nowrap
index a2f7efc023e64450f6ae94b33f233581c47a2779..6e80a6926a27fd668e1eb8c633b7c9d7f01981b5 100644 (file)
@@ -1,10 +1,10 @@
-" netrw.vim: Handles file transfer and remote directory listing across a network
-"            AUTOLOAD PORTION
-" Date:                May 02, 2006
-" Version:     98
-" Maintainer:  Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" netrw.vim: Handles file transfer and remote directory listing across
+"            AUTOLOAD SECTION
+" Date:                Mar 21, 2007
+" Version:     108
+" Maintainer:  Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
-" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
+" Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
 "               in no event will the copyright holder be liable for any damages
 "               resulting from the use of this software.
 "               of this software.
+" COMBAK: worked with tmpfile s:GetTempname() in NetRead() NetWrite()
+"         !!NEEDS DEBUGGING && TESTING!!!
+"redraw!|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "
 "  But be doers of the Word, and not only hearers, deluding your own selves {{{1
 "  (James 1:22 RSV)
 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-" Exception for &cp: {{{1
+" Load Once: {{{1
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v98"
+if !exists("s:NOTE")
+ let s:NOTE    = 0
+ let s:WARNING = 1
+ let s:ERROR   = 2
+endif
+let g:loaded_netrw = "v108"
 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
+ call netrw#ErrorMsg(s:WARNING,"you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw",1)
  finish
 endif
 let s:keepcpo= &cpo
-set cpo&vim
-" call Decho("doing autoload/netrw.vim")
+setlocal cpo&vim
+"DechoTabOn
+"call Decho("doing autoload/netrw.vim version ".g:loaded_netrw)
 
 " ======================
 "  Netrw Variables: {{{1
 " ======================
 
+" ---------------------------------------------------------------------
+"  Netrw Constants: {{{2
+if !exists("g:NETRW_BOOKMARKMAX")
+ let g:NETRW_BOOKMARKMAX= 0
+endif
+if !exists("g:NETRW_DIRHIST_CNT")
+ let g:NETRW_DIRHIST_CNT= 0
+endif
+if !exists("s:LONGLIST")
+ let s:THINLIST = 0
+ let s:LONGLIST = 1
+ let s:WIDELIST = 2
+ let s:TREELIST = 3
+ let s:MAXLIST  = 4
+endif
+
 " ---------------------------------------------------------------------
 " Default values for netrw's global protocol variables {{{2
 if !exists("g:netrw_dav_cmd")
@@ -52,7 +76,9 @@ if !exists("g:netrw_ftp_cmd")
   let g:netrw_ftp_cmd  = "ftp"
 endif
 if !exists("g:netrw_http_cmd")
- if executable("wget")
+ if executable("curl")
+  let g:netrw_http_cmd = "curl -o"
+ elseif executable("wget")
   let g:netrw_http_cmd = "wget -q -O"
  elseif executable("fetch")
   let g:netrw_http_cmd = "fetch -o"
@@ -82,7 +108,7 @@ if (has("win32") || has("win95") || has("win64") || has("win16"))
   \ && executable( $SystemRoot .'/system32/rcp.exe')
  let s:netrw_has_nt_rcp = 1
  let s:netrw_rcpmode    = '-b'
- else
+else
  let s:netrw_has_nt_rcp = 0
  let s:netrw_rcpmode    = ''
 endif
@@ -91,17 +117,20 @@ endif
 " Default values for netrw's global variables {{{2
 " Default values - a-c ---------- {{{3
 if !exists("g:netrw_alto")
- let g:netrw_alto= 0
+ let g:netrw_alto= &sb
 endif
 if !exists("g:netrw_altv")
- let g:netrw_altv= 0
+ let g:netrw_altv= &spr
 endif
 if !exists("g:netrw_browse_split")
  let g:netrw_browse_split= 0
 endif
+if !exists("g:netrw_chgwin")
+ let g:netrw_chgwin    = -1
+endif
 if !exists("g:netrw_cygwin")
  if has("win32") || has("win95") || has("win64") || has("win16")
-  if &shell == "bash"
+  if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
    let g:netrw_cygwin= 1
   else
    let g:netrw_cygwin= 0
@@ -109,6 +138,8 @@ if !exists("g:netrw_cygwin")
  else
   let g:netrw_cygwin= 0
  endif
+else
+ let g:netrw_cygwin= 0
 endif
 " Default values - d-f ---------- {{{3
 if !exists("g:NETRW_DIRHIST_CNT")
@@ -121,10 +152,14 @@ if !exists("g:netrw_ftp_browse_reject")
  let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
 endif
 if !exists("g:netrw_ftp_list_cmd")
- if has("unix") || exists("g:netrw_cygwin")
-  let g:netrw_ftp_list_cmd= "ls -lF"
+ if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
+  let g:netrw_ftp_list_cmd     = "ls -lF"
+  let g:netrw_ftp_timelist_cmd = "ls -tlF"
+  let g:netrw_ftp_sizelist_cmd = "ls -slF"
  else
-  let g:netrw_ftp_list_cmd= "dir"
+  let g:netrw_ftp_list_cmd     = "dir"
+  let g:netrw_ftp_timelist_cmd = "dir"
+  let g:netrw_ftp_sizelist_cmd = "dir"
  endif
 endif
 if !exists("g:netrw_ftpmode")
@@ -134,15 +169,28 @@ endif
 if !exists("g:netrw_hide")
  let g:netrw_hide= 1
 endif
+if !exists("g:netrw_ignorenetrc")
+ if &shell =~ '\c\<\%(cmd\|4nt\)\.exe$'
+  let g:netrw_ignorenetrc= 1
+ else
+  let g:netrw_ignorenetrc= 0
+ endif
+endif
 if !exists("g:netrw_keepdir")
  let g:netrw_keepdir= 1
 endif
 if !exists("g:netrw_list_cmd")
- if executable(g:netrw_ssh_cmd)
+ if g:netrw_scp_cmd =~ '^pscp' && executable("pscp")
+  " provide a 'pscp' listing command
+  if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable("c:\\private.ppk")
+   let g:netrw_scp_cmd ="pscp -i C:\\private.ppk"
+  endif
+  let g:netrw_list_cmd= g:netrw_scp_cmd." -ls USEPORT HOSTNAME:"
+ elseif executable(g:netrw_ssh_cmd)
   " provide a default listing command
-  let g:netrw_list_cmd= g:netrw_ssh_cmd." HOSTNAME ls -FLa"
+  let g:netrw_list_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME ls -FLa"
  else
-"  call Decho(g:netrw_ssh_cmd." is not executable, can't do remote directory exploring")
+"  call Decho(g:netrw_ssh_cmd." is not executable")
   let g:netrw_list_cmd= ""
  endif
 endif
@@ -156,34 +204,37 @@ endif
 if !exists("g:netrw_local_rmdir")
  let g:netrw_local_rmdir= "rmdir"
 endif
-if !exists("g:netrw_longlist")
- let g:netrw_longlist= 0
+if !exists("g:netrw_liststyle")
+ let g:netrw_liststyle= s:THINLIST
 endif
-if g:netrw_longlist < 0 || g:netrw_longlist > 2
+if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
  " sanity check
- let g:netrw_longlist= 0
+ let g:netrw_liststyle= s:THINLIST
 endif
-if g:netrw_longlist == 1
+if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp'
  let g:netrw_list_cmd= g:netrw_list_cmd." -l"
 endif
 " Default values - m-r ---------- {{{3
 if !exists("g:netrw_maxfilenamelen")
  let g:netrw_maxfilenamelen= 32
 endif
+if !exists("g:netrw_menu")
+ let g:netrw_menu= 1
+endif
 if !exists("g:netrw_mkdir_cmd")
- let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." HOSTNAME mkdir"
+ let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir"
 endif
 if !exists("g:netrw_rename_cmd")
- let g:netrw_rename_cmd= g:netrw_ssh_cmd." HOSTNAME mv"
+ let g:netrw_rename_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mv"
 endif
 if !exists("g:netrw_rm_cmd")
- let g:netrw_rm_cmd    = g:netrw_ssh_cmd." HOSTNAME rm"
+ let g:netrw_rm_cmd    = g:netrw_ssh_cmd." USEPORT HOSTNAME rm"
 endif
 if !exists("g:netrw_rmdir_cmd")
- let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." HOSTNAME rmdir"
+ let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir"
 endif
 if !exists("g:netrw_rmf_cmd")
- let g:netrw_rmf_cmd    = g:netrw_ssh_cmd." HOSTNAME rm -f"
+ let g:netrw_rmf_cmd    = g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f"
 endif
 " Default values - s ---------- {{{3
 if exists("g:netrw_silent") && g:netrw_silent != 0
@@ -194,6 +245,20 @@ endif
 if !exists("g:netrw_fastbrowse")
  let g:netrw_fastbrowse= 1
 endif
+if !exists("g:netrw_shq")
+ if exists("&shq") && &shq != ""
+  let g:netrw_shq= &shq
+ elseif has("win32") || has("win95") || has("win64") || has("win16")
+  if g:netrw_cygwin
+   let g:netrw_shq= "'"
+  else
+   let g:netrw_shq= '"'
+  endif
+ else
+  let g:netrw_shq= "'"
+ endif
+" call Decho("g:netrw_shq<".g:netrw_shq.">")
+endif
 if !exists("g:netrw_sort_by")
  " alternatives: date size
  let g:netrw_sort_by= "name"
@@ -203,15 +268,25 @@ if !exists("g:netrw_sort_direction")
  let g:netrw_sort_direction= "normal"
 endif
 if !exists("g:netrw_sort_sequence")
- let g:netrw_sort_sequence= '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$'
+ let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,\.[a-np-z]$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$'
 endif
 if !exists("g:netrw_ssh_browse_reject")
   let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
 endif
+if !has("patch192")
+ if !exists("g:netrw_use_noswf")
+  let g:netrw_use_noswf= 1
+ endif
+else
+  let g:netrw_use_noswf= 0
+endif
 " Default values - t-w ---------- {{{3
 if !exists("g:netrw_timefmt")
  let g:netrw_timefmt= "%c"
 endif
+if !exists("g:NetrwTopLvlMenu")
+ let g:NetrwTopLvlMenu= "Netrw."
+endif
 if !exists("g:netrw_win95ftp")
  let g:netrw_win95ftp= 1
 endif
@@ -221,11 +296,7 @@ endif
 " ---------------------------------------------------------------------
 " Default values for netrw's script variables: {{{2
 if !exists("s:netrw_cd_escape")
- if has("win32") || has("win95") || has("win64") || has("win16")
-  let s:netrw_cd_escape="#% "
- else
   let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\"
- endif
 endif
 if !exists("g:netrw_fname_escape")
  let g:netrw_fname_escape= ' ?&;'
@@ -234,11 +305,7 @@ 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= ""
- else
   let s:netrw_glob_escape= '[]*?`{~$'
- endif
 endif
 
 " BufEnter event ignored by decho when following variable is true
@@ -253,7 +320,7 @@ endif
 " ------------------------------------------------------------------------
 " NetSavePosn: saves position of cursor on screen {{{2
 fun! netrw#NetSavePosn()
-"  call Dfunc("NetSavePosn()")
+"  call Dfunc("netrw#NetSavePosn()")
   " Save current line and column
   let w:netrw_winnr= winnr()
   let w:netrw_line = line(".")
@@ -264,55 +331,188 @@ fun! netrw#NetSavePosn()
   let w:netrw_hline= line(".")
 
   call netrw#NetRestorePosn()
-"  call Dret("NetSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline)
+"  call Dret("netrw#NetSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline)
 endfun
 
 " ------------------------------------------------------------------------
 " NetRestorePosn: restores the cursor and file position as saved by NetSavePosn() {{{2
 fun! netrw#NetRestorePosn()
-"  call Dfunc("NetRestorePosn() winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline)
+"  call Dfunc("netrw#NetRestorePosn() winnr=".(exists("w:netrw_winnr")? w:netrw_winnr : -1)." line=".(exists("w:netrw_line")? w:netrw_line : -1)." col=".(exists("w:netrw_col")? w:netrw_col : -1)." hline=".(exists("w:netrw_hline")? w:netrw_hline : -1))
   let eikeep= &ei
   set ei=all
+  if expand("%") == "NetrwMessage"
+   exe s:winBeforeErr."wincmd w"
+  endif
 
   " restore window
-"  call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w")
-  exe "silent! ".w:netrw_winnr."wincmd w"
-"  if v:shell_error == 0
-"   " as suggested by Bram M: redraw on no error
-"   " allows protocol error messages to remain visible
-"   redraw!
-"  endif
+  if exists("w:netrw_winnr")
+"   call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w")
+   exe "silent! ".w:netrw_winnr."wincmd w"
+  endif
+  if v:shell_error == 0
+   " as suggested by Bram M: redraw on no error
+   " allows protocol error messages to remain visible
+   redraw!
+  endif
 
   " restore top-of-screen line
-"  call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z")
-  exe "norm! ".w:netrw_hline."G0z\<CR>"
+  if exists("w:netrw_hline")
+"   call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z")
+   exe "norm! ".w:netrw_hline."G0z\<CR>"
+  endif
 
   " restore position
-"  call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|")
-  exe "norm! ".w:netrw_line."G0".w:netrw_col."\<bar>"
+  if exists("w:netrw_line") && exists("w:netrw_col")
+"   call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|")
+   exe "norm! ".w:netrw_line."G0".w:netrw_col."\<bar>"
+  endif
 
   let &ei= eikeep
-"  call Dret("NetRestorePosn")
+"  call Dret("netrw#NetRestorePosn")
 endfun
 
 " ===============================
+" NetOptionSave: save options and set to "standard" form {{{2
+fun! s:NetOptionSave()
+"  call Dfunc("s:NetOptionSave()")
+  if !exists("w:netrw_optionsave")
+   let w:netrw_optionsave= 1
+  else
+"   call Dret("s:NetOptionSave : netoptionsave=".w:netrw_optionsave)
+   return
+  endif
+
+  " Save current settings and current directory
+  let s:yykeep          = @@
+  if exists("&l:acd")
+   let w:netrw_acdkeep  = &l:acd
+  endif
+  let w:netrw_aikeep    = &l:ai
+  let w:netrw_awkeep    = &l:aw
+  let w:netrw_cikeep    = &l:ci
+  let w:netrw_cinkeep   = &l:cin
+  let w:netrw_cinokeep  = &l:cino
+  let w:netrw_comkeep   = &l:com
+  let w:netrw_cpokeep   = &l:cpo
+  if g:netrw_keepdir
+   let w:netrw_dirkeep  = getcwd()
+  endif
+  let w:netrw_fokeep    = &l:fo           " formatoptions
+  let w:netrw_gdkeep    = &l:gd           " gdefault
+  let w:netrw_hidkeep   = &l:hidden
+  let w:netrw_magickeep = &l:magic
+  let w:netrw_repkeep   = &l:report
+  let w:netrw_spellkeep = &l:spell
+  let w:netrw_twkeep    = &l:tw           " textwidth
+  let w:netrw_wigkeep   = &l:wig          " wildignore
+  if has("win32") && !has("win95")
+   let w:netrw_swfkeep= &l:swf            " swapfile
+  endif
+  call s:NetrwSafeOptions()
+  if &go =~ 'a' | silent! let w:netrw_regstar = @* | endif
+  silent! let w:netrw_regslash= @/
+
+"  call Dret("s:NetOptionSave")
+endfun
+
+" ------------------------------------------------------------------------
+" NetOptionRestore: restore options {{{2
+fun! s:NetOptionRestore()
+"  call Dfunc("s:NetOptionRestore()")
+  if !exists("w:netrw_optionsave")
+"   call Dret("s:NetOptionRestore : w:netrw_optionsave doesn't exist")
+   return
+  endif
+  unlet w:netrw_optionsave
+
+  if exists("&acd")
+   if exists("w:netrw_acdkeep") |let &l:acd    = w:netrw_acdkeep     |unlet w:netrw_acdkeep  |endif
+  endif
+  if exists("w:netrw_aikeep")   |let &l:ai     = w:netrw_aikeep      |unlet w:netrw_aikeep   |endif
+  if exists("w:netrw_awkeep")   |let &l:aw     = w:netrw_awkeep      |unlet w:netrw_awkeep   |endif
+  if exists("w:netrw_cikeep")   |let &l:ci     = w:netrw_cikeep      |unlet w:netrw_cikeep   |endif
+  if exists("w:netrw_cinkeep")  |let &l:cin    = w:netrw_cinkeep     |unlet w:netrw_cinkeep  |endif
+  if exists("w:netrw_cinokeep") |let &l:cino   = w:netrw_cinokeep    |unlet w:netrw_cinokeep |endif
+  if exists("w:netrw_comkeep")  |let &l:com    = w:netrw_comkeep     |unlet w:netrw_comkeep  |endif
+  if exists("w:netrw_cpokeep")  |let &l:cpo    = w:netrw_cpokeep     |unlet w:netrw_cpokeep  |endif
+  if exists("w:netrw_dirkeep")  |exe "lcd ".w:netrw_dirkeep          |unlet w:netrw_dirkeep  |endif
+  if exists("w:netrw_fokeep")   |let &l:fo     = w:netrw_fokeep      |unlet w:netrw_fokeep   |endif
+  if exists("w:netrw_gdkeep")   |let &l:gd     = w:netrw_gdkeep      |unlet w:netrw_gdkeep   |endif
+  if exists("w:netrw_hidkeep")  |let &l:hidden = w:netrw_hidkeep     |unlet w:netrw_hidkeep  |endif
+  if exists("w:netrw_magic")    |let &l:magic  = w:netrw_magic       |unlet w:netrw_magic    |endif
+  if exists("w:netrw_repkeep")  |let &l:report = w:netrw_repkeep     |unlet w:netrw_repkeep  |endif
+  if exists("w:netrw_spellkeep")|let &l:spell  = w:netrw_spellkeep   |unlet w:netrw_spellkeep|endif
+  if exists("w:netrw_twkeep")   |let &l:tw     = w:netrw_twkeep      |unlet w:netrw_twkeep   |endif
+  if exists("w:netrw_wigkeep")  |let &l:wig    = w:netrw_wigkeep     |unlet w:netrw_wigkeep  |endif
+  if exists("s:yykeep")         |let  @@       = s:yykeep            |unlet s:yykeep         |endif
+  if exists("w:netrw_swfkeep")
+   if &directory == ""
+    " user hasn't specified a swapfile directory;
+    " netrw will temporarily set the swapfile directory
+    " to the current directory as returned by getcwd().
+    let &l:directory   = getcwd()
+    silent! let &l:swf = w:netrw_swfkeep
+    setlocal directory=
+    unlet w:netrw_swfkeep
+   elseif &l:swf != w:netrw_swfkeep
+    " following line causes a Press ENTER in windows -- can't seem to work around it!!! (COMBAK)
+    silent! let &l:swf= w:netrw_swfkeep
+    unlet w:netrw_swfkeep
+   endif
+  endif
+  if exists("w:netrw_regstar") |silent! let @*= w:netrw_regstar |unlet w:netrw_regstar |endif
+  if exists("w:netrw_regslash")|silent! let @/= w:netrw_regslash|unlet w:netrw_regslash|endif
+
+"  call Dret("s:NetOptionRestore : restored user options")
+endfun
+
+" ---------------------------------------------------------------------
+" NetrwSafeOptions: sets options to help netrw do its job {{{2
+fun! s:NetrwSafeOptions()
+"  call Dfunc("s:NetrwSafeOptions()")
+  setlocal cino=
+  setlocal com=
+  setlocal cpo-=aA
+  if exists("&acd")
+   setlocal noacd nocin noai noci magic nospell nohid wig= noaw
+   setlocal fo=nroql2
+  else
+   setlocal nocin noai noci magic nospell nohid wig= noaw
+   setlocal fo=nroql2
+  endif
+  setlocal tw=0
+  setlocal report=10000
+  if g:netrw_use_noswf && has("win32") && !has("win95")
+   setlocal noswf
+  endif
+"  call Dret("s:NetrwSafeOptions")
+endfun
+
+" ------------------------------------------------------------------------
 "  Netrw Transfer Functions: {{{1
 " ===============================
 
 " ------------------------------------------------------------------------
 " NetRead: responsible for reading a file over the net {{{2
+"   mode: =0 read remote file and insert before current line
+"         =1 read remote file and insert after current line
+"         =2 replace with remote file
+"         =3 obtain file, but leave in temporary format
 fun! netrw#NetRead(mode,...)
-"  call Dfunc("NetRead(mode=".a:mode.",...) a:0=".a:0)
+"  call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw)
 
-  " save options
+  " save options {{{3
   call s:NetOptionSave()
 
+  " interpret mode into a readcmd {{{3
   if     a:mode == 0 " read remote file before current line
    let readcmd = "0r"
   elseif a:mode == 1 " read file after current line
    let readcmd = "r"
   elseif a:mode == 2 " replace with remote file
    let readcmd = "%r"
+  elseif a:mode == 3 " skip read of file (leave as temporary)
+   let readcmd = "t"
   else
    exe a:mode
    let readcmd = "r"
@@ -320,18 +520,12 @@ fun! netrw#NetRead(mode,...)
   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()
-"  call Decho("tmpfile<".tmpfile.">")
-  let tmpfile= escape(substitute(tmpfile,'\','/','ge'),g:netrw_tmpfile_escape)
-"  call Decho("tmpfile<".tmpfile.">")
-  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 :1 getcwd<".getcwd().">")
+  " Get Temporary Filename {{{3
+  let tmpfile= s:GetTempfile("")
+  if tmpfile == ""
+"   call Dret("netrw#NetRead : unable to get a tempfile!")
    return
   endif
-"  call Decho("tmpfile<".tmpfile.">")
 
   while ichoice <= a:0
 
@@ -359,12 +553,13 @@ fun! netrw#NetRead(mode,...)
      echomsg ':Nread rsync://machine[:port]/path          uses rsync'
      echomsg ':Nread scp://[user@]machine[[:#]port]/path  uses scp'
      echomsg ':Nread sftp://[user@]machine[[:#]port]/path uses sftp'
+     sleep 4
      break
 
-    elseif match(choice,"^\"") != -1
+    elseif match(choice,'^"') != -1
      " Reconstruct Choice if choice starts with '"'
 "     call Decho("reconstructing choice")
-     if match(choice,"\"$") != -1
+     if match(choice,'"$') != -1
       " case "..."
       let choice=strpart(choice,1,strlen(choice)-2)
      else
@@ -372,15 +567,14 @@ fun! netrw#NetRead(mode,...)
       let choice      = strpart(choice,1,strlen(choice)-1)
       let wholechoice = ""
 
-      while match(choice,"\"$") == -1
+      while match(choice,'"$') == -1
        let wholechoice = wholechoice . " " . choice
        let ichoice     = ichoice + 1
        if ichoice > a:0
                if !exists("g:netrw_quiet")
-         echohl Error | echo "***netrw*** Unbalanced string in filename '". wholechoice ."'" | echohl None
-         call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+        call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",3)
        endif
-"        call Dret("NetRead :2 getcwd<".getcwd().">")
+"        call Dret("netrw#NetRead :2 getcwd<".getcwd().">")
         return
        endif
        let choice= a:{ichoice}
@@ -393,36 +587,19 @@ fun! netrw#NetRead(mode,...)
 "   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')
-"    call Decho("fixing up windows url to <".choice."> tmpfile<".tmpfile)
-
-    if !g:netrw_keepdir
-     exe 'lcd ' . fnamemodify(tmpfile,':h')
-    endif
-    let tmpfile = fnamemodify(tmpfile,':t')
-   endif
-
    " Determine method of read (ftp, rcp, etc) {{{3
    call s:NetMethod(choice)
+   let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix
 
    " Check if NetBrowse() should be handling this request
 "   call Decho("checking if NetBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">")
-   if choice =~ "^.*[\/]$"
+   if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://'
 "    call Decho("yes, choice matches '^.*[\/]$'")
-    keepjumps call s:NetBrowse(choice)
-"    call Dret("NetRead :3 getcwd<".getcwd().">")
+    keepjumps call s:NetBrowse(0,choice)
+"    call Dret("netrw#NetRead :3 getcwd<".getcwd().">")
     return
    endif
 
-   " use filename's suffix for the temporary file
-   if b:netrw_fname =~ '\.[^./]\+$'
-    let suffix = substitute(b:netrw_fname,'^.*\(\.[^./]\+\)$','\1','e')
-    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
    " ===========================
@@ -466,6 +643,10 @@ fun! netrw#NetRead(mode,...)
      setlocal ff=unix
      exe "put ='".g:netrw_ftpmode."'"
 "     call Decho("filter input: ".getline("."))
+     if exists("g:netrw_ftpextracmd")
+      exe "put ='".g:netrw_ftpextracmd."'"
+"      call Decho("filter input: ".getline("."))
+     endif
      exe "put ='".'get \"'.netrw_fname.'\" '.tmpfile."'"
 "     call Decho("filter input: ".getline("."))
      if exists("g:netrw_port") && g:netrw_port != ""
@@ -478,9 +659,8 @@ fun! netrw#NetRead(mode,...)
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
      if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
       let debugkeep= &debug
-      set debug=msg
-      echohl Error | echo "***netrw*** ".getline(1) | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+      setlocal debug=msg
+      call netrw#ErrorMsg(s:ERROR,getline(1),4)
       let &debug= debugkeep
      endif
      bd!
@@ -517,8 +697,12 @@ fun! netrw#NetRead(mode,...)
      put =g:netrw_ftpmode
 "     call Decho("filter input: ".getline("."))
     endif
-    put ='get \"'.netrw_fname.'\" '.tmpfile
+    if exists("g:netrw_ftpextracmd")
+     exe "put ='".g:netrw_ftpextracmd."'"
 "     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
@@ -531,12 +715,11 @@ fun! netrw#NetRead(mode,...)
     if getline(1) !~ "^$"
 "     call Decho("error<".getline(1).">")
      if !exists("g:netrw_quiet")
-      echohl Error | echo "***netrw*** ".getline(1) | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+      call netrw#ErrorMsg(s:ERROR,getline(1),5)
      endif
     endif
     bd!
-    let result         = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
+    let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
 
    ".........................................
@@ -548,14 +731,8 @@ fun! netrw#NetRead(mode,...)
     else
      let useport= ""
     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,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,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
+"    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_shq.g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape).g:netrw_shq." ".tmpfile
     let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
 
@@ -565,10 +742,9 @@ fun! netrw#NetRead(mode,...)
 "    call Decho("read via http (method #5)")
     if g:netrw_http_cmd == ""
      if !exists("g:netrw_quiet")
-      echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+      call netrw#ErrorMsg(s:ERROR,"neither the wget nor the fetch command is available",6)
      endif
-"     call Dret("NetRead :4 getcwd<".getcwd().">")
+"     call Dret("netrw#NetRead :4 getcwd<".getcwd().">")
      return
     endif
 
@@ -592,6 +768,7 @@ fun! netrw#NetRead(mode,...)
      exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>"
     endif
     let b:netrw_lastfile = choice
+    setlocal ro
 
    ".........................................
    " cadaver: NetRead Method #6 {{{3
@@ -608,13 +785,7 @@ fun! netrw#NetRead(mode,...)
      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
-    else
-     put ='get '.netrw_fname.' '.tmpfile
-    endif
+    put ='get '.netrw_fname.' '.tmpfile
     put ='quit'
 
     " perform cadaver operation:
@@ -630,14 +801,8 @@ fun! netrw#NetRead(mode,...)
    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.":".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.":".netrw_fname." ".tmpfile)
-     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile
-    endif
+"    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
     let result         = s:NetGetFile(readcmd,tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
 
@@ -645,11 +810,11 @@ fun! netrw#NetRead(mode,...)
    " fetch: NetRead Method #8 {{{3
    "    fetch://[user@]host[:http]/path
    elseif     b:netrw_method  == 8
+"    call Decho("read via fetch (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
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+      call netrw#ErrorMsg(s:ERROR,"fetch command not available",7)
      endif
 "     call Dret("NetRead")
     endif
@@ -670,154 +835,53 @@ fun! netrw#NetRead(mode,...)
 
     let result         = s:NetGetFile(readcmd,tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
+    setlocal ro
 
    ".........................................
    " sftp: NetRead Method #9 {{{3
    elseif     b:netrw_method  == 9
-"    call Decho("read via sftp (method #4)")
+"    call Decho("read via sftp (method #9)")
     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.":".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.":".netrw_fname." ".tmpfile)
-     exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile
-    endif
+"    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
     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 . ">"
+    call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",8)
    endif
   endwhile
 
   " cleanup {{{3
-"  call Decho("cleanup")
   if exists("b:netrw_method")
+"   call Decho("cleanup b:netrw_method and b:netrw_fname")
    unlet b:netrw_method
    unlet b:netrw_fname
   endif
-  call s:NetOptionRestore()
-
-"  call Dret("NetRead :5 getcwd<".getcwd().">")
-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.">)")
-
-  " 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
-    let tfile= a:tfile
-"    call Decho("(win32 && cygwin) tfile<".tfile.">")
-   else
-    let tfile= substitute(a:tfile,'/','\\\\','ge')
-"    call Decho("(win32 && !cygwin) tfile<".tfile.">")
-   endif
-  else
-   let tfile= a:tfile
-"   call Decho("tfile=a:tfile<".tfile.">")
-  endif
-
-  if a:readcmd[0] == '%'
-  " get file into buffer
-
-"   call Dredir("ls!","starting buffer list")
-
-   " rename the current buffer to the temp file (ie. tfile)
-   keepalt exe "file ".tfile
-"   call Dredir("ls!","after renaming current buffer to <".tfile.">")
-
-   " edit temporary file (ie. read the temporary file in)
-   if     rfile =~ '\.zip$'
-    call zip#Browse(tfile)
-   elseif rfile =~ '\.tar$'
-    call tar#Browse(tfile)
-   else
-"    call Decho("edit temporary file")
-    e
-   endif
-
-   " rename buffer back to remote filename
-   keepalt exe "file ".escape(rfile,' ')
-   filetype detect
-"   call Dredir("ls!","renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">")
-   let line1 = 1
-   let line2 = line("$")
-
-  elseif filereadable(tfile)
-   " read file after current line
-   let curline = line(".")
-   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
-
-  else
-   " not readable
-   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.")")
-   call NetReadFixup(a:method, line1, line2)
-" else " Decho
-"  call Decho("NetReadFixup() not called, doesn't exist  (line1=".line1." line2=".line2.")")
-  endif
-
-  " update the Buffers menu
-  if has("gui") && has("gui_running")
-   silent! emenu Buffers.Refresh\ menu
+  if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
+"   call Decho("cleanup by deleting tmpfile<".tmpfile.">")
+   call s:System("delete",tmpfile)
   endif
+  call s:NetOptionRestore()
 
-"  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")
+"  call Dret("netrw#NetRead :5 getcwd<".getcwd().">")
 endfun
 
 " ------------------------------------------------------------------------
 " NetWrite: responsible for writing a file over the net {{{2
 fun! netrw#NetWrite(...) range
-"  call Dfunc("NetWrite(a:0=".a:0.")")
+"  call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw)
 
   " option handling
   let mod= 0
   call s:NetOptionSave()
 
   " Get Temporary Filename {{{3
-  let tmpfile= tempname()
-"  call Decho("tmpfile<".tmpfile."> (raw)")
-  let tmpfile= escape(substitute(tmpfile,'\','/','ge'),g:netrw_tmpfile_escape)
-"  call Decho("tmpfile<".tmpfile."> (escaped)")
-  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")
+  let tmpfile= s:GetTempfile("")
+  if tmpfile == ""
+"   call Dret("netrw#NetWrite : unable to get a tempfile!")
    return
   endif
 
@@ -827,20 +891,36 @@ fun! netrw#NetWrite(...) range
    let ichoice = 1
   endif
 
+  let curbufname= expand("%")
+"  call Decho("curbufname<".curbufname.">")
   if &binary
-   " for binary writes, write entire file.  Line numbers don't really make sense.
-   " Supports the writing of tar and zip files.
-"   call Decho("silent exe w! ".v:cmdarg." ".tmpfile)
+   " For binary writes, always write entire file.
+   " (line numbers don't really make sense for that).
+   " Also supports the writing of tar and zip files.
+"   call Decho("(write entire file) silent exe w! ".v:cmdarg." ".tmpfile)
    silent exe "w! ".v:cmdarg." ".tmpfile
+  elseif g:netrw_cygwin
+   " write (selected portion of) file to temporary
+   let cygtmpfile= substitute(tmpfile,'/cygdrive/\(.\)','\1:','')
+"   call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".cygtmpfile)
+   silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".cygtmpfile
   else
    " write (selected portion of) file to temporary
-"   call Decho("silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile)
+"   call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile)
    silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile
   endif
 
+  if curbufname == ""
+   " if the file is [No Name], and one attempts to Nwrite it, the buffer takes
+   " on the temporary file's name.  Deletion of the temporary file during
+   " cleanup then causes an error message.
+   0file!
+  endif
+
+  " While choice loop: {{{3
   while ichoice <= a:0
 
-   " Process arguments: {{{3
+   " Process arguments: {{{4
    " 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 . ">")
@@ -862,6 +942,7 @@ fun! netrw#NetWrite(...) range
      echomsg ':Nwrite rsync://[user@]machine/path         uses rsync'
      echomsg ':Nwrite scp://[user@]machine[[:#]port]/path uses scp'
      echomsg ':Nwrite sftp://[user@]machine/path          uses sftp'
+     sleep 4
      break
 
     elseif match(choice,"^\"") != -1
@@ -878,10 +959,9 @@ fun! netrw#NetWrite(...) range
        let ichoice    = ichoice + 1
        if choice > a:0
                if !exists("g:netrw_quiet")
-         echohl Error | echo "***netrw*** Unbalanced string in filename '". wholechoice ."'" | echohl None
-         call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+        call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",13)
        endif
-"        call Dret("NetWrite")
+"        call Dret("netrw#NetWrite")
         return
        endif
        let choice= a:{ichoice}
@@ -890,30 +970,21 @@ fun! netrw#NetWrite(...) range
      endif
     endif
    endif
-"   call Decho("choice<" . choice . ">")
    let ichoice= ichoice + 1
+"   call Decho("choice<" . choice . "> ichoice=".ichoice)
 
-   " fix up windows urls
-   if has("win32") || has("win95") || has("win64") || has("win16")
-    let choice= substitute(choice,'\\','/','ge')
-    if !g:netrw_keepdir
-     exe 'lcd ' . fnamemodify(tmpfile,':h')
-    endif
-    let tmpfile = fnamemodify(tmpfile,':t')
-   endif
-
-   " Determine method of read (ftp, rcp, etc) {{{3
+   " Determine method of write (ftp, rcp, etc) {{{4
    call s:NetMethod(choice)
 
    " =============
-   " Perform Protocol-Based Write {{{3
+   " Perform Protocol-Based Write {{{4
    " ============================
    if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
     echo "(netrw) Processing your write request..."
    endif
 
    ".........................................
-   " rcp: NetWrite Method #1 {{{3
+   " rcp: NetWrite Method #1 {{{4
    if  b:netrw_method == 1
 "    call Decho("write via rcp (method #1)")
     if s:netrw_has_nt_rcp == 1
@@ -930,19 +1001,24 @@ fun! netrw#NetWrite(...) range
      endif
     endif
     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
+"    call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".g:netrw_shq.tmpfile.g:netrw_shq." ".uid_machine.":".netrw_fname)
+    exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".g:netrw_shq.tmpfile.g:netrw_shq." ".uid_machine.":".netrw_fname
     let b:netrw_lastfile = choice
 
    ".........................................
-   " ftp + <.netrc>: NetWrite Method #2 {{{3
+   " ftp + <.netrc>: NetWrite Method #2 {{{4
    elseif b:netrw_method == 2
+"    call Decho("write via ftp+.netrc (method #2)")
     let netrw_fname= b:netrw_fname
     new
     setlocal ff=unix
     exe "put ='".g:netrw_ftpmode."'"
 "    call Decho(" filter input: ".getline("."))
-    exe "put ='"."put ".tmpfile.' \"'.netrw_fname.'\"'."'"
+    if exists("g:netrw_ftpextracmd")
+     exe "put ='".g:netrw_ftpextracmd."'"
+"     call Decho("filter input: ".getline("."))
+    endif
+    exe "put ='".'put \"'.tmpfile.'\" \"'.netrw_fname.'\"'."'"
 "    call Decho(" filter input: ".getline("."))
     if exists("g:netrw_port") && g:netrw_port != ""
 "     call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
@@ -954,8 +1030,7 @@ fun! netrw#NetWrite(...) range
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
      if !exists("g:netrw_quiet")
-      echohl Error | echo "***netrw*** ".getline(1) | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+      call netrw#ErrorMsg(s:ERROR,getline(1),14)
      endif
      let mod=1
     endif
@@ -963,8 +1038,10 @@ fun! netrw#NetWrite(...) range
     let b:netrw_lastfile = choice
 
    ".........................................
-   " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{3
+   " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{4
    elseif b:netrw_method == 3
+    " 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
     new
     setlocal ff=unix
@@ -984,7 +1061,7 @@ fun! netrw#NetWrite(...) range
      put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
 "     call Decho("filter input: ".getline("."))
     endif
-    put ='put '.tmpfile.' \"'.netrw_fname.'\"'
+    put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"'
 "    call Decho("filter input: ".getline("."))
     " save choice/id/password for future use
     let b:netrw_lastfile = choice
@@ -999,42 +1076,36 @@ fun! netrw#NetWrite(...) range
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
      if  !exists("g:netrw_quiet")
-      echohl Error | echo "***netrw*** ".getline(1) | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+      call netrw#ErrorMsg(s:ERROR,getline(1),15)
      endif
      let mod=1
     endif
     bd!
 
    ".........................................
-   " scp: NetWrite Method #4 {{{3
+   " scp: NetWrite Method #4 {{{4
    elseif     b:netrw_method == 4
+"    call Decho("write via scp (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
      let useport= ""
     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.":".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.":".netrw_fname."'")
-     exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".netrw_fname."'"
-    endif
+"    call Decho("exe ".g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_shq.tmpfile.g:netrw_shq." ".g:netrw_shq.g:netrw_machine.":".netrw_fname.g:netrw_shq)
+    exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_shq.tmpfile.g:netrw_shq." ".g:netrw_shq.g:netrw_machine.":".netrw_fname.g:netrw_shq
     let b:netrw_lastfile = choice
 
    ".........................................
-   " http: NetWrite Method #5 {{{3
+   " http: NetWrite Method #5 {{{4
    elseif     b:netrw_method == 5
+"    call Decho("write via http (method #5)")
     if !exists("g:netrw_quiet")
-     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()
+     call netrw#ErrorMsg(s:ERROR,"currently <netrw.vim> does not support writing using http:",16)
     endif
 
    ".........................................
-   " dav: NetWrite Method #6 (cadaver) {{{3
+   " dav: NetWrite Method #6 (cadaver) {{{4
    elseif     b:netrw_method == 6
 "    call Decho("write via cadaver (method #6)")
 
@@ -1048,13 +1119,7 @@ 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
+    put ='put '.tmpfile.' '.netrw_fname
 
     " perform cadaver operation:
     norm! 1Gdd
@@ -1064,22 +1129,18 @@ fun! netrw#NetWrite(...) range
     let b:netrw_lastfile = choice
 
    ".........................................
-   " rsync: NetWrite Method #7 {{{3
+   " rsync: NetWrite Method #7 {{{4
    elseif     b:netrw_method == 7
+"    call Decho("write 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." ".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.":".netrw_fname)
-     exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname
-    endif
+"    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
     let b:netrw_lastfile = choice
 
    ".........................................
-   " sftp: NetWrite Method #9 {{{3
+   " sftp: NetWrite Method #9 {{{4
    elseif     b:netrw_method == 9
+"    call Decho("read via sftp (method #9)")
     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
@@ -1088,7 +1149,8 @@ fun! netrw#NetWrite(...) range
     endif
     new
     setlocal ff=unix
-    put ='put '.tmpfile.' '.netrw_fname
+    put ='put \"'.escape(tmpfile,'\').'\" '.netrw_fname
+"    call Decho("filter input: ".getline("."))
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_sftp_cmd.' '.uid_machine)
     exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine
@@ -1096,3101 +1158,3668 @@ fun! netrw#NetWrite(...) range
     let b:netrw_lastfile= choice
 
    ".........................................
-   " Complain {{{3
+   " Complain {{{4
    else
-    echo "***warning*** unable to comply with your request<" . choice . ">"
+    call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",17)
    endif
   endwhile
 
-  " cleanup {{{3
+  " Cleanup: {{{3
 "  call Decho("cleanup")
-  let result=delete(tmpfile)
+  if s:FileReadable(tmpfile)
+"   call Decho("tmpfile<".tmpfile."> readable, will now delete it")
+   call s:System("delete",tmpfile)
+  endif
   call s:NetOptionRestore()
 
   if a:firstline == 1 && a:lastline == line("$")
-   let &mod= mod       " usually equivalent to set nomod
+   " restore modifiability; usually equivalent to set nomod
+   let &mod= mod
   endif
 
-"  call Dret("NetWrite")
+"  call Dret("netrw#NetWrite")
 endfun
 
-" ===========================================
-"  Remote Directory Browsing Support:    {{{1
-" ===========================================
-
 " ---------------------------------------------------------------------
-" NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2
-"  of the contents of a remote directory.  It is assumed that the
-"  g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted
-"  with the requested remote hostname first.
-fun! s:NetBrowse(dirname)
-  if !exists("w:netrw_longlist")|let w:netrw_longlist= g:netrw_longlist|endif
-"  call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".w:netrw_longlist)
-
-  if exists("s:netrw_skipbrowse")
-   unlet s:netrw_skipbrowse
-"   call Dret("NetBrowse")
-   return
+" NetSource: source a remotely hosted vim script {{{2
+" uses NetRead to get a copy of the file into a temporarily file,
+"              then sources that file,
+"              then removes that file.
+fun! netrw#NetSource(...)
+"  call Dfunc("netrw#NetSource() a:0=".a:0)
+  if a:0 > 0 && a:1 == '?'
+   " give help
+   echomsg 'NetSource Usage:'
+   echomsg ':Nsource dav://machine[:port]/path            uses cadaver'
+   echomsg ':Nsource fetch://machine/path                 uses fetch'
+   echomsg ':Nsource ftp://[user@]machine[:port]/path     uses ftp   autodetects <.netrc>'
+   echomsg ':Nsource http://[user@]machine/path           uses http  wget'
+   echomsg ':Nsource rcp://[user@]machine/path            uses rcp'
+   echomsg ':Nsource rsync://machine[:port]/path          uses rsync'
+   echomsg ':Nsource scp://[user@]machine[[:#]port]/path  uses scp'
+   echomsg ':Nsource sftp://[user@]machine[[:#]port]/path uses sftp'
+   sleep 4
+  else
+   let i= 1
+   while i <= a:0
+    call netrw#NetRead(3,a:{i})
+"    call Decho("s:netread_tmpfile<".s:netrw_tmpfile.">")
+    if s:FileReadable(s:netrw_tmpfile)
+"     call Decho("exe so ".s:netrw_tmpfile)
+     exe "so ".s:netrw_tmpfile
+     call delete(s:netrw_tmpfile)
+     unlet s:netrw_tmpfile
+    else
+     call netrw#ErrorMsg(s:ERROR,"unable to source <".a:{i}.">!",48)
+    endif
+    let i= i + 1
+   endwhile
   endif
+"  call Dret("netrw#NetSource")
+endfun
 
-  call s:NetOptionSave()
-
-  " sanity check
-  if exists("b:netrw_method") && b:netrw_method =~ '[235]'
-"   call Decho("b:netrw_method=".b:netrw_method)
-   if !executable("ftp")
-    if !exists("g:netrw_quiet")
-     echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ftp" | echohl None
-     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-    endif
-    call s:NetOptionRestore()
-"    call Dret("NetBrowse")
-    return
-   endif
-  elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == ''
-   if !exists("g:netrw_quiet")
-    echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ".g:netrw_list_cmd | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-   endif
+" ===========================================
+" 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
+"            == t  : leave file in temporary form (ie. don't read into buffer)
+fun! s:NetGetFile(readcmd, tfile, method)
+"  call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)")
 
-    call s:NetOptionRestore()
-"   call Dret("NetBrowse")
+  " readcmd=='t': simply do nothing
+  if a:readcmd == 't'
+"   call Dret("NetGetFile : skip read of <".a:tfile.">")
    return
   endif
 
-  " use buffer-oriented WinVars if buffer ones exist but window ones don't
-  call s:UseBufWinVars()
+  " get name of remote filename (ie. url and all)
+  let rfile= bufname("%")
+"  call Decho("rfile<".rfile.">")
 
-  " set up menus
-  let b:netrw_browser_active= 1
-  call s:NetMenu(1)
+  if exists("*NetReadFixup")
+   " for the use of NetReadFixup (not otherwise used internally)
+   let line2= line("$")
+  endif
 
-  " make this buffer modifiable
-  setlocal ma nonu nowrap
+  if a:readcmd[0] == '%'
+  " get file into buffer
+"   call Decho("get file into buffer")
 
-  " analyze a:dirname and g:netrw_list_cmd
-  let dirpat  = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
-  let dirname = substitute(a:dirname,'\\','/','ge')
-"  call Decho("dirname<".dirname.">")
-  if dirname !~ dirpat
-   if !exists("g:netrw_quiet")
-    echohl Error | echo "***netrw*** netrw doesn't understand your dirname<".dirname.">" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-   endif
-    call s:NetOptionRestore()
-"   call Dret("NetBrowse : badly formatted dirname<".dirname.">")
-   return
-  endif
-
-  let method  = substitute(dirname,dirpat,'\1','')
-  let user    = substitute(dirname,dirpat,'\2','')
-  let machine = substitute(dirname,dirpat,'\3','')
-  let path    = substitute(dirname,dirpat,'\4','')
-  let fname   = substitute(dirname,'^.*/\ze.','','')
-"  call Decho("set up method <".method .">")
-"  call Decho("set up user   <".user   .">")
-"  call Decho("set up machine<".machine.">")
-"  call Decho("set up path   <".path   .">")
-"  call Decho("set up fname  <".fname  .">")
-
-  if method == "ftp" || method == "http"
-   let method  = "ftp"
-   let listcmd = g:netrw_ftp_list_cmd
-  else
-   let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'')
-  endif
-
-  if exists("b:netrw_method")
-"   call Decho("setting w:netrw_method<".b:netrw_method.">")
-   let w:netrw_method= b:netrw_method
-  endif
-
-  " optionally sort by time (-t) or by size (-S)
-  if listcmd == "dir" && g:netrw_sort_by =~ "^[ts]"
-   echohl WarningMsg | echo "***netrw*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-  else
-   if g:netrw_sort_by =~ "^t"
-    let listcmd= listcmd."t"
-   elseif g:netrw_sort_by =~ "^s"
-    let listcmd= listcmd."S"
+   " rename the current buffer to the temp file (ie. tfile)
+   if g:netrw_cygwin
+    let tfile= substitute(a:tfile,'/cygdrive/\(.\)','\1:','')
+   else
+    let tfile= a:tfile
    endif
+"   call Decho("keepalt exe file ".tfile)
+   keepalt exe "silent! keepalt file ".tfile
 
-   " optionally sort in reverse
-   if g:netrw_sort_direction =~ "^r" && listcmd == "dir"
-    let listcmd= listcmd."r"
+   " edit temporary file (ie. read the temporary file in)
+   if     rfile =~ '\.zip$'
+"    call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)")
+    call zip#Browse(tfile)
+   elseif rfile =~ '\.tar$'
+"    call Decho("handling remote tar file with tar#Browse(tfile<".tfile.">)")
+    call tar#Browse(tfile)
+   elseif rfile =~ '\.tar\.gz'
+"    call Decho("handling remote gzip-compressed tar file")
+    call tar#Browse(tfile)
+   elseif rfile =~ '\.tar\.bz2'
+"    call Decho("handling remote bz2-compressed tar file")
+    call tar#Browse(tfile)
+   else
+"    call Decho("edit temporary file")
+    e!
    endif
-  endif
-
-"  call Decho("set up listcmd<".listcmd.">")
-  if fname =~ '@$' && fname !~ '^"'
-"   call Decho("attempt transfer of symlink as file")
-   call s:NetBrowse(substitute(dirname,'@$','','e'))
-   redraw!
-   call s:NetOptionRestore()
-"   call Dret("NetBrowse : symlink")
-   return
 
-  elseif fname !~ '[\/]$' && fname !~ '^"'
-   " looks like a regular file, attempt transfer
-"   call Decho("attempt transfer as regular file<".dirname.">")
-
-   " remove any filetype indicator from end of dirname, except for the
-   " "this is a directory" indicator (/).  There shouldn't be one of those,
-   " anyway.
-   let path= substitute(path,'[*=@|]\r\=$','','e')
-"   call Decho("new path<".path.">")
-
-   " remote-read the requested file into current buffer
-   mark '
-   keepjumps keepalt enew!
-   set ma
-"   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(2,method."://".user.machine."/".path)
-   exe "silent doau BufReadPost ".fname
-
-   " save certain window-oriented variables into buffer-oriented variables
-   call s:SetBufWinVars()
-   call s:NetOptionRestore()
-   setlocal nomod nowrap
+   " rename buffer back to remote filename
+   exe "silent! keepalt file ".escape(rfile,' ')
+   filetype detect
+"   call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
+   let line1 = 1
+   let line2 = line("$")
 
-"   call Dret("NetBrowse : file<".fname.">")
-   return
-  endif
+  elseif s:FileReadable(a:tfile)
+   " read file after current line
+"   call Decho("read file<".a:tfile."> after current line")
+   let curline = line(".")
+   let lastline= line("$")
+"   call Decho("exe<".a:readcmd." ".v:cmdarg." ".a:tfile.">  line#".curline)
+   exe a:readcmd." ".v:cmdarg." ".a:tfile
+   let line1= curline + 1
+   let line2= line("$") - lastline + 1
 
-  " ---------------------------------------------------------------------
-  "  Perform Directory Listing:
-"  call Decho("Perform directory listing...")
-  " set up new buffer and map
-  let bufname   = method.'://'.user.machine.'/'.path
-  let bufnamenr = bufnr(bufname.'$')
-"  call Decho("bufname<".bufname."> bufnamenr=".bufnamenr)
-  mark '
-  if bufnamenr != -1
-   " buffer already exists, switch to it!
-"   call Decho("buffer already exists, switching to it")
-   exe "b ".bufnamenr
-   if line("$") >= 5
-    call s:NetOptionRestore()
-"    call Dret("NetBrowse")
-    return
-   endif
   else
-"   call Decho("generate a new buffer")
-   keepjumps keepalt enew!
+   " not readable
+"   call Decho("tfile<".a:tfile."> not readable")
+   call netrw#ErrorMsg(s:WARNING,"file <".a:tfile."> not readable",9)
+"   call Dret("NetGetFile : tfile<".a:tfile."> not readable")
+   return
   endif
 
-  " rename file to reflect where its from
-  setlocal bt=nofile bh=wipe nobl noswf
-  exe "setlocal ts=".g:netrw_maxfilenamelen
-"  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 bt=nofile nobl nonu noswf
-  if g:netrw_fastbrowse >= 1
-   setlocal bh=hide
-  else
-   setlocal bh=delete
+  " User-provided (ie. optional) fix-it-up command
+  if exists("*NetReadFixup")
+"   call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
+   call NetReadFixup(a:method, line1, line2)
+"  else " Decho
+"   call Decho("NetReadFixup() not called, doesn't exist  (line1=".line1." line2=".line2.")")
   endif
 
-  " save current directory on directory history list
-  call s:NetBookmarkDir(3,expand("%"))
-
-  " set up buffer-local mappings
-"  call Decho("set up buffer-local mappings")
-  nnoremap <buffer> <silent> <cr>      :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
-  nnoremap <buffer> <silent> <c-l>     :call <SID>NetRefresh(<SID>NetBrowseChgDir(expand("%"),'./'),0)<cr>
-  nnoremap <buffer> <silent> -         :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr>
-  nnoremap <buffer> <silent> a         :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
-  if w:netrw_longlist != 2
-   nnoremap <buffer> <silent> b                :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
-   nnoremap <buffer> <silent> B                :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr>
-  endif
-  nnoremap <buffer> <silent> Nb                :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
-  nnoremap <buffer> <silent> NB                :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
-  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 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>
-  nnoremap <buffer> <silent> s         :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<bar>call <SID>NetRestoreWordPosn()<cr>
-  nnoremap <buffer> <silent> S         :call <SID>NetSortSequence(0)<cr>
-  nnoremap <buffer> <silent> u         :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr>
-  nnoremap <buffer> <silent> U         :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
-  nnoremap <buffer> <silent> v         :call <SID>NetSplit(1)<cr>
-  nnoremap <buffer> <silent> x         :call netrw#NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr>
-  nnoremap <buffer> <silent> <2-leftmouse>     :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
-  exe 'nnoremap <buffer> <silent> <del>        :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
-  exe 'vnoremap <buffer> <silent> <del>        :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
-  exe 'nnoremap <buffer> <silent> d    :call <SID>NetMakeDir("'.user.machine.'")<cr>'
-  exe 'nnoremap <buffer> <silent> D    :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
-  exe 'vnoremap <buffer> <silent> D    :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
-  exe 'nnoremap <buffer> <silent> R    :call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
-  exe 'vnoremap <buffer> <silent> R    :call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
-  nnoremap <buffer> <F1>                       :he netrw-browse-cmds<cr>
-  setlocal ma nonu nowrap
-
-  " Set up the banner
-"  call Decho("set up the banner: sortby<".g:netrw_sort_by."> method<".method."> direction<".g:netrw_sort_direction.">")
-  keepjumps put ='\" ==========================================================================='
-  keepjumps put ='\" Netrw Remote Directory Listing                                 (netrw '.g:loaded_netrw.')'
-  keepjumps put ='\"   '.bufname
-  let w:netrw_bannercnt = 7
-  let sortby            = g:netrw_sort_by
-  if g:netrw_sort_direction =~ "^r"
-   let sortby           = sortby." reversed"
+  " update the Buffers menu
+  if has("gui") && has("gui_running")
+   silent! emenu Buffers.Refresh\ menu
   endif
 
-  if g:netrw_sort_by =~ "^n"
-   " sorted by name
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-   keepjumps put ='\"   Sorted by      '.sortby
-   keepjumps put ='\"   Sort sequence: '.g:netrw_sort_sequence
-  else
-   " sorted by size or date
-   keepjumps put ='\"   Sorted by '.sortby
-  endif
-  if g:netrw_list_hide != "" && g:netrw_hide
-"   call Decho("g:netrw_hide=".g:netrw_hide)
-   if g:netrw_hide == 1
-    keepjumps put ='\"   Hiding:        '.g:netrw_list_hide
-   else
-    keepjumps put ='\"   Showing:       '.g:netrw_list_hide
-   endif
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  endif
-  keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
-  keepjumps put ='\" ==========================================================================='
+"  call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".s:FileReadable(a:tfile))
 
-  " remote read the requested directory listing
-  " Use ftp if that was the file-transfer method selected, otherwise use ssh
-  " Note that not all ftp servers honor the options for ls
-  if method == "ftp"
-   " use ftp to get remote file listing
-"   call Decho("use ftp to get remote file listing")
-   call s:NetBrowseFtpCmd(path,listcmd)
-   keepjumps 1d
+ " make sure file is being displayed
+  redraw!
+"  call Dret("NetGetFile")
+endfun
 
-   if w:netrw_longlist == 0 || w:netrw_longlist == 2
-    " shorten the listing
-"    call Decho("generate short listing")
-    exe "keepjumps ".w:netrw_bannercnt
+" ------------------------------------------------------------------------
+" NetMethod:  determine method of transfer {{{2
+"  method == 1: rcp
+"           2: ftp + <.netrc>
+"           3: ftp + machine, id, password, and [path]filename
+"           4: scp
+"           5: http (wget)
+"           6: cadaver
+"           7: rsync
+"           8: fetch
+"           9: sftp
+fun! s:NetMethod(choice)  " globals: method machine id passwd fname
+"   call Dfunc("NetMethod(a:choice<".a:choice.">)")
 
-    " cleanup
-    if g:netrw_ftp_browse_reject != ""
-     exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
-    endif
-    silent! keepjumps %s/\r$//e
+  " initialization
+  let b:netrw_method  = 0
+  let g:netrw_machine = ""
+  let b:netrw_fname   = ""
+  let g:netrw_port    = ""
+  let g:netrw_choice  = a:choice
 
-    " if there's no ../ listed, then put ./ and ../ in
-    let line1= line(".")
-    keepjumps 1
-    silent keepjumps call search('^\.\.\/\%(\s\|$\)','W')
-    let line2= line(".")
-    if line2 == 0
-     keepjumps put='../'
-     keepjumps put='./'
-    endif
-    exe "keepjumps ".line1
-    keepjumps norm! 0
+  " Patterns:
+  " mipf     : a:machine a:id password filename             Use ftp
+  " mf     : a:machine filename                     Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
+  " ftpurm   : ftp://[user@]host[[#:]port]/filename  Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
+  " rcpurm   : rcp://[user@]host/filename           Use rcp
+  " rcphf    : [user@]host:filename                 Use rcp
+  " scpurm   : scp://[user@]host[[#:]port]/filename  Use scp
+  " httpurm  : http://[user@]host/filename          Use wget
+  " davurm   : [s]dav://host[:port]/path             Use cadaver
+  " rsyncurm : rsync://host[:port]/path              Use rsync
+  " fetchurm : fetch://[user@]host[:http]/filename   Use fetch (defaults to ftp, override for http)
+  " sftpurm  : sftp://[user@]host/filename  Use scp
+  let mipf     = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
+  let mf       = '^\(\S\+\)\s\+\(\S\+\)$'
+  let ftpurm   = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
+  let rcpurm   = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
+  let rcphf    = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
+  let scpurm   = '^scp://\([^/#:]\+\)\%([#:]\(\d\+\)\)\=/\(.*\)$'
+  let httpurm  = '^http://\([^/]\{-}\)\(/.*\)\=$'
+  let davurm   = '^s\=dav://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$'
+  let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
+  let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
+  let sftpurm  = '^sftp://\([^/]\{-}\)/\(.*\)\=$'
 
-    " more cleanup
-    exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
-    exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
-    exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
+"  call Decho("determine method:")
+  " Determine Method
+  " rcp://user@hostname/...path-to-file
+  if match(a:choice,rcpurm) == 0
+"   call Decho("rcp://...")
+   let b:netrw_method  = 1
+   let userid          = substitute(a:choice,rcpurm,'\1',"")
+   let g:netrw_machine = substitute(a:choice,rcpurm,'\2',"")
+   let b:netrw_fname   = substitute(a:choice,rcpurm,'\3',"")
+   if userid != ""
+    let g:netrw_uid= userid
    endif
 
-  else
-   " use ssh to get remote file listing
-"   call Decho("use ssh to get remote file listing")
-   let shq= &shq? &shq : ( &sxq? &sxq : "'")
-"   call Decho("exe silent r! ".listcmd." '".shq.escape(path,s:netrw_cd_escape).shq."'")
-   exe "silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq
-   keepjumps 1d
-   " cleanup
-   if g:netrw_ftp_browse_reject != ""
-    exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d"
-   endif
-  endif
+  " scp://user@hostname/...path-to-file
+  elseif match(a:choice,scpurm) == 0
+"   call Decho("scp://...")
+   let b:netrw_method  = 4
+   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',"")
 
-  " set up syntax highlighting
-  if has("syntax")
-   setlocal ft=netrw
-   if !exists("g:syntax_on") || !g:syntax_on
-    setlocal ft=
-    " Ugly workaround -- when syntax highlighting is off and laststatus==2,
-    " sometimes the laststatus highlight bleeds into the entire display.
-    " Only seems to happen with remote browsing.  Weird.
-    redraw
-   endif
-  endif
+  " 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',"")
 
-  " manipulate the directory listing (hide, sort)
-  if line("$") >= w:netrw_bannercnt
-   if g:netrw_hide && g:netrw_list_hide != ""
-    call s:NetrwListHide()
+  " dav://hostname[:port]/..path-to-file..
+  elseif match(a:choice,davurm) == 0
+"   call Decho("dav://...")
+   let b:netrw_method= 6
+   if a:choice =~ '^s'
+    let g:netrw_machine= 'https://'.substitute(a:choice,davurm,'\1/\2',"")
+   else
+    let g:netrw_machine= 'http://'.substitute(a:choice,davurm,'\1/\2',"")
    endif
+   let b:netrw_fname  = substitute(a:choice,davurm,'\3',"")
 
-   if w:netrw_longlist == 1
-    " do a long listing; these substitutions need to be done prior to sorting
-"    call Decho("manipulate long listing")
-
-    if method == "ftp"
-     " cleanup
-     exe "keepjumps ".w:netrw_bannercnt
-     while getline(".") =~ g:netrw_ftp_browse_reject
-      keepjumps d
-     endwhile
-     " if there's no ../ listed, then put ./ and ../ in
-     let line1= line(".")
-     keepjumps 1
-     silent keepjumps call search('^\.\.\/\%(\s\|$\)','W')
-     let line2= line(".")
-     if line2 == 0
-      exe 'keepjumps '.w:netrw_bannercnt."put='./'"
-      exe 'keepjumps '.w:netrw_bannercnt."put='../'"
-     endif
-    exe "keepjumps ".line1
-    keepjumps norm! 0
-    endif
+  " 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',"")
 
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
-    exe 'silent keepjumps '.w:netrw_bannercnt
+  " ftp://[user@]hostname[[:#]port]/...path-to-file
+  elseif match(a:choice,ftpurm) == 0
+"   call Decho("ftp://...")
+   let userid        = substitute(a:choice,ftpurm,'\2',"")
+   let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
+   let g:netrw_port   = substitute(a:choice,ftpurm,'\4',"")
+   let b:netrw_fname  = substitute(a:choice,ftpurm,'\5',"")
+   if userid != ""
+    let g:netrw_uid= userid
    endif
-
-   if line("$") >= w:netrw_bannercnt
-    if g:netrw_sort_by =~ "^n"
-     call s:SetSort()
-     if g:netrw_sort_direction =~ 'n'
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
-     else
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+   if exists("g:netrw_uid") && exists("g:netrw_passwd")
+    let b:netrw_method = 3
+   else
+    if s:FileReadable(expand("$HOME/.netrc")) && !g:netrw_ignorenetrc
+     let b:netrw_method= 2
+    else
+     if !exists("g:netrw_uid") || g:netrw_uid == ""
+      call NetUserPass()
+     elseif !exists("g:netrw_passwd") || g:netrw_passwd == ""
+      call NetUserPass(g:netrw_uid)
+    " else just use current g:netrw_uid and g:netrw_passwd
      endif
-     " remove priority pattern prefix
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
-    endif
-    if w:netrw_longlist == 1
-     " shorten the list to keep its width <= winwidth characters
-     exe "silent keepjumps ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
+     let b:netrw_method= 3
     endif
    endif
-  endif
 
-  call s:NetrwWideListing()
-  if line("$") >= w:netrw_bannercnt
-   " place cursor on the top-left corner of the file listing
-   exe "keepjumps ".w:netrw_bannercnt
-   norm! 0
-  endif
+  elseif match(a:choice,fetchurm) == 0
+"   call Decho("fetch://...")
+   let b:netrw_method = 8
+   let g:netrw_userid = substitute(a:choice,fetchurm,'\2',"")
+   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',"")
 
-  call s:NetOptionRestore()
-  setlocal nomod noma nonu
+  " Issue an ftp : "machine id password [path/]filename"
+  elseif match(a:choice,mipf) == 0
+"   call Decho("(ftp) host id pass file")
+   let b:netrw_method  = 3
+   let g:netrw_machine = substitute(a:choice,mipf,'\1',"")
+   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',"")
 
-"  call Dret("NetBrowse")
-  return
-endfun
+  " Issue an ftp: "hostname [path/]filename"
+  elseif match(a:choice,mf) == 0
+"   call Decho("(ftp) host file")
+   if exists("g:netrw_uid") && exists("g:netrw_passwd")
+    let b:netrw_method  = 3
+    let g:netrw_machine = substitute(a:choice,mf,'\1',"")
+    let b:netrw_fname   = substitute(a:choice,mf,'\2',"")
 
-" ---------------------------------------------------------------------
-" NetBrowseChgDir: {{{2
-fun! s:NetBrowseChgDir(dirname,newdir)
-"  call Dfunc("NetBrowseChgDir(dirname<".a:dirname."> newdir<".a:newdir.">)")
+   elseif s: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
 
-  let dirname= a:dirname
-  let newdir = a:newdir
+  " 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',"")
 
-  if newdir !~ '[\/]$'
-   " handling a file
-   let dirname= dirname.newdir
-   let didfile= 0
-   if g:netrw_browse_split == 1
-    new
-    wincmd _
-   elseif g:netrw_browse_split == 2
-    rightb vert new
-    wincmd |
-   else
-    " handling a file, didn't split, so possibly remove menu
-    call s:NetMenu(0)
+  " Issue an rcp: hostname:filename"  (this one should be last)
+  elseif match(a:choice,rcphf) == 0
+"   call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">")
+   let b:netrw_method = 1
+   let userid       = substitute(a:choice,rcphf,'\2',"")
+   let g:netrw_machine= substitute(a:choice,rcphf,'\3',"")
+   let b:netrw_fname  = substitute(a:choice,rcphf,'\4',"")
+"   call Decho('\1<'.substitute(a:choice,rcphf,'\1',"").">")
+"   call Decho('\2<'.substitute(a:choice,rcphf,'\2',"").">")
+"   call Decho('\3<'.substitute(a:choice,rcphf,'\3',"").">")
+"   call Decho('\4<'.substitute(a:choice,rcphf,'\4',"").">")
+   if userid != ""
+    let g:netrw_uid= userid
    endif
-"   call Decho("handling a file: dirname<".dirname.">")
 
-  elseif newdir == './'
-   " refresh the directory list
-"   call Decho("refresh directory listing")
-   setlocal ma nobl
-   if g:netrw_fastbrowse >= 1
-    setlocal bh=hide
-   else
-    setlocal bh=delete
+  else
+   if !exists("g:netrw_quiet")
+    call netrw#ErrorMsg(s:WARNING,"cannot determine method",45)
    endif
-   %d
+   let b:netrw_method  = -1
+  endif
 
-  elseif newdir == '../'
-   " go up one directory
-   let trailer= substitute(a:dirname,'^\(\w\+://\%(\w\+@\)\=\w\+/\)\(.*\)$','\2','')
+  " remove any leading [:#] from port number
+  if g:netrw_port != ""
+    let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
+  endif
 
-   if trailer =~ '^\%(\.\./\)*$'
-    " tack on a ../"
-    let dirname= dirname.'../'
+"  call Decho("a:choice       <".a:choice.">")
+"  call Decho("b:netrw_method <".b:netrw_method.">")
+"  call Decho("g:netrw_machine<".g:netrw_machine.">")
+"  call Decho("g:netrw_port   <".g:netrw_port.">")
+"  if exists("g:netrw_uid")            "Decho
+"   call Decho("g:netrw_uid    <".g:netrw_uid.">")
+"  endif                                       "Decho
+"  if exists("g:netrw_passwd")         "Decho
+"   call Decho("g:netrw_passwd <".g:netrw_passwd.">")
+"  endif                                       "Decho
+"  call Decho("b:netrw_fname  <".b:netrw_fname.">")
+"  call Dret("NetMethod : b:netrw_method=".b:netrw_method)
+endfun
 
-   else
-    " strip off a directory name from dirname
-    let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','')
+" ------------------------------------------------------------------------
+" NetReadFixup: this sort of function is typically written by the user {{{2
+"               to handle extra junk that their system's ftp dumps
+"               into the transfer.  This function is provided as an
+"               example and as a fix for a Windows 95 problem: in my
+"               experience, win95's ftp always dumped four blank lines
+"               at the end of the transfer.
+if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
+ fun! NetReadFixup(method, line1, line2)
+"   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
+   if method == 3   " ftp (no <.netrc>)
+    let fourblanklines= line2 - 3
+    silent fourblanklines.",".line2."g/^\s*/d"
    endif
-"   call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">")
+"   call Dret("NetReadFixup")
+ endfun
+endif
 
-  else
-   " go down one directory
-   let dirname= dirname.newdir
-"   call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
+" ---------------------------------------------------------------------
+" NetUserPass: set username and password for subsequent ftp transfer {{{2
+"   Usage:  :call NetUserPass()                        -- will prompt for userid and password
+"          :call NetUserPass("uid")            -- will prompt for password
+"          :call NetUserPass("uid","password") -- sets global userid and password
+fun! NetUserPass(...)
+
+ " get/set userid
+ if a:0 == 0
+"  call Dfunc("NetUserPass(a:0<".a:0.">)")
+  if !exists("g:netrw_uid") || g:netrw_uid == ""
+   " via prompt
+   let g:netrw_uid= input('Enter username: ')
   endif
+ else  " from command line
+"  call Dfunc("NetUserPass(a:1<".a:1.">) {")
+  let g:netrw_uid= a:1
+ endif
 
-"  call Dret("NetBrowseChgDir <".dirname.">")
-  return dirname
+ " get password
+ if a:0 <= 1 " via prompt
+"  call Decho("a:0=".a:0." case <=1:")
+  let g:netrw_passwd= inputsecret("Enter Password: ")
+ else " from command line
+"  call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
+  let g:netrw_passwd=a:2
+ endif
+
+"  call Dret("NetUserPass")
 endfun
 
+" ===========================================
+"  Shared Browsing Support:    {{{1
+" ===========================================
+
 " ---------------------------------------------------------------------
-"  NetGetWord: it gets the directory named under the cursor {{{2
-fun! s:NetGetWord()
-"  call Dfunc("NetGetWord() line#".line(".")." longlist=".g:netrw_longlist." virtcol=".virtcol("."))
+" s:BrowserMaps: {{{2
+fun! s:BrowserMaps(islocal)
+"  call Dfunc("s:BrowserMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">")
+  if a:islocal
+   nnoremap <buffer> <silent> <cr>     :call netrw#LocalBrowseCheck(<SID>NetBrowseChgDir(1,<SID>NetGetWord()))<cr>
+   nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call netrw#LocalBrowseCheck(<SID>NetBrowseChgDir(1,<SID>NetGetWord()))<cr>
+   nnoremap <buffer> <silent> <c-l>    :call <SID>NetRefresh(1,<SID>NetBrowseChgDir(1,'./'))<cr>
+   nnoremap <buffer> <silent> -                :exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetBrowseChgDir(1,'../'))<cr>
+   nnoremap <buffer> <silent> a                :call <SID>NetHide(1)<cr>
+   nnoremap <buffer> <silent> mb       :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> gb       :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> c                :exe "cd ".b:netrw_curdir<cr>
+   nnoremap <buffer> <silent> C                :let g:netrw_chgwin= winnr()<cr>
+   nnoremap <buffer> <silent> d                :call <SID>NetMakeDir("")<cr>
+   nnoremap <buffer> <silent> <c-h>    :call <SID>NetHideEdit(1)<cr>
+   nnoremap <buffer> <silent> i                :call <SID>NetListStyle(1)<cr>
+   nnoremap <buffer> <silent> o                :call <SID>NetSplit(3)<cr>
+   nnoremap <buffer> <silent> O                :call <SID>LocalObtain()<cr>
+   nnoremap <buffer> <silent> p                :call <SID>NetPreview(<SID>NetBrowseChgDir(1,<SID>NetGetWord(),1))<cr>
+   nnoremap <buffer> <silent> P                :call <SID>NetPrevWinOpen(1)<cr>
+   nnoremap <buffer> <silent> q                :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> r                :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetRefresh(1,<SID>NetBrowseChgDir(1,'./'))<cr>
+   nnoremap <buffer> <silent> s                :call <SID>NetSortStyle(1)<cr>
+   nnoremap <buffer> <silent> S                :call <SID>NetSortSequence(1)<cr>
+   nnoremap <buffer> <silent> t                :call <SID>NetSplit(4)<cr>
+   nnoremap <buffer> <silent> u                :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr>
+   nnoremap <buffer> <silent> U                :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
+   nnoremap <buffer> <silent> v                :call <SID>NetSplit(5)<cr>
+   nnoremap <buffer> <silent> x                :call netrw#NetBrowseX(<SID>NetBrowseChgDir(1,<SID>NetGetWord(),0),0)"<cr>
+   if s:didstarstar || !mapcheck("<s-down>","n")
+    nnoremap <buffer> <silent> <s-down>        :Nexplore<cr>
+   endif
+   if s:didstarstar || !mapcheck("<s-up>","n")
+    nnoremap <buffer> <silent> <s-up>  :Pexplore<cr>
+   endif
+   exe 'nnoremap <buffer> <silent> <del>       :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
+   exe 'vnoremap <buffer> <silent> <del>       :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
+   exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
+   exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
+   exe 'nnoremap <buffer> <silent> D           :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
+   exe 'vnoremap <buffer> <silent> D           :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
+   exe 'nnoremap <buffer> <silent> R           :call <SID>LocalBrowseRename("'.b:netrw_curdir.'")<cr>'
+   exe 'vnoremap <buffer> <silent> R           :call <SID>LocalBrowseRename("'.b:netrw_curdir.'")<cr>'
+   exe 'nnoremap <buffer> <silent> <Leader>m   :call <SID>NetMakeDir("")<cr>'
+   nnoremap <buffer> <F1>              :he netrw-dir<cr>
+
+  else " remote
+   call s:RemotePathAnalysis(b:netrw_curdir)
+   nnoremap <buffer> <silent> <cr>     :call <SID>NetBrowse(0,<SID>NetBrowseChgDir(0,<SID>NetGetWord()))<cr>
+   nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call <SID>NetBrowse(0,<SID>NetBrowseChgDir(0,<SID>NetGetWord()))<cr>
+   nnoremap <buffer> <silent> <c-l>    :call <SID>NetRefresh(0,<SID>NetBrowseChgDir(0,'./'))<cr>
+   nnoremap <buffer> <silent> -                :exe "norm! 0"<bar>call <SID>NetBrowse(0,<SID>NetBrowseChgDir(0,'../'))<cr>
+   nnoremap <buffer> <silent> a                :call <SID>NetHide(0)<cr>
+   nnoremap <buffer> <silent> mb       :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> gb       :<c-u>call <SID>NetBookmarkDir(1,b:netrw_cur)<cr>
+   nnoremap <buffer> <silent> C                :let g:netrw_chgwin= winnr()<cr>
+   nnoremap <buffer> <silent> <c-h>    :call <SID>NetHideEdit(0)<cr>
+   nnoremap <buffer> <silent> i                :call <SID>NetListStyle(0)<cr>
+   nnoremap <buffer> <silent> o                :call <SID>NetSplit(0)<cr>
+   nnoremap <buffer> <silent> O                :call netrw#NetObtain(0)<cr>
+   vnoremap <buffer> <silent> O                :call netrw#NetObtain(1)<cr>
+   nnoremap <buffer> <silent> p                :call <SID>NetPreview(<SID>NetBrowseChgDir(1,<SID>NetGetWord(),1))<cr>
+   nnoremap <buffer> <silent> P                :call <SID>NetPrevWinOpen(0)<cr>
+   nnoremap <buffer> <silent> q                :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<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(0,<SID>NetBrowseChgDir(0,'./'))<cr>
+   nnoremap <buffer> <silent> s                :call <SID>NetSortStyle(0)<cr>
+   nnoremap <buffer> <silent> S                :call <SID>NetSortSequence(0)<cr>
+   nnoremap <buffer> <silent> t                :call <SID>NetSplit(1)<cr>
+   nnoremap <buffer> <silent> u                :<c-u>call <SID>NetBookmarkDir(4,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> U                :<c-u>call <SID>NetBookmarkDir(5,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> v                :call <SID>NetSplit(2)<cr>
+   nnoremap <buffer> <silent> x                :call netrw#NetBrowseX(<SID>NetBrowseChgDir(0,<SID>NetGetWord()),1)<cr>
+   exe 'nnoremap <buffer> <silent> <del>       :call <SID>NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   exe 'vnoremap <buffer> <silent> <del>       :call <SID>NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   exe 'nnoremap <buffer> <silent> d   :call <SID>NetMakeDir("'.s:user.s:machine.'")<cr>'
+   exe 'nnoremap <buffer> <silent> D   :call <SID>NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   exe 'vnoremap <buffer> <silent> D   :call <SID>NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   exe 'nnoremap <buffer> <silent> R   :call <SID>NetBrowseRename("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   exe 'vnoremap <buffer> <silent> R   :call <SID>NetBrowseRename("'.s:user.s:machine.'","'.s:path.'")<cr>'
+   nnoremap <buffer> <F1>                      :he netrw-browse-cmds<cr>
+  endif
+"  call Dret("s:BrowserMaps")
+endfun
+
+" ---------------------------------------------------------------------
+" s:NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2
+"  of the contents of a remote directory.  It is assumed that the
+"  g:netrw_list_cmd has a string, USEPORT HOSTNAME, that needs to be substituted
+"  with the requested remote hostname first.
+fun! s:NetBrowse(islocal,dirname)
+  if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
+"  call Dfunc("NetBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%"))
+"  call Dredir("ls!")
+
+  if exists("s:netrw_skipbrowse")
+   unlet s:netrw_skipbrowse
+"   call Dret("NetBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse)
+   return
+  endif
+
+  call s:NetOptionSave()
+
+  if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
+"   call Decho("handle w:netrw_acdkeep:")
+"   call Decho("cd ".escape(a:dirname,s:netrw_cd_escape)." (due to 'acd')")
+   exe 'cd '.escape(a:dirname,s:netrw_cd_escape)
+"   call Decho("getcwd<".getcwd().">")
+
+  elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"'
+   " looks like a regular file, attempt transfer
+"   call Decho("attempt transfer as regular file<".a:dirname.">")
+
+   " remove any filetype indicator from end of dirname, except for the {{{3
+   " "this is a directory" indicator (/).
+   " There shouldn't be one of those here, anyway.
+   let path= substitute(a:dirname,'[*=@|]\r\=$','','e')
+"   call Decho("new path<".path.">")
+   call s:RemotePathAnalysis(a:dirname)
+
+   " remote-read the requested file into current buffer {{{3
+   mark '
+   call s:NetrwEnew(a:dirname)
+   let b:netrw_curdir= a:dirname
+   call s:NetrwSafeOptions()
+   setlocal ma noro
+"   call Decho("exe silent! keepalt file ".s:method."://".s:user.s:machine."/".escape(s:path,s:netrw_cd_escape)." (bt=".&bt.")")
+   exe "silent! keepalt file ".s:method."://".s:user.s:machine."/".escape(s:path,s:netrw_cd_escape)
+   exe "silent keepalt doau BufReadPre ".s:fname
+   silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
+   exe "silent keepalt doau BufReadPost ".s:fname
+
+   " save certain window-oriented variables into buffer-oriented variables {{{3
+   call s:SetBufWinVars()
+   call s:NetOptionRestore()
+   setlocal nomod nowrap
+
+"   call Dret("NetBrowse : file<".s:fname.">")
+   return
+  endif
+
+  " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
   call s:UseBufWinVars()
 
-  " insure that w:netrw_longlist is set up
-  if !exists("w:netrw_longlist")
-   if exists("g:netrw_longlist")
-    let w:netrw_longlist= g:netrw_longlist
+  " set up some variables {{{3
+  let b:netrw_browser_active = 1
+  let dirname                = a:dirname
+  let s:last_sort_by         = g:netrw_sort_by
+
+  call s:NetMenu(1)                      " set up menu {{{3
+  if s:NetGetBuffer(a:islocal,dirname)   " set up buffer {{{3
+"   call Dret("NetBrowse : re-using buffer")
+   return
+  endif
+
+  " set b:netrw_curdir to the new directory name {{{3
+"  call Decho("set b:netrw_curdir to the new directory name:")
+   let b:netrw_curdir= dirname
+  if b:netrw_curdir =~ '[/\\]$'
+   let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
+  endif
+  if b:netrw_curdir == ''
+   if has("amiga")
+    " On the Amiga, the empty string connotes the current directory
+    let b:netrw_curdir= getcwd()
    else
-    let w:netrw_longlist= 0
+    " under unix, when the root directory is encountered, the result
+    " from the preceding substitute is an empty string.
+    let b:netrw_curdir= '/'
    endif
-"   call Decho("w:netrw_longlist=".w:netrw_longlist)
   endif
+  if !a:islocal && b:netrw_curdir !~ '/$'
+   let b:netrw_curdir= b:netrw_curdir.'/'
+  endif
+"  call Decho("b:netrw_curdir<".b:netrw_curdir.">")
 
-  if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt
-   " Active Banner support
-"   call Decho("active banner handling")
-   norm! 0
-   let dirname= "./"
-   let curline= getline(".")
-   if curline =~ '"\s*Sorted by\s'
-    norm s
-    let s:netrw_skipbrowse= 1
-    echo 'Pressing "s" also works'
-   elseif curline =~ '"\s*Sort sequence:'
-    let s:netrw_skipbrowse= 1
-    echo 'Press "S" to edit sorting sequence'
-   elseif curline =~ '"\s*Quick Help:'
-    norm ?
-    let s:netrw_skipbrowse= 1
-    echo 'Pressing "?" also works'
-   elseif curline =~ '"\s*\%(Hiding\|Showing\):'
-    norm a
-    let s:netrw_skipbrowse= 1
-    echo 'Pressing "a" also works'
-   elseif line("$") > w:netrw_bannercnt
-    exe 'silent keepjumps '.w:netrw_bannercnt
+  " ------------
+  " (local only) {{{3
+  " ------------
+  if a:islocal
+"   call Decho("local only:")
+
+   " Set up ShellCmdPost handling.  Append current buffer to browselist
+   call s:LocalFastBrowser()
+
+  " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3
+   if !g:netrw_keepdir
+"    call Decho("handle keepdir:")
+"    call Decho('exe cd '.escape(b:netrw_curdir,s:netrw_cd_escape))
+    try
+     exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape)
+    catch /^Vim\%((\a\+)\)\=:E472/
+     call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".b:netrw_curdir."> (permissions?)",33)
+     if exists("w:netrw_prvdir")
+      let b:netrw_curdir= w:netrw_prvdir
+     else
+      call s:NetOptionRestore()
+      let b:netrw_curdir= dirname
+"      call Dret("NetBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">")
+      return
+     endif
+    endtry
    endif
 
-  elseif w:netrw_longlist == 0
-"   call Decho("thin column handling")
-   norm! 0
-   let dirname= getline(".")
-
-  elseif w:netrw_longlist == 1
-"   call Decho("long column handling")
-   norm! 0
-   let dirname= substitute(getline("."),'^\(\%(\S\+\s\)*\S\+\).\{-}$','\1','e')
-
+  " --------------------------------
+  " remote handling: {{{3
+  " --------------------------------
   else
-"   call Decho("obtain word from wide listing")
-   let dirname= getline(".")
+"   call Decho("remote only:")
+
+   " analyze a:dirname and g:netrw_list_cmd {{{4
+"   call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> a:dirname<".a:dirname.">")
+   if a:dirname == "NetrwTreeListing"
+    let dirname= b:netrw_curdir
+"    call Decho("(dirname was NetrwTreeListing) dirname<".dirname.">")
+   elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
+    let dirname= substitute(b:netrw_curdir,'\\','/','g')
+    if dirname !~ '/$'
+     let dirname= dirname.'/'
+    endif
+    let b:netrw_curdir = dirname
+"    call Decho("(liststyle is TREELIST) dirname<".dirname.">")
+   else
+    let dirname = substitute(a:dirname,'\\','/','g')
+"    call Decho("(normal) dirname<".dirname.">")
+   endif
 
-   if !exists("b:netrw_cpf")
-    let b:netrw_cpf= 0
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
-"    call Decho("computed cpf")
+   let dirpat  = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
+   if dirname !~ dirpat
+    if !exists("g:netrw_quiet")
+     call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20)
+    endif
+     call s:NetOptionRestore()
+"    call Dret("NetBrowse : badly formatted dirname<".dirname.">")
+    return
    endif
+   let b:netrw_curdir= dirname
+"   call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)")
+  endif  " (additional remote handling)
 
-   let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf
-"   call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart."  bannercnt=".w:netrw_bannercnt)
-"   call Decho("1: dirname<".dirname.">")
-   if filestart > 0|let dirname= substitute(dirname,'^.\{'.filestart.'}','','')|endif
-"   call Decho("2: dirname<".dirname.">")
-   let dirname   = substitute(dirname,'^\(.\{'.b:netrw_cpf.'}\).*$','\1','e')
-"   call Decho("3: dirname<".dirname.">")
-   let dirname   = substitute(dirname,'\s\+$','','e')
-"   call Decho("4: dirname<".dirname.">")
-  endif
+  " -----------------------
+  " Directory Listing: {{{3
+  " -----------------------
+  setlocal noro ma
+  call s:BrowserMaps(a:islocal)
+  call s:PerformListing(a:islocal)
 
-"  call Dret("NetGetWord <".dirname.">")
-  return dirname
+"  call Dret("NetBrowse")
+  return
 endfun
 
 " ---------------------------------------------------------------------
-" NetBrowseRm: remove/delete a remote file or directory {{{2
-fun! s:NetBrowseRm(usrhost,path) range
-"  call Dfunc("NetBrowseRm(usrhost<".a:usrhost."> path<".a:path.">) virtcol=".virtcol("."))
-"  call Decho("firstline=".a:firstline." lastline=".a:lastline)
-
-  " preparation for removing multiple files/directories
-  let ctr= a:firstline
-  let all= 0
+" s:NetGetBuffer: {{{2
+"   returns 0=cleared buffer
+"           1=re-used buffer
+fun! s:NetGetBuffer(islocal,dirname)
+"  call Dfunc("s:NetGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">)")
+
+  " re-use buffer if possible {{{3
+  if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+   " find NetrwTreeList buffer if there is one
+   let dirname= "NetrwTreeListing"
+   let bufnum = bufnr('\<NetrwTreeListing\>')
+   if bufnum != -1
+"    call Dret("s:NetGetBuffer : bufnum#".bufnum."<NetrwTreeListing>")
+    return
+   endif
 
-  " remove multiple files and directories
-  while ctr <= a:lastline
-   exe ctr
-
-   let rmfile= s:NetGetWord()
-"   call Decho("rmfile<".rmfile.">")
-
-   if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
-    " attempt to remove file
-    if !all
-     echohl Statement
-     call inputsave()
-     let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
-     call inputrestore()
-     echohl NONE
-     if ok == ""
-      let ok="no"
-     endif
-     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-     if ok =~ 'a\%[ll]'
-      let all= 1
-     endif
-    endif
-
-    if all || ok =~ 'y\%[es]' || ok == ""
-     if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
-      silent! keepjumps .,$d
-      call s:NetBrowseFtpCmd(a:path,"delete ".rmfile)
-     else
-      let netrw_rm_cmd= substitute(g:netrw_rm_cmd,'HOSTNAME',a:usrhost,'').' "'.escape(a:path.rmfile,s:netrw_cd_escape).'"'
-"      call Decho("attempt to remove file: system(".netrw_rm_cmd.")")
-      let ret= system(netrw_rm_cmd)
-"      call Decho("returned=".ret." errcode=".v:shell_error)
-     endif
-    elseif ok =~ 'q\%[uit]'
-     break
+  else
+   " find buffer number of buffer named precisely the same as dirname {{{3
+   let dirname= a:dirname
+"   call Decho("find buffer<".dirname.">'s number ")
+   let bufnum= bufnr(escape(dirname,'\'))
+"   call Decho("findbuf: bufnum=bufnr('".escape(dirname,'\')."')=".bufnum." (initial)")
+   let ibuf= 1
+   if bufnum > 0 && bufname(bufnum) != dirname
+    let buflast = bufnr("$")
+"    call Decho("findbuf: buflast=".buflast)
+    while ibuf <= buflast
+     let bname= bufname(ibuf)
+"     call Decho("findbuf: ibuf=".ibuf. " bufname<".bufname(ibuf)."> dirname<".dirname.">")
+     if bname != '' && bname !~ '/' && dirname =~ '/'.bname.'$' | break | endif
+     if bname =~ '^'.dirname.'\=$' | break | endif
+     let ibuf= ibuf + 1
+    endwhile
+    if ibuf > buflast
+     let bufnum= -1
+    else
+     let bufnum= ibuf
     endif
+"    call Decho("findbuf: bufnum=".bufnum." (final)")
+   endif
+  endif
 
+  " get enew buffer and name it -or- re-use buffer {{{3
+  mark '
+  if bufnum < 0 || !bufexists(bufnum)
+"   call Decho("get enew buffer")
+   call s:NetrwEnew(dirname)
+   call s:NetrwSafeOptions()
+   " name the buffer
+   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+    silent! keepalt file NetrwTreeListing
    else
-    " attempt to remove directory
-    if !all
-     call inputsave()
-     let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
-     call inputrestore()
-     if ok == ""
-      let ok="no"
-     endif
-     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-     if ok =~ 'a\%[ll]'
-      let all= 1
-     endif
-    endif
-
-    if all || ok =~ 'y\%[es]' || ok == ""
-     if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
-      call s:NetBrowseFtpCmd(a:path,"rmdir ".rmfile)
-     else
-      let rmfile         = a:path.rmfile
-      let netrw_rmdir_cmd= substitute(g:netrw_rmdir_cmd,'HOSTNAME',a:usrhost,'').' '."'".'"'.rmfile.'"'."'"
-"      call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")")
-      let ret= system(netrw_rmdir_cmd)
-"      call Decho("returned=".ret." errcode=".v:shell_error)
-
-      if v:shell_error != 0
-       let netrw_rmf_cmd= substitute(g:netrw_rmf_cmd,'HOSTNAME',a:usrhost,'').' '.substitute(rmfile,'[\/]$','','e')
-"       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()
-       endif
-      endif
-     endif
-
-    elseif ok =~ 'q\%[uit]'
-     break
-    endif
+    exe 'silent! keepalt file '.escape(dirname,s:netrw_cd_escape)
    endif
+"   call Decho("named enew buffer<".expand("%").">")
 
-   let ctr= ctr + 1
-  endwhile
-
-  " refresh the directory
-  let curline= line(".")-1
-"  call Decho("refresh the directory")
-  call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
-  exe curline
-
-"  call Dret("NetBrowseRm")
-endfun
-
-" ---------------------------------------------------------------------
-" NetBrowseRename: rename a remote file or directory {{{2
-fun! s:NetBrowseRename(usrhost,path) range
-"  call Dfunc("NetBrowseRename(usrhost<".a:usrhost."> path<".a:path.">)")
-
-  " preparation for removing multiple files/directories
-  let ctr        = a:firstline
-  let rename_cmd = substitute(g:netrw_rename_cmd,'\<HOSTNAME\>',a:usrhost,'')
-
-  " attempt to rename files/directories
-  while ctr <= a:lastline
-   exe "keepjumps ".ctr
-
-   norm! 0
-   let oldname= s:NetGetWord()
-"   call Decho("oldname<".oldname.">")
-
-   call inputsave()
-   let newname= input("Moving ".oldname." to : ",oldname)
-   call inputrestore()
+  else " Re-use the buffer
 
-   if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
-    call s:NetBrowseFtpCmd(a:path,"rename ".oldname." ".newname)
+"   call Decho("re-use buffer:")
+   let eikeep= &ei
+   set ei=all
+   if getline(2) =~ '^" Netrw Directory Listing'
+"    call Decho("re-use buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using:  keepalt b ".bufnum)
+    exe "keepalt b ".bufnum
    else
-    let oldname= a:path.oldname
-    let newname= a:path.newname
-"    call Decho("system(rename_cmd".' "'.escape(oldname," ").'" "'.escape(newname,s:netrw_cd_escape).'"')
-    let ret= system(rename_cmd.' "'.escape(oldname,s:netrw_cd_escape).'" "'.escape(newname,s:netrw_cd_escape).'"')
+"    call Decho("reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using:  b ".bufnum)
+    exe "b ".bufnum
+   endif
+   let &ei= eikeep
+   if line("$") <= 1
+    call s:NetrwListSettings(a:islocal)
+"    call Dret("s:NetGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it")
+    return 0
+   elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+"    call Decho("clear buffer<".expand("%")."> with :%d")
+    silent %d
+    call s:NetrwListSettings(a:islocal)
+"    call Dret("s:NetGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
+    return 0
+   else
+"    call Dret("s:NetGetBuffer 1 : buf#".bufnr("%"))
+    return 1
    endif
+  endif
 
-   let ctr= ctr + 1
-  endwhile
+  " do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc {{{3
+  "     fastbrowse  Local  Remote   Hiding a buffer implies it may be re-used (fast)
+  "  slow   0         D      D      Deleting a buffer implies it will not be re-used (slow)
+  "  med    1         D      H
+  "  fast   2         H      H
+  let fname= expand("%")
+  call s:NetrwListSettings(a:islocal)
+  exe "file ".escape(fname,' ')
+
+  " delete all lines from buffer {{{3
+"  call Decho("clear buffer<".expand("%")."> with :%d")
+  keepalt silent! %d
 
-  " refresh the directory
-  let curline= line(".")
-  call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
-  exe "keepjumps ".curline
-"  call Dret("NetBrowseRename")
+"  call Dret("s:NetGetBuffer 0 : buf#".bufnr("%"))
+  return 0
 endfun
 
 " ---------------------------------------------------------------------
-" NetRefresh: {{{2
-fun! s:NetRefresh(dirname,islocal)
-"  call Dfunc("NetRefresh(dirname<".a:dirname.">,islocal=".a:islocal.")")
-  call netrw#NetSavePosn()
-  set ma
-  %d
-  if a:islocal
-   call s:LocalBrowse(a:dirname)
-  else
-   call s:NetBrowse(a:dirname)
+" s:NetrwListSettings: {{{2
+fun! s:NetrwListSettings(islocal)
+"  call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")")
+  let fname= bufname("%")
+  setlocal bt=nofile nobl ma nonu nowrap noro
+  exe "file ".escape(fname,' ')
+  if g:netrw_use_noswf
+   setlocal noswf
   endif
-  call netrw#NetRestorePosn()
-  redraw!
-"  call Dret("NetRefresh")
-endfun
-
-" ---------------------------------------------------------------------
-" NetSplit: mode {{{2
-"           =0 : net   and o
-"           =1 : net   and v
-"           =2 : local and o
-"           =3 : local and v
-fun! s:NetSplit(mode)
-"  call Dfunc("NetSplit(mode=".a:mode.") alto=".g:netrw_alto." altv=".g:netrw_altv)
-
-  call s:SaveWinVars()
-  if a:mode == 0
-   exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"
-   call s:CopyWinVars()
-   exe "norm! 0"
-   call s:NetBrowse(s:NetBrowseChgDir(expand("%"),s:NetGetWord()))
-  elseif a:mode ==1
-   exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"
-   call s:CopyWinVars()
-   exe "norm! 0"
-   call s:NetBrowse(s:NetBrowseChgDir(expand("%"),s:NetGetWord()))
-  elseif a:mode ==2
-   exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"
-   call s:CopyWinVars()
-   exe "norm! 0"
-   call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,s:NetGetWord()))
+"call Dredir("ls!")
+"  call Decho("exe setlocal ts=".g:netrw_maxfilenamelen)
+  exe "setlocal ts=".g:netrw_maxfilenamelen
+  if g:netrw_fastbrowse > a:islocal
+   setlocal bh=hide
   else
-   exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"
-   call s:CopyWinVars()
-   exe "norm! 0"
-   call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,s:NetGetWord()))
+   setlocal bh=delete
   endif
-
-"  call Dret("NetSplit")
+"  call Dret("s:NetrwListSettings")
 endfun
 
 " ---------------------------------------------------------------------
-" NetBrowseX:  allows users to write custom functions to operate on {{{2
-"              files given their extension.  Passes 0=local, 1=remote
-fun! netrw#NetBrowseX(fname,remote)
-"  call Dfunc("NetBrowseX(fname<".a:fname."> remote=".a:remote.")")
+" s:PerformListing: {{{2
+fun! s:PerformListing(islocal)
+"  call Dfunc("s:PerformListing(islocal=".a:islocal.")")
+
+"   if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1     " Decho
+"    call Decho("(netrw) Processing your browsing request...")
+"   endif                                                              " Decho
+
+"   call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'))
+   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
+    " force a refresh for tree listings
+"    call Decho("clear buffer<".expand("%")."> with :%d")
+    setlocal ma noro
+    keepjumps %d
+   endif
 
-  " set up the filename
-  " (lower case the extension, make a local copy of a remote file)
-  let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e')
-  if has("win32") || has("win95") || has("win64") || has("win16")
-   let exten= substitute(exten,'^.*$','\L&\E','')
-  endif
-  let fname= escape(a:fname,"%#")
-"  call Decho("fname<".fname."> after escape()")
+  " save current directory on directory history list
+  call s:NetBookmarkDir(3,b:netrw_curdir)
 
-  " 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 "kdeinit" running, though...  (tnx Mikolaj Machowski)
-  if !exists("s:haskdeinit")
-   if has("unix")
-    silent! let s:haskdeinit= system('ps -e') =~ 'kdeinit'
-    if v:shell_error
-     let s:haskdeinit = 0
-    endif
-   else
-    let s:haskdeinit= 0
-   endif
-"   call Decho("setting s:haskdeinit=".s:haskdeinit)
-  endif
+  " Set up the banner {{{3
+"  call Decho("set up banner")
+  keepjumps put ='\" ============================================================================'
+  keepjumps put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
+  keepjumps put ='\"   '.b:netrw_curdir
+  keepjumps 1d
+  let w:netrw_bannercnt= 3
+  exe w:netrw_bannercnt
 
-  if a:remote == 1
-   " create a local copy
-   let fname= tempname().".".exten
-"   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
-   q
+  let sortby= g:netrw_sort_by
+  if g:netrw_sort_direction =~ "^r"
+   let sortby= sortby." reversed"
   endif
-"  call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
 
-  " set up redirection
-  if &srr =~ "%s"
-   let redir= substitute(&srr,"%s","/dev/null","")
+  " Sorted by... {{{3
+"  call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">")
+  if g:netrw_sort_by =~ "^n"
+"   call Decho("directories will be sorted by name")
+   " sorted by name
+   keepjumps put ='\"   Sorted by      '.sortby
+   keepjumps put ='\"   Sort sequence: '.g:netrw_sort_sequence
+   let w:netrw_bannercnt= w:netrw_bannercnt + 2
   else
-   let redir= &srr . "/dev/null"
+"   call Decho("directories will be sorted by size or time")
+   " sorted by size or date
+   keepjumps put ='\"   Sorted by '.sortby
+   let w:netrw_bannercnt= w:netrw_bannercnt + 1
   endif
-"  call Decho("redir{".redir."} srr{".&srr."}")
+  exe w:netrw_bannercnt
 
-  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 == '-'
-    let ret= netrwFileHandlers#Invoke(exten,fname)
+  " Hiding...  -or-  Showing... {{{3
+"  call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)")
+  if g:netrw_list_hide != "" && g:netrw_hide
+   if g:netrw_hide == 1
+    keepjumps put ='\"   Hiding:        '.g:netrw_list_hide
    else
-"    call Decho("exe silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."' ".redir)
-    exe "silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."'".redir
-    let ret= v:shell_error
+    keepjumps put ='\"   Showing:       '.g:netrw_list_hide
    endif
+   let w:netrw_bannercnt= w:netrw_bannercnt + 1
+  endif
+  exe w:netrw_bannercnt
+  keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
+  keepjumps put ='\" ============================================================================'
+  let w:netrw_bannercnt= w:netrw_bannercnt + 2
 
-  " execute the file handler
-  elseif has("win32") || has("win64")
-"   call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"')
-   exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"'
-   let ret= v:shell_error
-
-  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:haskdeinit
-"   call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir)
-   exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir
-   let ret= v:shell_error
+  " bannercnt should index the line just after the banner
+  let w:netrw_bannercnt= w:netrw_bannercnt + 1
+  exe w:netrw_bannercnt
+"  call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
 
-  else
-   " netrwFileHandlers#Invoke() always returns 0
-   let ret= netrwFileHandlers#Invoke(exten,fname)
+  " set up syntax highlighting {{{3
+"  call Decho("set up syntax highlighting")
+  if has("syntax")
+   setlocal ft=netrw
+   if !exists("g:syntax_on") || !g:syntax_on
+    setlocal ft=
+   endif
   endif
 
-  " if unsuccessful, attempt netrwFileHandlers#Invoke()
-  if ret
-   let ret= netrwFileHandlers#Invoke(exten,fname)
+  " get list of files
+  if a:islocal
+   call s:LocalListing()
+  else " remote
+   call s:RemoteListing()
   endif
+"  call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)")
 
-  redraw!
+  " manipulate the directory listing (hide, sort) {{{3
+  if line("$") >= w:netrw_bannercnt
+"   call Decho("manipulate directory listing (hide)")
+"   call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
+   if g:netrw_hide && g:netrw_list_hide != ""
+    call s:NetListHide()
+   endif
+   if line("$") >= w:netrw_bannercnt
+"    call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">")
 
-  " cleanup: remove temporary file,
-  "          delete current buffer if success with handler,
-  "          return to prior buffer (directory listing)
-  if a:remote == 1 && fname != a:fname
-"   call Decho("deleting temporary file<".fname.">")
-   call delete(fname)
-  endif
+    if g:netrw_sort_by =~ "^n"
+     " sort by name
+     call s:SetSort()
 
-  if a:remote == 1
-   set bh=delete bt=nofile noswf
-   exe "norm! \<c-o>"
-   redraw!
+     if w:netrw_bannercnt < line("$")
+"      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")")
+      if g:netrw_sort_direction =~ 'n'
+       " normal direction sorting
+       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+      else
+       " reverse direction sorting
+       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+      endif
+     endif
+     " remove priority pattern prefix
+"     call Decho("remove priority pattern prefix")
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+
+    elseif a:islocal
+     if w:netrw_bannercnt < line("$")
+"      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction)
+      if g:netrw_sort_direction =~ 'n'
+"       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort')
+       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+      else
+"       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
+       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+      endif
+     endif
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+    endif
+
+   elseif g:netrw_sort_direction =~ 'r'
+"    call Decho('reverse the sorted listing')
+    exe 'silent keepjumps '.w:netrw_bannercnt.'g/^/m '.w:netrw_bannercnt
+   endif
   endif
 
-"  call Dret("NetBrowseX")
-endfun
+  " convert to wide/tree listing {{{3
+"  call Decho("modify display if wide/tree listing style")
+  call s:NetWideListing()
+  call s:NetTreeListing(b:netrw_curdir)
 
-" ---------------------------------------------------------------------
-" NetBrowseFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2
-"  This function assumes that a long listing will be received.  Size, time,
-"  and reverse sorts will be requested of the server but not otherwise
-"  enforced here.
-fun! s:NetBrowseFtpCmd(path,listcmd)
-"  call Dfunc("NetBrowseFtpCmd(path<".a:path."> listcmd<".a:listcmd.">) netrw_method=".w:netrw_method)
+  if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
+   " place cursor on the top-left corner of the file listing
+"   call Decho("place cursor on top-left corner of file listing")
+   exe 'silent '.w:netrw_bannercnt
+   norm! 0
+  endif
 
-  " because WinXX ftp uses unix style input
-  " curline is one more than the bannercnt in order to account
-  " for the unwanted first blank line (doing a :put to an empty
-  " buffer yields a blank first line)
-  let ffkeep= &ff
-  setlocal ma ff=unix
-  let curline= w:netrw_bannercnt+1
-  exe "silent! keepjumps ".curline.",$d"
+  " record previous current directory
+  let w:netrw_prvdir= b:netrw_curdir
+"  call Decho("record netrw_prvdir<".w:netrw_prvdir.">")
 
-  ".........................................
-  if w:netrw_method == 2 || w:netrw_method == 5 
-   " ftp + <.netrc>:  Method #2
-   if a:path != ""
-    put ='cd \"'.a:path.'\"'
-"    call Decho('ftp:  '.getline("."))
-   endif
-   exe "put ='".a:listcmd."'"
-"   call Decho("ftp:  ".getline("."))
-"    redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
-   if exists("g:netrw_port") && g:netrw_port != ""
-"    call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
-    exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
-   else
-"    call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
-    exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine
-   endif
+  " save certain window-oriented variables into buffer-oriented variables {{{3
+  call s:SetBufWinVars()
+  call s:NetOptionRestore()
 
-   ".........................................
-  elseif w:netrw_method == 3
-   " ftp + machine,id,passwd,filename:  Method #3
-    setlocal ff=unix
-    if exists("g:netrw_port") && g:netrw_port != ""
-     put ='open '.g:netrw_machine.' '.g:netrw_port
-    else
-     put ='open '.g:netrw_machine
-    endif
+  " set display to netrw display settings
+"  call Decho("set display to netrw display settings (noma nomod etc)")
+  setlocal noma nomod nonu nobl nowrap ro
+  if exists("s:treecurpos")
+   call setpos('.',s:treecurpos)
+   unlet s:treecurpos
+  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
+"  call Dret("s:PerformListing : curpos<".string(getpos(".")).">")
+endfun
 
-   if a:path != ""
-    put ='cd \"'.a:path.'\"'
-   endif
-   exe "put ='".a:listcmd."'"
+" ---------------------------------------------------------------------
+"  s:NetBrowseChgDir: constructs a new directory based on the current {{{2
+"                     directory and a new directory name
+fun! s:NetBrowseChgDir(islocal,newdir,...)
+"  call Dfunc("s:NetBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">")
 
-    " 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.curline.",$!".g:netrw_ftp_cmd." -i -n"
+  if !exists("b:netrw_curdir")
+"   call Decho("(NetBrowseChgDir) b:netrw_curdir doesn't exist!")
+   echoerr "(NetBrowseChgDir) b:netrw_curdir doesn't exist!"
+"   call Dret("s:NetBrowseChgDir")
+   return
+  endif
 
-   ".........................................
+  call netrw#NetSavePosn()
+  let nbcd_curpos = getpos('.')
+  let dirname     = substitute(b:netrw_curdir,'\\','/','ge')
+  let newdir      = a:newdir
+
+  " set up o/s-dependent directory recognition pattern
+  if has("amiga")
+   let dirpat= '[\/:]$'
   else
-    echo "***warning*** unable to comply with your request<" . choice . ">"
+   let dirpat= '[\/]$'
   endif
+"  call Decho("dirname<".dirname.">  dirpat<".dirpat.">")
 
-  " cleanup for Windows
-  if has("win32") || has("win95") || has("win64") || has("win16")
-   silent! keepjumps! %s/\r$//e
-  endif
-  if a:listcmd == "dir"
-   " infer directory/link based on the file permission string
-   silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
-   silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
-   if w:netrw_longlist == 0 || w:netrw_longlist == 2
-    exe "silent! keepjumps ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
-   endif
+  if dirname !~ dirpat
+   " apparently vim is "recognizing" that it is in a directory and
+   " is removing the trailing "/".  Bad idea, so I have to put it back.
+   let dirname= dirname.'/'
+"   call Decho("adjusting dirname<".dirname.">")
   endif
 
-  " ftp's ls doesn't seem to include ./ or ../
-  if !search('^\.\/$','wn')
-   exe 'keepjumps '.curline
-   if a:path !~ '^$'
-    put ='../'
+  if newdir !~ dirpat
+   " handling a file
+"   call Decho('case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">")
+   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)'
+    let dirname= s:NetTreeDir().newdir
+"    call Decho("tree listing")
+   elseif newdir =~ '^\(/\|\a:\)'
+    let dirname= newdir
+   else
+    let dirname= s:ComposePath(dirname,newdir)
+   endif
+"   call Decho("handling a file: dirname<".dirname."> (a:0=".a:0.")")
+   " this lets NetBrowseX avoid the edit
+   if a:0 < 1
+"    call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape."> browse_split=".g:netrw_browse_split)
+"    call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">  didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist"))
+    if !exists("s:didsplit")
+     if     g:netrw_browse_split == 1
+      new
+      wincmd _
+     elseif g:netrw_browse_split == 2
+      rightb vert new
+      wincmd |
+     elseif g:netrw_browse_split == 3
+      tabnew
+     else
+      " handling a file, didn't split, so remove menu
+"      call Decho("handling a file+didn't split, so remove menu")
+      call s:NetMenu(0)
+      " optional change to window
+      if g:netrw_chgwin >= 1 
+       exe g:netrw_chgwin."wincmd w"
+      endif
+     endif
+    endif
+    " edit the file
+    " its local only: LocalBrowseCheck() doesn't edit a file, but NetBrowse() will
+    if a:islocal
+"     call Decho("edit file: exe e! ".escape(dirname,s:netrw_cd_escape))
+     exe "e! ".escape(dirname,s:netrw_cd_escape)
+    endif
+    setlocal ma nomod noro
    endif
-   put ='./'
-   exe 'keepjumps '.curline
-  endif
 
-  " restore settings
-  let &ff= ffkeep
-"  call Dret("NetBrowseFtpCmd")
-endfun
+  elseif newdir =~ '^/'
+   " just go to the new directory spec
+"   call Decho('case "just go to new directory spec": newdir<'.newdir.'>')
+   let dirname= newdir
 
-" ---------------------------------------------------------------------
-" NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2
-" separated patterns given in g:netrw_list_hide
-fun! s:NetrwListHide()
-"  call Dfunc("NetrwListHide() hide=".g:netrw_hide." listhide<".g:netrw_list_hide.">")
+  elseif newdir == './'
+   " refresh the directory list
+"   call Decho('case "refresh directory listing": newdir == "./"')
 
-  " find a character not in the "hide" string to used as a separator
-  " for :g and :v commands
-  let listhide= g:netrw_list_hide
-  let sep     = strpart(substitute('~!@#$%^&*{};:,<.>/?|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
-"  call Decho("sep=".sep)
+  elseif newdir == '../'
+   " go up one directory
+"   call Decho('case "go up one directory": newdir == "../"')
+
+   if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
+    " force a refresh
+"    call Decho("clear buffer<".expand("%")."> with :%d")
+    setlocal noro ma
+    keepjumps %d
+   endif
+
+   if has("amiga")
+    " amiga
+"    call Decho('case "go up one directory": newdir == "../" and amiga')
+    if a:islocal
+     let dirname= substitute(dirname,'^\(.*[/:]\)\([^/]\+$\)','\1','')
+     let dirname= substitute(dirname,'/$','','')
+    else
+     let dirname= substitute(dirname,'^\(.*[/:]\)\([^/]\+/$\)','\1','')
+    endif
+"    call Decho("amiga: dirname<".dirname."> (go up one dir)")
 
-  while listhide != ""
-   if listhide =~ ','
-    let hide     = substitute(listhide,',.*$','','e')
-    let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e')
    else
-    let hide     = listhide
-    let listhide= ""
+    " unix or cygwin
+"    call Decho('case "go up one directory": newdir == "../" and unix or cygwin')
+    if a:islocal
+     let dirname= substitute(dirname,'^\(.*\)/\([^/]\+\)/$','\1','')
+     if dirname == ""
+      let dirname= '/'
+     endif
+    else
+     let dirname= substitute(dirname,'^\(\a\+://.\{-}/\{1,2}\)\(.\{-}\)\([^/]\+\)/$','\1\2','')
+    endif
+"    call Decho("unix: dirname<".dirname."> (go up one dir)")
    endif
 
-   " Prune the list by hiding any files which match
-   if g:netrw_hide == 1
-"    call Decho("hiding<".hide."> listhide<".listhide.">")
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
-   elseif g:netrw_hide == 2
-"    call Decho("showing<".hide."> listhide<".listhide.">")
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
+  elseif w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
+"   call Decho('case liststyle is TREELIST and w:netrw_treedict exists')
+   " force a refresh (for TREELIST, wait for NetTreeDir() to force the refresh)
+   setlocal noro ma
+   if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir"))
+"    call Decho("clear buffer<".expand("%")."> with :%d")
+    keepjumps %d
+   endif
+   let treedir      = s:NetTreeDir()
+   let s:treecurpos = nbcd_curpos
+   let haskey= 0
+"   call Decho("w:netrw_treedict<".string(w:netrw_treedict).">")
+
+   " search treedict for tree dir as-is
+   if has_key(w:netrw_treedict,treedir)
+"    call Decho('....searched for treedir<'.treedir.'> : found it!')
+    let haskey= 1
+   else
+"    call Decho('....searched for treedir<'.treedir.'> : not found')
    endif
-  endwhile
-  if g:netrw_hide == 2
-   exe 'silent keepjumps '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
-   exe 'silent keepjumps '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
-  endif
 
-"  call Dret("NetrwListHide")
-endfun
+   " search treedict for treedir with a / appended
+   if !haskey && treedir !~ '/$'
+    if has_key(w:netrw_treedict,treedir."/")
+     let treedir= treedir."/"
+"     call Decho('....searched.for treedir<'.treedir.'> found it!')
+     let haskey = 1
+    else
+"     call Decho('....searched for treedir<'.treedir.'/> : not found')
+    endif
+   endif
 
-" ---------------------------------------------------------------------
-" NetHideEdit: allows user to edit the file/directory hiding list
-fun! s:NetHideEdit(islocal)
-"  call Dfunc("NetHideEdit(islocal=".a:islocal.")")
+   " search treedict for treedir with any trailing / elided
+   if !haskey && treedir =~ '/$'
+    let treedir= substitute(treedir,'/$','','')
+    if has_key(w:netrw_treedict,treedir)
+"     call Decho('....searched.for treedir<'.treedir.'> found it!')
+     let haskey = 1
+    else
+"     call Decho('....searched for treedir<'.treedir.'> : not found')
+    endif
+   endif
 
-  " get new hiding list from user
-  call inputsave()
-  let newhide= input("Edit Hiding List: ",g:netrw_list_hide)
-  call inputrestore()
-  let g:netrw_list_hide= newhide
-"  call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
+   if haskey
+    " close tree listing for selected subdirectory
+"    call Decho("closing selected subdirectory<".dirname.">")
+    call remove(w:netrw_treedict,treedir)
+"    call Decho("removed     entry<".dirname."> from treedict")
+"    call Decho("yielding treedict<".string(w:netrw_treedict).">")
+    let dirname= w:netrw_treetop
+   else
+    " go down one directory
+    let dirname= substitute(treedir,'/*$','/','')
+"    call Decho("go down one dir: treedir<".treedir.">")
+   endif
 
-  " refresh the listing
-  if a:islocal == 0
-   silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
   else
-   silent call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,"./"),a:islocal)
+   " go down one directory
+   let dirname= s:ComposePath(dirname,newdir)
+"   call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
   endif
 
-"  call Dret("NetHideEdit")
+"  call Dret("s:NetBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">")
+  return dirname
 endfun
 
 " ---------------------------------------------------------------------
-" NetSortSequence: allows user to edit the sorting sequence
-fun! s:NetSortSequence(mode)
-"  call Dfunc("NetSortSequence(mode=".a:mode.")")
-
-  call inputsave()
-  let newsortseq= input("Edit Sorting Sequence: ",g:netrw_sort_sequence)
-  call inputrestore()
-
-  " refresh the listing
-  let g:netrw_sort_sequence= newsortseq
-  if a:mode == 0
-   silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
-  else
-   silent call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,"./"))
-  endif
-
-"  call Dret("NetSortSequence")
+" s:NetHide: this function is invoked by the "a" map for browsing {{{2
+"          and switches the hiding mode
+fun! s:NetHide(islocal)
+"  call Dfunc("NetHide(islocal=".a:islocal.")")
+   let g:netrw_hide=(g:netrw_hide+1)%3
+   exe "norm! 0"
+   if g:netrw_hide && g:netrw_list_hide == ""
+    call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49)
+"    call Dret("NetHide")
+    return
+   endif
+   call netrw#NetSavePosn()
+   call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./'))
+"  call Dret("NetHide")
 endfun
 
 " ---------------------------------------------------------------------
-"  NetLongList: {{{2
-fun! s:NetLongList(mode)
-"  call Dfunc("NetLongList(mode=".a:mode.") netrw_longlist=".w:netrw_longlist)
-  let fname            = s:NetGetWord()
-  let w:netrw_longlist = (w:netrw_longlist + 1) % 3
-"  call Decho("fname<".fname.">")
-
-  if w:netrw_longlist == 0
-   " use one column listing
-"   call Decho("use one column list")
-   let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
-
-  elseif w:netrw_longlist == 1
-   " use long list
-"   call Decho("use long list")
-   let g:netrw_list_cmd = g:netrw_list_cmd." -l"
 
-  else
-   " give wide list
-"   call Decho("use wide list")
-   let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
+" ===========================================
+" s:NetPreview: {{{2
+fun! s:NetPreview(path) range
+"  call Dfunc("NetPreview(path<".a:path.">)")
+  if has("quickfix")
+   if !isdirectory(a:path)
+    exe "pedit ".escape(a:path,g:netrw_fname_escape)
+   elseif !exists("g:netrw_quiet")
+    call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38)
+   endif
+  elseif !exists("g:netrw_quiet")
+   call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39)
   endif
-  setlocal ma
-
-  " clear buffer - this will cause NetBrowse/LocalBrowse to do a refresh
-  %d
+"  call Dret("NetPreview")
+endfun
 
-  " refresh the listing
-  if a:mode == 0
-   silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),"./"))
-  else
-   silent call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,"./"))
-  endif
+" ---------------------------------------------------------------------
+" s:NetSortStyle: change sorting style (name - time - size) and refresh display {{{2
+fun! s:NetSortStyle(islocal)
+"  call Dfunc("s:NetSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">")
+  call s:NetSaveWordPosn()
 
-  " keep cursor on the filename
-  silent keepjumps $
-  if fname =~ '/$'
-   silent call search('\%(^\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bW')
-  else
-   silent call search('\%(^\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bW')
-  endif
+  let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'
+  norm! 0
+  call netrw#NetSavePosn()
+  call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./'))
 
-"  call Dret("NetLongList : w:netrw_longlist=".w:netrw_longlist)
+"  call Dret("s:NetSortStyle : netrw_sort_by<".g:netrw_sort_by.">")
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwWideListing: {{{2
-fun! s:NetrwWideListing()
+"  Remote Directory Browsing Support:    {{{1
+" ===========================================
 
-  if w:netrw_longlist == 2
-"   call Dfunc("NetrwWideListing() w:netrw_longlist=".w:netrw_longlist)
-   " look for longest filename (cpf=characters per filename)
-   " cpf: characters per file
-   " fpl: files per line
-   " fpc: files per column
-   set ma
-   let b:netrw_cpf= 0
-   if line("$") >= w:netrw_bannercnt
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
-   else
-"    call Dret("NetrwWideListing")
+" ---------------------------------------------------------------------
+" s:RemoteListing: {{{2
+fun! s:RemoteListing()
+"  call Dfunc("s:RemoteListing() b:netrw_curdir<".b:netrw_curdir.">)")
+
+  call s:RemotePathAnalysis(b:netrw_curdir)
+
+  " sanity check:
+  if exists("b:netrw_method") && b:netrw_method =~ '[235]'
+"   call Decho("b:netrw_method=".b:netrw_method)
+   if !executable("ftp")
+    if !exists("g:netrw_quiet")
+     call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18)
+    endif
+    call s:NetOptionRestore()
+"    call Dret("s:RemoteListing")
     return
    endif
-"   call Decho("max file strlen+1=".b:netrw_cpf)
-   let b:netrw_cpf= b:netrw_cpf + 1
 
-   " 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
+  elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == ''
+   if !exists("g:netrw_quiet")
+    if g:netrw_list_cmd == ""
+     call netrw#ErrorMsg(s:ERROR,g:netrw_ssh_cmd." is not executable on your system",47)
+    else
+     call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19)
+    endif
    endif
-"   call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
 
-   " make wide display
-   exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=printf("%-'.b:netrw_cpf.'s",escape(submatch(0),"\\"))/'
-   let fpc         = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
-   let newcolstart = w:netrw_bannercnt + fpc
-   let newcolend   = newcolstart + fpc - 1
-"   call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]")
-   while line("$") >= newcolstart
-    if newcolend > line("$") | let newcolend= line("$") | endif
-    let newcolqty= newcolend - newcolstart
-    exe newcolstart
-    if newcolqty == 0
-     exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
-    else
-     exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
-    endif
-    exe "silent keepjumps ".newcolstart.','.newcolend.'d'
-    exe 'silent keepjumps '.w:netrw_bannercnt
-   endwhile
-   exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
-   setlocal noma nomod
-"   call Dret("NetrwWideListing")
-  endif
-
-endfun
-
-" ---------------------------------------------------------------------
-" NetSaveWordPosn: used by the "s" command in both remote and local {{{2
-" browsing.  Along with NetRestoreWordPosn(), it keeps the cursor on
-" the same word even though the sorting has changed its order of appearance.
-fun! s:NetSaveWordPosn()
-"  call Dfunc("NetSaveWordPosn()")
-  let s:netrw_saveword= '^'.escape(getline("."),s:netrw_cd_escape).'$'
-"  call Dret("NetSaveWordPosn : saveword<".s:netrw_saveword.">")
-endfun
-
-" ---------------------------------------------------------------------
-" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above {{{2
-fun! s:NetRestoreWordPosn()
-"  call Dfunc("NetRestoreWordPosn()")
-  silent! call search(s:netrw_saveword,'w')
-"  call Dret("NetRestoreWordPosn")
-endfun
+   call s:NetOptionRestore()
+"   call Dret("s:RemoteListing")
+   return
+  endif  " (remote handling sanity check)
 
-" ---------------------------------------------------------------------
-" NetMakeDir: this function makes a directory (both local and remote) {{{2
-fun! s:NetMakeDir(usrhost)
-"  call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)")
+  if exists("b:netrw_method")
+"   call Decho("setting w:netrw_method<".b:netrw_method.">")
+   let w:netrw_method= b:netrw_method
+  endif
 
-  " get name of new directory from user.  A bare <CR> will skip.
-  " if its currently a directory, also request will be skipped, but with
-  " a message.
-  call inputsave()
-  let newdirname= input("Please give directory name: ")
-  call inputrestore()
-"  call Decho("newdirname<".newdirname.">")
+  if s:method == "ftp"
+   " use ftp to get remote file listing
+"   call Decho("use ftp to get remote file listing")
+   let s:method  = "ftp"
+   let listcmd = g:netrw_ftp_list_cmd
+   if g:netrw_sort_by =~ '^t'
+    let listcmd= g:netrw_ftp_timelist_cmd
+   elseif g:netrw_sort_by =~ '^s'
+    let listcmd= g:netrw_ftp_sizelist_cmd
+   endif
+"   call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)")
+   call s:NetBrowseFtpCmd(s:path,listcmd)
+"   exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))'
 
-  if newdirname == ""
-"   call Dret("NetMakeDir : user aborted with bare <cr>")
-   return
-  endif
+   if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
+    " shorten the listing
+"    call Decho("generate short listing")
+    exe "keepjumps ".w:netrw_bannercnt
 
-  if a:usrhost == ""
+    " cleanup
+    if g:netrw_ftp_browse_reject != ""
+     exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
+    endif
+    silent! keepjumps %s/\r$//e
 
-   " Local mkdir:
-   " sanity checks
-   let fullnewdir= b:netrw_curdir.'/'.newdirname
-"   call Decho("fullnewdir<".fullnewdir.">")
-   if isdirectory(fullnewdir)
-    if !exists("g:netrw_quiet")
-     echohl WarningMsg | echo "***netrw*** <".newdirname."> is already a directory!" | echohl None
-     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    " if there's no ../ listed, then put ./ and ../ in
+    let line1= line(".")
+    exe "keepjumps ".w:netrw_bannercnt
+    let line2= search('^\.\.\/\%(\s\|$\)','cnW')
+    if line2 == 0
+"     call Decho("netrw is putting ./ and ../ into listing")
+     keepjumps put='../'
+     keepjumps put='./'
     endif
-"    call Dret("NetMakeDir : directory<".newdirname."> exists previously")
-    return
-   endif
-   if filereadable(fullnewdir)
-    if !exists("g:netrw_quiet")
-     echohl WarningMsg | echo "***netrw*** <".newdirname."> is already a file!" | echohl None
-     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    exe "keepjumps ".line1
+    keepjumps norm! 0
+
+"    call Decho("line1=".line1." line2=".line2." line(.)=".line("."))
+    if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
+"     call Decho("M$ ftp cleanup")
+     exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
+    else " normal ftp cleanup
+"     call Decho("normal ftp cleanup")
+     exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
+     exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
+     exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
     endif
-"    call Dret("NetMakeDir : file<".newdirname."> exists previously")
-    return
    endif
 
-   " requested new local directory is neither a pre-existing file or
-   " directory, so make it!
-   if exists("*mkdir")
-    call mkdir(fullnewdir,"p")
+  else
+   " use ssh to get remote file listing {{{3
+"   call Decho("use ssh to get remote file listing: s:netrw_shq<".g:netrw_shq."> s:path<".s:path."> s:netrw_cd_escape<".s:netrw_cd_escape.">")
+   let listcmd= s:MakeSshCmd(g:netrw_list_cmd)
+"   call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)")
+   if g:netrw_scp_cmd =~ '^pscp'
+"    call Decho("1: exe silent r! ".listcmd.g:netrw_shq.s:path.g:netrw_shq)
+    exe "silent r! ".listcmd.g:netrw_shq.s:path.g:netrw_shq
+    " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like
+    g/^Listing directory/d
+    g/^d[-rwx][-rwx][-rwx]/s+$+/+e
+    silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e
+    if g:netrw_liststyle != s:LONGLIST 
+     g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e
+    endif
    else
-    let netrw_origdir= s:NetGetcwd(1)
-    exe 'keepjumps cd '.b:netrw_curdir
-"    call Decho("netrw_origdir<".netrw_origdir.">: cd b:netrw_curdir<".b:netrw_curdir.">")
-"    call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"')
-    exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"'
-    if !g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
-    if !g:netrw_keepdir
-     exe 'keepjumps cd '.netrw_origdir
-"     call Decho("netrw_keepdir=".g:netrw_keepdir.": cd ".netrw_origdir)
+    if s:path == ""
+"     call Decho("2: exe silent r! ".listcmd)
+     exe "silent r! ".listcmd
+    else
+"     call Decho("3: exe silent r! ".listcmd." ".g:netrw_shq.s:path.g:netrw_shq)
+     exe "silent r! ".listcmd." ".g:netrw_shq.s:path.g:netrw_shq
     endif
    endif
 
-   if v:shell_error == 0
-    " refresh listing
-"    call Decho("refresh listing")
-    let linenum= line(".")
-    norm! H0
-    let hline  = line(".")
-    set ma|norm! 2D
-    call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,'./'))
-    exe "norm! ".hline."G0z\<CR>"
-    exe linenum
-   elseif !exists("g:netrw_quiet")
-    echohl Error | echo "***netrw*** unable to make directory<".newdirname.">" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   " cleanup
+   if g:netrw_ftp_browse_reject != ""
+"    call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d")
+    exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d"
    endif
-   redraw!
+  endif
 
-  else
-   " Remote mkdir:
-   let mkdircmd  = substitute(g:netrw_mkdir_cmd,'\<HOSTNAME\>',a:usrhost,'')
-   let newdirname= "'".'"'.substitute(expand("%"),'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname.'"'."'"
-"   call Decho("exe silent! !".mkdircmd." ".newdirname)
-   exe "silent! !".mkdircmd." ".newdirname
-   if v:shell_error == 0
-    " refresh listing
-    let linenum= line(".")
-    norm! H0
-    let hline  = line(".")
-    call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
-    exe "norm! ".hline."G0z\<CR>"
-    exe linenum
-   elseif !exists("g:netrw_quiet")
-    echohl Error | echo "***netrw*** unable to make directory<".newdirname.">" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+  if w:netrw_liststyle == s:LONGLIST
+   " do a long listing; these substitutions need to be done prior to sorting {{{3
+"   call Decho("fix long listing:")
+
+   if s:method == "ftp"
+    " cleanup
+    exe "keepjumps ".w:netrw_bannercnt
+    while getline(".") =~ g:netrw_ftp_browse_reject
+     keepjumps d
+    endwhile
+    " if there's no ../ listed, then put ./ and ../ in
+    let line1= line(".")
+    keepjumps 1
+    silent keepjumps call search('^\.\.\/\%(\s\|$\)','W')
+    let line2= line(".")
+    if line2 == 0
+     exe 'keepjumps '.w:netrw_bannercnt."put='./'"
+     if b:netrw_curdir != '/'
+      exe 'keepjumps '.w:netrw_bannercnt."put='../'"
+     endif
+    endif
+   exe "keepjumps ".line1
+   keepjumps norm! 0
+   endif
+
+   if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
+"    call Decho("M$ ftp site listing cleanup")
+    exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/'
+   elseif exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$")
+"    call Decho("normal ftp site listing cleanup: bannercnt=".w:netrw_bannercnt." line($)=".line("$"))
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
+    exe 'silent keepjumps '.w:netrw_bannercnt
    endif
-   redraw!
   endif
 
-"  call Dret("NetMakeDir")
+"  if exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") " Decho
+"   exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))'
+"  endif " Decho
+"  call Dret("s:RemoteListing")
 endfun
 
 " ---------------------------------------------------------------------
-"  NetBookmarkDir: {{{2
-"    0: (user: <b>)   bookmark current directory
-"    1: (user: <B>)   change to the bookmarked directory
-"    2: (user: <q>)   list bookmarks
-"    3: (LocalBrowse) record current directory history
-"    4: (user: <u>)   go up   (previous) bookmark
-"    5: (user: <U>)   go down (next)     bookmark
-fun! s:NetBookmarkDir(chg,curdir)
-"  call Dfunc("NetBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count)
-  if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt
-   " looks like a "b" was pressed while in the banner region
-   if line("$") > w:netrw_bannercnt
-    exe 'silent keepjumps '.w:netrw_bannercnt
-   endif
-   if &ch > 1
-    " "clear" the message
-    echo ""
+"  NetGetWord: it gets the directory named under the cursor {{{2
+fun! s:NetGetWord()
+"  call Dfunc("NetGetWord() line#".line(".")." liststyle=".g:netrw_liststyle." virtcol=".virtcol("."))
+  call s:UseBufWinVars()
+
+  " insure that w:netrw_liststyle is set up
+  if !exists("w:netrw_liststyle")
+   if exists("g:netrw_liststyle")
+    let w:netrw_liststyle= g:netrw_liststyle
+   else
+    let w:netrw_liststyle= s:THINLIST
    endif
-"  call Dret("NetBookmarkDir - ignoring")
-   return
+"   call Decho("w:netrw_liststyle=".w:netrw_liststyle)
   endif
 
-  if a:chg == 0
-   " bookmark the current directory
-   let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
-   if !exists("g:NETRW_BOOKMARKMAX")
-    let g:NETRW_BOOKMARKMAX= v:count
-   elseif v:count > g:NETRW_BOOKMARKMAX
-    let g:NETRW_BOOKMARKMAX= v:count
-   endif
-   echo "bookmarked the current directory"
+  if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt
+   " Active Banner support
+"   call Decho("active banner handling")
+   norm! 0
+   let dirname= "./"
+   let curline= getline(".")
 
-  elseif a:chg == 1
-   " change to the bookmarked directory
-   if exists("g:NETRW_BOOKMARKDIR_{v:count}")
-    exe "e ".g:NETRW_BOOKMARKDIR_{v:count}
-   else
-    echomsg "Sorry, bookmark#".v:count." doesn't exist!"
-   endif
+   if curline =~ '"\s*Sorted by\s'
+    norm s
+    let s:netrw_skipbrowse= 1
+    echo 'Pressing "s" also works'
 
-  elseif a:chg == 2
-   " list user's bookmarks
-   if exists("g:NETRW_BOOKMARKMAX")
-"    call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
-    let cnt= 0
-    while cnt <= g:NETRW_BOOKMARKMAX
-     if exists("g:NETRW_BOOKMARKDIR_{cnt}")
-"      call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
-      echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
-     endif
-     let cnt= cnt + 1
-    endwhile
-   endif
+   elseif curline =~ '"\s*Sort sequence:'
+    let s:netrw_skipbrowse= 1
+    echo 'Press "S" to edit sorting sequence'
 
-   " list directory history
-   let cnt     = g:NETRW_DIRHIST_CNT
-   let first   = 1
-   let histcnt = 0
-   while ( first || cnt != g:NETRW_DIRHIST_CNT )
-"    call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT)
-    let histcnt= histcnt + 1
-    if exists("g:NETRW_DIRHIST_{cnt}")
-"     call Decho("Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt})
-     echo "Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}
-    endif
-    let first = 0
-    let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
-    if cnt < 0
-     let cnt= cnt + g:netrw_dirhistmax
-    endif
-   endwhile
+   elseif curline =~ '"\s*Quick Help:'
+    norm ?
+    let s:netrw_skipbrowse= 1
+    echo 'Pressing "?" also works'
 
-  elseif a:chg == 3
-   " saves most recently visited directories (when they differ)
-   if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir
-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
-    let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e')
-"    call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
-   endif
+   elseif curline =~ '"\s*\%(Hiding\|Showing\):'
+    norm a
+    let s:netrw_skipbrowse= 1
+    echo 'Pressing "a" also works'
 
-  elseif a:chg == 4
-   " u: change to the previous directory stored on the history list
-   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
-   if g:NETRW_DIRHIST_CNT < 0
-    let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
+   elseif line("$") > w:netrw_bannercnt
+    exe 'silent keepjumps '.w:netrw_bannercnt
    endif
-   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
-"    call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
-    exe "e ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}
-   else
-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
-    echo "Sorry, no predecessor directory exists yet"
+
+  elseif w:netrw_liststyle == s:THINLIST
+"   call Decho("thin column handling")
+   norm! 0
+   let dirname= getline(".")
+
+  elseif w:netrw_liststyle == s:LONGLIST
+"   call Decho("long column handling")
+   norm! 0
+   let dirname= substitute(getline("."),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e')
+
+  elseif w:netrw_liststyle == s:TREELIST
+"   call Decho("treelist handling")
+   let dirname= substitute(getline("."),'^\(| \)*','','e')
+
+  else
+"   call Decho("obtain word from wide listing")
+   let dirname= getline(".")
+
+   if !exists("b:netrw_cpf")
+    let b:netrw_cpf= 0
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
+"    call Decho("computed cpf")
    endif
 
-  elseif a:chg == 5
-   " U: change to the subsequent directory stored on the history list
-   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
-   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
-"    call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
-    exe "e ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}
-   else
-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
-    if g:NETRW_DIRHIST_CNT < 0
-     let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
-    endif
-    echo "Sorry, no successor directory exists yet"
-   endif
+"   call Decho("buf#".bufnr("%")."<".bufname("%").">")
+   let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf
+"   call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart."  bannercnt=".w:netrw_bannercnt)
+"   call Decho("1: dirname<".dirname.">")
+   if filestart > 0|let dirname= substitute(dirname,'^.\{'.filestart.'}','','')|endif
+"   call Decho("2: dirname<".dirname.">")
+   let dirname   = substitute(dirname,'^\(.\{'.b:netrw_cpf.'}\).*$','\1','e')
+"   call Decho("3: dirname<".dirname.">")
+   let dirname   = substitute(dirname,'\s\+$','','e')
+"   call Decho("4: dirname<".dirname.">")
   endif
-"  call Dret("NetBookmarkDir")
+
+"  call Dret("NetGetWord <".dirname.">")
+  return dirname
 endfun
 
 " ---------------------------------------------------------------------
-" NetObtain: obtain file under cursor (for remote browsing support) {{{2
-fun! netrw#NetObtain(...)
-"  call Dfunc("NetObtain() a:0=".a:0)
+" NetBrowseRm: remove/delete a remote file or directory {{{2
+fun! s:NetBrowseRm(usrhost,path) range
+"  call Dfunc("NetBrowseRm(usrhost<".a:usrhost."> path<".a:path.">) virtcol=".virtcol("."))
+"  call Decho("firstline=".a:firstline." lastline=".a:lastline)
 
-  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
+  " preparation for removing multiple files/directories
+  let ctr= a:firstline
+  let all= 0
 
-  " NetrwStatusLine support - for obtaining support
-  call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
+  " remove multiple files and directories
+  while ctr <= a:lastline
+   exe ctr
 
-  if exists("w:netrw_method") && w:netrw_method =~ '[235]'
-"   call Decho("method=".w:netrw_method)
-   if executable("ftp")
-"    call Decho("ftp is executable, method=".w:netrw_method)
-    let curdir = expand("%")
-    let path   = substitute(curdir,'ftp://[^/]\+/','','e')
-    let curline= line(".")
-    let endline= line("$")+1
-    set ma
-    keepjumps $
-"    call Decho("getcwd<".getcwd().">")
-"    call Decho("curdir<".curdir.">")
-"    call Decho("path<".path.">")
-"    call Decho("curline=".curline)
-"    call Decho("endline=".endline)
+   let rmfile= s:NetGetWord()
+"   call Decho("rmfile<".rmfile.">")
 
-    ".........................................
-    if w:netrw_method == 2
-     " ftp + <.netrc>: Method #2
-     setlocal ff=unix
-     if path != ""
-      put ='cd '.path
-"      call Decho("ftp:  cd ".path)
+   if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
+    " attempt to remove file
+"    call Decho("attempt to remove file")
+    if !all
+     echohl Statement
+     call inputsave()
+     let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
+     call inputrestore()
+     echohl NONE
+     if ok == ""
+      let ok="no"
      endif
-     put ='get '.fname
-"     call Decho("ftp:  get ".fname)
-     put ='quit'
-"     call Decho("ftp:  quit")
-     if exists("g:netrw_port") && g:netrw_port != ""
-"      call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
-      exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
-     else
-"      call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
-      exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine
+     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
+     if ok =~ 'a\%[ll]'
+      let all= 1
      endif
+    endif
 
-   ".........................................
-  elseif w:netrw_method == 3
-   " ftp + machine,id,passwd,filename: Method #3
-    setlocal ff=unix
-    if exists("g:netrw_port") && g:netrw_port != ""
-     put ='open '.g:netrw_machine.' '.g:netrw_port
-"     call Decho('ftp:  open '.g:netrw_machine.' '.g:netrw_port)
-    else
-     put ='open '.g:netrw_machine
-"     call Decho('ftp:  open '.g:netrw_machine)
+    if all || ok =~ 'y\%[es]' || ok == ""
+     if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
+      silent! keepjumps .,$d
+      call s:NetBrowseFtpCmd(a:path,"delete ".rmfile)
+     else
+      let netrw_rm_cmd= s:MakeSshCmd(g:netrw_rm_cmd)
+"      call Decho("attempt to remove file: system(".netrw_rm_cmd.")")
+      let ret= s:System("system",netrw_rm_cmd)
+"      call Decho("returned=".ret." errcode=".v:shell_error)
+     endif
+    elseif ok =~ 'q\%[uit]'
+     break
     endif
 
-    if exists("g:netrw_ftp") && g:netrw_ftp == 1
-     put =g:netrw_uid
-     put ='\"'.g:netrw_passwd.'\"'
-"     call Decho('ftp:  g:netrw_uid')
-"     call Decho('ftp:  g:netrw_passwd')
-    else
-     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
-"     call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
+   else
+    " attempt to remove directory
+"    call Decho("attempt to remove directory")
+    if !all
+     call inputsave()
+     let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
+     call inputrestore()
+     if ok == ""
+      let ok="no"
+     endif
+     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
+     if ok =~ 'a\%[ll]'
+      let all= 1
+     endif
     endif
 
-   if a:path != ""
-    put ='cd '.a:path
-"    call Decho('cd '.a:path)
-   endif
-   exe "put ='".a:cmd."'"
-"   call Decho("ftp:  ".a:cmd)
+    if all || ok =~ 'y\%[es]' || ok == ""
+     if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
+      call s:NetBrowseFtpCmd(a:path,"rmdir ".rmfile)
+     else
+      let rmfile          = substitute(a:path.rmfile,'/$','','')
+      let netrw_rmdir_cmd = s:MakeSshCmd(g:netrw_rmdir_cmd).' '.rmfile
+"      call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")")
+      let ret= s:System("system",netrw_rmdir_cmd)
+"      call Decho("returned=".ret." errcode=".v:shell_error)
 
-    " 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"
+      if v:shell_error != 0
+"       call Decho("v:shell_error not 0")
+       let netrw_rmf_cmd= s:MakeSshCmd(g:netrw_rmf_cmd).' '.substitute(rmfile,'[\/]$','','e')
+"       call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")")
+       let ret= s:System("system",netrw_rmf_cmd)
+"       call Decho("returned=".ret." errcode=".v:shell_error)
 
-    ".........................................
-    else
-      echo "***warning*** unable to comply with your request<" . choice . ">"
-    endif
-    " restore
-    exe "silent! ".endline.",$d"
-    exe "keepjumps ".curline
-    setlocal noma nomod
-   else
-"    call Decho("ftp not executable")
-    if !exists("g:netrw_quiet")
-     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
+       if v:shell_error != 0 && !exists("g:netrw_quiet")
+               call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22)
+       endif
+      endif
+     endif
 
-  ".........................................
-  else
-   " scp: Method#4
-"   call Decho("using scp")
-   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
-    let useport= ""
-   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.":".path.escape(fname,' ?&')." .")
-    exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ."
-   else
-"    call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." .")
-    exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ."
+    elseif ok =~ 'q\%[uit]'
+     break
+    endif
    endif
-  endif
 
-  " restore status line
-  let &stl        = s:netrw_users_stl
-  let &laststatus = s:netrw_users_ls
-  redraw!
+   let ctr= ctr + 1
+  endwhile
 
-  " restore NetMethod
-  if exists("keep_netrw_method")
-   call s:NetMethod(keep_netrw_choice)
-   let w:netrw_method  = keep_netrw_wmethod
-  endif
+  " refresh the (remote) directory listing
+"  call Decho("refresh remote directory listing")
+  call netrw#NetSavePosn()
+  call s:NetRefresh(0,s:NetBrowseChgDir(0,'./'))
 
-"  call Dret("NetObtain")
+"  call Dret("NetBrowseRm")
 endfun
 
 " ---------------------------------------------------------------------
-" NetPrevWinOpen: open file/directory in previous window.  {{{2
-"   If there's only one window, then the window will first be split.
-fun! s:NetPrevWinOpen(islocal)
-"  call Dfunc("NetPrevWinOpen(islocal=".a:islocal.")")
+" NetBrowseRename: rename a remote file or directory {{{2
+fun! s:NetBrowseRename(usrhost,path) range
+"  call Dfunc("NetBrowseRename(usrhost<".a:usrhost."> path<".a:path.">)")
 
-  " get last window number and the word currently under the cursor
-  let lastwinnr = winnr("$")
-  let curword   = s:NetGetWord()
-  let curdir    = b:netrw_curdir
-"  call Decho("lastwinnr=".lastwinnr." curword<".curword.">")
+  " preparation for removing multiple files/directories
+  let ctr        = a:firstline
+  let rename_cmd = s:MakeSshCmd(g:netrw_rename_cmd)
 
-  let didsplit  = 0
-  if lastwinnr == 1
-   " if only one window, open a new one first
-"   call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")")
-   exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"
-   let didsplit  = 1
+  " attempt to rename files/directories
+  while ctr <= a:lastline
+   exe "keepjumps ".ctr
 
-  else
-   wincmd p
-   " if the previous window's buffer has been changed (is modified),
-   " and it doesn't appear in any other extant window, then ask the
-   " user if s/he wants to abandon modifications therein.
-   let bnr    = winbufnr(0)
-   let bnrcnt = 0
-   if &mod
-    windo if winbufnr(0) == bnr | let bnrcnt=bnrcnt+1 | endif
-"    call Decho("bnr=".bnr." bnrcnt=".bnrcnt)
-    if bnrcnt == 1
-     let bufname= bufname(winbufnr(winnr()))
-     let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel")
+   norm! 0
+   let oldname= s:NetGetWord()
+"   call Decho("oldname<".oldname.">")
 
-     if choice == 1
-      " Yes -- write file & then browse
-      let v:errmsg= ""
-      silent w
-      if v:errmsg != ""
-       echohl Error | echo "***netrw*** "unable to write <".bufname.">!" | echohl None
-       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-       if didsplit
-               q
-       else
-               wincmd p
-       endif
-"       call Dret("NetPrevWinOpen : unable to write <".bufname.">")
-       return
-      endif
-
-     elseif choice == 2
-      " No -- don't worry about changed file, just browse anyway
-      set nomod
-      echohl WarningMsg | echo "***netrw*** ".bufname." changes abandoned" | echohl None
+   call inputsave()
+   let newname= input("Moving ".oldname." to : ",oldname)
+   call inputrestore()
 
-     else
-      " Cancel -- don't do this
-      if didsplit
-       q
-      else
-       wincmd p
-      endif
-"      call Dret("NetPrevWinOpen : cancelled")
-      return
-     endif
-    endif
+   if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
+    call s:NetBrowseFtpCmd(a:path,"rename ".oldname." ".newname)
+   else
+    let oldname= a:path.oldname
+    let newname= a:path.newname
+"    call Decho("system(rename_cmd".' "'.escape(oldname," ").'" "'.escape(newname,s:netrw_cd_escape).'"')
+    let ret= s:System("system",rename_cmd.' "'.escape(oldname,s:netrw_cd_escape).'" "'.escape(newname,s:netrw_cd_escape).'"')
    endif
-  endif
 
+   let ctr= ctr + 1
+  endwhile
+
+  " refresh the directory
+  let curline= line(".")
+  call s:NetBrowse(0,s:NetBrowseChgDir(0,'./'))
+  exe "keepjumps ".curline
+"  call Dret("NetBrowseRename")
+endfun
+
+" ---------------------------------------------------------------------
+" NetRefresh: {{{2
+fun! s:NetRefresh(islocal,dirname)
+"  call Dfunc("NetRefresh(islocal<".a:islocal.">,dirname=".a:dirname.") hide=".g:netrw_hide." sortdir=".g:netrw_sort_direction)
+  " at the current time (Mar 19, 2007) all calls to NetRefresh() call NetBrowseChgDir() first.
+  " NetBrowseChgDir() may clear the display; hence a NetSavePosn() may not work if its placed here.
+  " Also, NetBrowseChgDir() now does a NetSavePosn() itself.
+  setlocal ma noro
+"  call Decho("clear buffer<".expand("%")."> with :%d")
+  %d
   if a:islocal
-   call s:LocalBrowse(s:LocalBrowseChgDir(curdir,curword))
+   call netrw#LocalBrowseCheck(a:dirname)
   else
-   call s:NetBrowse(s:NetBrowseChgDir(expand("%"),curword))
+   call s:NetBrowse(a:islocal,a:dirname)
   endif
-"  call Dret("NetPrevWinOpen")
+  call netrw#NetRestorePosn()
+  redraw!
+"  call Dret("NetRefresh")
 endfun
 
 " ---------------------------------------------------------------------
-" NetMenu: generates the menu for gvim and netrw {{{2
-fun! s:NetMenu(domenu)
-
-  if !exists("g:NetrwMenuPriority")
-   let g:NetrwMenuPriority= 80
-  endif
+" NetSplit: mode {{{2
+"           =0 : net   and o
+"           =1 : net   and t
+"           =2 : net   and v
+"           =3 : local and o
+"           =4 : local and t
+"           =5 : local and v
+fun! s:NetSplit(mode)
+"  call Dfunc("NetSplit(mode=".a:mode.") alto=".g:netrw_alto." altv=".g:netrw_altv)
 
-  if has("menu") && has("gui_running") && &go =~ 'm'
-"   call Dfunc("NetMenu(domenu=".a:domenu.")")
-   if !exists("s:netrw_menu_enabled") && a:domenu
-"    call Decho("initialize menu")
-    let s:netrw_menu_enabled= 1
-    if !exists("g:NetrwTopLvlMenu")
-     let g:NetrwTopLvlMenu= "Netrw."
-    endif
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Help<tab><F1>        <F1>'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory<tab>b   Nb'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-      -'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory<tab>B    NB'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory<tab>u  u'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory<tab>U      U'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List<tab>'."<ctrl-h>     \<c-h>"
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory<tab><cr>        '."\<cr>"
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window<tab>o     o'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window<tab>v   v'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History<tab>q  q'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)<tab>i       i'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d     d'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Normal-Hide-Show<tab>a       a'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O   O'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Preview\ File/Directory<tab>p        p'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser<tab>P      P'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Refresh\ Listing<tab>'."<ctrl-l>     \<c-l>"
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order<tab>'."r     r"
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style<tab>s s'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit<tab>S        S'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c        c'
-    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Settings/Options<tab>:NetrwSettings  '.":NetrwSettings\<cr>"
-   elseif !a:domenu
-    let s:netrwcnt = 0
-    let curwin     = winnr()
-    windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif
-    exe curwin."wincmd w"
-    
-    if s:netrwcnt <= 1
-"     call Decho("clear menus")
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Help'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Delete\ File/Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory\ (vertical\ split)'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Make\ Subdirectory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Normal-Hide-Show'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Obtain\ File'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Preview\ File/Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Refresh\ Listing'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Rename\ File/Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory'
-     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Settings/Options'
-     unlet s:netrw_menu_enabled
-    endif
-   endif
-"   call Dret("NetMenu")
-  endif
+  call s:SaveWinVars()
 
-endfun
+  if a:mode == 0
+   " remote and o
+   exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"
+   let s:didsplit= 1
+   call s:RestoreWinVars()
+   call s:NetBrowse(0,s:NetBrowseChgDir(0,s:NetGetWord()))
+   unlet s:didsplit
+
+  elseif a:mode == 1
+   " remote and t
+   let cursorword  = s:NetGetWord()
+   tabnew
+   let s:didsplit= 1
+   call s:RestoreWinVars()
+   call s:NetBrowse(0,s:NetBrowseChgDir(0,cursorword))
+   unlet s:didsplit
+
+  elseif a:mode == 2
+   " remote and v
+   exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"
+   let s:didsplit= 1
+   call s:RestoreWinVars()
+   call s:NetBrowse(0,s:NetBrowseChgDir(0,s:NetGetWord()))
+   unlet s:didsplit
 
-" ==========================================
-"  Local Directory Browsing Support:    {{{1
-" ==========================================
+  elseif a:mode == 3
+   " local and o
+   exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"
+   let s:didsplit= 1
+   call s:RestoreWinVars()
+   call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,s:NetGetWord()))
+   unlet s:didsplit
+
+  elseif a:mode == 4
+   " local and t
+   let netrw_curdir= b:netrw_curdir
+   let cursorword  = s:NetGetWord()
+   tabnew
+   let b:netrw_curdir= netrw_curdir
+   let s:didsplit= 1
+   call s:RestoreWinVars()
+   call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,cursorword))
+   unlet s:didsplit
+
+  elseif a:mode == 5
+   " local and v
+   exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"
+   let s:didsplit= 1
+   call s:RestoreWinVars()
+   call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,s:NetGetWord()))
+   unlet s:didsplit
 
-" ---------------------------------------------------------------------
-" LocalBrowse: {{{2
-fun! s:LocalBrowse(dirname)
-  " unfortunate interaction -- debugging calls can't be used here;
-  " the BufEnter event causes triggering when attempts to write to
-  " the DBG buffer are made.
-  if isdirectory(a:dirname)
-   silent! call netrw#DirBrowse(a:dirname)
+  else
+   call netrw#ErrorMsg(s:ERROR,"(NetSplit) unsupported mode=".a:mode,45)
   endif
-  " not a directory, ignore it
+
+"  call Dret("NetSplit")
 endfun
 
 " ---------------------------------------------------------------------
-" DirBrowse: supports local file/directory browsing {{{2
-fun! netrw#DirBrowse(dirname)
-  if !exists("w:netrw_longlist")|let w:netrw_longlist= g:netrw_longlist|endif
-"  call Dfunc("DirBrowse(dirname<".a:dirname.">) buf#".bufnr("%")." winnr=".winnr()." sortby=".g:netrw_sort_by." hide=".g:netrw_hide)
-"  call Dredir("ls!")
+" NetBrowseX:  allows users to write custom functions to operate on {{{2
+"              files given their extension.  Passes 0=local, 1=remote
+fun! netrw#NetBrowseX(fname,remote)
+"  call Dfunc("NetBrowseX(fname<".a:fname."> remote=".a:remote.")")
 
-  if exists("s:netrw_skipbrowse")
-   unlet s:netrw_skipbrowse
-"   call Dret("DirBrowse")
-   return
+  " set up the filename
+  " (lower case the extension, make a local copy of a remote file)
+  let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e')
+  if has("win32") || has("win95") || has("win64") || has("win16")
+   let exten= substitute(exten,'^.*$','\L&\E','')
   endif
-  if &fo =~ '[ta]'
-   set fo-=t
-   set fo-=a
-   echohl Warning
-   echo '***warning*** directory browsing and formatoptions "ta" are incompatible'
-   echohl None
+  let fname= escape(a:fname,"%#")
+"  call Decho("fname<".fname."> after escape()")
+
+  " 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 "kdeinit" running, though...  (tnx Mikolaj Machowski)
+  if !exists("s:haskdeinit")
+   if has("unix")
+    let s:haskdeinit= s:System("system",'ps -e') =~ 'kdeinit'
+    if v:shell_error
+     let s:haskdeinit = 0
+    endif
+   else
+    let s:haskdeinit= 0
+   endif
+"   call Decho("setting s:haskdeinit=".s:haskdeinit)
   endif
 
-  call s:NetOptionSave()
-  if exists("w:acdkeep") && w:acdkeep
-   exe 'cd '.escape(a:dirname,s:netrw_cd_escape)
-"   call Decho("cd ".escape(a:dirname,s:netrw_cd_escape))
-"   call Decho("getcwd<".getcwd().">")
+  if a:remote == 1
+   " create a local copy
+   let fname= fnamemodify(tempname(),":t:r").".".exten
+"   call Decho("a:remote=".a:remote.": create a local copy of <".a:fname."> as <".fname.">")
+   exe "silent keepjumps bot 1new ".a:fname
+   setlocal bh=delete
+"   call Decho("exe w! ".fname)
+   exe "w! ".fname
+   q
   endif
+"  call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
 
-  if v:version < 603
-   if !exists("g:netrw_quiet")
-    echohl Error | echo "***netrw*** vim version<".v:version."> too old for browsing with netrw" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-   endif
-   call s:NetOptionRestore()
-"   call Dret("DirBrowse : vim version<".v:version."> too old")
-   return
+  " set up redirection
+  if &srr =~ "%s"
+   let redir= substitute(&srr,"%s","/dev/null","")
+  else
+   let redir= &srr . "/dev/null"
   endif
+"  call Decho("redir{".redir."} srr{".&srr."}")
 
-  " use buffer-oriented WinVars if buffer ones exist but window ones don't
-  call s:UseBufWinVars()
+  " execute the file handler
+  if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-'
+"  call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">")
+   let ret= netrwFileHandlers#Invoke(exten,fname)
 
-  " set up menus
-  let b:netrw_browser_active= 1
-  call s:NetMenu(1)
+  elseif exists("g:netrw_browsex_viewer") && executable(g:netrw_browsex_viewer)
+"   call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">")
+"   call Decho("exe silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."' ".redir)
+   exe "silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."'".redir
+   let ret= v:shell_error
 
-  " find buffer number of buffer named precisely the same as a:dirname
-  let bufnum= bufnr(escape(a:dirname,'\'))
-"  call Decho("findbuf: bufnum=".bufnum)
-  if bufnum > 0 && bufname(bufnum) != a:dirname
-   let ibuf= 1
-   let buflast= bufnr("$")
-   while bufname(ibuf) !~ '^'.a:dirname.'\=$' && ibuf <= buflast
-"    call Decho("findbuf: ibuf=".ibuf. " bufname<".bufname(ibuf)."> dirname<".a:dirname.">")
-    let ibuf= ibuf + 1
-   endwhile
-   if ibuf > buflast
-    let bufnum= -1
-   else
-    let bufnum= ibuf
-   endif
-"   call Decho("findbuf: bufnum=".bufnum." (final)")
-  endif
+  elseif has("win32") || has("win64")
+"   call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"')
+   exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"'
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   let ret= v:shell_error
 
-  " get cleared buffer
-  mark '
-  if bufnum < 0 || !bufexists(bufnum)
-   keepjumps keepalt enew!
-"   call Decho("enew buffer")
-  else
-   exe "keepalt b ".bufnum
-   if exists("s:last_sort_by") && g:netrw_sort_by == s:last_sort_by
-    if getline(2) =~ '^" Netrw Directory Listing '
-     if !g:netrw_keepdir
-      exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape)
-"      call Decho("netrw_keepdir=".g:netrw_keepdir.": cd ".escape(b:netrw_curdir,s:netrw_cd_escape))
-     endif
-     call s:NetOptionRestore()
-"     call Dret("DirBrowse : reusing buffer#".bufnum."<".a:dirname.">")
-     return
-    endif
-   endif
-  endif
-  let s:last_sort_by= g:netrw_sort_by
+  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
 
-  " set up ShellCmdPost handling.  Append current buffer to browselist
-  call s:LocalFastBrowser()
+  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
 
-  " get the new directory name
-  if has("win32") || has("win95") || has("win64") || has("win16")
-   let b:netrw_curdir= substitute(a:dirname,'\\','/','ge')
   else
-   let b:netrw_curdir= a:dirname
-  endif
-  if b:netrw_curdir =~ '[/\\]$'
-   let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
-  endif
-  if b:netrw_curdir == ''
-   " under unix, when the root directory is encountered, the result
-   " from the preceding substitute is an empty string.
-   let b:netrw_curdir= '/'
+   " netrwFileHandlers#Invoke() always returns 0
+   let ret= netrwFileHandlers#Invoke(exten,fname)
   endif
-"  call Decho("b:netrw_curdir<".b:netrw_curdir.">")
 
-  " make netrw's idea of the current directory vim's if the user wishes
-  if !g:netrw_keepdir
-"   call Decho("netrw_keepdir=".g:netrw_keepdir.": cd ".escape(b:netrw_curdir,s:netrw_cd_escape))
-   try
-    exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape)
-   catch /^Vim\%((\a\+)\)\=:E472/
-    echohl Error | echo "***netrw*** unable to change directory to <".b:netrw_curdir."> (permissions?)" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-    if exists("w:netrw_prvdir")
-     let b:netrw_curdir= w:netrw_prvdir
-    else
-     call s:NetOptionRestore()
-"     call Dret("DirBrowse : reusing buffer#".bufnum."<".a:dirname.">")
-     return
-    endif
-   endtry
+  " if unsuccessful, attempt netrwFileHandlers#Invoke()
+  if ret
+   let ret= netrwFileHandlers#Invoke(exten,fname)
   endif
 
-  " change the name of the buffer to reflect the b:netrw_curdir
-  " Hmm.  When another vim is open to the same directory, I get
-  " a "Press ENTER" ... ok, setting "noswf" avoids it.
-"  call Decho('exe silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape))
-  exe 'silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape)
+  redraw!
 
-  " make this buffer not-a-file, modifiable, not line-numbered, etc
-  setlocal bt=nofile nobl ma nonu noswf nowrap
-  if g:netrw_fastbrowse >= 2
-   setlocal bh=hide
-  else
-   setlocal bh=delete
+  " cleanup: remove temporary file,
+  "          delete current buffer if success with handler,
+  "          return to prior buffer (directory listing)
+  if a:remote == 1 && fname != a:fname
+"   call Decho("deleting temporary file<".fname.">")
+   call s:System("delete",fname)
   endif
-  keepalt silent! %d
 
-  " ---------------------------
-  "  Perform Directory Listing:
-   if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
-    echo "(netrw) Processing your browsing request..."
+  if a:remote == 1
+   setlocal bh=delete bt=nofile
+   if g:netrw_use_noswf
+    setlocal noswf
    endif
+   exe "norm! \<c-o>"
+   redraw!
+  endif
 
-  " save current directory on directory history list
-  call s:NetBookmarkDir(3,b:netrw_curdir)
+"  call Dret("NetBrowseX")
+endfun
 
-  " set up all the maps
-"  call Decho("Setting up local browser maps")
-  nnoremap <buffer> <silent> <cr>      :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
-  nnoremap <buffer> <silent> <c-l>     :call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr>
-  nnoremap <buffer> <silent> -         :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr>
-  nnoremap <buffer> <silent> a         :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr>
-  if w:netrw_longlist != 2
-   nnoremap <buffer> <silent> b                :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> B                :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr>
-  endif
-  nnoremap <buffer> <silent> Nb                :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
-  nnoremap <buffer> <silent> NB                :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr>
-  nnoremap <buffer> <silent> c         :exe "cd ".b:netrw_curdir<cr>
-  nnoremap <buffer> <silent> d         :call <SID>NetMakeDir("")<cr>
-  nnoremap <buffer> <silent> <c-h>     :call <SID>NetHideEdit(1)<cr>
-  nnoremap <buffer> <silent> i         :call <SID>NetLongList(1)<cr>
-  nnoremap <buffer> <silent> o         :call <SID>NetSplit(2)<cr>
-  nnoremap <buffer> <silent> O         :call <SID>LocalObtain()<cr>
-  nnoremap <buffer> <silent> p         :call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr>
-  nnoremap <buffer> <silent> P         :call <SID>NetPrevWinOpen(1)<cr>
-  nnoremap <buffer> <silent> q         :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr>
-  nnoremap <buffer> <silent> r         :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr>
-  nnoremap <buffer> <silent> s         :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<bar>call <SID>NetRestoreWordPosn()<cr>
-  nnoremap <buffer> <silent> S         :call <SID>NetSortSequence(1)<cr>
-  nnoremap <buffer> <silent> u         :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr>
-  nnoremap <buffer> <silent> U         :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
-  nnoremap <buffer> <silent> v         :call <SID>NetSplit(3)<cr>
-  nnoremap <buffer> <silent> x         :call netrw#NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr>
-  nnoremap <buffer> <silent> <2-leftmouse>     :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
-  if s:didstarstar || !mapcheck("<s-down>","n")
-   nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
-  endif
-  if s:didstarstar || !mapcheck("<s-up>","n")
-   nnoremap <buffer> <silent> <s-up>   :Pexplore<cr>
-  endif
-  exe 'nnoremap <buffer> <silent> <del>        :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
-  exe 'vnoremap <buffer> <silent> <del>        :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
-  exe 'nnoremap <buffer> <silent> D    :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
-  exe 'vnoremap <buffer> <silent> D    :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
-  exe 'nnoremap <buffer> <silent> R    :call <SID>LocalBrowseRename("'.b:netrw_curdir.'")<cr>'
-  exe 'vnoremap <buffer> <silent> R    :call <SID>LocalBrowseRename("'.b:netrw_curdir.'")<cr>'
-  exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetMakeDir("")<cr>'
-  nnoremap <buffer> <F1>               :he netrw-dir<cr>
-
-  " Set up the banner
-"  call Decho("set up banner")
-  keepjumps put ='\" ============================================================================'
-  keepjumps 1d
-  keepjumps put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
-  keepjumps put ='\"   '.b:netrw_curdir
-  let w:netrw_bannercnt= 3
+" ---------------------------------------------------------------------
+" NetBrowseFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2
+"  This function assumes that a long listing will be received.  Size, time,
+"  and reverse sorts will be requested of the server but not otherwise
+"  enforced here.
+fun! s:NetBrowseFtpCmd(path,listcmd)
+"  call Dfunc("NetBrowseFtpCmd(path<".a:path."> listcmd<".a:listcmd.">) netrw_method=".w:netrw_method)
+"  call Decho("line($)=".line("$")." bannercnt=".w:netrw_bannercnt)
 
-  let sortby= g:netrw_sort_by
-  if g:netrw_sort_direction =~ "^r"
-   let sortby= sortby." reversed"
-  endif
+  " because WinXX ftp uses unix style input
+  let ffkeep= &ff
+  setlocal ma ff=unix noro
 
-  " Sorted by...
-  if g:netrw_sort_by =~ "^n"
-"   call Decho("directories will be sorted by name")
-   " sorted by name
-   keepjumps put ='\"   Sorted by      '.sortby
-   keepjumps put ='\"   Sort sequence: '.g:netrw_sort_sequence
-   let w:netrw_bannercnt= w:netrw_bannercnt + 2
-  else
-"   call Decho("directories will be sorted by size or date")
-   " sorted by size or date
-   keepjumps put ='\"   Sorted by '.sortby
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  endif
+  " clear off any older non-banner lines
+  " note that w:netrw_bannercnt indexes the line after the banner
+"  call Decho('exe silent! keepjumps '.w:netrw_bannercnt.",$d  (clear off old non-banner lines)")
+  exe "silent! keepjumps ".w:netrw_bannercnt.",$d"
 
-  " Hiding...  -or-  Showing...
-  if g:netrw_list_hide != "" && g:netrw_hide
-   if g:netrw_hide == 1
-    keepjumps put ='\"   Hiding:        '.g:netrw_list_hide
+  ".........................................
+  if w:netrw_method == 2 || w:netrw_method == 5 
+   " ftp + <.netrc>:  Method #2
+   if a:path != ""
+    put ='cd \"'.a:path.'\"'
+   endif
+   if exists("g:netrw_ftpextracmd")
+    exe "put ='".g:netrw_ftpextracmd."'"
+"    call Decho("filter input: ".getline("."))
+   endif
+   exe "put ='".a:listcmd."'"
+"   exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))'
+   if exists("g:netrw_port") && g:netrw_port != ""
+"    call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
+    exe g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
    else
-    keepjumps put ='\"   Showing:       '.g:netrw_list_hide
+"    call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
+    exe g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine
    endif
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  endif
-  keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
-  keepjumps put ='\" ============================================================================'
-  let w:netrw_bannercnt= w:netrw_bannercnt + 2
 
-  " bannercnt should index the line just after the banner
-  let w:netrw_bannercnt= w:netrw_bannercnt + 1
-"  call Decho("bannercnt=".w:netrw_bannercnt)
+   ".........................................
+  elseif w:netrw_method == 3
+   " ftp + machine,id,passwd,filename:  Method #3
+    setlocal ff=unix
+    if exists("g:netrw_port") && g:netrw_port != ""
+     put ='open '.g:netrw_machine.' '.g:netrw_port
+    else
+     put ='open '.g:netrw_machine
+    endif
 
-  " generate the requested directory listing
-  call s:LocalBrowseList()
+    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
 
-  " set up syntax highlighting
-  if has("syntax")
-   setlocal ft=netrw
-   if !exists("g:syntax_on") || !g:syntax_on
-    setlocal ft=
+   if a:path != ""
+    put ='cd \"'.a:path.'\"'
    endif
-  endif
-
-  " manipulate the directory listing (hide, sort)
-  if line("$") >= w:netrw_bannercnt
-   if g:netrw_hide && g:netrw_list_hide != ""
-    call s:NetrwListHide()
+   if exists("g:netrw_ftpextracmd")
+    exe "put ='".g:netrw_ftpextracmd."'"
+"    call Decho("filter input: ".getline("."))
    endif
-   if line("$") >= w:netrw_bannercnt
-
-    if g:netrw_sort_by =~ "^n"
-     call s:SetSort()
+   exe "put ='".a:listcmd."'"
 
-     if w:netrw_bannercnt < line("$")
-      if g:netrw_sort_direction =~ 'n'
-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
-      else
-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
-      endif
-     endif
-     " remove priority pattern prefix
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+    " 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
+"    exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))'
+"    call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n")
+    exe g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n"
 
-    else
-     if w:netrw_bannercnt < line("$")
-      if g:netrw_sort_direction =~ 'n'
-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
-      else
-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
-      endif
-     endif
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
-    endif
+   ".........................................
+  else
+   call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",23)
+  endif
 
+  " cleanup for Windows
+  if has("win32") || has("win95") || has("win64") || has("win16")
+   silent! keepjumps %s/\r$//e
+  endif
+  if a:listcmd == "dir"
+   " infer directory/link based on the file permission string
+   silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
+   silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+   if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
+    exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
    endif
   endif
 
-  call s:NetrwWideListing()
-  if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
-   " place cursor on the top-left corner of the file listing
-   exe 'silent '.w:netrw_bannercnt
-   norm! 0
+  " ftp's listing doesn't seem to include ./ or ../
+  if !search('^\.\/$\|\s\.\/$','wn')
+   exe 'keepjumps '.w:netrw_bannercnt
+   put ='./'
   endif
-
-  " record previous current directory
-  let w:netrw_prvdir= b:netrw_curdir
-
-  " save certain window-oriented variables into buffer-oriented variables
-  call s:SetBufWinVars()
-  call s:NetOptionRestore()
-  setlocal noma nomod nonu nobl nowrap
-  if g:netrw_fastbrowse >= 2
-   setlocal bh=hide
+  if !search('^\.\.\/$\|\s\.\.\/$','wn')
+   exe 'keepjumps '.w:netrw_bannercnt
+   put ='../'
   endif
 
-"  call Dret("DirBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
+  " restore settings
+  let &ff= ffkeep
+"  call Dret("NetBrowseFtpCmd")
 endfun
 
 " ---------------------------------------------------------------------
-"  LocalBrowseList: does the job of "ls" for local directories {{{2
-fun! s:LocalBrowseList()
-"  call Dfunc("LocalBrowseList() b:netrw_curdir<".b:netrw_curdir."> sortby<".g:netrw_sort_by.">")
-
-  " get the list of files contained in the current directory
-  let dirname    = escape(b:netrw_curdir,s:netrw_glob_escape)
-  let dirnamelen = strlen(b:netrw_curdir)
-  let filelist   = glob(dirname."/*")
-"  call Decho("glob(dirname<".dirname."/.*>)=".filelist)
-  if filelist != ""
-   let filelist= filelist."\n"
-  endif
-  let filelist= filelist.glob(dirname."/.*")
-"  call Decho("glob(dirname<".dirname."/.*>)=".glob(dirname.".*"))
-
-  " if the directory name includes a "$", and possibly other characters,
-  " the glob() doesn't include "." and ".." entries.
-  if filelist !~ '[\\/]\.[\\/]\=\(\n\|$\)'
-"   call Decho("forcibly tacking on .")
-   if filelist == ""
-    let filelist= dirname."."
-   else
-    let filelist= filelist."\n".b:netrw_curdir."."
-   endif
-"  call Decho("filelist<".filelist.">")
-  endif
-  if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)'
-"   call Decho("forcibly tacking on ..")
-   let filelist= filelist."\n".b:netrw_curdir.".."
-"  call Decho("filelist<".filelist.">")
-  endif
-  let filelist= substitute(filelist,'\n\{2,}','\n','ge')
-  if (has("win32") || has("win95") || has("win64") || has("win16"))
-   let filelist= substitute(filelist,'\','/','ge')
-  else
-   let filelist= substitute(filelist,'\','\\','ge')
-  endif
+" NetListHide: uses [range]g~...~d to delete files that match comma {{{2
+" separated patterns given in g:netrw_list_hide
+fun! s:NetListHide()
+"  call Dfunc("NetListHide() hide=".g:netrw_hide." listhide<".g:netrw_list_hide.">")
 
-"  call Decho("dirname<".dirname.">")
-"  call Decho("dirnamelen<".dirnamelen.">")
-"  call Decho("filelist<".filelist.">")
+  " find a character not in the "hide" string to use as a separator for :g and :v commands
+  " How-it-works: take the hiding command, convert it into a range.  Duplicate
+  " characters don't matter.  Remove all such characters from the '/~...90'
+  " string.  Use the first character left as a separator character.
+  let listhide= g:netrw_list_hide
+  let sep     = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
+"  call Decho("sep=".sep)
 
-  while filelist != ""
-   if filelist =~ '\n'
-    let filename = substitute(filelist,'\n.*$','','e')
-    let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
+  while listhide != ""
+   if listhide =~ ','
+    let hide     = substitute(listhide,',.*$','','e')
+    let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e')
    else
-    let filename = filelist
-    let filelist = ""
-   endif
-   let pfile= filename
-   if isdirectory(filename)
-    let pfile= filename."/"
-   endif
-   if pfile =~ '//$'
-    let pfile= substitute(pfile,'//$','/','e')
-   endif
-   let pfile= strpart(pfile,dirnamelen)
-   let pfile= substitute(pfile,'^/','','e')
-"   call Decho(" ")
-"   call Decho("filename<".filename.">")
-"   call Decho("pfile   <".pfile.">")
-
-   if w:netrw_longlist == 1
-    let sz   = getfsize(filename)
-    let fsz  = strpart("               ",1,15-strlen(sz)).sz
-    let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
-"    call Decho("sz=".sz." fsz=".fsz)
+    let hide     = listhide
+    let listhide= ""
    endif
 
-   if     g:netrw_sort_by =~ "^t"
-    " sort by time (handles time up to 1 quintillion seconds, US)
-"    call Decho("getftime(".filename.")=".getftime(filename))
-    let t  = getftime(filename)
-    let ft = strpart("000000000000000000",1,18-strlen(t)).t
-"    call Decho("exe keepjumps put ='".ft.'/'.filename."'")
-    let ftpfile= ft.'/'.pfile
-    keepjumps silent! put=ftpfile
-
-   elseif g:netrw_sort_by =~ "^s"
-    " sort by size (handles file sizes up to 1 quintillion bytes, US)
-"    call Decho("getfsize(".filename.")=".getfsize(filename))
-    let sz   = getfsize(filename)
-    let fsz  = strpart("000000000000000000",1,18-strlen(sz)).sz
-"    call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
-    let fszpfile= fsz.'/'.pfile
-    keepjumps silent! put =fszpfile
-
-   else 
-    " sort by name
-"    call Decho("exe keepjumps put ='".pfile."'")
-    keepjumps silent! put=pfile
+   " Prune the list by hiding any files which match
+   if g:netrw_hide == 1
+"    call Decho("hiding<".hide."> listhide<".listhide.">")
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
+   elseif g:netrw_hide == 2
+"    call Decho("showing<".hide."> listhide<".listhide.">")
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
    endif
   endwhile
+  if g:netrw_hide == 2
+   exe 'silent keepjumps '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
+   exe 'silent keepjumps '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
+  endif
 
-  " cleanup any windows mess at end-of-line
-  silent! keepjumps %s/\r$//e
-  setlocal ts=32
-
-"  call Dret("LocalBrowseList")
+"  call Dret("NetListHide")
 endfun
 
 " ---------------------------------------------------------------------
-"  LocalBrowseChgDir: constructs a new directory based on the current {{{2
-"                     directory and a new directory name
-fun! s:LocalBrowseChgDir(dirname,newdir,...)
-"  call Dfunc("LocalBrowseChgDir(dirname<".a:dirname."> newdir<".a:newdir.">) a:0=".a:0)
+" NetHideEdit: allows user to edit the file/directory hiding list
+fun! s:NetHideEdit(islocal)
+"  call Dfunc("NetHideEdit(islocal=".a:islocal.")")
 
-  let dirname= substitute(a:dirname,'\\','','ge')
-  let newdir = a:newdir
+  " save current cursor position
+  let s:nhe_curpos= getpos(".")
 
-  if dirname !~ '[\/]$'
-   " apparently vim is "recognizing" that it is in the home directory and
-   " is removing the "/".  Bad idea, so I have to put it back.
-   let dirname= dirname.'/'
-"   call Decho("adjusting dirname<".dirname.">")
-  endif
+  " get new hiding list from user
+  call inputsave()
+  let newhide= input("Edit Hiding List: ",g:netrw_list_hide)
+  call inputrestore()
+  let g:netrw_list_hide= newhide
+"  call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
 
-  if newdir !~ '[\/]$'
-   " handling a file
-   let dirname= dirname.newdir
-"   call Decho("handling a file: dirname<".dirname.">")
-   " this lets NetBrowseX avoid the edit
-   if a:0 < 1
-"    call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape.">")
-"    call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">")
-    if g:netrw_browse_split == 1
-     new
-     wincmd _
-    elseif g:netrw_browse_split == 2
-     rightb vert new
-     wincmd |
-    else
-     " handling a file, didn't split, so possibly remove menu
-     call s:NetMenu(0)
-    endif
-    exe "e! ".escape(dirname,s:netrw_cd_escape)
-    set ma nomod
-   endif
+  " refresh the listing
+  silent call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,"./"))
 
-  elseif newdir == './'
-   " refresh the directory list
-"   call Decho("refresh directory listing")
+  " restore cursor position
+  call setpos('.',s:nhe_curpos)
+  unlet s:nhe_curpos
 
-  elseif newdir == '../'
-   " go up one directory
-   let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e')
-"   call Decho("go up one dir: dirname<".dirname.">")
+"  call Dret("NetHideEdit")
+endfun
 
-  else
-   " go down one directory
-   let dirname= dirname.newdir
-"   call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
-  endif
+" ---------------------------------------------------------------------
+" NetSortSequence: allows user to edit the sorting sequence
+fun! s:NetSortSequence(islocal)
+"  call Dfunc("NetSortSequence(islocal=".a:islocal.")")
 
-"  call Dret("LocalBrowseChgDir <".dirname.">")
-  return dirname
+  call inputsave()
+  let newsortseq= input("Edit Sorting Sequence: ",g:netrw_sort_sequence)
+  call inputrestore()
+
+  " refresh the listing
+  let g:netrw_sort_sequence= newsortseq
+  call netrw#NetSavePosn()
+  call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./'))
+
+"  call Dret("NetSortSequence")
 endfun
 
 " ---------------------------------------------------------------------
-" LocalBrowseShellCmdRefresh: this function is called after a user has {{{2
-" performed any shell command.  The idea is to cause all local-browsing
-" buffers to be refreshed after a user has executed some shell command,
-" on the chance that s/he removed/created a file/directory with it.
-fun! s:LocalBrowseShellCmdRefresh()
-"  call Dfunc("LocalBrowseShellCmdRefresh() browselist=".string(s:netrw_browselist))
-  "  GO through all buffers on netrw_browselist (ie. just local-netrw buffers):
-  "   | refresh any netrw window
-  "   | wipe out any non-displaying netrw buffer
-  let curwin = winnr()
-  let ibl    = 0
-  for ibuf in s:netrw_browselist
-   if bufwinnr(ibuf) == -1
-"    call Decho("wiping  buf#".ibuf)
-    exe "silent! bw ".ibuf
-    call remove(s:netrw_browselist,ibl)
-"    call Decho("browselist=".string(s:netrw_browselist))
-    continue
-   else
-"    call Decho("refresh buf#".ibuf.'-> win#'.bufwinnr(ibuf))
-    exe bufwinnr(ibuf)."wincmd w"
-    call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./'),1)
-   endif
-   let ibl= ibl + 1
-  endfor
-  exe curwin."wincmd w"
-
-"  call Dret("LocalBrowseShellCmdRefresh")
-endfun
-
-" ---------------------------------------------------------------------
-" LocalBrowseRm: {{{2
-fun! s:LocalBrowseRm(path) range
-"  call Dfunc("LocalBrowseRm(path<".a:path.">)")
-"  call Decho("firstline=".a:firstline." lastline=".a:lastline)
+"  NetListStyle: {{{2
+"  islocal=0: remote browsing
+"         =1: local browsing
+fun! s:NetListStyle(islocal)
+"  call Dfunc("NetListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle)
+  let fname             = s:NetGetWord()
+  if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
+  let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST
+"  call Decho("fname<".fname.">")
+"  call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle)
+"  call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">")
 
-  " preparation for removing multiple files/directories
-  let ctr           = a:firstline
-  let ret           = 0
-  let all= 0
+  if w:netrw_liststyle == s:THINLIST
+   " use one column listing
+"   call Decho("use one column list")
+   let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
 
-  " remove multiple files and directories
-  while ctr <= a:lastline
-   exe "keepjumps ".ctr
+  elseif w:netrw_liststyle == s:LONGLIST
+   " use long list
+"   call Decho("use long list")
+   let g:netrw_list_cmd = g:netrw_list_cmd." -l"
 
-   " sanity checks
-   if line(".") < w:netrw_bannercnt
-    let ctr= ctr + 1
-    continue
-   endif
-   let curword= s:NetGetWord()
-   if curword == "./" || curword == "../"
-    let ctr= ctr + 1
-    continue
-   endif
+  elseif w:netrw_liststyle == s:WIDELIST
+   " give wide list
+"   call Decho("use wide list")
+   let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
 
-   norm! 0
-   let rmfile= a:path."/".curword
-"   call Decho("rmfile<".rmfile.">")
+  elseif w:netrw_liststyle == s:TREELIST
+"   call Decho("use tree list")
+   let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
 
-   if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
-    " attempt to remove file
-    if !all
-     echohl Statement
-     call inputsave()
-     let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
-     call inputrestore()
-     echohl NONE
-     if ok == ""
-      let ok="no"
-     endif
-"     call Decho("response: ok<".ok.">")
-     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-"     call Decho("response: ok<".ok."> (after sub)")
-     if ok =~ 'a\%[ll]'
-      let all= 1
-     endif
-    endif
+  else
+   call netrw#ErrorMsg(s:WARNING,"bad value for g:netrw_liststyle (=".w:netrw_liststyle.")",46)
+   let g:netrw_liststyle = s:THINLIST
+   let w:netrw_liststyle = g:netrw_liststyle
+   let g:netrw_list_cmd  = substitute(g:netrw_list_cmd,' -l','','ge')
+  endif
+  setlocal ma noro
 
-    if all || ok =~ 'y\%[es]' || ok == ""
-     let ret= delete(rmfile)
-"     call Decho("errcode=".v:shell_error." ret=".ret)
-    elseif ok =~ 'q\%[uit]'
-     break
-    endif
+  " clear buffer - this will cause NetBrowse/LocalBrowseCheck to do a refresh
+"  call Decho("clear buffer<".expand("%")."> with :%d")
+  %d
 
-   else
-    " attempt to remove directory
-    if !all
-     echohl Statement
-     call inputsave()
-     let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
-     call inputrestore()
-     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-     if ok == ""
-      let ok="no"
-     endif
-     if ok =~ 'a\%[ll]'
-      let all= 1
-     endif
-    endif
-    let rmfile= substitute(rmfile,'[\/]$','','e')
+  " refresh the listing
+  call netrw#NetSavePosn()
+  call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./'))
 
-    if all || ok =~ 'y\%[es]' || ok == ""
-"     call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")')
-     call system(g:netrw_local_rmdir.' "'.rmfile.'"')
-"     call Decho("v:shell_error=".v:shell_error)
+  " keep cursor on the filename
+  silent keepjumps $
+  let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
+"  call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
+  if result <= 0 && exists("w:netrw_bannercnt")
+   exe w:netrw_bannercnt
+  endif
 
-     if v:shell_error != 0
-"      call Decho("2nd attempt to remove directory<".rmfile.">")
-      let errcode= delete(rmfile)
-"      call Decho("errcode=".errcode)
+"  call Dret("NetListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
+endfun
 
-      if errcode != 0
-       if has("unix")
-"        call Decho("3rd attempt to remove directory<".rmfile.">")
-call system("rm ".rmfile)
-        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()
-endif
-       elseif !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()
-       endif
-      endif
-     endif
+" ---------------------------------------------------------------------
+" NetWideListing: {{{2
+fun! s:NetWideListing()
 
-    elseif ok =~ 'q\%[uit]'
-     break
-    endif
+  if w:netrw_liststyle == s:WIDELIST
+"   call Dfunc("NetWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo)
+   " look for longest filename (cpf=characters per filename)
+   " cpf: characters per file
+   " fpl: files per line
+   " fpc: files per column
+   setlocal ma noro
+   let b:netrw_cpf= 0
+   if line("$") >= w:netrw_bannercnt
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
+   else
+"    call Dret("NetWideListing")
+    return
    endif
+"   call Decho("max file strlen+1=".b:netrw_cpf)
+   let b:netrw_cpf= b:netrw_cpf + 1
 
-   let ctr= ctr + 1
-  endwhile
+   " 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)
 
-  " refresh the directory
-  let curline= line(".")
-"  call Decho("refresh the directory")
-  call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./'),1)
-  exe curline
+   " make wide display
+   exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
+   let fpc         = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
+   let newcolstart = w:netrw_bannercnt + fpc
+   let newcolend   = newcolstart + fpc - 1
+"   call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]")
+   silent! let keepregstar = @*
+   while line("$") >= newcolstart
+    if newcolend > line("$") | let newcolend= line("$") | endif
+    let newcolqty= newcolend - newcolstart
+    exe newcolstart
+    if newcolqty == 0
+     exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
+    else
+     exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
+    endif
+    exe "silent keepjumps ".newcolstart.','.newcolend.'d'
+    exe 'silent keepjumps '.w:netrw_bannercnt
+   endwhile
+   silent! let @*= keepregstar
+   exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
+   setlocal noma nomod ro
+"   call Dret("NetWideListing")
+  endif
 
-"  call Dret("LocalBrowseRm")
 endfun
 
 " ---------------------------------------------------------------------
-" LocalBrowseRename: rename a remote file or directory {{{2
-fun! s:LocalBrowseRename(path) range
-"  call Dfunc("LocalBrowseRename(path<".a:path.">)")
-
-  " preparation for removing multiple files/directories
-  let ctr= a:firstline
-
-  " attempt to rename files/directories
-  while ctr <= a:lastline
-   exe "keepjumps ".ctr
-
-   " sanity checks
-   if line(".") < w:netrw_bannercnt
-    let ctr= ctr + 1
-    continue
-   endif
-   let curword= s:NetGetWord()
-   if curword == "./" || curword == "../"
-    let ctr= ctr + 1
-    continue
+" NetTreeDir: determine tree directory given current cursor position {{{2
+" (full path directory with trailing slash returned)
+fun! s:NetTreeDir()
+"  call Dfunc("NetTreeDir() curline#".line(".")."<".getline(".")."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%"))
+
+  let treedir= b:netrw_curdir
+"  call Decho("set initial treedir<".treedir.">")
+  let s:treecurpos= getpos(".")
+
+  if w:netrw_liststyle == s:TREELIST
+"   call Decho("w:netrrw_liststyle is TREELIST:")
+"   call Decho("line#".line(".")." getline(.)<".getline('.')."> treecurpos<".string(s:treecurpos).">")
+   if getline('.') =~ '/$'
+    let treedir= substitute(getline('.'),'^\%(| \)*\([^|].\{-}\)$','\1','e')
+   else
+    let treedir= ""
    endif
 
-   norm! 0
-   let oldname= a:path."/".curword
-"   call Decho("oldname<".oldname.">")
+"   call Decho("treedir<".treedir.">")
 
-   call inputsave()
-   let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
-   call inputrestore()
+   " detect user attempting to close treeroot
+   if getline('.') !~ '|' && getline('.') != '..'
+"    call Decho("user attempted to close treeroot")
+    " now force a refresh
+"    call Decho("clear buffer<".expand("%")."> with :%d")
+    keepjumps %d
+"    call Dret("NetTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
+    return b:netrw_curdir
+   endif
 
-   let ret= rename(oldname,newname)
-"   call Decho("renaming <".oldname."> to <".newname.">")
+   " elide all non-depth information
+   let depth = substitute(getline('.'),'^\(\%(| \)*\)[^|].\{-}$','\1','e')
+"   call Decho("depth<".depth."> 1st subst")
+
+   " elide first depth
+   let depth = substitute(depth,'^| ','','')
+"   call Decho("depth<".depth."> 2nd subst")
+
+   " construct treedir by searching backwards at correct depth
+"   call Decho("constructing treedir<".treedir."> depth<".depth.">")
+   while depth != "" && search('^'.depth.'[^|].\{-}/$','bW')
+    let dirname= substitute(getline("."),'^\(| \)*','','e')
+    let treedir= dirname.treedir
+    let depth  = substitute(depth,'^| ','','')
+"    call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">")
+   endwhile
+   if w:netrw_treetop =~ '/$'
+    let treedir= w:netrw_treetop.treedir
+   else
+    let treedir= w:netrw_treetop.'/'.treedir
+   endif
+"   call Decho("bufnr(.)=".bufnr(".")." line($)=".line("$")." line(.)=".line("."))
+  endif
+  let treedir= substitute(treedir,'//$','/','')
 
-   let ctr= ctr + 1
-  endwhile
+"  " now force a refresh
+"  call Decho("clear buffer<".expand("%")."> with :%d")
+"  setlocal ma noro
+"  keepjumps %d
 
-  " refresh the directory
-  let curline= line(".")
-"  call Decho("refresh the directory listing")
-  call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./'),1)
-  exe "keepjumps ".curline
-"  call Dret("LocalBrowseRename")
+"  call Dret("NetTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
+  return treedir
 endfun
 
 " ---------------------------------------------------------------------
-" LocalFastBrowser: handles setting up/taking down fast browsing for the {{{2
-"                   local browser
-fun! s:LocalFastBrowser()
-"  call Dfunc("LocalFastBrowser()")
+" NetTreeDisplay: recursive tree display {{{2
+fun! s:NetTreeDisplay(dir,depth)
+"  call Dfunc("NetTreeDisplay(dir<".a:dir."> depth<".a:depth.">)")
 
-  " initialize browselist, a list of buffer numbers that the local browser has used
-  if !exists("s:netrw_browselist")
-   let s:netrw_browselist= []
-  endif
+  " insure that there are no folds
+  setlocal nofen
 
-  " append current buffer to fastbrowse list
-  if g:netrw_fastbrowse <= 1 && (empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1])
-   call add(s:netrw_browselist,bufnr("%"))
-"   call Decho("browselist=".string(s:netrw_browselist))
+  " install ../ and shortdir
+  if a:depth == ""
+   call setline(line("$")+1,'../')
+"   call Decho("setline#".line("$")." ../ (depth is zero)")
   endif
-
-  " enable autocmd events to handle refreshing/removing local browser buffers
-  "    If local browse buffer is currently showing: refresh it
-  "    If local browse buffer is currently hidden : wipe it
-  if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1
-"   call Decho("setting up local-browser shell command refresh")
-   let s:netrw_browser_shellcmd= 1
-   augroup AuNetrwShellCmd
-    au!
-    if (has("win32") || has("win95") || has("win64") || has("win16"))
-     au ShellCmdPost * call s:LocalBrowseShellCmdRefresh()
-    else
-     au ShellCmdPost,FocusGained *     call s:LocalBrowseShellCmdRefresh()
-    endif
-   augroup END
+  if a:dir =~ '^\a\+://'
+   if a:dir == w:netrw_treetop
+    let shortdir= a:dir
+   else
+    let shortdir= substitute(a:dir,'^.*/\([^/]\+\)/$','\1/','e')
+   endif
+   call setline(line("$")+1,a:depth.shortdir)
+  else
+   let shortdir= substitute(a:dir,'^.*/','','e')
+   call setline(line("$")+1,a:depth.shortdir.'/')
   endif
+"  call Decho("setline#".line("$")." shortdir<".a:depth.shortdir.">")
 
-  " user must have changed fastbrowse to its fast setting, so remove
-  " the associated autocmd events
-  if g:netrw_fastbrowse > 1 && exists("s:netrw_browser_shellcmd")
-   unlet s:netrw_browser_shellcmd
-   augroup AuNetrwShellCmd
-    au!
-   augroup END
-   augroup! AuNetrwShellCmd
+  " append a / to dir if its missing one
+  let dir= a:dir
+  if dir !~ '/$'
+   let dir= dir.'/'
   endif
 
-"  call Dret("LocalFastBrowser")
+  " display subtrees (if any)
+  let depth= "| ".a:depth
+"  call Decho("display subtrees with depth<".depth."> and current leaves")
+  for entry in w:netrw_treedict[a:dir]
+   let direntry= substitute(dir.entry,'/$','','e')
+"   call Decho("dir<".dir."> entry<".entry."> direntry<".direntry.">")
+   if entry =~ '/$' && has_key(w:netrw_treedict,direntry)
+"    call Decho("<".direntry."> is a key in treedict - display subtree for it")
+    call s:NetTreeDisplay(direntry,depth)
+   elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/')
+"    call Decho("<".direntry."/> is a key in treedict - display subtree for it")
+    call s:NetTreeDisplay(direntry.'/',depth)
+   else
+"    call Decho("<".entry."> is not a key in treedict (no subtree)")
+    call setline(line("$")+1,depth.entry)
+   endif
+  endfor
+"  call Dret("NetTreeDisplay")
 endfun
 
 " ---------------------------------------------------------------------
-" LocalObtain: copy selected file to current working directory {{{2
-fun! s:LocalObtain()
-"  call Dfunc("LocalObtain()")
-  if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir
-   let fname= expand("<cWORD>")
-   let fcopy= readfile(b:netrw_curdir."/".fname,"b")
-   call writefile(fcopy,getcwd()."/".fname,"b")
-  elseif !exists("b:netrw_curdir")
-   echohl Error | echo "***netrw*** local browsing directory doesn't exist!"
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-  else
-   echohl Error | echo "***netrw*** local browsing directory and current directory are identical"
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-  endif
-"  call Dret("LocalObtain")
-endfun
-
-" ---------------------------------------------------------------------
-" LocalPreview: {{{2
-fun! s:LocalPreview(path) range
-"  call Dfunc("LocalPreview(path<".a:path.">)")
-  if has("quickfix")
-   if !isdirectory(a:path)
-    exe "pedit ".escape(a:path,g:netrw_fname_escape)
-   elseif !exists("g:netrw_quiet")
-    echohl WarningMsg | echo "***netrw*** sorry, cannot preview a directory such as <".a:path.">" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+" NetTreeListing: displays tree listing from treetop on down, using NetTreeDisplay() {{{2
+fun! s:NetTreeListing(dirname)
+  if w:netrw_liststyle == s:TREELIST
+"   call Dfunc("NetTreeListing() bufname<".expand("%").">")
+"   call Decho("curdir<".a:dirname.">")
+
+   " update the treetop
+"   call Decho("update the treetop")
+   if !exists("w:netrw_treetop")
+    let w:netrw_treetop= a:dirname
+"    call Decho("w:netrw_treetop<".w:netrw_treetop."> (reusing)")
+   elseif (w:netrw_treetop =~ ('^'.a:dirname) && strlen(a:dirname) < strlen(w:netrw_treetop)) || a:dirname !~ ('^'.w:netrw_treetop)
+    let w:netrw_treetop= a:dirname
+"    call Decho("w:netrw_treetop<".w:netrw_treetop."> (went up)")
    endif
-  elseif !exists("g:netrw_quiet")
-   echohl WarningMsg | echo "***netrw*** sorry, to preview your vim needs the quickfix feature compiled in" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-  endif
-"  call Dret("LocalPreview")
-endfun
-
-" ---------------------------------------------------------------------
-" Explore: launch the local browser in the directory of the current file {{{2
-"          dosplit==0: the window will be split iff the current file has
-"                      been modified
-"          dosplit==1: the window will be split before running the local
-"                      browser
-fun! netrw#Explore(indx,dosplit,style,...)
-"  call Dfunc("Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.")")
-
-  " if dosplit or file has been modified
-  if a:dosplit || &modified
-   call s:SaveWinVars()
-
-   if a:style == 0      " Explore, Sexplore
-    exe g:netrw_winsize."wincmd s"
-"    call Decho("style=0: Explore or Sexplore")
-
-   elseif a:style == 1  "Explore!, Sexplore!
-    exe g:netrw_winsize."wincmd v"
-"    call Decho("style=1: Explore! or Sexplore!")
-
-   elseif a:style == 2  " Hexplore
-    exe "bel ".g:netrw_winsize."wincmd s"
-"    call Decho("style=2: Hexplore")
-
-   elseif a:style == 3  " Hexplore!
-    exe "abo ".g:netrw_winsize."wincmd s"
-"    call Decho("style=3: Hexplore!")
-
-   elseif a:style == 4  " Vexplore
-    exe "lefta ".g:netrw_winsize."wincmd v"
-"    call Decho("style=4: Vexplore")
 
-   elseif a:style == 5  " Vexplore!
-    exe "rightb ".g:netrw_winsize."wincmd v"
-"    call Decho("style=5: Vexplore!")
+   " insure that we have at least an empty treedict
+   if !exists("w:netrw_treedict")
+    let w:netrw_treedict= {}
    endif
-   call s:CopyWinVars()
-  endif
-  norm! 0
-
-  if a:1 =~ '^\*/'
-   " Explore */pattern
-   let pattern= substitute(a:1,'^\*/\(.*\)$','\1','')
-"   call Decho("Explore */pat: a:1<".a:1."> -> pattern<".pattern.">")
-  elseif a:1 =~ '^\*\*//'
-   " Explore **//pattern
-   let pattern     = substitute(a:1,'^\*\*//','','')
-   let starstarpat = 1
-"   call Decho("Explore **//pat: a:1<".a:1."> -> pattern<".pattern.">")
-  endif
 
-  if a:1 == "" && a:indx >= 0
-   " Explore Hexplore Vexplore Sexplore
-"   call Decho("Explore Hexplore Vexplore Sexplore")
-   let newdir= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
-   if newdir =~ '^scp:' || newdir =~ '^ftp:'
-"    call Decho("calling NetBrowse(newdir<".newdir.">)")
-    call s:NetBrowse(newdir)
+   " update the directory listing for the current directory
+"   call Decho("updating dictionary with ".a:dirname.":[..directory listing..]")
+"   call Decho("bannercnt=".w:netrw_bannercnt." line($)=".line("$"))
+   exe "silent! keepjumps ".w:netrw_bannercnt.',$g@^\.\.\=/$@d'
+   let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$"))
+"   call Decho("treedict=".string(w:netrw_treedict))
+   exe "silent! keepjumps ".w:netrw_bannercnt.",$d"
+
+   " if past banner, record word
+   if exists("w:netrw_bannercnt") && line(".") > w:netrw_bannercnt
+    let fname= expand("<cword>")
    else
-    if newdir == ""|let newdir= getcwd()|endif
-"    call Decho("calling LocalBrowse(newdir<".newdir.">)")
-    call s:LocalBrowse(newdir)
-   endif
-
-  elseif a:1 =~ '^\*\*/' || a:indx < 0 || a:1 =~ '^\*/'
-   " Nexplore, Pexplore, Explore **/... , or Explore */pattern
-"   call Decho("Nexplore, Pexplore, <s-down>, <s-up>, Explore ".a:1)
-   let s:didstarstar= 1
-   if exists("b:netrw_curdir")
-    nnoremap <buffer> <silent> <s-up>  :Pexplore<cr>
-    nnoremap <buffer> <silent> <s-down>        :Nexplore<cr>
+    let fname= ""
    endif
 
-   if has("path_extra")
-    if !exists("w:netrw_explore_indx")
-     let w:netrw_explore_indx= 0
+   " display from treetop on down
+   call s:NetTreeDisplay(w:netrw_treetop,"")
+
+   " place cursor
+   if !exists("s:nbcd_curpos")
+    if fname != ""
+"     call Decho("(NetTreeListing) place cursor <".fname.">")
+     call search('\<'.fname.'\>','cw')
+    elseif exists("w:netrw_bannercnt")
+     exe (w:netrw_bannercnt+1)
+"     call Decho("(NetTreeListing) place cursor line#".(w:netrw_bannercnt+1))
     endif
-    let indx = a:indx
-"    call Decho("set indx=".indx)
-"
-    if indx == -1
-     "Nexplore
-     if !exists("w:netrw_explore_list") " sanity check
-      echohl WarningMsg | echo "***netrw*** using Nexplore or <s-down> improperly; see help for netrw-starstar" | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"      call Dret("Explore")
-      return
-     endif
-     let indx   = w:netrw_explore_indx
-     let curfile= w:netrw_explore_list[indx]
-     while indx < w:netrw_explore_listlen && curfile == w:netrw_explore_list[indx]
-      let indx= indx + 1
-"      call Decho("indx=".indx)
-     endwhile
-"     call Decho("Nexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
+   endif
 
-    elseif indx == -2
-     "Pexplore
-     if !exists("w:netrw_explore_list") " sanity check
-      echohl WarningMsg | echo "***netrw*** using Pexplore or <s-up> improperly; see help for netrw-starstar" | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"      call Dret("Explore")
-      return
-     endif
-     let indx   = w:netrw_explore_indx
-     let curfile= w:netrw_explore_list[indx]
-     while indx > 0 && curfile == w:netrw_explore_list[indx]
-      let indx= indx - 1
-     endwhile
-"     call Decho("Pexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
+"   call Dret("NetTreeListing : bufname<".expand("%").">")
+  endif
+endfun
 
-    else
-     " Explore -- initialize
-     " build list of files to Explore with Nexplore/Pexplore
-"     call Decho("Explore -- initialize")
-     let w:netrw_explore_indx= 0
-     if !exists("b:netrw_curdir")
-      let b:netrw_curdir= getcwd()
-     endif
-"     call Decho("b:netrw_curdir<".b:netrw_curdir.">")
-     if exists("pattern")
-"      call Decho("building list based on pattern<".pattern."> cwd<".getcwd().">")
-      if exists("starstarpat")
-       exe "vimgrep /".pattern."/gj "."**/*"
-       let s:netrw_curdir= b:netrw_curdir
-       let w:netrw_explore_list = map(getqflist(),'s:netrw_curdir."/".bufname(v:val.bufnr)')
-      else
-       exe "vimgrep /".pattern."/gj ".b:netrw_curdir."/*"
-       if (has("win32") || has("win95") || has("win64") || has("win16"))
-        let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)')
-       else
-        let w:netrw_explore_list = map(getqflist(),'b:netrw_curdir.bufname(v:val.bufnr)')
-       endif
-      endif
-     else
-"      call Decho("building list based on ".b:netrw_curdir."/".a:1)
-      let w:netrw_explore_list= split(expand(b:netrw_curdir."/".a:1),'\n')
-     endif
+" ---------------------------------------------------------------------
+" NetSaveWordPosn: used by the "s" command in both remote and local {{{2
+" browsing.  Along with NetRestoreWordPosn(), it keeps the cursor on
+" the same word even though the sorting has changed its order of appearance.
+fun! s:NetSaveWordPosn()
+"  call Dfunc("NetSaveWordPosn()")
+  let s:netrw_saveword= '^'.escape(getline("."),s:netrw_cd_escape).'$'
+"  call Dret("NetSaveWordPosn : saveword<".s:netrw_saveword.">")
+endfun
 
-     let w:netrw_explore_listlen = len(w:netrw_explore_list)
-"     call Decho("w:netrw_explore_list<".string(w:netrw_explore_list)."> listlen=".w:netrw_explore_listlen)
+" ---------------------------------------------------------------------
+" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above {{{2
+fun! s:NetRestoreWordPosn()
+"  call Dfunc("NetRestoreWordPosn()")
+  silent! call search(s:netrw_saveword,'w')
+"  call Dret("NetRestoreWordPosn")
+endfun
 
-     if w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/'
-      echohl WarningMsg | echo "***netrw*** no files matched" | echohl None
-      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"      call Dret("Explore")
-      return
-     endif
-    endif
+" ---------------------------------------------------------------------
+" NetMakeDir: this function makes a directory (both local and remote) {{{2
+fun! s:NetMakeDir(usrhost)
+"  call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)")
 
-    " NetrwStatusLine support - for exploring support
-    let w:netrw_explore_indx= indx
-"    call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
+  " get name of new directory from user.  A bare <CR> will skip.
+  " if its currently a directory, also request will be skipped, but with
+  " a message.
+  call inputsave()
+  let newdirname= input("Please give directory name: ")
+  call inputrestore()
+"  call Decho("newdirname<".newdirname.">")
 
-    " sanity check
-    if indx >= w:netrw_explore_listlen || indx < 0
-     let indx= (indx < 0)? 0 : ( w:netrw_explore_listlen - 1 )
-     echohl WarningMsg | echo "***netrw*** no more files match Explore pattern" | echohl None
-     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"     call Dret("Explore")
-     return
-    endif
+  if newdirname == ""
+"   call Dret("NetMakeDir : user aborted with bare <cr>")
+   return
+  endif
 
-    exe "let dirfile= w:netrw_explore_list[".indx."]"
-"    call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
-    let newdir= substitute(dirfile,'/[^/]*$','','e')
-"    call Decho("newdir<".newdir.">")
+  if a:usrhost == ""
 
-"    call Decho("calling LocalBrowse(newdir<".newdir.">)")
-    call s:LocalBrowse(newdir)
-    if w:netrw_longlist == 0 || w:netrw_longlist == 1
-     call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
-    else
-     call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
+   " Local mkdir:
+   " sanity checks
+   let fullnewdir= b:netrw_curdir.'/'.newdirname
+"   call Decho("fullnewdir<".fullnewdir.">")
+   if isdirectory(fullnewdir)
+    if !exists("g:netrw_quiet")
+     call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a directory!",24)
     endif
-    let w:netrw_explore_mtchcnt = indx + 1
-    let w:netrw_explore_bufnr   = bufnr("%")
-    let w:netrw_explore_line    = line(".")
-    call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
-"    call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
+"    call Dret("NetMakeDir : directory<".newdirname."> exists previously")
+    return
+   endif
+   if s:FileReadable(fullnewdir)
+    if !exists("g:netrw_quiet")
+     call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a file!",25)
+    endif
+"    call Dret("NetMakeDir : file<".newdirname."> exists previously")
+    return
+   endif
 
+   " requested new local directory is neither a pre-existing file or
+   " directory, so make it!
+   if exists("*mkdir")
+    call mkdir(fullnewdir,"p")
    else
-    if !exists("g:netrw_quiet")
-     echohl WarningMsg | echo "***netrw*** your vim needs the +path_extra feature for Exploring with **!" | echohl None | echohl None
+    let netrw_origdir= s:NetGetcwd(1)
+    exe 'keepjumps cd '.b:netrw_curdir
+"    call Decho("netrw_origdir<".netrw_origdir.">: cd b:netrw_curdir<".b:netrw_curdir.">")
+"    call Decho("exe silent! !".g:netrw_local_mkdir.' '.g:netrw_shq.newdirname.g:netrw_shq)
+    exe "silent! !".g:netrw_local_mkdir.' '.g:netrw_shq.newdirname.g:netrw_shq
+    if !g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
+    if !g:netrw_keepdir
+     exe 'keepjumps cd '.netrw_origdir
+"     call Decho("netrw_keepdir=".g:netrw_keepdir.": cd ".netrw_origdir)
     endif
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
 
+   if v:shell_error == 0
+    " refresh listing
+"    call Decho("refresh listing")
+    call netrw#NetSavePosn()
+    call s:NetRefresh(1,s:NetBrowseChgDir(1,'./'))
+   elseif !exists("g:netrw_quiet")
+    call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",26)
+   endif
+   redraw!
+
   else
-"   call Decho("Explore newdir<".a:1.">")
-   let newdir= a:1
-   call s:LocalBrowse(newdir)
+   " Remote mkdir:
+   let mkdircmd  = s:MakeSshCmd(g:netrw_mkdir_cmd)
+   let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname
+"   call Decho("exe silent! !".mkdircmd." ".g:netrw_shq.newdirname.g:netrw_shq)
+   exe "silent! !".mkdircmd." ".g:netrw_shq.newdirname.g:netrw_shq
+   if v:shell_error == 0
+    " refresh listing
+    call netrw#NetSavePosn()
+    call s:NetRefresh(0,s:NetBrowseChgDir(0,'./'))
+   elseif !exists("g:netrw_quiet")
+    call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",27)
+   endif
+   redraw!
   endif
 
-"  call Dret("Explore")
+"  call Dret("NetMakeDir")
 endfun
 
 " ---------------------------------------------------------------------
-" SetupNetrwStatusLine: {{{2
-fun! s:SetupNetrwStatusLine(statline)
-"  call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)")
+"  NetBookmarkDir: {{{2
+"    0: (user: <b>)   bookmark current directory
+"    1: (user: <B>)   change to the bookmarked directory
+"    2: (user: <q>)   list bookmarks
+"    3: (browsing)    record current directory history
+"    4: (user: <u>)   go up   (previous) bookmark
+"    5: (user: <U>)   go down (next)     bookmark
+fun! s:NetBookmarkDir(chg,curdir)
+"  call Dfunc("NetBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." bookmax=".g:NETRW_BOOKMARKMAX." histmax=".g:netrw_dirhistmax)
 
-  if !exists("s:netrw_setup_statline")
-   let s:netrw_setup_statline= 1
-"   call Decho("do first-time status line setup")
+  if a:chg == 0
+   " bookmark the current directory
+"   call Decho("(user: <b>) bookmark the current directory")
+   if v:count > 0
+    " handle bookmark# specified via the count
+    let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
+    if !exists("g:NETRW_BOOKMARKMAX")
+     let g:NETRW_BOOKMARKMAX= v:count
+    elseif v:count > g:NETRW_BOOKMARKMAX
+     let g:NETRW_BOOKMARKMAX= v:count
+    endif
+   else
+    " handle no count specified
+    let g:NETRW_BOOKMARKMAX                       = g:NETRW_BOOKMARKMAX + 1
+    let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir
+   endif
+   echo "bookmarked the current directory"
 
-   if !exists("s:netrw_users_stl")
-    let s:netrw_users_stl= &stl
+  elseif a:chg == 1
+   " change to the bookmarked directory
+"   call Decho("(user: <B>) change to the bookmarked directory")
+   if exists("g:NETRW_BOOKMARKDIR_{v:count}")
+    exe "e ".g:NETRW_BOOKMARKDIR_{v:count}
+   else
+    echomsg "Sorry, bookmark#".v:count." doesn't exist!"
    endif
-   if !exists("s:netrw_users_ls")
-    let s:netrw_users_ls= &laststatus
+
+  elseif a:chg == 2
+   redraw!
+   let didwork= 0
+   " list user's bookmarks
+"   call Decho("(user: <q>) list user's bookmarks")
+   if exists("g:NETRW_BOOKMARKMAX")
+"    call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
+    let cnt= 0
+    while cnt <= g:NETRW_BOOKMARKMAX
+     if exists("g:NETRW_BOOKMARKDIR_{cnt}")
+"      call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
+      echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
+      let didwork= 1
+     endif
+     let cnt= cnt + 1
+    endwhile
    endif
 
-   " set up User9 highlighting as needed
-   let keepa= @a
-   redir @a
-   try
-    hi User9
-   catch /^Vim\%((\a\+)\)\=:E411/
-    if &bg == "dark"
-     hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue
-    else
-     hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue
+   " list directory history
+   let cnt     = g:NETRW_DIRHIST_CNT
+   let first   = 1
+   let histcnt = 0
+   while ( first || cnt != g:NETRW_DIRHIST_CNT )
+"    call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT)
+    let histcnt= histcnt + 1
+    if exists("g:NETRW_DIRHIST_{cnt}")
+"     call Decho("Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt})
+     echo "Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}
+     let didwork= 1
     endif
-   endtry
-   redir END
-   let @a= keepa
-  endif
+    let first = 0
+    let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
+    if cnt < 0
+     let cnt= cnt + g:netrw_dirhistmax
+    endif
+   endwhile
+   if didwork
+    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   endif
 
-  " set up status line (may use User9 highlighting)
-  " insure that windows have a statusline
-  " make sure statusline is displayed
-  let &stl=a:statline
-  set laststatus=2
-"  call Decho("stl=".&stl)
-  redraw!
+  elseif a:chg == 3
+   " saves most recently visited directories (when they differ)
+"   call Decho("(browsing) record curdir history")
+   if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir
+    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
+"    let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e')
+    let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir
+"    call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+   endif
 
-"  call Dret("SetupNetrwStatusLine : stl=".&stl)
+  elseif a:chg == 4
+   " u: change to the previous directory stored on the history list
+"   call Decho("(user: <u>) chg to prev dir from history")
+   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
+   if g:NETRW_DIRHIST_CNT < 0
+    let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
+   endif
+   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
+"    call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
+     setlocal ma noro
+     %d
+     setlocal nomod
+    endif
+"    call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
+    exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}
+   else
+    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
+    echo "Sorry, no predecessor directory exists yet"
+   endif
+
+  elseif a:chg == 5
+   " U: change to the subsequent directory stored on the history list
+"   call Decho("(user: <U>) chg to next dir from history")
+   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
+   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
+"    call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
+     setlocal ma noro
+     %d
+     setlocal nomod
+    endif
+"    call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
+    exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}
+   else
+    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
+    if g:NETRW_DIRHIST_CNT < 0
+     let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
+    endif
+    echo "Sorry, no successor directory exists yet"
+   endif
+  endif
+  call s:NetBookmarkMenu()
+"  call Dret("NetBookmarkDir")
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwStatusLine: {{{2
-fun! NetrwStatusLine()
+" NetBookmarkMenu: {{{2
+fun! s:NetBookmarkMenu()
+  if !exists("s:netrw_menucnt")
+   return
+  endif
+"  call Dfunc("NetBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt)
+  if has("menu") && has("gui_running") && &go =~ 'm'
+   if exists("g:NetrwTopLvlMenu")
+    exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark'
+   endif
 
-  " vvv NetrwStatusLine() debugging vvv
-"  let g:stlmsg=""
-"  if !exists("w:netrw_explore_bufnr")
-"   let g:stlmsg="!X<explore_bufnr>"
-"  elseif w:netrw_explore_bufnr != bufnr("%")
-"   let g:stlmsg="explore_bufnr!=".bufnr("%")
-"  endif
-"  if !exists("w:netrw_explore_line")
-"   let g:stlmsg=" !X<explore_line>"
-"  elseif w:netrw_explore_line != line(".")
-"   let g:stlmsg=" explore_line!={line(.)<".line(".").">"
-"  endif
-"  if !exists("w:netrw_explore_list")
-"   let g:stlmsg=" !X<explore_list>"
-"  endif
-  " ^^^ NetrwStatusLine() debugging ^^^
+   " show bookmarked places
+   let cnt       = 0
+   while cnt <= g:NETRW_BOOKMARKMAX
+    if exists("g:NETRW_BOOKMARKDIR_{cnt}")
+     let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'.')
+"     call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.'       :e '.g:NETRW_BOOKMARKDIR_{cnt})
+     exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.'      :e '.g:NETRW_BOOKMARKDIR_{cnt}."\<cr>"
+    endif
+    let cnt= cnt + 1
+   endwhile
 
-  if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
-   " restore user's status line
-   let &stl        = s:netrw_users_stl
-   let &laststatus = s:netrw_users_ls
-   if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
-   if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
-   return ""
-  else
-   return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
+   " show directory browsing history
+   let cnt     = g:NETRW_DIRHIST_CNT
+   let first   = 1
+   let histcnt = 0
+   while ( first || cnt != g:NETRW_DIRHIST_CNT )
+    let histcnt  = histcnt + 1
+    let priority = g:NETRW_DIRHIST_CNT + histcnt
+    if exists("g:NETRW_DIRHIST_{cnt}")
+     let bmdir= escape(g:NETRW_DIRHIST_{cnt},'.')
+"     call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.'   :e '.g:NETRW_DIRHIST_{cnt})
+     exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.'   :e '.g:NETRW_DIRHIST_{cnt}."\<cr>"
+    endif
+    let first = 0
+    let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
+    if cnt < 0
+     let cnt= cnt + g:netrw_dirhistmax
+    endif
+   endwhile
   endif
+"  call Dret("NetBookmarkMenu")
 endfun
 
 " ---------------------------------------------------------------------
-" NetGetcwd: get the current directory. {{{2
-"   Change backslashes to forward slashes, if any.
-"   If doesc is true, escape certain troublesome characters
-fun! s:NetGetcwd(doesc)
-"  call Dfunc("NetGetcwd(doesc=".a:doesc.")")
-  let curdir= substitute(getcwd(),'\\','/','ge')
-  if curdir !~ '[\/]$'
-   let curdir= curdir.'/'
-  endif
-  if a:doesc
-   let curdir= escape(curdir,s:netrw_cd_escape)
+" NetObtain: obtain file under cursor (for remote browsing support) {{{2
+fun! netrw#NetObtain(vismode,...) range
+"  call Dfunc("NetObtain(vismode=".a:vismode.") a:0=".a:0)
+
+  if a:vismode == 0
+   " normal mode
+   let fname= expand("<cWORD>")
+"   call Decho("no arguments, use <".fname.">")
+  elseif a:vismode == 1
+   " visual mode
+   let keeprega = @a
+   norm! gv"ay
+   if g:netrw_liststyle == s:THINLIST
+    " thin listing
+    let filelist= split(@a,'\n')
+   elseif g:netrw_liststyle == s:LONGLIST
+    " long listing
+    let filelist= split(substitute(@a,'\t.\{-}\n','\n','g'),'\n')
+   else
+    " wide listing
+       let filelist = split(substitute(@a,'\s\{2,}','\n','g'),'\n')
+       let filelist = map(filelist,'substitute(v:val,"^\\s\\+","","")')
+       let filelist = map(filelist,'substitute(v:val,"\\s\\+$","","")')
+   endif
+"   call Decho("filelist<".string(filelist).">")
+   let @a= keeprega
+   for f in filelist
+    if f != ""
+     call netrw#NetObtain(2,f)
+    endif
+   endfor
+"   call Dret("NetObtain : visual mode handler")
+   return
+  elseif a:vismode == 2
+   " multiple file mode
+   let fname= a:1
+"   call Decho("visual mode handling: <".fname.">")
   endif
-"  call Dret("NetGetcwd <".curdir.">")
-  return curdir
-endfun
 
-" ---------------------------------------------------------------------
-" NetMethod:  determine method of transfer {{{2
-"  method == 1: rcp
-"           2: ftp + <.netrc>
-"           3: ftp + machine, id, password, and [path]filename
-"           4: scp
-"           5: http (wget)
-"           6: cadaver
-"           7: rsync
-"           8: fetch
-"           9: sftp
-fun! s:NetMethod(choice)  " globals: method machine id passwd fname
-"   call Dfunc("NetMethod(a:choice<".a:choice.">)")
+  " NetrwStatusLine support - for obtaining support
+  call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
 
-  " initialization
-  let b:netrw_method  = 0
-  let g:netrw_machine = ""
-  let b:netrw_fname   = ""
-  let g:netrw_port    = ""
-  let g:netrw_choice  = a:choice
+  if exists("w:netrw_method") && w:netrw_method =~ '[235]'
+"   call Decho("method=".w:netrw_method)
+   if executable("ftp")
+"    call Decho("ftp is executable, method=".w:netrw_method)
+    let curdir = b:netrw_curdir
+    let path   = substitute(curdir,'ftp://[^/]\+/','','e')
+    let curline= line(".")
+    let endline= line("$")+1
+    setlocal ma noro
+    keepjumps $
+"    call Decho("getcwd<".getcwd().">")
+"    call Decho("curdir<".curdir.">")
+"    call Decho("path<".path.">")
+"    call Decho("curline=".curline)
+"    call Decho("endline=".endline)
 
-  " Patterns:
-  " mipf     : a:machine a:id password filename             Use ftp
-  " mf     : a:machine filename                     Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
-  " ftpurm   : ftp://[user@]host[[#:]port]/filename  Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
-  " rcpurm   : rcp://[user@]host/filename           Use rcp
-  " rcphf    : [user@]host:filename                 Use rcp
-  " scpurm   : scp://[user@]host[[#:]port]/filename  Use scp
-  " httpurm  : http://[user@]host/filename          Use wget
-  " davurm   : [s]dav://host[:port]/path             Use cadaver
-  " rsyncurm : rsync://host[:port]/path              Use rsync
-  " fetchurm : fetch://[user@]host[:http]/filename   Use fetch (defaults to ftp, override for http)
-  " sftpurm  : sftp://[user@]host/filename  Use scp
-  let mipf     = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
-  let mf       = '^\(\S\+\)\s\+\(\S\+\)$'
-  let ftpurm   = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
-  let rcpurm   = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
-  let rcphf    = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
-  let scpurm   = '^scp://\([^/#:]\+\)\%([#:]\(\d\+\)\)\=/\(.*\)$'
-  let httpurm  = '^http://\([^/]\{-}\)\(/.*\)\=$'
-  let davurm   = '^s\=dav://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$'
-  let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
-  let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
-  let sftpurm  = '^sftp://\([^/]\{-}\)/\(.*\)\=$'
+    ".........................................
+    if w:netrw_method == 2
+     " ftp + <.netrc>: Method #2
+     setlocal ff=unix
+     if path != ""
+      put ='cd '.path
+"      call Decho("ftp:  cd ".path)
+     endif
+     put ='get '.fname
+"     call Decho("ftp:  get ".fname)
+     put ='quit'
+"     call Decho("ftp:  quit")
+     if exists("g:netrw_port") && g:netrw_port != ""
+"      call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
+      exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
+     else
+"      call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
+      exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine
+     endif
 
-"  call Decho("determine method:")
-  " Determine Method
-  " rcp://user@hostname/...path-to-file
-  if match(a:choice,rcpurm) == 0
-"   call Decho("rcp://...")
-   let b:netrw_method  = 1
-   let userid          = substitute(a:choice,rcpurm,'\1',"")
-   let g:netrw_machine = substitute(a:choice,rcpurm,'\2',"")
-   let b:netrw_fname   = substitute(a:choice,rcpurm,'\3',"")
-   if userid != ""
-    let g:netrw_uid= userid
+   ".........................................
+  elseif w:netrw_method == 3
+   " ftp + machine,id,passwd,filename: Method #3
+    setlocal ff=unix
+    if exists("g:netrw_port") && g:netrw_port != ""
+     put ='open '.g:netrw_machine.' '.g:netrw_port
+"     call Decho('ftp:  open '.g:netrw_machine.' '.g:netrw_port)
+    else
+     put ='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.'\"'
+"     call Decho('ftp:  g:netrw_uid')
+"     call Decho('ftp:  g:netrw_passwd')
+    else
+     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
+"     call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
+    endif
+
+   if path != ""
+    put ='cd '.path
+"    call Decho('cd '.a:path)
    endif
+   put ='get '.fname
+"   call Decho("ftp:  get ".fname)
+   put ='quit'
+"   call Decho("ftp:  quit")
 
-  " scp://user@hostname/...path-to-file
-  elseif match(a:choice,scpurm) == 0
-"   call Decho("scp://...")
-   let b:netrw_method  = 4
-   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',"")
+    " 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
+     call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",28)
+    endif
+    " restore
+    exe "silent! ".endline.",$d"
+    exe "keepjumps ".curline
+    setlocal noma nomod ro
+   else
+"    call Decho("ftp not executable")
+    if !exists("g:netrw_quiet")
+     call netrw#ErrorMsg(s:ERROR,"this system doesn't support ftp",29)
+    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
+
+  ".........................................
+  else
+   " scp: Method#4
+"   call Decho("using scp")
+   let curdir = b:netrw_curdir
+   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
+    let useport= ""
+   endif
+"   call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." .")
+   exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ."
+   endif
+  endif
+
+  " restore status line
+  let &stl        = s:netrw_users_stl
+  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
+
+" ---------------------------------------------------------------------
+" NetPrevWinOpen: open file/directory in previous window.  {{{2
+"   If there's only one window, then the window will first be split.
+fun! s:NetPrevWinOpen(islocal)
+"  call Dfunc("NetPrevWinOpen(islocal=".a:islocal.")")
+
+  " get last window number and the word currently under the cursor
+  let lastwinnr = winnr("$")
+  let curword   = s:NetGetWord()
+"  call Decho("lastwinnr=".lastwinnr." curword<".curword.">")
+
+  let didsplit  = 0
+  if lastwinnr == 1
+   " if only one window, open a new one first
+"   call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")")
+   exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"
+   let didsplit  = 1
+
+  else
+   wincmd p
+   " if the previous window's buffer has been changed (is modified),
+   " and it doesn't appear in any other extant window, then ask the
+   " user if s/he wants to abandon modifications therein.
+   let bnr    = winbufnr(0)
+   let bnrcnt = 0
+   if &mod
+    windo if winbufnr(0) == bnr | let bnrcnt=bnrcnt+1 | endif
+"    call Decho("bnr=".bnr." bnrcnt=".bnrcnt)
+    if bnrcnt == 1
+     let bufname= bufname(winbufnr(winnr()))
+     let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel")
+
+     if choice == 1
+      " Yes -- write file & then browse
+      let v:errmsg= ""
+      silent w
+      if v:errmsg != ""
+       call netrw#ErrorMsg(s:ERROR,"unable to write <".bufname.">!",30)
+       if didsplit
+               q
+       else
+               wincmd p
+       endif
+"       call Dret("NetPrevWinOpen : unable to write <".bufname.">")
+       return
+      endif
+
+     elseif choice == 2
+      " No -- don't worry about changed file, just browse anyway
+      setlocal nomod
+      call netrw#ErrorMsg(s:WARNING,bufname." changes abandoned",31)
+
+     else
+      " Cancel -- don't do this
+      if didsplit
+       q
+      else
+       wincmd p
+      endif
+"      call Dret("NetPrevWinOpen : cancelled")
+      return
+     endif
+    endif
+   endif
+  endif
+
+  if a:islocal
+   call netrw#LocalBrowseCheck(s:NetBrowseChgDir(a:islocal,curword))
+  else
+   call s:NetBrowse(a:islocal,s:NetBrowseChgDir(a:islocal,curword))
+  endif
+"  call Dret("NetPrevWinOpen")
+endfun
+
+" ---------------------------------------------------------------------
+" NetMenu: generates the menu for gvim and netrw {{{2
+fun! s:NetMenu(domenu)
+
+  if !exists("g:NetrwMenuPriority")
+   let g:NetrwMenuPriority= 80
+  endif
+
+  if has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+"   call Dfunc("NetMenu(domenu=".a:domenu.")")
+
+   if !exists("s:netrw_menu_enabled") && a:domenu
+"    call Decho("initialize menu")
+    let s:netrw_menu_enabled= 1
+    exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1>     <F1>'
+    call s:NetBookmarkMenu() " provide some history!
+    exe 'silent! menu '.g:NetrwMenuPriority.'.4 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-   -'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x      x'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory<tab>mb       mb'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory<tab>gb        gb'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.8 '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory<tab>u       u'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.9 '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory<tab>U   U'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D     D'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.11 '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List<tab>'."<ctrl-h> \<c-h>"
+    exe 'silent! menu '.g:NetrwMenuPriority.'.12 '.g:NetrwTopLvlMenu.'Edit\ File/Directory<tab><cr>    '."\<cr>"
+    exe 'silent! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window<tab>o o'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.14 '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window<tab>v       v'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History<tab>q      q'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.16 '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)<tab>i   i'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d d'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Normal-Hide-Show<tab>a   a'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.19 '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O       O'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.20 '.g:NetrwTopLvlMenu.'Preview\ File/Directory<tab>p    p'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.21 '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser<tab>P  P'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.22 '.g:NetrwTopLvlMenu.'Refresh\ Listing<tab>'."<ctrl-l> \<c-l>"
+    exe 'silent! menu '.g:NetrwMenuPriority.'.23 '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R     R'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.24 '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order<tab>'."r r"
+    exe 'silent! menu '.g:NetrwMenuPriority.'.25 '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style<tab>s     s'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.26 '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit<tab>S    S'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.27 '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c    c'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.28 '.g:NetrwTopLvlMenu.'Settings/Options<tab>:NetrwSettings      '.":NetrwSettings\<cr>"
+    let s:netrw_menucnt= 28
+
+   elseif !a:domenu
+    let s:netrwcnt = 0
+    let curwin     = winnr()
+    windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif
+    exe curwin."wincmd w"
+    
+    if s:netrwcnt <= 1
+"     call Decho("clear menus")
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Help'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Delete\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory\ (vertical\ split)'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Make\ Subdirectory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Normal-Hide-Show'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Obtain\ File'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Preview\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Refresh\ Listing'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Rename\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Settings/Options'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
+     silent! unlet s:netrw_menu_enabled
+    endif
+   endif
+"   call Dret("NetMenu")
+  endif
+
+endfun
+
+" ==========================================
+"  Local Directory Browsing Support:    {{{1
+" ==========================================
+
+" ---------------------------------------------------------------------
+" LocalBrowseCheck: {{{2
+fun! netrw#LocalBrowseCheck(dirname)
+  " unfortunate interaction -- split window debugging can't be
+"  " used here, must use DechoRemOn or DechoTabOn -- the BufEnter
+  " event triggers another call to LocalBrowseCheck() when attempts
+  " to write to the DBG buffer are made.
+"  call Dfunc("LocalBrowseCheck(dirname<".a:dirname.">")
+  if isdirectory(a:dirname)
+   silent! call s:NetBrowse(1,a:dirname)
+  endif
+"  call Dret("LocalBrowseCheck")
+  " not a directory, ignore it
+endfun
+
+" ---------------------------------------------------------------------
+"  LocalListing: does the job of "ls" for local directories {{{2
+fun! s:LocalListing()
+"  call Dfunc("LocalListing() &ma=".&ma." &mod=".&mod." &ro=".&ro)
+"  if exists("b:netrw_curdir") |call Decho('b:netrw_curdir<'.b:netrw_curdir.">")  |else|call Decho("b:netrw_curdir doesn't exist") |endif
+"  if exists("g:netrw_sort_by")|call Decho('g:netrw_sort_by<'.g:netrw_sort_by.">")|else|call Decho("g:netrw_sort_by doesn't exist")|endif
+
+  " get the list of files contained in the current directory
+  let dirname    = escape(b:netrw_curdir,s:netrw_glob_escape)
+  let dirnamelen = strlen(b:netrw_curdir)
+  let filelist   = glob(s:ComposePath(dirname,"*"))
+"  call Decho("glob(dirname<".dirname."/*>)=".filelist)
+  if filelist != ""
+   let filelist= filelist."\n"
+  endif
+  let filelist= filelist.glob(s:ComposePath(dirname,".*"))
+"  call Decho("glob(dirname<".dirname."/.*>)=".glob(dirname.".*"))
+
+  " if the directory name includes a "$", and possibly other characters,
+  " the glob() doesn't include "." and ".." entries.
+  if filelist !~ '[\\/]\.[\\/]\=\(\n\|$\)'
+"   call Decho("forcibly tacking on .")
+   if filelist == ""
+    let filelist= s:ComposePath(dirname,"./")
+   else
+    let filelist= filelist."\n".s:ComposePath(b:netrw_curdir,"./")
+   endif
+"  call Decho("filelist<".filelist.">")
+  endif
+  if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)'
+"   call Decho("forcibly tacking on ..")
+   let filelist= filelist."\n".s:ComposePath(b:netrw_curdir,"../")
+"   call Decho("filelist<".filelist.">")
+  endif
+  if b:netrw_curdir == '/'
+   " remove .. from filelist when current directory is root directory
+   let filelist= substitute(filelist,'/\.\.\n','','')
+"   call Decho("remove .. from filelist")
+  endif
+  let filelist= substitute(filelist,'\n\{2,}','\n','ge')
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+   let filelist= substitute(filelist,'\','/','ge')
+  else
+   let filelist= substitute(filelist,'\','\\','ge')
+  endif
+
+"  call Decho("dirname<".dirname.">")
+"  call Decho("dirnamelen<".dirnamelen.">")
+"  call Decho("filelist<".filelist.">")
+
+  while filelist != ""
+   if filelist =~ '\n'
+    let filename = substitute(filelist,'\n.*$','','e')
+    let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
+   else
+    let filename = filelist
+    let filelist = ""
+   endif
+   let pfile= filename
+   if isdirectory(filename)
+    let pfile= filename."/"
+   endif
+   if pfile =~ '//$'
+    let pfile= substitute(pfile,'//$','/','e')
+   endif
+   let pfile= strpart(pfile,dirnamelen)
+   let pfile= substitute(pfile,'^[/\\]','','e')
+"   call Decho(" ")
+"   call Decho("filename<".filename.">")
+"   call Decho("pfile   <".pfile.">")
+
+   if w:netrw_liststyle == s:LONGLIST
+    let sz   = getfsize(filename)
+    let fsz  = strpart("               ",1,15-strlen(sz)).sz
+    let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
+"    call Decho("sz=".sz." fsz=".fsz)
+   endif
+
+   if     g:netrw_sort_by =~ "^t"
+    " sort by time (handles time up to 1 quintillion seconds, US)
+"    call Decho("getftime(".filename.")=".getftime(filename))
+    let t  = getftime(filename)
+    let ft = strpart("000000000000000000",1,18-strlen(t)).t
+"    call Decho("exe keepjumps put ='".ft.'/'.filename."'")
+    let ftpfile= ft.'/'.pfile
+    keepjumps silent! put=ftpfile
+
+   elseif g:netrw_sort_by =~ "^s"
+    " sort by size (handles file sizes up to 1 quintillion bytes, US)
+"    call Decho("getfsize(".filename.")=".getfsize(filename))
+    let sz   = getfsize(filename)
+    let fsz  = strpart("000000000000000000",1,18-strlen(sz)).sz
+"    call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
+    let fszpfile= fsz.'/'.pfile
+    keepjumps silent! put =fszpfile
+
+   else 
+    " sort by name
+"    call Decho("exe keepjumps put ='".pfile."'")
+    keepjumps silent! put=pfile
+   endif
+  endwhile
+
+  " cleanup any windows mess at end-of-line
+  silent! keepjumps %s/\r$//e
+  setlocal ts=32
+"  call Decho("setlocal ts=32")
+
+"  call Dret("LocalListing")
+endfun
+
+" ---------------------------------------------------------------------
+" LocalBrowseShellCmdRefresh: this function is called after a user has {{{2
+" performed any shell command.  The idea is to cause all local-browsing
+" buffers to be refreshed after a user has executed some shell command,
+" on the chance that s/he removed/created a file/directory with it.
+fun! s:LocalBrowseShellCmdRefresh()
+"  call Dfunc("LocalBrowseShellCmdRefresh() browselist=".string(s:netrw_browselist))
+  " determine which buffers currently reside in a tab
+  let itab       = 1
+  let buftablist = []
+  while itab <= tabpagenr("$")
+   let buftablist= buftablist + tabpagebuflist()
+   let itab= itab + 1
+   tabn
+  endwhile
+"  call Decho("buftablist".string(buftablist))
+  "  GO through all buffers on netrw_browselist (ie. just local-netrw buffers):
+  "   | refresh any netrw window
+  "   | wipe out any non-displaying netrw buffer
+  let curwin = winnr()
+  let ibl    = 0
+  for ibuf in s:netrw_browselist
+"   call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf))
+   if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1
+"    call Decho("wiping  buf#".ibuf,"<".bufname(ibuf).">")
+    exe "silent! bw ".ibuf
+    call remove(s:netrw_browselist,ibl)
+"    call Decho("browselist=".string(s:netrw_browselist))
+    continue
+   elseif index(tabpagebuflist(),ibuf) != -1
+"    call Decho("refresh buf#".ibuf.'-> win#'.bufwinnr(ibuf))
+    exe bufwinnr(ibuf)."wincmd w"
+    call s:NetRefresh(1,s:NetBrowseChgDir(1,'./'))
+   endif
+   let ibl= ibl + 1
+  endfor
+  exe curwin."wincmd w"
+
+"  call Dret("LocalBrowseShellCmdRefresh")
+endfun
+
+" ---------------------------------------------------------------------
+" LocalBrowseRm: {{{2
+fun! s:LocalBrowseRm(path) range
+"  call Dfunc("LocalBrowseRm(path<".a:path.">)")
+"  call Decho("firstline=".a:firstline." lastline=".a:lastline)
+
+  " preparation for removing multiple files/directories
+  let ctr           = a:firstline
+  let ret           = 0
+  let all= 0
+
+  " remove multiple files and directories
+  while ctr <= a:lastline
+   exe "keepjumps ".ctr
+
+   " sanity checks
+   if line(".") < w:netrw_bannercnt
+    let ctr= ctr + 1
+    continue
+   endif
+   let curword= s:NetGetWord()
+   if curword == "./" || curword == "../"
+    let ctr= ctr + 1
+    continue
+   endif
+
+   norm! 0
+   let rmfile= s:ComposePath(a:path,curword)
+"   call Decho("rmfile<".rmfile.">")
+
+   if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
+    " attempt to remove file
+    if !all
+     echohl Statement
+     call inputsave()
+     let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
+     call inputrestore()
+     echohl NONE
+     if ok == ""
+      let ok="no"
+     endif
+"     call Decho("response: ok<".ok.">")
+     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
+"     call Decho("response: ok<".ok."> (after sub)")
+     if ok =~ 'a\%[ll]'
+      let all= 1
+     endif
+    endif
+
+    if all || ok =~ 'y\%[es]' || ok == ""
+     let ret= s:System("delete",rmfile)
+"     call Decho("errcode=".v:shell_error." ret=".ret)
+    elseif ok =~ 'q\%[uit]'
+     break
+    endif
+
+   else
+    " attempt to remove directory
+    if !all
+     echohl Statement
+     call inputsave()
+     let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
+     call inputrestore()
+     let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
+     if ok == ""
+      let ok="no"
+     endif
+     if ok =~ 'a\%[ll]'
+      let all= 1
+     endif
+    endif
+    let rmfile= substitute(rmfile,'[\/]$','','e')
+
+    if all || ok =~ 'y\%[es]' || ok == ""
+"     call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")')
+     call s:System("system",g:netrw_local_rmdir.' "'.rmfile.'"')
+"     call Decho("v:shell_error=".v:shell_error)
+
+     if v:shell_error != 0
+"      call Decho("2nd attempt to remove directory<".rmfile.">")
+      let errcode= s:System("delete",rmfile)
+"      call Decho("errcode=".errcode)
+
+      if errcode != 0
+       if has("unix")
+"        call Decho("3rd attempt to remove directory<".rmfile.">")
+        call s:System("system","rm ".rmfile)
+        if v:shell_error != 0 && !exists("g:netrw_quiet")
+        call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",34)
+endif
+       elseif !exists("g:netrw_quiet")
+               call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",35)
+       endif
+      endif
+     endif
+
+    elseif ok =~ 'q\%[uit]'
+     break
+    endif
+   endif
+
+   let ctr= ctr + 1
+  endwhile
+
+  " refresh the directory
+  let curline= line(".")
+"  call Decho("refresh the directory")
+  call s:NetRefresh(1,s:NetBrowseChgDir(1,'./'))
+  exe curline
+
+"  call Dret("LocalBrowseRm")
+endfun
+
+" ---------------------------------------------------------------------
+" LocalBrowseRename: rename a remote file or directory {{{2
+fun! s:LocalBrowseRename(path) range
+"  call Dfunc("LocalBrowseRename(path<".a:path.">)")
+
+  " preparation for removing multiple files/directories
+  let ctr= a:firstline
+
+  " attempt to rename files/directories
+  while ctr <= a:lastline
+   exe "keepjumps ".ctr
+
+   " sanity checks
+   if line(".") < w:netrw_bannercnt
+    let ctr= ctr + 1
+    continue
+   endif
+   let curword= s:NetGetWord()
+   if curword == "./" || curword == "../"
+    let ctr= ctr + 1
+    continue
+   endif
+
+   norm! 0
+   let oldname= s:ComposePath(a:path,curword)
+"   call Decho("oldname<".oldname.">")
+
+   call inputsave()
+   let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
+   call inputrestore()
+
+   let ret= rename(oldname,newname)
+"   call Decho("renaming <".oldname."> to <".newname.">")
+
+   let ctr= ctr + 1
+  endwhile
+
+  " refresh the directory
+"  call Decho("refresh the directory listing")
+  call netrw#NetSavePosn()
+  call s:NetRefresh(1,s:NetBrowseChgDir(1,'./'))
+"  call Dret("LocalBrowseRename")
+endfun
+
+" ---------------------------------------------------------------------
+" LocalFastBrowser: handles setting up/taking down fast browsing for the {{{2
+"                   local browser
+"     fastbrowse  Local  Remote   Hiding a buffer implies it may be re-used (fast)
+"  slow   0         D      D      Deleting a buffer implies it will not be re-used (slow)
+"  med    1         D      H
+"  fast   2         H      H
+fun! s:LocalFastBrowser()
+"  call Dfunc("LocalFastBrowser() g:netrw_fastbrowse=".g:netrw_fastbrowse)
+
+  " initialize browselist, a list of buffer numbers that the local browser has used
+  if !exists("s:netrw_browselist")
+"   call Decho("initialize s:netrw_browselist")
+   let s:netrw_browselist= []
+  endif
+
+  " append current buffer to fastbrowse list
+  if g:netrw_fastbrowse <= 1 && (empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1])
+"   call Decho("appendng current buffer to browselist")
+   call add(s:netrw_browselist,bufnr("%"))
+"   call Decho("browselist=".string(s:netrw_browselist))
+  endif
+
+  " enable autocmd events to handle refreshing/removing local browser buffers
+  "    If local browse buffer is currently showing: refresh it
+  "    If local browse buffer is currently hidden : wipe it
+  if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1
+"   call Decho("setting up local-browser shell command refresh")
+   let s:netrw_browser_shellcmd= 1
+   augroup AuNetrwShellCmd
+    au!
+    if (has("win32") || has("win95") || has("win64") || has("win16"))
+     au ShellCmdPost * call s:LocalBrowseShellCmdRefresh()
+    else
+     au ShellCmdPost,FocusGained *     call s:LocalBrowseShellCmdRefresh()
+    endif
+   augroup END
+  endif
+
+  " user must have changed fastbrowse to its fast setting, so remove
+  " the associated autocmd events
+  if g:netrw_fastbrowse > 1 && exists("s:netrw_browser_shellcmd")
+"   call Decho("remove AuNetrwShellCmd autcmd group")
+   unlet s:netrw_browser_shellcmd
+   augroup AuNetrwShellCmd
+    au!
+   augroup END
+   augroup! AuNetrwShellCmd
+  endif
+
+"  call Dret("LocalFastBrowser")
+endfun
+
+" ---------------------------------------------------------------------
+" LocalObtain: copy selected file to current working directory {{{2
+fun! s:LocalObtain()
+"  call Dfunc("LocalObtain()")
+  if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir
+   let fname= expand("<cWORD>")
+   let fcopy= readfile(b:netrw_curdir."/".fname,"b")
+   call writefile(fcopy,getcwd()."/".fname,"b")
+  elseif !exists("b:netrw_curdir")
+   call netrw#ErrorMsg(s:ERROR,"local browsing directory doesn't exist!",36)
+  else
+   call netrw#ErrorMsg(s:ERROR,"local browsing directory and current directory are identical",37)
+  endif
+"  call Dret("LocalObtain")
+endfun
 
-  " 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',"")
+" ---------------------------------------------------------------------
+" netrw#Explore: launch the local browser in the directory of the current file {{{2
+"          dosplit==0: the window will be split iff the current file has
+"                      been modified
+"          dosplit==1: the window will be split before running the local
+"                      browser
+fun! netrw#Explore(indx,dosplit,style,...)
+"  call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified)
+  if !exists("b:netrw_curdir")
+   let b:netrw_curdir= getcwd()
+  endif
+  let curfile      = b:netrw_curdir
+"  call Decho("curfile<".curfile.">")
 
-  " dav://hostname[:port]/..path-to-file..
-  elseif match(a:choice,davurm) == 0
-"   call Decho("dav://...")
-   let b:netrw_method= 6
-   if a:choice =~ '^s'
-    let g:netrw_machine= 'https://'.substitute(a:choice,davurm,'\1/\2',"")
-   else
-    let g:netrw_machine= 'http://'.substitute(a:choice,davurm,'\1/\2',"")
-   endif
-   let b:netrw_fname  = substitute(a:choice,davurm,'\3',"")
+  " save registers
+  silent! let keepregstar = @*
+  silent! let keepregplus = @+
+  silent! let keepregslash= @/
 
-  " 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',"")
+  " if dosplit or file has been modified
+  if a:dosplit || &modified || a:style == 6
+"   call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style)
+   call s:SaveWinVars()
 
-  " ftp://[user@]hostname[[:#]port]/...path-to-file
-  elseif match(a:choice,ftpurm) == 0
-"   call Decho("ftp://...")
-   let userid        = substitute(a:choice,ftpurm,'\2',"")
-   let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
-   let g:netrw_port   = substitute(a:choice,ftpurm,'\4',"")
-   let b:netrw_fname  = substitute(a:choice,ftpurm,'\5',"")
-   if userid != ""
-    let g:netrw_uid= userid
-   endif
-   if exists("g:netrw_uid") && exists("g:netrw_passwd")
-    let b:netrw_method = 3
-   else
-    if filereadable(expand("$HOME/.netrc")) && !exists("g:netrw_ignorenetrc")
-     let b:netrw_method= 2
-    else
-     if !exists("g:netrw_uid") || g:netrw_uid == ""
-      call NetUserPass()
-     elseif !exists("g:netrw_passwd") || g:netrw_passwd == ""
-      call NetUserPass(g:netrw_uid)
-    " else just use current g:netrw_uid and g:netrw_passwd
-     endif
-     let b:netrw_method= 3
-    endif
-   endif
+   if a:style == 0      " Explore, Sexplore
+"    call Decho("style=0: Explore or Sexplore")
+    exe g:netrw_winsize."wincmd s"
 
-  elseif match(a:choice,fetchurm) == 0
-"   call Decho("fetch://...")
-   let b:netrw_method = 8
-   let g:netrw_userid = substitute(a:choice,fetchurm,'\2',"")
-   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',"")
+   elseif a:style == 1  "Explore!, Sexplore!
+"    call Decho("style=1: Explore! or Sexplore!")
+    exe g:netrw_winsize."wincmd v"
 
-  " Issue an ftp : "machine id password [path/]filename"
-  elseif match(a:choice,mipf) == 0
-"   call Decho("(ftp) host id pass file")
-   let b:netrw_method  = 3
-   let g:netrw_machine = substitute(a:choice,mipf,'\1',"")
-   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',"")
+   elseif a:style == 2  " Hexplore
+"    call Decho("style=2: Hexplore")
+    exe "bel ".g:netrw_winsize."wincmd s"
 
-  " Issue an ftp: "hostname [path/]filename"
-  elseif match(a:choice,mf) == 0
-"   call Decho("(ftp) host file")
-   if exists("g:netrw_uid") && exists("g:netrw_passwd")
-    let b:netrw_method  = 3
-    let g:netrw_machine = substitute(a:choice,mf,'\1',"")
-    let b:netrw_fname   = substitute(a:choice,mf,'\2',"")
+   elseif a:style == 3  " Hexplore!
+"    call Decho("style=3: Hexplore!")
+    exe "abo ".g:netrw_winsize."wincmd s"
 
-   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
+   elseif a:style == 4  " Vexplore
+"    call Decho("style=4: Vexplore")
+    exe "lefta ".g:netrw_winsize."wincmd v"
 
-  " 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',"")
+   elseif a:style == 5  " Vexplore!
+"    call Decho("style=5: Vexplore!")
+    exe "rightb ".g:netrw_winsize."wincmd v"
 
-  " Issue an rcp: hostname:filename"  (this one should be last)
-  elseif match(a:choice,rcphf) == 0
-"   call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">")
-   let b:netrw_method = 1
-   let userid       = substitute(a:choice,rcphf,'\2',"")
-   let g:netrw_machine= substitute(a:choice,rcphf,'\3',"")
-   let b:netrw_fname  = substitute(a:choice,rcphf,'\4',"")
-"   call Decho('\1<'.substitute(a:choice,rcphf,'\1',"").">")
-"   call Decho('\2<'.substitute(a:choice,rcphf,'\2',"").">")
-"   call Decho('\3<'.substitute(a:choice,rcphf,'\3',"").">")
-"   call Decho('\4<'.substitute(a:choice,rcphf,'\4',"").">")
-   if userid != ""
-    let g:netrw_uid= userid
-   endif
-   if has("win32") || has("win95") || has("win64") || has("win16")
-    " don't let PCs try <.netrc>
-    let b:netrw_method = 3
+   elseif a:style == 6  " Texplore
+    call s:SaveBufVars()
+"    call Decho("style  = 6: Texplore")
+    tabnew
+    call s:RestoreBufVars()
    endif
+   call s:RestoreWinVars()
+  endif
+  norm! 0
 
-  else
-   if !exists("g:netrw_quiet")
-    echohl Error | echo "***netrw*** cannot determine method" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"  call Decho("a:1<".a:1.">")
+  if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin))
+   let dirname= substitute(a:1,'\~',expand("$HOME"),'')
+"   call Decho("using dirname<".dirname.">  (case: ~ && unix||cygwin)")
+  elseif a:1 == '.'
+   let dirname= exists("b:netrw_curdir")? b:netrw_curdir : getcwd()
+   if dirname !~ '/$'
+    let dirname= dirname."/"
    endif
-   let b:netrw_method  = -1
+"   call Decho("using dirname<".dirname.">  (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")")
+  else
+   let dirname= a:1
+"   call Decho("using dirname<".dirname.">")
   endif
 
-  " remove any leading [:#] from port number
-  if g:netrw_port != ""
-    let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
+  if dirname =~ '^\*/'
+   " Explore */pattern
+"   call Decho("case Explore */pattern")
+   let pattern= substitute(dirname,'^\*/\(.*\)$','\1','')
+"   call Decho("Explore */pat: dirname<".dirname."> -> pattern<".pattern.">")
+   if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
+  elseif dirname =~ '^\*\*//'
+   " Explore **//pattern
+"   call Decho("case Explore **//pattern")
+   let pattern     = substitute(dirname,'^\*\*//','','')
+   let starstarpat = 1
+"   call Decho("Explore **//pat: dirname<".dirname."> -> pattern<".pattern.">")
   endif
 
-"  call Decho("a:choice       <".a:choice.">")
-"  call Decho("b:netrw_method <".b:netrw_method.">")
-"  call Decho("g:netrw_machine<".g:netrw_machine.">")
-"  call Decho("g:netrw_port   <".g:netrw_port.">")
-"  if exists("g:netrw_uid")            "Decho
-"   call Decho("g:netrw_uid    <".g:netrw_uid.">")
-"  endif                                       "Decho
-"  if exists("g:netrw_passwd")         "Decho
-"   call Decho("g:netrw_passwd <".g:netrw_passwd.">")
-"  endif                                       "Decho
-"  call Decho("b:netrw_fname  <".b:netrw_fname.">")
-"  call Dret("NetMethod : b:netrw_method=".b:netrw_method)
-endfun
+  if dirname == "" && a:indx >= 0
+   " Explore Hexplore Vexplore Sexplore
+"   call Decho("case Explore Hexplore Vexplore Sexplore")
+   let newdir= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
+   if newdir =~ '^scp:' || newdir =~ '^ftp:'
+"    call Decho("calling NetBrowse(0,newdir<".newdir.">)")
+    call s:NetBrowse(0,newdir)
+   else
+    if newdir == ""|let newdir= getcwd()|endif
+"    call Decho("calling LocalBrowseCheck(newdir<".newdir.">)")
+    call netrw#LocalBrowseCheck(newdir)
+   endif
+   call search('\<'.substitute(curfile,'^.*/','','e').'\>','cW')
 
-" ------------------------------------------------------------------------
-" NetUserPass: set username and password for subsequent ftp transfer {{{2
-"   Usage:  :call NetUserPass()                        -- will prompt for userid and password
-"          :call NetUserPass("uid")            -- will prompt for password
-"          :call NetUserPass("uid","password") -- sets global userid and password
-fun! NetUserPass(...)
+  elseif dirname =~ '^\*\*/' || a:indx < 0 || dirname =~ '^\*/'
+   " Nexplore, Pexplore, Explore **/... , or Explore */pattern
+"   call Decho("case Nexplore, Pexplore, <s-down>, <s-up>, Explore dirname<".dirname.">")
+   if !mapcheck("<s-up>","n") && !mapcheck("<s-down>","n") && exists("b:netrw_curdir")
+"    call Decho("set up <s-up> and <s-down> maps")
+    let s:didstarstar= 1
+    nnoremap <buffer> <silent> <s-up>  :Pexplore<cr>
+    nnoremap <buffer> <silent> <s-down>        :Nexplore<cr>
+   endif
 
- " get/set userid
- if a:0 == 0
-"  call Dfunc("NetUserPass(a:0<".a:0.">)")
-  if !exists("g:netrw_uid") || g:netrw_uid == ""
-   " via prompt
-   let g:netrw_uid= input('Enter username: ')
-  endif
- else  " from command line
-"  call Dfunc("NetUserPass(a:1<".a:1.">) {")
-  let g:netrw_uid= a:1
- endif
+   if has("path_extra")
+"    call Decho("has path_extra")
+    if !exists("w:netrw_explore_indx")
+     let w:netrw_explore_indx= 0
+    endif
+    let indx = a:indx
+"    call Decho("set indx= [a:indx=".indx."]")
+"
+    if indx == -1
+     "Nexplore
+"     call Decho("case Nexplore: (indx=".indx.")")
+     if !exists("w:netrw_explore_list") " sanity check
+      call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
+      silent! let @* = keepregstar
+      silent! let @+ = keepregstar
+      silent! let @/ = keepregslash
+"      call Dret("netrw#Explore")
+      return
+     endif
+     let indx= w:netrw_explore_indx
+     if indx < 0                        | let indx= 0                           | endif
+     if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif
+     let curfile= w:netrw_explore_list[indx]
+"     call Decho("indx=".indx." curfile<".curfile.">")
+     while indx < w:netrw_explore_listlen && curfile == w:netrw_explore_list[indx]
+      let indx= indx + 1
+"      call Decho("indx=".indx." (Nexplore while loop)")
+     endwhile
+     if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif
+"     call Decho("Nexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
 
- " get password
- if a:0 <= 1 " via prompt
-"  call Decho("a:0=".a:0." case <=1:")
-  let g:netrw_passwd= inputsecret("Enter Password: ")
- else " from command line
-"  call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
-  let g:netrw_passwd=a:2
- endif
+    elseif indx == -2
+     "Pexplore
+"     call Decho("case Pexplore: (indx=".indx.")")
+     if !exists("w:netrw_explore_list") " sanity check
+      call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
+      silent! let @* = keepregstar
+      silent! let @+ = keepregstar
+      silent! let @/ = keepregslash
+"      call Dret("netrw#Explore")
+      return
+     endif
+     let indx= w:netrw_explore_indx
+     if indx < 0                        | let indx= 0                           | endif
+     if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif
+     let curfile= w:netrw_explore_list[indx]
+"     call Decho("indx=".indx." curfile<".curfile.">")
+     while indx >= 0 && curfile == w:netrw_explore_list[indx]
+      let indx= indx - 1
+"      call Decho("indx=".indx." (Pexplore while loop)")
+     endwhile
+     if indx < 0                        | let indx= 0                           | endif
+"     call Decho("Pexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
+
+    else
+     " Explore -- initialize
+     " build list of files to Explore with Nexplore/Pexplore
+"     call Decho("case Explore: initialize (indx=".indx.")")
+     let w:netrw_explore_indx= 0
+     if !exists("b:netrw_curdir")
+      let b:netrw_curdir= getcwd()
+     endif
+"     call Decho("b:netrw_curdir<".b:netrw_curdir.">")
+
+     if exists("pattern")
+"      call Decho("pattern exists: building list pattern<".pattern."> cwd<".getcwd().">")
+      if exists("starstarpat")
+"       call Decho("starstarpat<".starstarpat.">")
+       try
+        exe "silent vimgrep /".pattern."/gj "."**/*"
+       catch /^Vim\%((\a\+)\)\=:E480/
+               call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
+        if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
+        silent! let @* = keepregstar
+        silent! let @+ = keepregstar
+       silent! let @/ = keepregslash
+"        call Dret("netrw#Explore : no files matched pattern")
+        return
+       endtry
+       let s:netrw_curdir       = b:netrw_curdir
+       let w:netrw_explore_list = getqflist()
+       let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)')
+      else
+"       call Decho("no starstarpat")
+       exe "vimgrep /".pattern."/gj ".b:netrw_curdir."/*"
+       let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)')
+       if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
+      endif
+     else
+"      call Decho("no pattern: building list based on ".b:netrw_curdir."/".dirname)
+      let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
+      if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
+     endif
+
+     let w:netrw_explore_listlen = len(w:netrw_explore_list)
+"     call Decho("w:netrw_explore_list<".string(w:netrw_explore_list)."> listlen=".w:netrw_explore_listlen)
+
+     if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/')
+      call netrw#ErrorMsg(s:WARNING,"no files matched",42)
+      silent! let @* = keepregstar
+      silent! let @+ = keepregstar
+      silent! let @/ = keepregslash
+"      call Dret("netrw#Explore : no files matched")
+      return
+     endif
+    endif
+
+    " NetrwStatusLine support - for exploring support
+    let w:netrw_explore_indx= indx
+"    call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
+
+    " wrap the indx around, but issue a note
+    if indx >= w:netrw_explore_listlen || indx < 0
+"     call Decho("wrap indx (indx=".indx." listlen=".w:netrw_explore_listlen.")")
+     let indx                = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0
+     let w:netrw_explore_indx= indx
+     call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43)
+     sleep 1
+    endif
+
+    exe "let dirfile= w:netrw_explore_list[".indx."]"
+"    call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
+    let newdir= substitute(dirfile,'/[^/]*$','','e')
+"    call Decho("newdir<".newdir.">")
+
+"    call Decho("calling LocalBrowseCheck(newdir<".newdir.">)")
+    call netrw#LocalBrowseCheck(newdir)
+    if !exists("w:netrw_liststyle")
+     let w:netrw_liststyle= g:netrw_liststyle
+    endif
+    if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST
+     call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
+    else
+     call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
+    endif
+    let w:netrw_explore_mtchcnt = indx + 1
+    let w:netrw_explore_bufnr   = bufnr("%")
+    let w:netrw_explore_line    = line(".")
+    call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
+"    call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
 
-"  call Dret("NetUserPass")
-endfun
+   else
+"    call Decho("vim does not have path_extra")
+    if !exists("g:netrw_quiet")
+     call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
+    endif
+    silent! let @* = keepregstar
+    silent! let @+ = keepregstar
+    silent! let @/ = keepregslash
+"    call Dret("netrw#Explore : missing +path_extra")
+    return
+   endif
 
-" ------------------------------------------------------------------------
-" NetOptionSave: save options and set to "standard" form {{{2
-fun! s:NetOptionSave()
-"  call Dfunc("NetOptionSave()")
-  if !exists("w:netoptionsave")
-   let w:netoptionsave= 1
   else
-"   call Dret("NetOptionSave : netoptionsave=".w:netoptionsave)
-   return
+"   call Decho("case Explore newdir<".dirname.">")
+   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/'
+    silent! unlet w:netrw_treedict
+    silent! unlet w:netrw_treetop
+   endif
+   let newdir= dirname
+   if !exists("b:netrw_curdir")
+    call netrw#LocalBrowseCheck(getcwd())
+   else
+    call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,newdir))
+   endif
   endif
 
-  " Get Temporary Filename
-  if exists("&acd")
-   let w:acdkeep  = &acd
-  endif
-  let w:aikeep    = &ai
-  let w:fokeep    = &fo
-  let w:cikeep    = &ci
-  let w:cinkeep   = &cin
-  let w:cinokeep  = &cino
-  let w:comkeep   = &com
-  let w:cpokeep   = &cpo
-  let w:hidkeep   = &hidden
-  let w:magickeep = &magic
-  if !g:netrw_keepdir
-   let w:dirkeep  = getcwd()
-  endif
-  let w:gdkeep    = &gd
-  let w:repkeep   = &report
-  let w:spellkeep = &spell
-  let w:twkeep    = &tw
-  setlocal cino =
-  setlocal com  =
-  setlocal cpo -=aA
-  if exists("&acd")
-   setlocal noacd nocin noai noci magic nospell fo=nroql2 nohid
-  else
-   setlocal nocin noai noci magic nospell fo=nroql2 nohid
-  endif
-  setlocal tw   =0
-  setlocal report=10000
-  if has("win32") && !has("win95")
-   let w:swfkeep= &swf
-   setlocal noswf
-"  call Decho("setting w:swfkeep to <".&swf.">")
-  endif
+  silent! let @* = keepregstar
+  silent! let @+ = keepregstar
+  silent! let @/ = keepregslash
+"  call Dret("netrw#Explore : @/<".@/.">")
+endfun
 
-"  call Dret("NetOptionSave")
+" ---------------------------------------------------------------------
+" s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2
+fun! s:ExplorePatHls(pattern)
+"  call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)")
+  let repat= substitute(a:pattern,'^**/\{1,2}','','')
+"  call Decho("repat<".repat.">")
+  let repat= escape(repat,'][.\')
+"  call Decho("repat<".repat.">")
+  let repat= '\<'.substitute(repat,'\*','\\(\\S\\+ \\)*\\S\\+','g').'\>'
+"  call Dret("s:ExplorePatHls repat<".repat.">")
+  return repat
 endfun
 
-" ------------------------------------------------------------------------
-" NetOptionRestore: restore options {{{2
-fun! s:NetOptionRestore()
-"  call Dfunc("NetOptionRestore()")
-  if !exists("w:netoptionsave")
-"   call Dret("NetOptionRestore : w:netoptionsave doesn't exist")
-   return
-  endif
-  unlet w:netoptionsave
+" ---------------------------------------------------------------------
+" SetupNetrwStatusLine: {{{2
+fun! s:SetupNetrwStatusLine(statline)
+"  call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)")
 
-  if exists("&acd")
-   if exists("w:acdkeep") |let &acd    = w:acdkeep     |unlet w:acdkeep  |endif
-  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:hidkeep")  |let &hidden = w:hidkeep     |unlet w:hidkeep  |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
-  if exists("w:swfkeep")
-   if &directory == "" && exists("w:swfkeep")
-    " user hasn't specified a swapfile directory;
-    " netrw will temporarily make the swapfile
-    " directory the current local one.
-    let &directory   = getcwd()
-    silent! let &swf = w:swfkeep
-    set directory=
-   else
-    let &swf= w:swfkeep
+  if !exists("s:netrw_setup_statline")
+   let s:netrw_setup_statline= 1
+"   call Decho("do first-time status line setup")
+
+   if !exists("s:netrw_users_stl")
+    let s:netrw_users_stl= &stl
+   endif
+   if !exists("s:netrw_users_ls")
+    let s:netrw_users_ls= &laststatus
    endif
-   unlet w:swfkeep
+
+   " set up User9 highlighting as needed
+   let keepa= @a
+   redir @a
+   try
+    hi User9
+   catch /^Vim\%((\a\+)\)\=:E411/
+    if &bg == "dark"
+     hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue
+    else
+     hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue
+    endif
+   endtry
+   redir END
+   let @a= keepa
   endif
 
-"  call Dret("NetOptionRestore")
-endfun
+  " set up status line (may use User9 highlighting)
+  " insure that windows have a statusline
+  " make sure statusline is displayed
+  let &stl=a:statline
+  setlocal laststatus=2
+"  call Decho("stl=".&stl)
+  redraw!
 
-" ------------------------------------------------------------------------
-" NetReadFixup: this sort of function is typically written by the user {{{2
-"               to handle extra junk that their system's ftp dumps
-"               into the transfer.  This function is provided as an
-"               example and as a fix for a Windows 95 problem: in my
-"               experience, win95's ftp always dumped four blank lines
-"               at the end of the transfer.
-if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
- fun! NetReadFixup(method, line1, line2)
-"   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
-   if method == 3   " ftp (no <.netrc>)
-    let fourblanklines= line2 - 3
-    silent fourblanklines.",".line2."g/^\s*/d"
-   endif
-"   call Dret("NetReadFixup")
- endfun
-endif
+"  call Dret("SetupNetrwStatusLine : stl=".&stl)
+endfun
 
 " ---------------------------------------------------------------------
-" NetSort: Piet Delport's BISort2() function, modified to take a range {{{2
-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
-    let i_val = getline(i)
-    let lo    = a:firstline
-    let hi    = i
-    while lo < hi
-     let mid     = (lo + hi) / 2
-     let mid_val = getline(mid)
-     if g:netrw_sort_direction =~ '^n'
-      " normal sorting order
-      if i_val < mid_val
-       let hi = mid
-      else
-       let lo = mid + 1
-       if i_val == mid_val | break | endif
-      endif
-     else
-      " reverse sorting order
-      if i_val > mid_val
-       let hi = mid
-      else
-       let lo = mid + 1
-       if i_val == mid_val | break | endif
-      endif
-     endif
-    endwhile
-    " do insert
-    if lo < i
-     exe 'keepjumps '.i.'d_'
-     keepjumps call append(lo - 1, i_val)
-    endif
-    let i = i + 1
-  endwhile
+" NetrwStatusLine: {{{2
+fun! NetrwStatusLine()
 
-" "  call Dret("NetSort")
- endfun
-endif
+" vvv NetrwStatusLine() debugging vvv
+"  let g:stlmsg=""
+"  if !exists("w:netrw_explore_bufnr")
+"   let g:stlmsg="!X<explore_bufnr>"
+"  elseif w:netrw_explore_bufnr != bufnr("%")
+"   let g:stlmsg="explore_bufnr!=".bufnr("%")
+"  endif
+"  if !exists("w:netrw_explore_line")
+"   let g:stlmsg=" !X<explore_line>"
+"  elseif w:netrw_explore_line != line(".")
+"   let g:stlmsg=" explore_line!={line(.)<".line(".").">"
+"  endif
+"  if !exists("w:netrw_explore_list")
+"   let g:stlmsg=" !X<explore_list>"
+"  endif
+" ^^^ NetrwStatusLine() debugging ^^^
+
+  if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
+   " restore user's status line
+   let &stl        = s:netrw_users_stl
+   let &laststatus = s:netrw_users_ls
+   if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
+   if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
+   return ""
+  else
+   return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
+  endif
+endfun
+
+" ---------------------------------------------------------------------
+" NetGetcwd: get the current directory. {{{2
+"   Change backslashes to forward slashes, if any.
+"   If doesc is true, escape certain troublesome characters
+fun! s:NetGetcwd(doesc)
+"  call Dfunc("NetGetcwd(doesc=".a:doesc.")")
+  let curdir= substitute(getcwd(),'\\','/','ge')
+  if curdir !~ '[\/]$'
+   let curdir= curdir.'/'
+  endif
+  if a:doesc
+   let curdir= escape(curdir,s:netrw_cd_escape)
+  endif
+"  call Dret("NetGetcwd <".curdir.">")
+  return curdir
+endfun
 
 " ---------------------------------------------------------------------
 " SetSort: sets up the sort based on the g:netrw_sort_sequence {{{2
@@ -4200,7 +4829,7 @@ endif
 "          front.  An "*" pattern handles the default priority.
 fun! s:SetSort()
 "  call Dfunc("SetSort() bannercnt=".w:netrw_bannercnt)
-  if w:netrw_longlist == 1
+  if w:netrw_liststyle == s:LONGLIST
    let seqlist  = substitute(g:netrw_sort_sequence,'\$','\\%(\t\\|\$\\)','ge')
   else
    let seqlist  = g:netrw_sort_sequence
@@ -4255,66 +4884,403 @@ fun! s:SetSort()
 "  call Dret("SetSort")
 endfun
 
+" =====================================================================
+" Support Functions: {{{1
+
 " ---------------------------------------------------------------------
-" SaveWinVars: (used by Explore()) {{{2
-fun! s:SaveWinVars()
-"  call Dfunc("SaveWinVars()")
-  if exists("w:netrw_bannercnt")      |let s:bannercnt       = w:netrw_bannercnt      |endif
-  if exists("w:netrw_method")         |let s:method          = w:netrw_method         |endif
-  if exists("w:netrw_prvdir")         |let s:prvdir          = w:netrw_prvdir         |endif
-  if exists("w:netrw_explore_indx")   |let s:explore_indx    = w:netrw_explore_indx   |endif
-  if exists("w:netrw_explore_listlen")|let s:explore_listlen = w:netrw_explore_listlen|endif
-  if exists("w:netrw_explore_mtchcnt")|let s:explore_mtchcnt = w:netrw_explore_mtchcnt|endif
-  if exists("w:netrw_explore_bufnr")  |let s:explore_bufnr   = w:netrw_explore_bufnr  |endif
-  if exists("w:netrw_explore_line")   |let s:explore_line    = w:netrw_explore_line   |endif
-  if exists("w:netrw_explore_list")   |let s:explore_list    = w:netrw_explore_list   |endif
-"  call Dret("SaveWinVars")
+"  ComposePath: Appends a new part to a path taking different systems into consideration {{{2
+fun! s:ComposePath(base,subdir)
+"  call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)")
+  if(has("amiga"))
+   let ec = a:base[strlen(a:base)-1]
+   if ec != '/' && ec != ':'
+    let ret = a:base . "/" . a:subdir
+   else
+    let ret = a:base . a:subdir
+   endif
+  elseif a:base =~ '^\a\+://'
+   let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','')
+   let curpath = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\2','')
+   let ret     = urlbase.curpath.a:subdir
+"   call Decho("urlbase<".urlbase.">")
+"   call Decho("curpath<".curpath.">")
+"   call Decho("ret<".ret.">")
+  else
+   let ret = substitute(a:base."/".a:subdir,"//","/","g")
+  endif
+"  call Dret("s:ComposePath ".ret)
+  return ret
+endfun
+
+" ---------------------------------------------------------------------
+" netrw#ErrorMsg: {{{2
+"   0=note     = s:NOTE
+"   1=warning  = s:WARNING
+"   2=error    = s:ERROR
+"   Mar 19, 2007 : max errnum currently is 49
+fun! netrw#ErrorMsg(level,msg,errnum)
+"  call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.")")
+
+  " record current window number for NetRestorePosn()'s benefit
+  let s:winBeforeErr= winnr()
+
+  " getting messages out reliably is just plain difficult!
+  " This attempt splits the current window, creating a one line window.
+  let errbufnum= bufnr("NetrwMessage")
+
+  bo 1split
+  enew
+  setlocal bt=nofile
+  file NetrwMessage
+
+  put ='***netrw*** '.a:msg
+  if &fo !~ '[ta]'
+   syn clear
+   syn match netrwMesg "^\*\*\*netrw\*\*\*"
+   if a:level == s:WARNING
+    hi link netrwMesg WarningMsg
+   elseif a:level == s:ERROR
+    hi link netrwMesg Error
+   endif
+  endif
+  1d
+  setlocal noma ro bh=wipe
+
+"  call Dret("netrw#ErrorMsg")
+endfun
+
+" ---------------------------------------------------------------------
+"  netrw#RFC2396: converts %xx into characters {{{2
+fun! netrw#RFC2396(fname)
+"  call Dfunc("netrw#RFC2396(fname<".a:fname.">)")
+  let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t")
+"  call Dret("netrw#RFC2396 ".fname)
+  return fname
+endfun
+
+" ---------------------------------------------------------------------
+" s:FileReadable: o/s independent filereadable {{{2
+fun! s:FileReadable(fname)
+"  call Dfunc("s:FileReadable(fname<".a:fname.">)")
+
+  if g:netrw_cygwin
+   let ret= filereadable(substitute(a:fname,'/cygdrive/\(.\)','\1:/',''))
+  else
+   let ret= filereadable(a:fname)
+  endif
+
+"  call Dret("s:FileReadable ".ret)
+  return ret
+endfun
+
+" ---------------------------------------------------------------------
+"  s:GetTempfile: gets a tempname that'll work for various o/s's {{{2
+"                 Places correct suffix on end of temporary filename,
+"                 using the suffix provided with fname
+fun! s:GetTempfile(fname)
+"  call Dfunc("s:GetTempfile(fname<".a:fname.">)")
+
+  if !exists("b:netrw_tmpfile")
+   " get a brand new temporary filename
+   let tmpfile= tempname()
+"   call Decho("tmpfile<".tmpfile."> : from tempname()")
+   let tmpfile= escape(substitute(tmpfile,'\','/','ge'),g:netrw_tmpfile_escape)
+"   call Decho("tmpfile<".tmpfile."> : chgd any \\ -> /")
+   " sanity check -- does the temporary file's directory exist?
+   if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
+    call netrw#ErrorMsg(s:ERROR,"your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!",2)
+"    call Dret("s:GetTempfile getcwd<".getcwd().">")
+    return ""
+   endif
+   " let netrw#NetSource() know about the tmpfile
+   let s:netrw_tmpfile= tmpfile " used by netrw#NetSource()
+"   call Decho("tmpfile<".tmpfile."> s:netrw_tmpfile<".s:netrw_tmpfile.">")
+   " o/s dependencies
+   if g:netrw_cygwin == 1
+    let tmpfile = substitute(tmpfile,'^\(\a\):','/cygdrive/\1','e')
+   elseif has("win32") || has("win95") || has("win64") || has("win16")
+    let tmpfile = substitute(tmpfile,'/','\\','g')
+   else
+    let tmpfile = tmpfile  
+   endif
+   let b:netrw_tmpfile= tmpfile
+"   call Decho("o/s dependent fixed tempname<".tmpfile.">")
+  else
+   " re-use temporary filename
+   let tmpfile= b:netrw_tmpfile
+"   call Decho("tmpfile<".tmpfile."> re-using")
+  endif
+
+  " use fname's suffix for the temporary file
+  if a:fname != ""
+   if a:fname =~ '\.[^./]\+$'
+"    call Decho("using fname<".a:fname.">'s suffix")
+    if a:fname =~ '.tar.gz' || a:fname =~ '.tar.bz2'
+     let suffix = ".tar".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
+    else
+     let suffix = substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
+    endif
+    let suffix = escape(suffix,g:netrw_tmpfile_escape)
+"    call Decho("suffix<".suffix.">")
+    let tmpfile= substitute(tmpfile,'\.tmp$','','e')
+"    call Decho("chgd tmpfile<".tmpfile."> (removed any .tmp suffix)")
+    let tmpfile .= suffix
+"    call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix) netrw_fname<".b:netrw_fname.">")
+    let s:netrw_tmpfile= tmpfile " supports netrw#NetSource()
+   endif
+  endif
+
+"  call Dret("s:GetTempfile <".tmpfile.">")
+  return tmpfile
+endfun  
+
+" ---------------------------------------------------------------------
+" s:MakeSshCmd: transforms input command using USEPORT HOSTNAME into {{{2
+"               a correct command
+fun! s:MakeSshCmd(sshcmd)
+"  call Dfunc("s:MakeSshCmd(sshcmd<".a:sshcmd.">)")
+  let sshcmd = substitute(a:sshcmd,'\<HOSTNAME\>',s:user.s:machine,'')
+  if exists("g:netrw_port") && g:netrw_port != ""
+   let sshcmd= substitute(sshcmd,"USEPORT",'-P '.g:netrw_port,'')
+  elseif exists("s:port") && s:port != ""
+   let sshcmd= substitute(sshcmd,"USEPORT",'-P '.s:port,'')
+  else
+   let sshcmd= substitute(sshcmd,"USEPORT ",'','')
+  endif
+"  call Dret("s:MakeSshCmd <".sshcmd.">")
+  return sshcmd
+endfun
+
+" ---------------------------------------------------------------------
+" s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
+fun! s:NetrwEnew(curdir)
+"  call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) expand(%)<".expand("%").">")
+
+  " grab a function-local copy of buffer variables
+  if exists("b:netrw_bannercnt")      |let netrw_bannercnt       = b:netrw_bannercnt      |endif
+  if exists("b:netrw_browser_active") |let netrw_browser_active  = b:netrw_browser_active |endif
+  if exists("b:netrw_cpf")            |let netrw_cpf             = b:netrw_cpf            |endif
+  if exists("b:netrw_curdir")         |let netrw_curdir          = b:netrw_curdir         |endif
+  if exists("b:netrw_explore_bufnr")  |let netrw_explore_bufnr   = b:netrw_explore_bufnr  |endif
+  if exists("b:netrw_explore_indx")   |let netrw_explore_indx    = b:netrw_explore_indx   |endif
+  if exists("b:netrw_explore_line")   |let netrw_explore_line    = b:netrw_explore_line   |endif
+  if exists("b:netrw_explore_list")   |let netrw_explore_list    = b:netrw_explore_list   |endif
+  if exists("b:netrw_explore_listlen")|let netrw_explore_listlen = b:netrw_explore_listlen|endif
+  if exists("b:netrw_explore_mtchcnt")|let netrw_explore_mtchcnt = b:netrw_explore_mtchcnt|endif
+  if exists("b:netrw_fname")          |let netrw_fname           = b:netrw_fname          |endif
+  if exists("b:netrw_lastfile")       |let netrw_lastfile        = b:netrw_lastfile       |endif
+  if exists("b:netrw_liststyle")      |let netrw_liststyle       = b:netrw_liststyle      |endif
+  if exists("b:netrw_method")         |let netrw_method          = b:netrw_method         |endif
+  if exists("b:netrw_option")         |let netrw_option          = b:netrw_option         |endif
+  if exists("b:netrw_prvdir")         |let netrw_prvdir          = b:netrw_prvdir         |endif
+
+  if getline(2) =~ '^" Netrw Directory Listing'
+"   call Decho("generate a buffer with keepjumps keepalt enew! (1)")
+   keepjumps keepalt enew!
+  else
+"   call Decho("generate a buffer with keepjumps enew! (2)")
+   keepjumps enew!
+  endif
+
+  " copy function-local variables to buffer variable equivalents
+  if exists("netrw_bannercnt")      |let b:netrw_bannercnt       = netrw_bannercnt      |endif
+  if exists("netrw_browser_active") |let b:netrw_browser_active  = netrw_browser_active |endif
+  if exists("netrw_cpf")            |let b:netrw_cpf             = netrw_cpf            |endif
+  if exists("netrw_curdir")         |let b:netrw_curdir          = netrw_curdir         |endif
+  if exists("netrw_explore_bufnr")  |let b:netrw_explore_bufnr   = netrw_explore_bufnr  |endif
+  if exists("netrw_explore_indx")   |let b:netrw_explore_indx    = netrw_explore_indx   |endif
+  if exists("netrw_explore_line")   |let b:netrw_explore_line    = netrw_explore_line   |endif
+  if exists("netrw_explore_list")   |let b:netrw_explore_list    = netrw_explore_list   |endif
+  if exists("netrw_explore_listlen")|let b:netrw_explore_listlen = netrw_explore_listlen|endif
+  if exists("netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt = netrw_explore_mtchcnt|endif
+  if exists("netrw_fname")          |let b:netrw_fname           = netrw_fname          |endif
+  if exists("netrw_lastfile")       |let b:netrw_lastfile        = netrw_lastfile       |endif
+  if exists("netrw_liststyle")      |let b:netrw_liststyle       = netrw_liststyle      |endif
+  if exists("netrw_method")         |let b:netrw_method          = netrw_method         |endif
+  if exists("netrw_option")         |let b:netrw_option          = netrw_option         |endif
+  if exists("netrw_prvdir")         |let b:netrw_prvdir          = netrw_prvdir         |endif
+
+  let b:netrw_curdir= a:curdir
+  if b:netrw_curdir =~ '/$'
+   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+    file NetrwTreeListing
+   else
+    exe "silent! file ".b:netrw_curdir
+   endif
+  endif
+
+"  call Dret("s:NetrwEnew : buf#".bufnr("%"))
+endfun
+
+" ------------------------------------------------------------------------
+" s:RemotePathAnalysis: {{{2
+fun! s:RemotePathAnalysis(dirname)
+"  call Dfunc("s:RemotePathAnalysis()")
+
+  let dirpat  = '^\(\w\{-}\)://\(\w\+@\)\=\([^/:#]\+\)\%([:#]\(\d\+\)\)\=/\(.*\)$'
+  let s:method  = substitute(a:dirname,dirpat,'\1','')
+  let s:user    = substitute(a:dirname,dirpat,'\2','')
+  let s:machine = substitute(a:dirname,dirpat,'\3','')
+  let s:port    = substitute(a:dirname,dirpat,'\4','')
+  let s:path    = substitute(a:dirname,dirpat,'\5','')
+  let s:fname   = substitute(a:dirname,'^.*/\ze.','','')
+
+"  call Decho("set up s:method <".s:method .">")
+"  call Decho("set up s:user   <".s:user   .">")
+"  call Decho("set up s:machine<".s:machine.">")
+"  call Decho("set up s:port   <".s:port.">")
+"  call Decho("set up s:path   <".s:path   .">")
+"  call Decho("set up s:fname  <".s:fname  .">")
+
+"  call Dret("s:RemotePathAnalysis")
 endfun
 
 " ---------------------------------------------------------------------
-" CopyWinVars: (used by Explore()) {{{2
-fun! s:CopyWinVars()
-"  call Dfunc("CopyWinVars()")
+" s:RestoreBufVars: {{{2
+fun! s:RestoreBufVars()
+"  call Dfunc("s:RestoreBufVars()")
+
+  if exists("s:netrw_curdir")        |let b:netrw_curdir         = s:netrw_curdir        |endif
+  if exists("s:netrw_lastfile")      |let b:netrw_lastfile       = s:netrw_lastfile      |endif
+  if exists("s:netrw_method")        |let b:netrw_method         = s:netrw_method        |endif
+  if exists("s:netrw_fname")         |let b:netrw_fname          = s:netrw_fname         |endif
+  if exists("s:netrw_machine")       |let b:netrw_machine        = s:netrw_machine       |endif
+  if exists("s:netrw_browser_active")|let b:netrw_browser_active = s:netrw_browser_active|endif
+
+"  call Dret("s:RestoreBufVars")
+endfun
+
+" ---------------------------------------------------------------------
+" s:RestoreWinVars: (used by Explore() and NetSplit()) {{{2
+fun! s:RestoreWinVars()
+"  call Dfunc("s:RestoreWinVars()")
   if exists("s:bannercnt")      |let w:netrw_bannercnt       = s:bannercnt      |unlet s:bannercnt      |endif
-  if exists("s:method")         |let w:netrw_method          = s:method         |unlet s:method         |endif
-  if exists("s:prvdir")         |let w:netrw_prvdir          = s:prvdir         |unlet s:prvdir         |endif
-  if exists("s:explore_indx")   |let w:netrw_explore_indx    = s:explore_indx   |unlet s:explore_indx   |endif
-  if exists("s:explore_listlen")|let w:netrw_explore_listlen = s:explore_listlen|unlet s:explore_listlen|endif
-  if exists("s:explore_mtchcnt")|let w:netrw_explore_mtchcnt = s:explore_mtchcnt|unlet s:explore_mtchcnt|endif
+  if exists("s:col")            |let w:netrw_col             = s:col            |unlet s:col            |endif
+  if exists("s:curdir")         |let w:netrw_curdir          = s:curdir         |unlet s:curdir         |endif
   if exists("s:explore_bufnr")  |let w:netrw_explore_bufnr   = s:explore_bufnr  |unlet s:explore_bufnr  |endif
+  if exists("s:explore_indx")   |let w:netrw_explore_indx    = s:explore_indx   |unlet s:explore_indx   |endif
   if exists("s:explore_line")   |let w:netrw_explore_line    = s:explore_line   |unlet s:explore_line   |endif
+  if exists("s:explore_listlen")|let w:netrw_explore_listlen = s:explore_listlen|unlet s:explore_listlen|endif
   if exists("s:explore_list")   |let w:netrw_explore_list    = s:explore_list   |unlet s:explore_list   |endif
-"  call Dret("CopyWinVars")
+  if exists("s:explore_mtchcnt")|let w:netrw_explore_mtchcnt = s:explore_mtchcnt|unlet s:explore_mtchcnt|endif
+  if exists("s:fpl")            |let w:netrw_fpl             = s:fpl            |unlet s:fpl            |endif
+  if exists("s:hline")          |let w:netrw_hline           = s:hline          |unlet s:hline          |endif
+  if exists("s:line")           |let w:netrw_line            = s:line           |unlet s:line           |endif
+  if exists("s:liststyle")      |let w:netrw_liststyle       = s:liststyle      |unlet s:liststyle      |endif
+  if exists("s:method")         |let w:netrw_method          = s:method         |unlet s:method         |endif
+  if exists("s:prvdir")         |let w:netrw_prvdir          = s:prvdir         |unlet s:prvdir         |endif
+  if exists("s:treedict")       |let w:netrw_treedict        = s:treedict       |unlet s:treedict       |endif
+  if exists("s:treetop")        |let w:netrw_treetop         = s:treetop        |unlet s:treetop        |endif
+  if exists("s:winnr")          |let w:netrw_winnr           = s:winnr          |unlet s:winnr          |endif
+"  call Dret("s:RestoreWinVars")
+endfun
+
+" ---------------------------------------------------------------------
+" s:SaveBufVars: {{{2
+fun! s:SaveBufVars()
+"  call Dfunc("s:SaveBufVars()")
+
+  if exists("b:netrw_curdir")        |let s:netrw_curdir         = b:netrw_curdir        |endif
+  if exists("b:netrw_lastfile")      |let s:netrw_lastfile       = b:netrw_lastfile      |endif
+  if exists("b:netrw_method")        |let s:netrw_method         = b:netrw_method        |endif
+  if exists("b:netrw_fname")         |let s:netrw_fname          = b:netrw_fname         |endif
+  if exists("b:netrw_machine")       |let s:netrw_machine        = b:netrw_machine       |endif
+  if exists("b:netrw_browser_active")|let s:netrw_browser_active = b:netrw_browser_active|endif
+
+"  call Dret("s:SaveBufVars")
+endfun
+
+" ---------------------------------------------------------------------
+" s:SaveWinVars: (used by Explore() and NetSplit()) {{{2
+fun! s:SaveWinVars()
+"  call Dfunc("s:SaveWinVars()")
+  if exists("w:netrw_bannercnt")      |let s:bannercnt       = w:netrw_bannercnt      |endif
+  if exists("w:netrw_col")            |let s:col             = w:netrw_col            |endif
+  if exists("w:netrw_curdir")         |let s:curdir          = w:netrw_curdir         |endif
+  if exists("w:netrw_explore_bufnr")  |let s:explore_bufnr   = w:netrw_explore_bufnr  |endif
+  if exists("w:netrw_explore_indx")   |let s:explore_indx    = w:netrw_explore_indx   |endif
+  if exists("w:netrw_explore_line")   |let s:explore_line    = w:netrw_explore_line   |endif
+  if exists("w:netrw_explore_listlen")|let s:explore_listlen = w:netrw_explore_listlen|endif
+  if exists("w:netrw_explore_list")   |let s:explore_list    = w:netrw_explore_list   |endif
+  if exists("w:netrw_explore_mtchcnt")|let s:explore_mtchcnt = w:netrw_explore_mtchcnt|endif
+  if exists("w:netrw_fpl")            |let s:fpl             = w:netrw_fpl            |endif
+  if exists("w:netrw_hline")          |let s:hline           = w:netrw_hline          |endif
+  if exists("w:netrw_line")           |let s:line            = w:netrw_line           |endif
+  if exists("w:netrw_liststyle")      |let s:liststyle       = w:netrw_liststyle      |endif
+  if exists("w:netrw_method")         |let s:method          = w:netrw_method         |endif
+  if exists("w:netrw_prvdir")         |let s:prvdir          = w:netrw_prvdir         |endif
+  if exists("w:netrw_treedict")       |let s:treedict        = w:netrw_treedict       |endif
+  if exists("w:netrw_treetop")        |let s:treetop         = w:netrw_treetop        |endif
+  if exists("w:netrw_winnr")          |let s:winnr           = w:netrw_winnr          |endif
+"  call Dret("s:SaveWinVars")
 endfun
 
 " ---------------------------------------------------------------------
-" SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{2
+" s:SetBufWinVars: (used by NetBrowse() and LocalBrowseCheck()) {{{2
 "   To allow separate windows to have their own activities, such as
 "   Explore **/pattern, several variables have been made window-oriented.
 "   However, when the user splits a browser window (ex: ctrl-w s), these
 "   variables are not inherited by the new window.  SetBufWinVars() and
 "   UseBufWinVars() get around that.
 fun! s:SetBufWinVars()
-"  call Dfunc("SetBufWinVars()")
-  if exists("w:netrw_longlist")       |let b:netrw_longlist        = w:netrw_longlist       |endif
-  if exists("w:netrw_bannercnt")      |let b:netrw_bannercnt       = w:netrw_bannercnt      |endif
-  if exists("w:netrw_method")         |let b:netrw_method          = w:netrw_method         |endif
-  if exists("w:netrw_prvdir")         |let b:netrw_prvdir          = w:netrw_prvdir         |endif
-  if exists("w:netrw_explore_indx")   |let b:netrw_explore_indx    = w:netrw_explore_indx   |endif
-  if exists("w:netrw_explore_listlen")|let b:netrw_explore_listlen = w:netrw_explore_listlen|endif
-  if exists("w:netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt = w:netrw_explore_mtchcnt|endif
-  if exists("w:netrw_explore_bufnr")  |let b:netrw_explore_bufnr   = w:netrw_explore_bufnr  |endif
-  if exists("w:netrw_explore_line")   |let b:netrw_explore_line    = w:netrw_explore_line   |endif
-  if exists("w:netrw_explore_list")   |let b:netrw_explore_list    = w:netrw_explore_list   |endif
-"  call Dret("SetBufWinVars")
+"  call Dfunc("s:SetBufWinVars()")
+  if exists("w:netrw_liststyle")      |let b:netrw_liststyle      = w:netrw_liststyle      |endif
+  if exists("w:netrw_bannercnt")      |let b:netrw_bannercnt      = w:netrw_bannercnt      |endif
+  if exists("w:netrw_method")         |let b:netrw_method         = w:netrw_method         |endif
+  if exists("w:netrw_prvdir")         |let b:netrw_prvdir         = w:netrw_prvdir         |endif
+  if exists("w:netrw_explore_indx")   |let b:netrw_explore_indx   = w:netrw_explore_indx   |endif
+  if exists("w:netrw_explore_listlen")|let b:netrw_explore_listlen= w:netrw_explore_listlen|endif
+  if exists("w:netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt= w:netrw_explore_mtchcnt|endif
+  if exists("w:netrw_explore_bufnr")  |let b:netrw_explore_bufnr  = w:netrw_explore_bufnr  |endif
+  if exists("w:netrw_explore_line")   |let b:netrw_explore_line   = w:netrw_explore_line   |endif
+  if exists("w:netrw_explore_list")   |let b:netrw_explore_list   = w:netrw_explore_list   |endif
+"  call Dret("s:SetBufWinVars")
+endfun
+
+" ---------------------------------------------------------------------
+" s:System: using Steve Hall's idea to insure that Windows paths stay {{{2
+"              acceptable.  No effect on Unix paths.
+"  Examples of use:  let result= s:System("system",path)
+"                    let result= s:System("delete",path)
+fun! s:System(cmd,path)
+"  call Dfunc("s:System(cmd<".a:cmd."> path<".a:path.">)")
+
+  let path = a:path
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+   " system call prep
+   " remove trailing slash (Win95)
+   let path = substitute(path, '\(\\\|/\)$', '', 'g')
+   " remove escaped spaces
+   let path = substitute(path, '\ ', ' ', 'g')
+   " convert slashes to backslashes
+   let path = substitute(path, '/', '\', 'g')
+   if exists("+shellslash")
+    let sskeep= &shellslash
+    setlocal noshellslash
+    exe "let result= ".a:cmd."('".path."')"
+    let &shellslash = sskeep
+   else
+    exe "let result= ".a:cmd."(".g:netrw_shq.path.g:netrw_shq.")"
+   endif
+  else
+   exe "let result= ".a:cmd."('".path."')"
+  endif
+
+"  call Decho("result<".result.">")
+"  call Dret("s:System")
+  return result
 endfun
 
 " ---------------------------------------------------------------------
-" UseBufWinVars: (used by NetBrowse() and LocalBrowse() {{{2
+" s:UseBufWinVars: (used by NetBrowse() and LocalBrowseCheck() {{{2
 "              Matching function to BufferWinVars()
 fun! s:UseBufWinVars()
-"  call Dfunc("UseBufWinVars()")
-  if exists("b:netrw_longlist")        && !exists("w:netrw_longlist")       |let w:netrw_longlist        = b:netrw_longlist       |endif
+"  call Dfunc("s:UseBufWinVars()")
+  if exists("b:netrw_liststyle")       && !exists("w:netrw_liststyle")      |let w:netrw_liststyle       = b:netrw_liststyle      |endif
   if exists("b:netrw_bannercnt")       && !exists("w:netrw_bannercnt")      |let w:netrw_bannercnt       = b:netrw_bannercnt      |endif
   if exists("b:netrw_method")          && !exists("w:netrw_method")         |let w:netrw_method          = b:netrw_method         |endif
   if exists("b:netrw_prvdir")          && !exists("w:netrw_prvdir")         |let w:netrw_prvdir          = b:netrw_prvdir         |endif
@@ -4324,19 +5290,10 @@ fun! s:UseBufWinVars()
   if exists("b:netrw_explore_bufnr")   && !exists("w:netrw_explore_bufnr")  |let w:netrw_explore_bufnr   = b:netrw_explore_bufnr  |endif
   if exists("b:netrw_explore_line")    && !exists("w:netrw_explore_line")   |let w:netrw_explore_line    = b:netrw_explore_line   |endif
   if exists("b:netrw_explore_list")    && !exists("w:netrw_explore_list")   |let w:netrw_explore_list    = b:netrw_explore_list   |endif
-"  call Dret("UseBufWinVars")
+"  call Dret("s:UseBufWinVars")
 endfun
 
 " ---------------------------------------------------------------------
-"  RFC2396: converts %xx into characters {{{2
-fun! netrw#RFC2396(fname)
-"  call Dfunc("RFC2396(fname<".a:fname.">)")
-  let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t")
-"  call Dret("RFC2396 ".fname)
-  return fname
-endfun
-
-" ------------------------------------------------------------------------
 " Settings Restoration: {{{2
 let &cpo= s:keepcpo
 unlet s:keepcpo
index ee217ed2ce1a64d5ef35df5ddf8678ad607897bb..2f52f97e2e3261998f961f8bbb81ae56e51ff07d 100644 (file)
@@ -1,16 +1,34 @@
 "pythoncomplete.vim - Omni Completion for python
 " Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
-" Version: 0.5
-" Last Updated: 19 April 2006
-"
-" Yeah, I skipped a version number - 0.4 was never public.
-"  It was a bugfix version on top of 0.3.  This is a complete
-"  rewrite.
+" Version: 0.7
+" Last Updated: 19 Oct 2006
 "
+" Changes
 " TODO:
 " User defined docstrings aren't handled right...
 " 'info' item output can use some formatting work
 " Add an "unsafe eval" mode, to allow for return type evaluation
+" Complete basic syntax along with import statements
+"   i.e. "import url<c-x,c-o>"
+" Continue parsing on invalid line??
+"
+" v 0.7
+"   * Fixed function list sorting (_ and __ at the bottom)
+"   * Removed newline removal from docs.  It appears vim handles these better in
+"   recent patches
+"
+" v 0.6:
+"   * Fixed argument completion
+"   * Removed the 'kind' completions, as they are better indicated
+"   with real syntax
+"   * Added tuple assignment parsing (whoops, that was forgotten)
+"   * Fixed import handling when flattening scope
+"
+" v 0.5:
+" Yeah, I skipped a version number - 0.4 was never public.
+"  It was a bugfix version on top of 0.3.  This is a complete
+"  rewrite.
+"
 
 if !has('python')
     echo "Error: Required vim compiled with +python"
@@ -28,7 +46,7 @@ function! pythoncomplete#Complete(findstart, base)
             if c =~ '\w'
                 continue
             elseif ! c =~ '\.'
-                idx = -1
+                let idx = -1
                 break
             else
                 break
@@ -45,7 +63,7 @@ function! pythoncomplete#Complete(findstart, base)
         while idx > 0
             let idx -= 1
             let c = line[idx]
-            if c =~ '\w' || c =~ '\.'
+            if c =~ '\w' || c =~ '\.' || c == '('
                 let cword = c . cword
                 continue
             elseif strlen(cword) > 0 || idx == 0
@@ -73,7 +91,24 @@ def vimcomplete(context,match):
     try:
         import vim
         def complsort(x,y):
-            return x['abbr'] > y['abbr']
+            try:
+                xa = x['abbr']
+                ya = y['abbr']
+                if xa[0] == '_':
+                    if xa[1] == '_' and ya[0:2] == '__':
+                        return xa > ya
+                    elif ya[0:2] == '__':
+                        return -1
+                    elif y[0] == '_':
+                        return xa > ya
+                    else:
+                        return 1
+                elif ya[0] == '_':
+                    return -1
+                else:
+                   return xa > ya
+            except:
+                return 0
         cmpl = Completer()
         cmpl.evalsource('\n'.join(vim.current.buffer),vim.eval("line('.')"))
         all = cmpl.get_completions(context,match)
@@ -86,7 +121,7 @@ def vimcomplete(context,match):
             dictstr += '"icase":0},'
         if dictstr[-1] == ',': dictstr = dictstr[:-1]
         dictstr += ']'
-        dbg("dict: %s" % dictstr)
+        #dbg("dict: %s" % dictstr)
         vim.command("silent let g:pythoncomplete_completions = %s" % dictstr)
         #dbg("Completion dict:\n%s" % all)
     except vim.error:
@@ -108,11 +143,7 @@ class Completer(object):
             except: dbg("locals: %s, %s [%s]" % (sys.exc_info()[0],sys.exc_info()[1],l))
 
     def _cleanstr(self,doc):
-        return doc.replace('"',' ')\
-                  .replace("'",' ')\
-                  .replace('\n',' ')\
-                  .replace('\r',' ')\
-                  .replace('\r',' ')
+        return doc.replace('"',' ').replace("'",' ')
 
     def get_arguments(self,func_obj):
         def _ctor(obj):
@@ -128,23 +159,23 @@ class Completer(object):
         elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func
         else: arg_offset = 0
         
-        arg_text = ')'
+        arg_text=''
         if type(func_obj) in [types.FunctionType, types.LambdaType]:
             try:
                 cd = func_obj.func_code
                 real_args = cd.co_varnames[arg_offset:cd.co_argcount]
-                defaults = func_obj.func_defaults or []
-                defaults = [map(lambda name: "=%s" % name, defaults)]
+                defaults = func_obj.func_defaults or ''
+                defaults = map(lambda name: "=%s" % name, defaults)
                 defaults = [""] * (len(real_args)-len(defaults)) + defaults
                 items = map(lambda a,d: a+d, real_args, defaults)
                 if func_obj.func_code.co_flags & 0x4:
                     items.append("...")
                 if func_obj.func_code.co_flags & 0x8:
                     items.append("***")
-                arg_text = ", ".join(items) + ')'
+                arg_text = (','.join(items)) + ')'
 
             except:
-                dbg("completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1]))
+                dbg("arg completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1]))
                 pass
         if len(arg_text) == 0:
             # The doc string sometimes contains the function signature
@@ -160,6 +191,7 @@ class Completer(object):
                     ridx = sigline.find(')')
                     if lidx > 0 and ridx > 0:
                         arg_text = sigline[lidx+1:ridx] + ')'
+        if len(arg_text) == 0: arg_text = ')'
         return arg_text
 
     def get_completions(self,context,match):
@@ -172,12 +204,11 @@ class Completer(object):
             all = {}
             ridx = stmt.rfind('.')
             if len(stmt) > 0 and stmt[-1] == '(':
-                #TODO
                 result = eval(_sanitize(stmt[:-1]), self.compldict)
                 doc = result.__doc__
                 if doc == None: doc = ''
-                args = self.get_arguments(res)
-                return [{'word':self._cleanstr(args),'info':self._cleanstr(doc),'kind':'p'}]
+                args = self.get_arguments(result)
+                return [{'word':self._cleanstr(args),'info':self._cleanstr(doc)}]
             elif ridx == -1:
                 match = stmt
                 all = self.compldict
@@ -206,22 +237,18 @@ class Completer(object):
                         if doc == None or doc == '': doc = maindoc
 
                         wrd = m[len(match):]
-                        c = {'word':wrd, 'abbr':m,  'info':self._cleanstr(doc),'kind':'m'}
+                        c = {'word':wrd, 'abbr':m,  'info':self._cleanstr(doc)}
                         if "function" in typestr:
                             c['word'] += '('
                             c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
-                            c['kind'] = 'f'
                         elif "method" in typestr:
                             c['word'] += '('
                             c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
-                            c['kind'] = 'f'
                         elif "module" in typestr:
                             c['word'] += '.'
-                            c['kind'] = 'm'
                         elif "class" in typestr:
                             c['word'] += '('
                             c['abbr'] += '('
-                            c['kind']='c'
                         completions.append(c)
                 except:
                     i = sys.exc_info()
@@ -277,10 +304,13 @@ class Scope(object):
         # we need to start with this, to fix up broken completions
         # hopefully this name is unique enough...
         str = '"""'+self.docstr+'"""\n'
+        for l in self.locals:
+            if l.startswith('import'): str += l+'\n'
         str += 'class _PyCmplNoType:\n    def __getattr__(self,name):\n        return None\n'
         for sub in self.subscopes:
             str += sub.get_code()
-        #str += '\n'.join(self.locals)+'\n'
+        for l in self.locals:
+            if not l.startswith('import'): str += l+'\n'
 
         return str
 
@@ -420,6 +450,8 @@ class PyParser:
         tokentype, token, indent = self.next()
         if tokentype == tokenize.STRING or token == 'str':  
             return '""'
+        elif token == '(' or token == 'tuple':
+            return '()'
         elif token == '[' or token == 'list':
             return '[]'
         elif token == '{' or token == 'dict':
@@ -494,9 +526,9 @@ class PyParser:
             freshscope=True
             while True:
                 tokentype, token, indent = self.next()
-                #print 'main: token=[%s] indent=[%s]' % (token,indent)
+                #dbg( 'main: token=[%s] indent=[%s]' % (token,indent))
 
-                if tokentype == DEDENT:
+                if tokentype == DEDENT or token == "pass":
                     self.scope = self.scope.pop(indent)
                 elif token == 'def':
                     func = self._parsefunction(indent)
index 9cde21494df7a52a00c6d0ef3248135b1717feb4..5b728607c23175b6ba00da1f4bc689328bf7a95e 100644 (file)
@@ -5,6 +5,7 @@
 " URL:                  http://vim-ruby.rubyforge.org
 " Anon CVS:             See above site
 " Release Coordinator:  Doug Kearns <dougkearns@gmail.com>
+" Maintainer Version:   0.8
 " ----------------------------------------------------------------------------
 "
 " Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
 
 " {{{ requirement checks
 if !has('ruby')
-    echohl ErrorMsg
-    echo "Error: Required vim compiled with +ruby"
-    echohl None
+    s:ErrMsg( "Error: Rubycomplete requires vim compiled with +ruby" )
+    s:ErrMsg( "Error: falling back to syntax completion" )
+    " lets fall back to syntax completion
+    setlocal omnifunc=syntaxcomplete#Complete
     finish
 endif
 
 if version < 700
-    echohl ErrorMsg
-    echo "Error: Required vim >= 7.0"
-    echohl None
+    s:ErrMsg( "Error: Required vim >= 7.0" )
     finish
 endif
 " }}} requirement checks
 
+" {{{ configuration failsafe initialization
 if !exists("g:rubycomplete_rails")
     let g:rubycomplete_rails = 0
 endif
@@ -34,76 +35,131 @@ if !exists("g:rubycomplete_classes_in_global")
     let g:rubycomplete_classes_in_global = 0
 endif
 
+if !exists("g:rubycomplete_buffer_loading")
+    let g:rubycomplete_classes_in_global = 0
+endif
+
+if !exists("g:rubycomplete_include_object")
+    let g:rubycomplete_include_object = 0
+endif
+
+if !exists("g:rubycomplete_include_objectspace")
+    let g:rubycomplete_include_objectspace = 0
+endif
+" }}} configuration failsafe initialization
+
 " {{{ vim-side support functions
-function! GetBufferRubyModule(name)
-    let [snum,enum] = GetBufferRubyEntity(a:name, "module")
+let s:rubycomplete_debug = 0
+
+function! s:ErrMsg(msg)
+    echohl ErrorMsg
+    echo a:msg
+    echohl None
+endfunction
+
+function! s:dprint(msg)
+    if s:rubycomplete_debug == 1
+        echom a:msg
+    endif
+endfunction
+
+function! s:GetBufferRubyModule(name, ...)
+    if a:0 == 1
+        let [snum,enum] = s:GetBufferRubyEntity(a:name, "module", a:1)
+    else
+        let [snum,enum] = s:GetBufferRubyEntity(a:name, "module")
+    endif
     return snum . '..' . enum
 endfunction
 
-function! GetBufferRubyClass(name)
-    let [snum,enum] = GetBufferRubyEntity(a:name, "class")
+function! s:GetBufferRubyClass(name, ...)
+    if a:0 >= 1
+        let [snum,enum] = s:GetBufferRubyEntity(a:name, "class", a:1)
+    else
+        let [snum,enum] = s:GetBufferRubyEntity(a:name, "class")
+    endif
     return snum . '..' . enum
 endfunction
 
-function! GetBufferRubySingletonMethods(name)
+function! s:GetBufferRubySingletonMethods(name)
 endfunction
 
-function! GetBufferRubyEntity( name, type )
+function! s:GetBufferRubyEntity( name, type, ... )
+    let lastpos = getpos(".")
+    let lastline = lastpos
+    if (a:0 >= 1)
+        let lastline = [ 0, a:1, 0, 0 ]
+        call cursor( a:1, 0 )
+    endif
+
     let stopline = 1
-    let crex = '^\s*' . a:type . '\s*' . a:name . '\s*\(<\s*.*\s*\)\?\n*\(\(\s\|#\).*\n*\)*\n*\s*end$'
-    let [lnum,lcol] = searchpos( crex, 'nbw')
+
+    let crex = '^\s*\<' . a:type . '\>\s*\<' . a:name . '\>\s*\(<\s*.*\s*\)\?'
+    let [lnum,lcol] = searchpos( crex, 'w' )
+    "let [lnum,lcol] = searchpairpos( crex . '\zs', '', '\(end\|}\)', 'w' )
+
     if lnum == 0 && lcol == 0
+        call cursor(lastpos[1], lastpos[2])
         return [0,0]
     endif
 
-    let [enum,ecol] = searchpos( crex, 'nebw')
+    let curpos = getpos(".")
+    let [enum,ecol] = searchpairpos( crex, '', '\(end\|}\)', 'wr' )
+    call cursor(lastpos[1], lastpos[2])
+
     if lnum > enum
-        let realdef = getline( lnum )
-        let crexb = '^' . realdef . '\n*\(\(\s\|#\).*\n*\)*\n*\s*end$'
-        let [enum,ecol] = searchpos( crexb, 'necw' )
+        return [0,0]
     endif
     " we found a the class def
     return [lnum,enum]
 endfunction
 
-function! IsInClassDef()
-    let [snum,enum] = GetBufferRubyEntity( '.*', "class" )
+function! s:IsInClassDef()
+    return s:IsPosInClassDef( line('.') )
+endfunction
+
+function! s:IsPosInClassDef(pos)
+    let [snum,enum] = s:GetBufferRubyEntity( '.*', "class" )
     let ret = 'nil'
-    let pos = line('.')
 
-    if snum < pos && pos < enum
+    if snum < a:pos && a:pos < enum
         let ret = snum . '..' . enum
     endif
 
     return ret
 endfunction
 
-function! GetRubyVarType(v)
+function! s:GetRubyVarType(v)
     let stopline = 1
     let vtp = ''
     let pos = getpos('.')
-    let [lnum,lcol] = searchpos('^\s*#\s*@var\s*'.a:v.'\>\s\+[^ \t]\+\s*$','nb',stopline)
+    let sstr = '^\s*#\s*@var\s*'.a:v.'\>\s\+[^ \t]\+\s*$'
+    let [lnum,lcol] = searchpos(sstr,'nb',stopline)
     if lnum != 0 && lcol != 0
         call setpos('.',pos)
         let str = getline(lnum)
-        let vtp = substitute(str,'^\s*#\s*@var\s*'.a:v.'\>\s\+\([^ \t]\+\)\s*$','\1','')
+        let vtp = substitute(str,sstr,'\1','')
         return vtp
     endif
     call setpos('.',pos)
-    if g:rubycomplete_rails == 1 && g:rubycomplete_rails_loaded == 1
-        let ctors = '\(now\|new\|open\|get_instance\|find\|create\)'
+    let ctors = '\(now\|new\|open\|get_instance'
+    if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1
+        let ctors = ctors.'\|find\|create'
     else
-        let ctors = '\(now\|new\|open\|get_instance\)'
     endif
+    let ctors = ctors.'\)'
 
-    let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%r{\|[A-Za-z0-9@:\-()]\+...\?\)','nb',stopline)
+    let fstr = '=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%[xwQqr][(\[{@]\|[A-Za-z0-9@:\-()\.]\+...\?\|lambda\|&\)'
+    let sstr = ''.a:v.'\>\s*[+\-*/]*'.fstr
+    let [lnum,lcol] = searchpos(sstr,'nb',stopline)
     if lnum != 0 && lcol != 0
-        let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.' . ctors . '\>\|[\[{"''/]\|%r{\|[A-Za-z0-9@:\-()]\+...\?\)',lcol)
+        let str = matchstr(getline(lnum),fstr,lcol)
         let str = substitute(str,'^=\s*','','')
+
         call setpos('.',pos)
-        if str == '"' || str == ''''
+        if str == '"' || str == '''' || stridx(tolower(str), '%q[') != -1
             return 'String'
-        elseif str == '['
+        elseif str == '[' || stridx(str, '%w[') != -1
             return 'Array'
         elseif str == '{'
             return 'Hash'
@@ -111,6 +167,8 @@ function! GetRubyVarType(v)
             return 'Regexp'
         elseif strlen(str) >= 4 && stridx(str,'..') != -1
             return 'Range'
+        elseif stridx(str, 'lambda') != -1 || str == '&'
+            return 'Proc'
         elseif strlen(str) > 4
             let l = stridx(str,'.')
             return str[0:l-1]
@@ -123,6 +181,11 @@ endfunction
 
 "}}} vim-side support functions
 
+"{{{ vim-side completion function
+function! rubycomplete#Init()
+    execute "ruby VimRubyCompletion.preload_rails"
+endfunction
+
 function! rubycomplete#Complete(findstart, base)
      "findstart = 1 when we need to get the text length
     if a:findstart
@@ -145,346 +208,595 @@ function! rubycomplete#Complete(findstart, base)
     "findstart = 0 when we need to return the list of completions
     else
         let g:rubycomplete_completions = []
-        execute "ruby get_completions('" . a:base . "')"
+        execute "ruby VimRubyCompletion.get_completions('" . a:base . "')"
         return g:rubycomplete_completions
     endif
 endfunction
+"}}} vim-side completion function
 
-
+"{{{ ruby-side code
 function! s:DefRuby()
 ruby << RUBYEOF
 # {{{ ruby completion
-RailsWords = [
-      "has_many", "has_one",
-      "belongs_to",
-    ]
-
-ReservedWords = [
-      "BEGIN", "END",
-      "alias", "and",
-      "begin", "break",
-      "case", "class",
-      "def", "defined", "do",
-      "else", "elsif", "end", "ensure",
-      "false", "for",
-      "if", "in",
-      "module",
-      "next", "nil", "not",
-      "or",
-      "redo", "rescue", "retry", "return",
-      "self", "super",
-      "then", "true",
-      "undef", "unless", "until",
-      "when", "while",
-      "yield",
-    ]
-
-Operators = [ "%", "&", "*", "**", "+",  "-",  "/",
-      "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
-      "[]", "[]=", "^", ]
-
-
-def load_requires
-  buf = VIM::Buffer.current
-  enum = buf.line_number
-  nums = Range.new( 1, enum )
-  nums.each do |x|
-    ln = buf[x]
+
+begin
+    require 'rubygems' # let's assume this is safe...?
+rescue Exception
+    #ignore?
+end
+class VimRubyCompletion
+# {{{ constants
+  @@debug = false
+  @@ReservedWords = [
+        "BEGIN", "END",
+        "alias", "and",
+        "begin", "break",
+        "case", "class",
+        "def", "defined", "do",
+        "else", "elsif", "end", "ensure",
+        "false", "for",
+        "if", "in",
+        "module",
+        "next", "nil", "not",
+        "or",
+        "redo", "rescue", "retry", "return",
+        "self", "super",
+        "then", "true",
+        "undef", "unless", "until",
+        "when", "while",
+        "yield",
+      ]
+
+  @@Operators = [ "%", "&", "*", "**", "+",  "-",  "/",
+        "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
+        "[]", "[]=", "^", ]
+# }}} constants
+
+# {{{ buffer analysis magic
+  def load_requires
+    buf = VIM::Buffer.current
+    enum = buf.line_number
+    nums = Range.new( 1, enum )
+    nums.each do |x|
+      ln = buf[x]
+      begin
+        eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln )
+      rescue Exception
+        #ignore?
+      end
+    end
+  end
+
+  def load_buffer_class(name)
+    dprint "load_buffer_class(%s) START" % name
+    classdef = get_buffer_entity(name, 's:GetBufferRubyClass("%s")')
+    return if classdef == nil
+
+    pare = /^\s*class\s*(.*)\s*<\s*(.*)\s*\n/.match( classdef )
+    load_buffer_class( $2 ) if pare != nil  && $2 != name # load parent class if needed
+
+    mixre = /.*\n\s*include\s*(.*)\s*\n/.match( classdef )
+    load_buffer_module( $2 ) if mixre != nil && $2 != name # load mixins if needed
+
     begin
-      eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln )
+      eval classdef
     rescue Exception
-      #ignore?
+      VIM::evaluate( "s:ErrMsg( 'Problem loading class \"%s\", was it already completed?' )" % name )
     end
+    dprint "load_buffer_class(%s) END" % name
   end
-end
 
-def load_buffer_class(name)
-  classdef = get_buffer_entity(name, 'GetBufferRubyClass("%s")')
-  return if classdef == nil
+  def load_buffer_module(name)
+    dprint "load_buffer_module(%s) START" % name
+    classdef = get_buffer_entity(name, 's:GetBufferRubyModule("%s")')
+    return if classdef == nil
 
-  pare = /^\s*class\s*(.*)\s*<\s*(.*)\s*\n/.match( classdef )
-  load_buffer_class( $2 ) if pare != nil
+    begin
+      eval classdef
+    rescue Exception
+      VIM::evaluate( "s:ErrMsg( 'Problem loading module \"%s\", was it already completed?' )" % name )
+    end
+    dprint "load_buffer_module(%s) END" % name
+  end
+
+  def get_buffer_entity(name, vimfun)
+    loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading")
+    return nil if loading_allowed != '1'
+    return nil if /(\"|\')+/.match( name )
+    buf = VIM::Buffer.current
+    nums = eval( VIM::evaluate( vimfun % name ) )
+    return nil if nums == nil
+    return nil if nums.min == nums.max && nums.min == 0
+
+    dprint "get_buffer_entity START"
+    visited = []
+    clscnt = 0
+    bufname = VIM::Buffer.current.name
+    classdef = ""
+    cur_line = VIM::Buffer.current.line_number
+    while (nums != nil && !(nums.min == 0 && nums.max == 0) )
+      dprint "visited: %s" % visited.to_s
+      break if visited.index( nums )
+      visited << nums
+
+      nums.each do |x|
+        if x != cur_line
+          next if x == 0
+          ln = buf[x]
+          if /^\s*(module|class|def|include)\s+/.match(ln)
+            clscnt += 1 if $1 == "class"
+            #dprint "\$1: %s" % $1
+            classdef += "%s\n" % ln
+            classdef += "end\n" if /def\s+/.match(ln)
+            dprint ln
+          end
+        end
+      end
 
-  mixre = /.*\n\s*include\s*(.*)\s*\n/.match( classdef )
-  load_buffer_module( $2 ) if mixre != nil
+      nm = "%s(::.*)*\", %s, \"" % [ name, nums.last ]
+      nums = eval( VIM::evaluate( vimfun % nm ) )
+      dprint "nm: \"%s\"" % nm
+      dprint "vimfun: %s" % (vimfun % nm)
+      dprint "got nums: %s" % nums.to_s
+    end
+    if classdef.length > 1
+        classdef += "end\n"*clscnt
+        # classdef = "class %s\n%s\nend\n" % [ bufname.gsub( /\/|\\/, "_" ), classdef ]
+    end
 
-  eval classdef
-end
+    dprint "get_buffer_entity END"
+    dprint "classdef====start"
+    lns = classdef.split( "\n" )
+    lns.each { |x| dprint x }
+    dprint "classdef====end"
+    return classdef
+  end
 
-def load_buffer_module(name)
-  classdef = get_buffer_entity(name, 'GetBufferRubyModule("%s")')
-  return if classdef == nil
+  def get_var_type( receiver )
+    if /(\"|\')+/.match( receiver )
+      "String"
+    else
+      VIM::evaluate("s:GetRubyVarType('%s')" % receiver)
+    end
+  end
 
-  eval classdef
-end
+  def dprint( txt )
+    print txt if @@debug
+  end
 
-def get_buffer_entity(name, vimfun)
-  return nil if /(\"|\')+/.match( name )
-  buf = VIM::Buffer.current
-  nums = eval( VIM::evaluate( vimfun % name ) )
-  return nil if nums == nil
-  return nil if nums.min == nums.max && nums.min == 0
-
-  cur_line = VIM::Buffer.current.line_number
-  classdef = ""
-  nums.each do |x|
-    if x != cur_line
-      ln = buf[x]
-      classdef += "%s\n" % ln
+  def get_buffer_entity_list( type )
+    # this will be a little expensive.
+    loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading")
+    allow_aggressive_load = VIM::evaluate("exists('g:rubycomplete_classes_in_global') && g:rubycomplete_classes_in_global")
+    return [] if allow_aggressive_load != '1' || loading_allowed != '1'
+
+    buf = VIM::Buffer.current
+    eob = buf.length
+    ret = []
+    rg = 1..eob
+    re = eval( "/^\s*%s\s*([A-Za-z0-9_:-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*/" % type )
+
+    rg.each do |x|
+      if re.match( buf[x] )
+        next if type == "def" && eval( VIM::evaluate("s:IsPosInClassDef(%s)" % x) ) != nil
+        ret.push $1
+      end
     end
+
+    return ret
   end
 
-  return classdef
-end
+  def get_buffer_modules
+    return get_buffer_entity_list( "modules" )
+  end
 
-def get_var_type( receiver )
-  if /(\"|\')+/.match( receiver )
-    "String"
-  else
-    VIM::evaluate("GetRubyVarType('%s')" % receiver)
+  def get_buffer_methods
+    return get_buffer_entity_list( "def" )
   end
-end
 
-def get_buffer_classes()
-  # this will be a little expensive.
-  allow_aggressive_load = VIM::evaluate('g:rubycomplete_classes_in_global')
-  return [] if allow_aggressive_load != '1'
+  def get_buffer_classes
+    return get_buffer_entity_list( "class" )
+  end
+
+
+  def load_rails
+    allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+    return if allow_rails != '1'
+
+    buf_path = VIM::evaluate('expand("%:p")')
+    file_name = VIM::evaluate('expand("%:t")')
+    vim_dir = VIM::evaluate('getcwd()')
+    file_dir = buf_path.gsub( file_name, '' )
+    file_dir.gsub!( /\\/, "/" )
+    vim_dir.gsub!( /\\/, "/" )
+    vim_dir << "/"
+    dirs = [ vim_dir, file_dir ]
+    sdirs = [ "", "./", "../", "../../", "../../../", "../../../../" ]
+    rails_base = nil
+
+    dirs.each do |dir|
+      sdirs.each do |sub|
+        trail = "%s%s" % [ dir, sub ]
+        tcfg = "%sconfig" % trail
+
+        if File.exists?( tcfg )
+          rails_base = trail
+          break
+        end
+      end
+      break if rails_base
+    end
 
-  buf = VIM::Buffer.current
-  eob = buf.length
-  ret = []
-  rg = 1..eob
+    return if rails_base == nil
+    $:.push rails_base unless $:.index( rails_base )
 
-  rg.each do |x|
-    if /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*/.match( buf[x] )
-      ret.push $1
+    rails_config = rails_base + "config/"
+    rails_lib = rails_base + "lib/"
+    $:.push rails_config unless $:.index( rails_config )
+    $:.push rails_lib unless $:.index( rails_lib )
+
+    bootfile = rails_config + "boot.rb"
+    envfile = rails_config + "environment.rb"
+    if File.exists?( bootfile ) && File.exists?( envfile )
+      begin
+        require bootfile
+        require envfile
+        begin
+          require 'console_app'
+          require 'console_with_helpers'
+        rescue Exception
+          dprint "Rails 1.1+ Error %s" % $!
+          # assume 1.0
+        end
+        #eval( "Rails::Initializer.run" ) #not necessary?
+        VIM::command('let s:rubycomplete_rails_loaded = 1')
+        dprint "rails loaded"
+      rescue Exception
+        dprint "Rails Error %s" % $!
+        VIM::evaluate( "s:ErrMsg('Error loading rails environment')" )
+      end
     end
   end
 
-  return ret
-end
+  def get_rails_helpers
+    allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+    rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')
+    return [] if allow_rails != '1' || rails_loaded != '1'
+
+    buf_path = VIM::evaluate('expand("%:p")')
+    buf_path.gsub!( /\\/, "/" )
+    path_elm = buf_path.split( "/" )
+    dprint "buf_path: %s" % buf_path
+    types = [ "app", "db", "lib", "test", "components", "script" ]
+
+    i = nil
+    ret = []
+    type = nil
+    types.each do |t|
+      i = path_elm.index( t )
+      break if i
+    end
+    type = path_elm[i]
+    type.downcase!
+
+    dprint "type: %s" % type
+    case type
+      when "app"
+        i += 1
+        subtype = path_elm[i]
+        subtype.downcase!
+
+        dprint "subtype: %s" % subtype
+        case subtype
+          when "views"
+            ret += ActionView::Base.instance_methods
+            ret += ActionView::Base.methods
+          when "controllers"
+            ret += ActionController::Base.instance_methods
+            ret += ActionController::Base.methods
+          when "models"
+            ret += ActiveRecord::Base.instance_methods
+            ret += ActiveRecord::Base.methods
+        end
 
-def load_rails()
-  allow_rails = VIM::evaluate('g:rubycomplete_rails')
-  return if allow_rails != '1'
-
-  buf_path = VIM::evaluate('expand("%:p")')
-  file_name = VIM::evaluate('expand("%:t")')
-  path = buf_path.gsub( file_name, '' )
-  path.gsub!( /\\/, "/" )
-  pup = [ "./", "../", "../../", "../../../", "../../../../" ]
-  pok = nil
-
-  pup.each do |sup|
-    tpok = "%s%sconfig" % [ path, sup ]
-    if File.exists?( tpok )
-      pok = tpok
-      break
+      when "db"
+        ret += ActiveRecord::ConnectionAdapters::SchemaStatements.instance_methods
+        ret += ActiveRecord::ConnectionAdapters::SchemaStatements.methods
     end
+
+
+    return ret
   end
 
-  return if pok == nil
+  def add_rails_columns( cls )
+    allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+    rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')
+    return [] if allow_rails != '1' || rails_loaded != '1'
 
-  bootfile = pok + "/boot.rb"
-  envfile = pok + "/environment.rb"
-  if File.exists?( bootfile ) && File.exists?( envfile )
     begin
-      require bootfile
-      require envfile
-      require 'console_app'
-      require 'console_with_helpers'
-      VIM::command('let g:rubycomplete_rails_loaded = 1')
+        eval( "#{cls}.establish_connection" )
+        return [] unless eval( "#{cls}.ancestors.include?(ActiveRecord::Base).to_s" )
+        col = eval( "#{cls}.column_names" )
+        return col if col
     rescue
-      print "Error loading rails environment"
+        dprint "add_rails_columns err: (cls: %s) %s" % [ cls, $! ]
+        return []
     end
+    return []
   end
-end
 
-def get_rails_helpers
-  allow_rails = VIM::evaluate('g:rubycomplete_rails')
-  rails_loaded = VIM::evaluate('g:rubycomplete_rails_loaded')
-  return [] if allow_rails != '1' || rails_loaded != '1'
-  return RailsWords
-end
+  def clean_sel(sel, msg)
+    sel.delete_if { |x| x == nil }
+    sel.uniq!
+    sel.grep(/^#{Regexp.quote(msg)}/) if msg != nil
+  end
 
-def get_completions(base)
-  load_requires
-  load_rails
+  def get_rails_view_methods
+    allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+    rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')
+    return [] if allow_rails != '1' || rails_loaded != '1'
 
-  input = VIM::Buffer.current.line
-  cpos = VIM::Window.current.cursor[1] - 1
-  input = input[0..cpos] if cpos != 0
-  input += base
+    buf_path = VIM::evaluate('expand("%:p")')
+    buf_path.gsub!( /\\/, "/" )
+    pelm = buf_path.split( "/" )
+    idx = pelm.index( "views" )
 
-  rip = input.rindex(/\s/,cpos)
-  if rip
-    input = input[rip..input.length]
-  end
+    return [] unless idx
+    idx += 1
 
-  asn = /^.*(\+|\-|\*|=|\(|\[)=?(\s*[A-Za-z0-9_:@.-]*)(\s*(\{|\+|\-|\*|\%|\/)?\s*).*/
-  if asn.match(input)
-    input = $2
-  end
+    clspl = pelm[idx].camelize.pluralize
+    cls = clspl.singularize
 
-  input.strip!
-  message = nil
-  receiver = nil
-  candidates = []
-
-  case input
-    when /^(\/[^\/]*\/)\.([^.]*)$/ # Regexp
-      receiver = $1
-      message = Regexp.quote($2)
-      candidates = Regexp.instance_methods(true)
-
-    when /^([^\]]*\])\.([^.]*)$/ # Array
-      receiver = $1
-      message = Regexp.quote($2)
-      candidates = Array.instance_methods(true)
-
-    when /^([^\}]*\})\.([^.]*)$/ # Proc or Hash
-      receiver = $1
-      message = Regexp.quote($2)
-      candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
-
-    when /^(:[^:.]*)$/ # Symbol
-      if Symbol.respond_to?(:all_symbols)
-        receiver = $1
-        candidates = Symbol.all_symbols.collect{|s| s.id2name}
-        candidates.delete_if { |c| c.match( /'/ ) }
-      end
+    ret = []
+    begin
+      ret += eval( "#{cls}.instance_methods" )
+      ret += eval( "#{clspl}Helper.instance_methods" )
+    rescue Exception
+      dprint "Error: Unable to load rails view helpers for %s: %s" % [ cls, $! ]
+    end
 
-    when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods
-      receiver = $1
-      candidates = Object.constants
-      candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
+    return ret
+  end
+# }}} buffer analysis magic
 
-    when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ # Constant or class methods
-      receiver = $1
-      message = Regexp.quote($4)
+# {{{ main completion code
+  def self.preload_rails
+    a = VimRubyCompletion.new
+    require 'Thread'
+    Thread.new(a) do |b|
       begin
-        candidates = eval("#{receiver}.constants | #{receiver}.methods")
-      rescue Exception
-        candidates = []
+      b.load_rails
+      rescue
       end
-      candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
+    end
+    a.load_rails
+  rescue
+  end
 
-    when /^(:[^:.]+)\.([^.]*)$/ # Symbol
-      receiver = $1
-      message = Regexp.quote($2)
-      candidates = Symbol.instance_methods(true)
+  def self.get_completions(base)
+    b = VimRubyCompletion.new
+    b.get_completions base
+  end
 
-    when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ # Numeric
-      receiver = $1
-      message = Regexp.quote($4)
-      begin
-        candidates = eval(receiver).methods
-      rescue Exception
-        candidates
-      end
+  def get_completions(base)
+    loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading")
+    if loading_allowed == '1'
+      load_requires
+      load_rails
+    end
 
-    when /^(\$[^.]*)$/ #global
-      candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
+    input = VIM::Buffer.current.line
+    cpos = VIM::Window.current.cursor[1] - 1
+    input = input[0..cpos]
+    input += base
+    input.sub!(/.*[ \t\n\"\\'`><=;|&{(]/, '') # Readline.basic_word_break_characters
+    input.sub!(/self\./, '')
+    input.sub!(/.*((\.\.[\[(]?)|([\[(]))/, '')
+
+    dprint 'input %s' % input
+    message = nil
+    receiver = nil
+    methods = []
+    variables = []
+    classes = []
+    constants = []
+
+    case input
+      when /^(\/[^\/]*\/)\.([^.]*)$/ # Regexp
+        receiver = $1
+        message = Regexp.quote($2)
+        methods = Regexp.instance_methods(true)
 
-    when /^((\.?[^.]+)+)\.([^.]*)$/ # variable
-      receiver = $1
-      message = Regexp.quote($3)
-      load_buffer_class( receiver )
+      when /^([^\]]*\])\.([^.]*)$/ # Array
+        receiver = $1
+        message = Regexp.quote($2)
+        methods = Array.instance_methods(true)
 
-      cv = eval("self.class.constants")
-      vartype = get_var_type( receiver )
-      if vartype != ''
-        load_buffer_class( vartype )
+      when /^([^\}]*\})\.([^.]*)$/ # Proc or Hash
+        receiver = $1
+        message = Regexp.quote($2)
+        methods = Proc.instance_methods(true) | Hash.instance_methods(true)
+
+      when /^(:[^:.]*)$/ # Symbol
+        dprint "symbol"
+        if Symbol.respond_to?(:all_symbols)
+          receiver = $1
+          message = $1.sub( /:/, '' )
+          methods = Symbol.all_symbols.collect{|s| s.id2name}
+          methods.delete_if { |c| c.match( /'/ ) }
+        end
+
+      when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods
+        dprint "const or cls"
+        receiver = $1
+        methods = Object.constants
+        methods.grep(/^#{receiver}/).collect{|e| "::" + e}
 
+      when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ # Constant or class methods
+        receiver = $1
+        message = Regexp.quote($4)
+        dprint "const or cls 2 [recv: \'%s\', msg: \'%s\']" % [ receiver, message ]
+        load_buffer_class( receiver )
         begin
-          candidates = eval("#{vartype}.instance_methods")
+          classes = eval("#{receiver}.constants")
+          #methods = eval("#{receiver}.methods")
         rescue Exception
-          candidates = []
+          dprint "exception: %s" % $!
+          methods = []
         end
-      elsif (cv).include?(receiver)
-        # foo.func and foo is local var.
-        candidates = eval("#{receiver}.methods")
-      elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
-        # Foo::Bar.func
+        methods.grep(/^#{message}/).collect{|e| receiver + "::" + e}
+
+      when /^(:[^:.]+)\.([^.]*)$/ # Symbol
+        dprint "symbol"
+        receiver = $1
+        message = Regexp.quote($2)
+        methods = Symbol.instance_methods(true)
+
+      when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ # Numeric
+        dprint "numeric"
+        receiver = $1
+        message = Regexp.quote($4)
         begin
-          candidates = eval("#{receiver}.methods")
+          methods = eval(receiver).methods
         rescue Exception
-          candidates = []
+          methods = []
         end
-      else
-        # func1.func2
-        candidates = []
-        ObjectSpace.each_object(Module){|m|
-          next if m.name != "IRB::Context" and
-            /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
-          candidates.concat m.instance_methods(false)
-        }
-      end
 
-    when /^\(?\s*[A-Za-z0-9:^@.%\/+*\(\)]+\.\.\.?[A-Za-z0-9:^@.%\/+*\(\)]+\s*\)?\.([^.]*)/
-      message = $1
-      candidates = Range.instance_methods(true)
+      when /^(\$[^.]*)$/ #global
+        dprint "global"
+        methods = global_variables.grep(Regexp.new(Regexp.quote($1)))
 
-    when /^\[(\s*[A-Za-z0-9:^@.%\/+*\(\)\[\]\{\}.\'\"],?)*\].([^.]*)/
-      message = $2
-      candidates = Array.instance_methods(true)
+      when /^((\.?[^.]+)+)\.([^.]*)$/ # variable
+        dprint "variable"
+        receiver = $1
+        message = Regexp.quote($3)
+        load_buffer_class( receiver )
 
-    when /^\.([^.]*)$/ # unknown(maybe String)
-      message = Regexp.quote($1)
-      candidates = String.instance_methods(true)
+        cv = eval("self.class.constants")
+        vartype = get_var_type( receiver )
+        dprint "vartype: %s" % vartype
+        if vartype != ''
+          load_buffer_class( vartype )
+
+          begin
+            methods = eval("#{vartype}.instance_methods")
+            variables = eval("#{vartype}.instance_variables")
+          rescue Exception
+            dprint "load_buffer_class err: %s" % $!
+          end
+        elsif (cv).include?(receiver)
+          # foo.func and foo is local var.
+          methods = eval("#{receiver}.methods")
+          vartype = receiver
+        elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
+          vartype = receiver
+          # Foo::Bar.func
+          begin
+            methods = eval("#{receiver}.methods")
+          rescue Exception
+          end
+        else
+          # func1.func2
+          ObjectSpace.each_object(Module){|m|
+            next if m.name != "IRB::Context" and
+              /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
+            methods.concat m.instance_methods(false)
+          }
+        end
+        variables += add_rails_columns( "#{vartype}" ) if vartype && vartype.length > 0
 
-  else
-    inclass = eval( VIM::evaluate("IsInClassDef()") )
+      when /^\(?\s*[A-Za-z0-9:^@.%\/+*\(\)]+\.\.\.?[A-Za-z0-9:^@.%\/+*\(\)]+\s*\)?\.([^.]*)/
+        message = $1
+        methods = Range.instance_methods(true)
 
-    if inclass != nil
-      classdef = "%s\n" % VIM::Buffer.current[ inclass.min ]
-      found = /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*\n$/.match( classdef )
+      when /^\.([^.]*)$/ # unknown(maybe String)
+        message = Regexp.quote($1)
+        methods = String.instance_methods(true)
 
-      if found != nil
-        receiver = $1
-        message = input
-        load_buffer_class( receiver )
-        begin
-          candidates = eval( "#{receiver}.instance_methods" )
-          candidates += get_rails_helpers
-        rescue Exception
-          found = nil
+    else
+      dprint "default/other"
+      inclass = eval( VIM::evaluate("s:IsInClassDef()") )
+
+      if inclass != nil
+        dprint "inclass"
+        classdef = "%s\n" % VIM::Buffer.current[ inclass.min ]
+        found = /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*\n$/.match( classdef )
+
+        if found != nil
+          receiver = $1
+          message = input
+          load_buffer_class( receiver )
+          begin
+            methods = eval( "#{receiver}.instance_methods" )
+            variables += add_rails_columns( "#{receiver}" )
+          rescue Exception
+            found = nil
+          end
         end
       end
-    end
 
-    if inclass == nil || found == nil
-      candidates = eval("self.class.constants")
-      candidates += get_buffer_classes
-      message = receiver = input
+      if inclass == nil || found == nil
+        dprint "inclass == nil"
+        methods = get_buffer_methods
+        methods += get_rails_view_methods
+
+        cls_const = Class.constants
+        constants = cls_const.select { |c| /^[A-Z_-]+$/.match( c ) }
+        classes = eval("self.class.constants") - constants
+        classes += get_buffer_classes
+        classes += get_buffer_modules
+
+        include_objectspace = VIM::evaluate("exists('g:rubycomplete_include_objectspace') && g:rubycomplete_include_objectspace")
+        ObjectSpace.each_object(Class) { |cls| classes << cls.to_s } if include_objectspace == "1"
+        message = receiver = input
+      end
+
+      methods += get_rails_helpers
+      methods += Kernel.public_methods
     end
-  end
 
-  candidates.delete_if { |x| x == nil }
-  candidates.uniq!
-  candidates.sort!
-  candidates = candidates.grep(/^#{Regexp.quote(message)}/) if message != nil
 
-  outp = ""
-  valid = (candidates-Object.instance_methods)
+    include_object = VIM::evaluate("exists('g:rubycomplete_include_object') && g:rubycomplete_include_object")
+    methods = clean_sel( methods, message )
+    methods = (methods-Object.instance_methods) if include_object == "0"
+    rbcmeth = (VimRubyCompletion.instance_methods-Object.instance_methods) # lets remove those rubycomplete methods
+    methods = (methods-rbcmeth)
+
+    variables = clean_sel( variables, message )
+    classes = clean_sel( classes, message ) - ["VimRubyCompletion"]
+    constants = clean_sel( constants, message )
 
-  rg = 0..valid.length
-  rg.step(150) do |x|
-    stpos = 0+x
-    enpos = 150+x
-    valid[stpos..enpos].each { |c| outp += "{'word':'%s','item':'%s'}," % [ c, c ] }
-    outp.sub!(/,$/, '')
+    valid = []
+    valid += methods.collect { |m| { :name => m, :type => 'm' } }
+    valid += variables.collect { |v| { :name => v, :type => 'v' } }
+    valid += classes.collect { |c| { :name => c, :type => 't' } }
+    valid += constants.collect { |d| { :name => d, :type => 'd' } }
+    valid.sort! { |x,y| x[:name] <=> y[:name] }
 
-    VIM::command("call extend(g:rubycomplete_completions, [%s])" % outp)
     outp = ""
+
+    rg = 0..valid.length
+    rg.step(150) do |x|
+      stpos = 0+x
+      enpos = 150+x
+      valid[stpos..enpos].each { |c| outp += "{'word':'%s','item':'%s','kind':'%s'}," % [ c[:name], c[:name], c[:type] ] }
+      outp.sub!(/,$/, '')
+
+      VIM::command("call extend(g:rubycomplete_completions, [%s])" % outp)
+      outp = ""
+    end
   end
-end
+# }}} main completion code
 
+end # VimRubyCompletion
 # }}} ruby completion
 RUBYEOF
 endfunction
 
-let g:rubycomplete_rails_loaded = 0
+let s:rubycomplete_rails_loaded = 0
 
 call s:DefRuby()
-" vim:tw=78:sw=4:ts=8:et:ft=vim:norl:
+"}}} ruby-side code
+
+
+" vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl:
index 5e0d013c66f86e6975ba70b7dd85c7f9ee9dfdf2..36bd9f426c52c51e264c1c0b6636b8f8dc8307e8 100644 (file)
@@ -1,8 +1,8 @@
 " Vim completion script
 " Language:    All languages, uses existing syntax highlighting rules
 " Maintainer:  David Fishburn <fishburn@ianywhere.com>
-" Version:     2.0
-" Last Change: Fri May 05 2006 10:34:57 PM
+" Version:     3.0
+" Last Change: Wed Nov 08 2006 10:46:46 AM
 " Usage:       For detailed help, ":help ft-syntax-omni" 
 
 " Set completion with CTRL-X CTRL-O to autoloaded function.
@@ -19,13 +19,31 @@ endif
 if exists('g:loaded_syntax_completion')
     finish 
 endif
-let g:loaded_syntax_completion = 20
+let g:loaded_syntax_completion = 30
 
 " Set ignorecase to the ftplugin standard
+" This is the default setting, but if you define a buffer local
+" variable you can override this on a per filetype.
 if !exists('g:omni_syntax_ignorecase')
     let g:omni_syntax_ignorecase = &ignorecase
 endif
 
+" Indicates whether we should use the iskeyword option to determine
+" how to split words.
+" This is the default setting, but if you define a buffer local
+" variable you can override this on a per filetype.
+if !exists('g:omni_syntax_use_iskeyword')
+    let g:omni_syntax_use_iskeyword = 1
+endif
+
+" Only display items in the completion window that are at least
+" this many characters in length.
+" This is the default setting, but if you define a buffer local
+" variable you can override this on a per filetype.
+if !exists('g:omni_syntax_minimum_length')
+    let g:omni_syntax_minimum_length = 0
+endif
+
 " This script will build a completion list based on the syntax
 " elements defined by the files in $VIMRUNTIME/syntax.
 let s:syn_remove_words = 'match,matchgroup=,contains,'.
@@ -38,21 +56,28 @@ let s:prepended  = ''
 " This function is used for the 'omnifunc' option.
 function! syntaxcomplete#Complete(findstart, base)
 
+    " Only display items in the completion window that are at least
+    " this many characters in length
+    if !exists('b:omni_syntax_ignorecase')
+        if exists('g:omni_syntax_ignorecase')
+            let b:omni_syntax_ignorecase = g:omni_syntax_ignorecase
+        else
+            let b:omni_syntax_ignorecase = &ignorecase
+        endif
+    endif
+
     if a:findstart
         " Locate the start of the item, including "."
         let line = getline('.')
         let start = col('.') - 1
         let lastword = -1
         while start > 0
-            if line[start - 1] =~ '\w'
+            " if line[start - 1] =~ '\S'
+            "     let start -= 1
+            " elseif line[start - 1] =~ '\.'
+            if line[start - 1] =~ '\k'
                 let start -= 1
-            elseif line[start - 1] =~ '\.'
-                " The user must be specifying a column name
-                if lastword == -1
-                    let lastword = start
-                endif
-                let start -= 1
-                let b:sql_compl_type = 'column'
+                let lastword = a:findstart
             else
                 break
             endif
@@ -64,11 +89,12 @@ function! syntaxcomplete#Complete(findstart, base)
             let s:prepended = ''
             return start
         endif
-        let s:prepended = strpart(line, start, lastword - start)
-        return lastword
+        let s:prepended = strpart(line, start, (col('.') - 1) - start)
+        return start
     endif
 
-    let base = s:prepended . a:base
+    " let base = s:prepended . a:base
+    let base = s:prepended
 
     let filetype = substitute(&filetype, '\.', '_', 'g')
     let list_idx = index(s:cache_name, filetype, 0, &ignorecase)
@@ -82,11 +108,16 @@ function! syntaxcomplete#Complete(findstart, base)
 
     " Return list of matches.
 
-    if base =~ '\w'
-        let compstr    = join(compl_list, ' ')
-        let expr       = (g:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*'
-        let compstr    = substitute(compstr, expr, '', 'g')
-        let compl_list = split(compstr, '\s\+')
+    if base != ''
+        " let compstr    = join(compl_list, ' ')
+        " let expr       = (b:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*'
+        " let compstr    = substitute(compstr, expr, '', 'g')
+        " let compl_list = split(compstr, '\s\+')
+
+        " Filter the list based on the first few characters the user
+        " entered
+        let expr = 'v:val '.(g:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'"
+        let compl_list = filter(deepcopy(compl_list), expr)
     endif
 
     return compl_list
@@ -100,6 +131,26 @@ function! OmniSyntaxList()
     "     let use_dictionary = a:1
     " endif
 
+    " Only display items in the completion window that are at least
+    " this many characters in length
+    if !exists('b:omni_syntax_use_iskeyword')
+        if exists('g:omni_syntax_use_iskeyword')
+            let b:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword
+        else
+            let b:omni_syntax_use_iskeyword = 1
+        endif
+    endif
+
+    " Only display items in the completion window that are at least
+    " this many characters in length
+    if !exists('b:omni_syntax_minimum_length')
+        if exists('g:omni_syntax_minimum_length')
+            let b:omni_syntax_minimum_length = g:omni_syntax_minimum_length
+        else
+            let b:omni_syntax_minimum_length = 0
+        endif
+    endif
+
     let saveL = @l
     
     " Loop through all the syntax groupnames, and build a
@@ -294,14 +345,32 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
                     \    , "", 'g' 
                     \ )
 
-        " There are a number of items which have non-word characters in
-        " them, *'T_F1'*.  vim.vim is one such file.
-        " This will replace non-word characters with spaces.
-        let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' )
+        if b:omni_syntax_use_iskeyword == 0
+            " There are a number of items which have non-word characters in
+            " them, *'T_F1'*.  vim.vim is one such file.
+            " This will replace non-word characters with spaces.
+            let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' )
+        else
+            let accept_chars = ','.&iskeyword.','
+            " Remove all character ranges
+            let accept_chars = substitute(accept_chars, ',[^,]\+-[^,]\+,', ',', 'g')
+            " Remove all numeric specifications
+            let accept_chars = substitute(accept_chars, ',\d\{-},', ',', 'g')
+            " Remove all commas
+            let accept_chars = substitute(accept_chars, ',', '', 'g')
+            " Escape special regex characters
+            let accept_chars = escape(accept_chars, '\\/.*$^~[]' )
+            " Remove all characters that are not acceptable
+            let syn_list = substitute( syn_list, '[^0-9A-Za-z_ '.accept_chars.']', ' ', 'g' )
+        endif
+
+        if b:omni_syntax_minimum_length > 0
+            " If the user specified a minimum length, enforce it
+            let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.b:omni_syntax_minimum_length.'}\ze ', ' ', 'g')
+        endif
     else
         let syn_list = ''
     endif
 
     return syn_list
 endfunction
-
index 78d30582a1e714a3db5647b139bb85e1239df966..79d913d637764394166be64d92357bb7c0f4e5b0 100644 (file)
@@ -1,7 +1,12 @@
 " Vim completion script
 " Language:    XML
 " Maintainer:  Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change: 2006 Apr 30
+" Last Change: 2006 Jul 18
+" Version: 1.8
+"
+" Changelog:
+" 1.8 - 2006 Jul 18
+"       - allow for closing of xml tags even when data file isn't available
 
 " This function will create Dictionary with users namespace strings and values
 " canonical (system) names of data files.  Names should be lowercase,
@@ -80,7 +85,7 @@ function! xmlcomplete#CompleteTags(findstart, base)
                        let context_line = getline(curline-i)
                        if context_line =~ '<[^>]*$'
                                " Yep, this is this line
-                               let context_lines = getline(curline-i, curline)
+                               let context_lines = getline(curline-i, curline-1) + [b:compl_context]
                                let b:compl_context = join(context_lines, ' ')
                                break
                        elseif context_line =~ '>[^<]*$' || i == curline
@@ -106,10 +111,6 @@ function! xmlcomplete#CompleteTags(findstart, base)
     return start
 
   else
-       " There is no connection of namespace and data file. Abandon action
-       if !exists("g:xmldata_connection") || g:xmldata_connection == {}
-               return []
-       endif
        " Initialize base return lists
     let res = []
     let res2 = []
@@ -119,6 +120,17 @@ function! xmlcomplete#CompleteTags(findstart, base)
        endif
        let context = matchstr(b:compl_context, '^<\zs.*')
        unlet! b:compl_context
+       " There is no connection of namespace and data file.
+       if !exists("g:xmldata_connection") || g:xmldata_connection == {}
+               " There is still possibility we may do something - eg. close tag
+               let b:unaryTagsStack = "base meta link hr br param img area input col"
+               if context =~ '^\/'
+                       let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+                       return [opentag.">"]
+               else
+                       return []
+               endif
+       endif
 
        " Make entities completion
        if exists("b:entitiescompl")
index e0ae9b8b7c8714fa5d11be43f0a0ac9b5ffda2fc..2a15deeafe1b35015b9526f17a740e617435a94e 100644 (file)
@@ -1,9 +1,9 @@
 " zip.vim: Handles browsing zipfiles
 "            AUTOLOAD PORTION
-" Date:                        May 01, 2006
-" Version:             9
-" Maintainer:  Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" License:             Vim License  (see vim's :help license)
+" Date:                Sep 29, 2006
+" Version:     12
+" Maintainer:  Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
+" License:     Vim License  (see vim's :help license)
 " Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               of this software.
 
 " ---------------------------------------------------------------------
-" Initialization: {{{1
+" Load Once: {{{1
 let s:keepcpo= &cpo
 set cpo&vim
-if exists("g:loaded_zip")
+if &cp || exists("g:loaded_zip") || v:version < 700
  finish
 endif
 
-let g:loaded_zip     = "v9"
+let g:loaded_zip     = "v12"
 let s:zipfile_escape = ' ?&;\'
+let s:ERROR          = 2
+let s:WARNING        = 1
+let s:NOTE           = 0
+
+" ---------------------------------------------------------------------
+"  Global Values: {{{1
+if !exists("g:zip_shq")
+ if has("unix")
+  let g:zip_shq= "'"
+ else
+  let g:zip_shq= '"'
+ endif
+endif
 
 " ----------------
 "  Functions: {{{1
@@ -38,8 +51,9 @@ fun! zip#Browse(zipfile)
 
   " sanity checks
   if !executable("unzip")
+   redraw!
    echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("zip#Browse")
    return
@@ -47,8 +61,9 @@ fun! zip#Browse(zipfile)
   if !filereadable(a:zipfile)
    if a:zipfile !~# '^\a\+://'
     " if its an url, don't complain, let url-handlers such as vim do its thing
+    redraw!
     echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
    let &report= repkeep
 "   call Dret("zip#Browse : file<".a:zipfile."> not readable")
@@ -75,11 +90,12 @@ fun! zip#Browse(zipfile)
   0d
   $
 
-"  call Decho("exe silent r! unzip -l '".a:zipfile."'")
-  exe "silent r! unzip -l '".a:zipfile."'"
+"  call Decho("exe silent r! unzip -l ".s:QuoteFileDir(a:zipfile))
+  exe "silent r! unzip -l ".s:QuoteFileDir(a:zipfile)
   if v:shell_error != 0
+   redraw!
    echohl WarningMsg | echo "***warning*** (zip#Browse) ".a:zipfile." is not a zip file" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    silent %d
    let eikeep= &ei
    set ei=BufReadCmd,FileReadCmd
@@ -121,8 +137,9 @@ fun! s:ZipBrowseSelect()
    return
   endif
   if fname =~ '/$'
+   redraw!
    echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("ZipBrowseSelect")
    return
@@ -131,7 +148,7 @@ fun! s:ZipBrowseSelect()
 "  call Decho("fname<".fname.">")
 
   " get zipfile to the new-window
-  let zipfile= substitute(w:zipfile,'.zip$','','e')
+  let zipfile = w:zipfile
   let curfile= expand("%")
 "  call Decho("zipfile<".zipfile.">")
 "  call Decho("curfile<".curfile.">")
@@ -160,12 +177,15 @@ fun! zip#Read(fname,mode)
   else
    let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
    let fname   = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
+
+   " TODO Needs to predicated to using InfoZIP's unzip on Windows
+   let fname = substitute(fname, '[', '[[]', 'g')
   endif
 "  call Decho("zipfile<".zipfile.">")
 "  call Decho("fname  <".fname.">")
 
-"  call Decho("exe r! unzip -p '".zipfile."' '".fname."'")
-  exe "silent r! unzip -p '".zipfile."' '".fname."'"
+"  call Decho("exe r! unzip -p ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname))
+  exe "silent r! unzip -p ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname)
 
   " cleanup
   0d
@@ -184,15 +204,17 @@ fun! zip#Write(fname)
 
   " sanity checks
   if !executable("zip")
+   redraw!
    echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("zip#Write")
    return
   endif
   if !exists("*mkdir")
+   redraw!
    echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("zip#Write")
    return
@@ -208,15 +230,11 @@ fun! zip#Write(fname)
   call mkdir(tmpdir,"p")
 
   " attempt to change to the indicated directory
-  try
-   exe "cd ".escape(tmpdir,' \')
-  catch /^Vim\%((\a\+)\)\=:E344/
-   echohl Error | echo "***error*** (zip#Write) cannot cd to temporary directory" | Echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+  if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory")
    let &report= repkeep
 "   call Dret("zip#Write")
    return
-  endtry
+  endif
 "  call Decho("current directory now: ".getcwd())
 
   " place temporary files under .../_ZIPVIM_/
@@ -255,21 +273,27 @@ fun! zip#Write(fname)
    let zipfile = substitute(system("cygpath ".zipfile),'\n','','e')
   endif
 
-"  call Decho("zip -u '".zipfile.".zip' '".fname."'")
-  call system("zip -u '".zipfile.".zip' '".fname."'")
+  " TODO Needs to predicated to using InfoZIP's unzip
+  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
+    let fname = substitute(fname, '[', '[[]', 'g')
+  endif
+
+"  call Decho("zip -u ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname))
+  call system("zip -u ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname))
   if v:shell_error != 0
+   redraw!
    echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 
   elseif s:zipfile_{winnr()} =~ '^\a\+://'
    " support writing zipfiles across a network
    let netzipfile= s:zipfile_{winnr()}
-"   call Decho("handle writing <".zipfile.".zip> across network as <".netzipfile.">")
+"   call Decho("handle writing <".zipfile."> across network as <".netzipfile.">")
    1split|enew
    let binkeep= &binary
    let eikeep = &ei
    set binary ei=all
-   exe "e! ".zipfile.".zip"
+   exe "e! ".zipfile
    call netrw#NetWrite(netzipfile)
    let &ei     = eikeep
    let &binary = binkeep
@@ -280,25 +304,61 @@ fun! zip#Write(fname)
   " cleanup and restore current directory
   cd ..
   call s:Rmdir("_ZIPVIM_")
-  exe "cd ".escape(curdir,' \')
+  call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
+  call s:Rmdir(tmpdir)
   setlocal nomod
 
   let &report= repkeep
 "  call Dret("zip#Write")
 endfun
 
+" ---------------------------------------------------------------------
+" QuoteFileDir: {{{2
+fun! s:QuoteFileDir(fname)
+"  call Dfunc("QuoteFileDir(fname<".a:fname.">)")
+"  call Dret("QuoteFileDir")
+  return g:zip_shq.a:fname.g:zip_shq
+endfun
+
+" ---------------------------------------------------------------------
+" ChgDir: {{{2
+fun! s:ChgDir(newdir,errlvl,errmsg)
+"  call Dfunc("ChgDir(newdir<".a:newdir."> errlvl=".a:errlvl."  errmsg<".a:errmsg.">)")
+
+  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
+   let newdir= escape(a:newdir,' ')
+  else
+   let newdir= escape(a:newdir,'\ ')
+  endif
+
+  try
+   exe "cd ".newdir
+  catch /^Vim\%((\a\+)\)\=:E344/
+   redraw!
+   if a:errlvl == s:NOTE
+    echo "***note*** ".a:errmsg
+   elseif a:errlvl == s:WARNING
+    echohl WarningMsg | echo "***warning*** ".a:errmsg | echohl NONE
+   elseif a:errlvl == s:ERROR
+    echohl Error | echo "***error*** ".a:errmsg | echohl NONE
+   endif
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call Dret("ChgDir 1")
+   return 1
+  endtry
+
+"  call Dret("ChgDir 0")
+  return 0
+endfun
+
 " ---------------------------------------------------------------------
 " Rmdir: {{{2
 fun! s:Rmdir(fname)
 "  call Dfunc("Rmdir(fname<".a:fname.">)")
-  if has("unix")
-   call system("/bin/rm -rf ".a:fname)
-  elseif has("win32") || has("win95") || has("win64") || has("win16")
-   if &shell =~? "sh$"
-    call system("/bin/rm -rf ".a:fname)
-   else
-    call system("del /S ".a:fname)
-   endif
+  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
+   call system("rmdir /S/Q ".s:QuoteFileDir(a:fname))
+  else
+   call system("/bin/rm -rf ".s:QuoteFileDir(a:fname))
   endif
 "  call Dret("Rmdir")
 endfun
@@ -307,4 +367,4 @@ endfun
 " Modelines And Restoration: {{{1
 let &cpo= s:keepcpo
 unlet s:keepcpo
-" vim:ts=8 fdm=marker
+"  vim:ts=8 fdm=marker
index dcfe3d78334936fe250e301e474d2a446f072054..86de8a4dc435cb3b6e2a9a3438e1479ace91f2c7 100644 (file)
@@ -2,9 +2,9 @@
 " vim: tw=0 ts=4 sw=4
 " Vim color file
 " Maintainer:  Steven Vertigan <steven@vertigan.wattle.id.au>
-" Last Change: 2003 May 11
-" Revision #4: Support for new "Underline" group. Removed superfluous html
-"                         formatting.
+" Last Change: 2006 Sep 23
+" Revision #5: Switch main text from white to yellow for easier contrast,
+" fixed some problems with terminal backgrounds.
 
 set background=dark
 hi clear
@@ -12,66 +12,44 @@ if exists("syntax_on")
   syntax reset
 endif
 let g:colors_name = "blue"
-hi Normal              guifg=white             guibg=darkBlue
-hi Normal              ctermfg=white   ctermbg=darkBlue
+hi Normal              guifg=yellow    guibg=darkBlue  ctermfg=yellow  ctermbg=darkBlue
 hi NonText             guifg=magenta   ctermfg=lightMagenta
-hi comment             guifg=gray              gui=bold
-hi comment             ctermfg=gray
+hi comment             guifg=gray              ctermfg=gray    ctermbg=darkBlue        gui=bold 
 hi constant            guifg=cyan              ctermfg=cyan
-hi identifier  guifg=gray              ctermfg=gray
-hi statement   guifg=yellow    gui=none        ctermfg=yellow
+hi identifier  guifg=gray              ctermfg=red
+hi statement   guifg=white             ctermfg=white   ctermbg=darkBlue        gui=none
 hi preproc             guifg=green             ctermfg=green
-hi type                        guifg=orange    ctermfg=darkYellow
-hi special             guifg=magenta   ctermfg=lightMagenta
-hi Underlined  guifg=cyan              ctermfg=cyan
-hi Underlined  gui=underline   cterm=underline
-
-hi ErrorMsg            guifg=orange    guibg=darkBlue
-hi ErrorMsg            ctermfg=lightRed
-hi WarningMsg  guifg=cyan              guibg=darkBlue  gui=bold
-hi WarningMsg  ctermfg=cyan
-hi ModeMsg             guifg=yellow    gui=NONE
-hi ModeMsg             ctermfg=yellow
-hi MoreMsg             guifg=yellow    gui=NONE
-hi MoreMsg             ctermfg=yellow
-hi Error               guifg=red               guibg=darkBlue  gui=underline
-hi Error               ctermfg=red
-
-hi Todo                        guifg=black             guibg=orange
-hi Todo                        ctermfg=black   ctermbg=darkYellow
-hi Cursor              guifg=black             guibg=white
-hi Cursor              ctermfg=black   ctermbg=white
-hi Search              guifg=black             guibg=orange
-hi Search              ctermfg=black   ctermbg=darkYellow
-hi IncSearch   guifg=black             guibg=yellow
-hi IncSearch   ctermfg=black   ctermbg=darkYellow
-hi LineNr              guifg=pink              ctermfg=lightMagenta
+hi type                        guifg=orange    ctermfg=lightRed        ctermbg=darkBlue
+hi special             guifg=magenta   ctermfg=lightMagenta    ctermbg=darkBlue
+hi Underlined  guifg=cyan              ctermfg=cyan    gui=underline   cterm=underline
+hi label               guifg=yellow    ctermfg=yellow
+hi operator            guifg=orange    gui=bold        ctermfg=lightRed        ctermbg=darkBlue
+
+hi ErrorMsg            guifg=orange    guibg=darkBlue  ctermfg=lightRed
+hi WarningMsg  guifg=cyan              guibg=darkBlue  ctermfg=cyan    gui=bold
+hi ModeMsg             guifg=yellow    gui=NONE        ctermfg=yellow
+hi MoreMsg             guifg=yellow    gui=NONE        ctermfg=yellow
+hi Error               guifg=red               guibg=darkBlue  gui=underline   ctermfg=red
+
+hi Todo                        guifg=black             guibg=orange    ctermfg=black   ctermbg=darkYellow
+hi Cursor              guifg=black             guibg=white             ctermfg=black   ctermbg=white
+hi Search              guifg=black             guibg=orange    ctermfg=black   ctermbg=darkYellow
+hi IncSearch   guifg=black             guibg=yellow    ctermfg=black   ctermbg=darkYellow
+hi LineNr              guifg=cyan              ctermfg=cyan
 hi title               guifg=white     gui=bold        cterm=bold
 
-hi StatusLineNC        gui=NONE        guifg=black guibg=blue
-hi StatusLineNC        ctermfg=black  ctermbg=blue
-hi StatusLine  gui=bold        guifg=cyan      guibg=blue
-hi StatusLine  ctermfg=cyan   ctermbg=blue
+hi StatusLineNC        gui=NONE        guifg=black guibg=blue  ctermfg=black  ctermbg=blue
+hi StatusLine  gui=bold        guifg=cyan      guibg=blue      ctermfg=cyan   ctermbg=blue
+hi VertSplit   gui=none        guifg=blue      guibg=blue      ctermfg=blue    ctermbg=blue
 
-hi label               guifg=yellow    ctermfg=yellow
-hi operator            guifg=orange    gui=bold        ctermfg=darkYellow
-hi clear Visual
-hi Visual              term=reverse
-hi Visual              ctermfg=black   ctermbg=darkCyan
-hi Visual              guifg=black             guibg=darkCyan
+hi Visual              term=reverse            ctermfg=black   ctermbg=darkCyan        guifg=black             guibg=darkCyan
 
-hi DiffChange  guibg=darkGreen         guifg=black
-hi DiffChange  ctermbg=darkGreen       ctermfg=black
-hi DiffText            guibg=olivedrab         guifg=black
-hi DiffText            ctermbg=lightGreen      ctermfg=black
-hi DiffAdd             guibg=slateblue         guifg=black
-hi DiffAdd             ctermbg=blue            ctermfg=black
-hi DiffDelete   guibg=coral                    guifg=black
-hi DiffDelete  ctermbg=cyan            ctermfg=black
+hi DiffChange  guibg=darkGreen         guifg=black     ctermbg=darkGreen       ctermfg=black
+hi DiffText            guibg=olivedrab         guifg=black             ctermbg=lightGreen      ctermfg=black
+hi DiffAdd             guibg=slateblue         guifg=black             ctermbg=blue            ctermfg=black
+hi DiffDelete   guibg=coral                    guifg=black     ctermbg=cyan            ctermfg=black
 
-hi Folded              guibg=orange            guifg=black
-hi Folded              ctermbg=yellow          ctermfg=black
-hi FoldColumn  guibg=gray30            guifg=black
-hi FoldColumn  ctermbg=gray            ctermfg=black
+hi Folded              guibg=orange            guifg=black             ctermbg=yellow          ctermfg=black
+hi FoldColumn  guibg=gray30            guifg=black     ctermbg=gray            ctermfg=black
 hi cIf0                        guifg=gray                      ctermfg=gray
 
index 65d4b3f89f1723850423f59372aa83b9dab2f40d..0e7a916a1c60ae4883a575173aae5b52a8bd20d1 100644 (file)
@@ -1,6 +1,6 @@
 " Vim color file
 " Maintainer:  Thorsten Maerz <info@netztorte.de>
-" Last Change: 2001 Jul 23
+" Last Change: 2006 Dec 07
 " grey on black
 " optimized for TFT panels
 
@@ -18,7 +18,7 @@ let g:colors_name = "torte"
 " GUI
 highlight Normal     guifg=Grey80      guibg=Black
 highlight Search     guifg=Black       guibg=Red       gui=bold
-highlight Visual     guifg=Grey25                      gui=bold
+highlight Visual     guifg=#404040                     gui=bold
 highlight Cursor     guifg=Black       guibg=Green     gui=bold
 highlight Special    guifg=Orange
 highlight Comment    guifg=#80a0ff
@@ -42,7 +42,7 @@ if has("unix")
   if v:version<600
     highlight Normal  ctermfg=Grey     ctermbg=Black   cterm=NONE      guifg=Grey80      guibg=Black   gui=NONE
     highlight Search  ctermfg=Black    ctermbg=Red     cterm=bold      guifg=Black       guibg=Red     gui=bold
-    highlight Visual  ctermfg=Black    ctermbg=yellow  cterm=bold      guifg=Grey25                    gui=bold
+    highlight Visual  ctermfg=Black    ctermbg=yellow  cterm=bold      guifg=#404040                   gui=bold
     highlight Special ctermfg=LightBlue                        cterm=NONE      guifg=LightBlue                 gui=NONE
     highlight Comment ctermfg=Cyan                     cterm=NONE      guifg=LightBlue                 gui=NONE
   endif
index 01f9a4bf989928982ef5b832a1a86e71dd4b399d..f0ae4133c0ce1ee716a880892ec01591469d155e 100644 (file)
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.0.  Last change: 2006 May 05
+*change.txt*    For Vim version 7.1a.  Last change: 2007 Jan 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -640,7 +640,7 @@ The flags that you can use for the substitute commands:
 
 [#]    Like [p] and prepend the line number.
 
-[l]    Like [l] but print the text like |:list|.
+[l]    Like [p] but print the text like |:list|.
 
 [r]    Only useful in combination with ":&" or ":s" without arguments.  ":&r"
        works the same way as ":~":  When the search pattern is empty, use the
@@ -670,14 +670,20 @@ pattern from the last substitute or ":global" command.  With the [r] flag, the
 command uses the pattern from the last substitute, ":global", or search
 command.
 
+If the {string} is omitted the substitute is done as if it's empty.  Thus the
+matched pattern is deleted.  The separator after {pattern} can also be left
+out then.  Example: >
+       :%s/TESTING
+This deletes "TESTING" from all lines, but only one per line.
+
 For compatibility with Vi these two exceptions are allowed:
 "\/{string}/" and "\?{string}?" do the same as "//{string}/r".
 "\&{string}&" does the same as "//{string}/".
                                                        *E146*
 Instead of the '/' which surrounds the pattern and replacement string, you
-can use any other character, but not an alphanumeric character, '\', '"' or
-'|'.  This is useful if you want to include a '/' in the search pattern or
-replacement string.  Example: >
+can use any other single-byte character, but not an alphanumeric character,
+'\', '"' or '|'.  This is useful if you want to include a '/' in the search
+pattern or replacement string.  Example: >
        :s+/+//+
 
 For the definition of a pattern, see |pattern|.
@@ -1075,7 +1081,7 @@ and ":put" commands and with CTRL-R.  {not in Vi}
                {not available when compiled without the |+cmdline_hist|
                feature}
 
-6. Expression register "=                              *quote_=* *quote=*
+6. Expression register "=                      *quote_=* *quote=* *@=*
 This is not really a register that stores text, but is a way to use an
 expression in commands which use a register.  The expression register is
 read-only; you cannot put text into it.  After the '=', the cursor moves to
@@ -1365,7 +1371,7 @@ readability.
 
 letter  meaning when present in 'formatoptions'    ~
 
-t      Auto-wrap text using textwidth (does not apply to comments)
+t      Auto-wrap text using textwidth
 c      Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
 r      Automatically insert the current comment leader after hitting
index 414ef429a7a8f02ac7734b806f98de361e29b5a0..6d2fef2891a9290f3b85dd027d3744e25df484e2 100644 (file)
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*cmdline.txt*   For Vim version 7.1a.  Last change: 2006 Jul 18
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -301,6 +301,10 @@ CTRL-^             Toggle the use of language |:lmap| mappings and/or Input
                for the next command or Search pattern.
                {not in Vi}
 
+                                               *c_CTRL-]*
+CTRL-]         Trigger abbreviation, without inserting a character.  {not in
+               Vi}
+
 For Emacs-style editing on the command-line see |emacs-keys|.
 
 The <Up> and <Down> keys take the current command-line as a search string.
index 599e181382161969d8772ae29c0e5cdf5c5e7719..6af7a12c81a6e2c8ab0886508406f4b151ddd5c0 100644 (file)
@@ -1,4 +1,4 @@
-*debug.txt*     For Vim version 7.0.  Last change: 2006 May 01
+*debug.txt*     For Vim version 7.1a.  Last change: 2006 May 01
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index d7268209dc8340bf900609d9fb1e637d7e4b636e..b96f7c2087f9415a520a74e55f17a7043cfb5fd8 100644 (file)
@@ -1,4 +1,4 @@
-*debugger.txt*  For Vim version 7.0.  Last change: 2005 Mar 29
+*debugger.txt*  For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Gordon Prieur
index 1d1c6cae5e3f90a22282199d64d2c1ebb9bc1159..037a3ccb1fd4d4b22485ddca1f73b4eff852a2d1 100644 (file)
@@ -1,4 +1,4 @@
-*develop.txt*   For Vim version 7.0.  Last change: 2006 Mar 09
+*develop.txt*   For Vim version 7.1a.  Last change: 2006 Sep 26
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -224,7 +224,7 @@ __.*                POSIX, system
 _[A-Z].*       POSIX, system
 E[A-Z0-9]*     POSIX, errno.h
 
-*_t            POSIX, for typedefs.  Use *_T instead.
+.*_t           POSIX, for typedefs.  Use .*_T instead.
 
 wait           don't use as argument to a function, conflicts with types.h
 index          shadows global declaration
index a0e8053a4e749901c1fa41101a5ebbb5bc5cbf54..ed059c9192c2cbd1d7836727ba8444b45ec479a0 100644 (file)
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.0.  Last change: 2006 Apr 14
+*diff.txt*      For Vim version 7.1a.  Last change: 2006 Oct 02
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -155,13 +155,16 @@ All the buffers edited in a window where the 'diff' option is set will join in
 the diff.  This is also possible for hidden buffers.  They must have been
 edited in a window first for this to be possible.
 
+                                       *:DiffOrig* *diff-original-file*
 Since 'diff' is a window-local option, it's possible to view the same buffer
 in diff mode in one window and "normal" in another window.  It is also
-possible to view the changes you have made to a buffer, but since Vim doesn't
-allow having two buffers for the same file, you need to make a copy of the
-original file and diff with that.  For example: >
-       :!cp % tempfile
-       :diffsplit tempfile
+possible to view the changes you have made to a buffer since the file was
+loaded.  Since Vim doesn't allow having two buffers for the same file, you
+need another buffer.  This command is useful: >
+        command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
+               \ | wincmd p | diffthis
+(this is in |vimrc_example.vim|).  Use ":DiffOrig" to see the differences
+between the current buffer and the file it was loaded from.
 
 A buffer that is unloaded cannot be used for the diff.  But it does work for
 hidden buffers.  You can use ":hide" to close a window without unloading the
@@ -239,7 +242,7 @@ that the buffers will be equal within the specified range.
                mode.
                See below for [range].
 
-                                                       *:diffpu* *:diffput*
+                                               *:diffpu* *:diffput* *E793*
 :[range]diffpu[t] [bufspec]
                Modify another buffer to undo difference with the current
                buffer.  Just like ":diffget" but the other buffer is modified
index ec5aec5a5e2c9de9663be9de37434341eeabf7f9..8ca411090939ba416950e70d351d177788fad0ec 100644 (file)
@@ -1,4 +1,4 @@
-*digraph.txt*   For Vim version 7.0.  Last change: 2006 Apr 25
+*digraph.txt*   For Vim version 7.1a.  Last change: 2006 Jul 18
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -107,13 +107,12 @@ If you accidentally typed an 'a' that should be an 'e', you will type 'a' <BS>
 this, you will have to type <BS> e again.  To avoid this don't set the
 'digraph' option and use CTRL-K to enter digraphs.
 
-You may have problems using Vim with characters which have an ASCII value
-above 128.  For example: You insert ue (u-umlaut) and the editor echoes \334
-in Insert mode.  After leaving the Insert mode everything is fine.  Note that
-fmt removes all characters with ASCII codes above 128 from the text being
-formatted.  On some Unix systems this means you have to define the
-environment-variable LC_CTYPE.  If you are using csh, then put the following
-line in your .cshrc: >
+You may have problems using Vim with characters which have a value above 128.
+For example: You insert ue (u-umlaut) and the editor echoes \334 in Insert
+mode.  After leaving the Insert mode everything is fine.  Note that fmt
+removes all characters with a value above 128 from the text being formatted.
+On some Unix systems this means you have to define the environment-variable
+LC_CTYPE.  If you are using csh, then put the following line in your .cshrc: >
        setenv LC_CTYPE iso_8859_1
 
 ==============================================================================
index 4c982c50e6e10d5106997e95dd1292fcfa16e3ac..05c46fbfe759cce99d1be028ccdb042e32ab791a 100644 (file)
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*editing.txt*   For Vim version 7.1a.  Last change: 2006 Oct 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -372,7 +372,7 @@ Example: The command ":e   Long File Name " will edit the file "Long File
 Name".  When using a command that accepts more than one file name (like ":next
 file1 file2") embedded spaces must be escaped with a backslash.
 
-                                                       *wildcard*
+                                               *wildcard* *wildcards*
 Wildcards in {file} are expanded.  Which wildcards are supported depends on
 the system.  These are the common ones:
        ?       matches one character
@@ -849,7 +849,7 @@ Note: When the 'write' option is off, you are not able to write any file.
 
                                                        *:w* *:write*
                                                *E502* *E503* *E504* *E505*
-                                               *E512* *E514* *E667*
+                                               *E512* *E514* *E667* *E796*
 :w[rite]               Write the whole buffer to the current file.  This is
                        the normal way to save changes to a file.  It fails
                        when the 'readonly' option is set or when there is
@@ -1150,8 +1150,8 @@ If you want to always use ":confirm", set the 'confirm' option.
                        *:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
 :bro[wse] {command}    Open a file selection dialog for an argument to
                        {command}.  At present this works for |:e|, |:w|,
-                       |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and
-                       |:mksession|.
+                       |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc|,
+                       |:mksession|, |:split|, |:vsplit|, and |:tabe|.
                        {only in Win32, Athena, Motif, GTK and Mac GUI}
                        When ":browse" is not possible you get an error
                        message.  If the |+browse| feature is missing or the
@@ -1469,7 +1469,9 @@ problem goes away the next day.
 {not available when compiled without the |+path_extra| feature}
 
 The file searching is currently used for the 'path', 'cdpath' and 'tags'
-options.  There are three different types of searching:
+options, for |finddir()| and |findfile()|.
+
+There are three different types of searching:
 
 1) Downward search:                                    *starstar*
    Downward search uses the wildcards '*', '**' and possibly others
index d29fa4cf1665f538690c753a0042ba482be85f6b..99c2e4a01fca5c3552efdfd06151387ba3541816 100644 (file)
@@ -1,4 +1,4 @@
-*fold.txt*      For Vim version 7.0.  Last change: 2006 Mar 29
+*fold.txt*      For Vim version 7.1a.  Last change: 2006 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 5319beeed8fed62ec044fc815b75dc6ce2257b13..d7eb739714dc414b1702d4b59d185644184e9b5a 100644 (file)
@@ -1,4 +1,4 @@
-*gui_w16.txt*   For Vim version 7.0.  Last change: 2005 Mar 29
+*gui_w16.txt*   For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 25b0e164a472cc66c5194e613abb2d25ed986d97..a518f032a5cf106ca7367bbb266c11208078e1d2 100644 (file)
@@ -1,4 +1,4 @@
-*gui_w32.txt*   For Vim version 7.0.  Last change: 2005 Mar 29
+*gui_w32.txt*   For Vim version 7.1a.  Last change: 2007 May 03
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -233,7 +233,8 @@ $VIMRUNTIME/mswin.vim script.  You could add this line to your _vimrc file: >
 Since CTRL-C is used to copy the text to the clipboard, it can't be used to
 cancel an operation.  Use CTRL-Break for that.
 
-CTRL-Z is used for undo.  This means you can't suspend Vim.
+CTRL-Z is used for undo.  This means you can't suspend Vim with this key, use
+|:suspend| instead (if it's supported at all).
 
                                                *CTRL-V-alternative* *CTRL-Q*
 Since CTRL-V is used to paste, you can't use it to start a blockwise Visual
@@ -463,6 +464,8 @@ This maps Alt-Space to pop down the system menu for the Vim window.  Note that
 Maps Control-N to produce the keys Alt-Space followed by N.  This minimizes the
 Vim window via the system menu.
 
+Note that the key changes depending on the language you are using.
+
                                                *intellimouse-wheel-problems*
 When using the Intellimouse mouse wheel causes Vim to stop accepting input, go
 to:
index a78dd36408f102ed70d10fa7c55b0fe04325386c..838b13f654d1f348d6bb52fc483c7efec4c8c2af 100644 (file)
@@ -1,4 +1,4 @@
-*gui_x11.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*gui_x11.txt*   For Vim version 7.1a.  Last change: 2006 Jul 12
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -406,8 +406,9 @@ These are the different looks:
 - That means the menubar and toolbar handles are back!  Yeah!  And the
   resizing grid still works too.
 
-GNOME is automatically compiled with if it was found by configure.
-(FIXME: Is this still true?  Use --enable-gnome-check to force it to.)
+GNOME is compiled with if it was found by configure and the
+--enable-gnome-check argument was used.
+
 
 GNOME session support                  *gui-gnome-session* *gnome-session*
 
@@ -436,7 +437,7 @@ command line argument).
 
 ==============================================================================
 7. KDE version                                 *gui-kde* *kde* *KDE* *KVim*
-
+                                                       *gui-x11-kde*
 There is no KDE version of Vim.  There has been some work on a port using the
 Qt toolkit, but it never worked properly and it has been abandoned.  Work
 continues on Yzis: www.yzis.org.
@@ -497,12 +498,6 @@ menus look a bit better.  Edit the Makefile and look for "XAW_LIB".  The
 scrollbars will remain the same, because Vim has its own, which are already
 3D (in fact, they look more like Motif).
 
-                                                       *gui-x11-kde*
-For Vim-KDE, you need at least Qt(>=2.x) and the corresponding kdelibs.
-To compile, you must use the --with-qt-dir configure flag because QTDIR is not
-automatically detected yet. Giving KDE's directories to the configure script
-may also help in some cases.
-
                                                        *gui-x11-neXtaw*
 The neXtaw version is mostly like Athena, but uses different widgets.
 
index a5d97bc37f1cf038a41fc97545db9dbbe7ebeb89..a79e8ab7806686707099bd67f280b2e8d5e2a4f7 100644 (file)
@@ -1,4 +1,4 @@
-*hangulin.txt*  For Vim version 7.0.  Last change: 2006 Apr 02
+*hangulin.txt*  For Vim version 7.1a.  Last change: 2006 Apr 02
 
 
                  VIM REFERENCE MANUAL    by Chi-Deok Hwang and Sung-Hyun Nam
index 77a7ebd39b3482304d8bdef8aae95bdf9572b9f1..40fad99aecdc96ec31660fbc14d6536322c42728 100644 (file)
@@ -1,4 +1,4 @@
-*help.txt*     For Vim version 7.0.  Last change: 2006 May 07
+*help.txt*     For Vim version 7.1a.  Last change: 2006 Nov 07
 
                        VIM - main help file
                                                                         k
@@ -143,6 +143,7 @@ Special issues ~
 |farsi.txt|    Farsi (Persian) editing
 |hebrew.txt|   Hebrew language support and editing
 |russian.txt|  Russian language support and editing
+|ada.txt|      Ada (the programming language) support
 |hangulin.txt| Hangul (Korean) input mode
 |rileft.txt|   right-to-left editing mode
 
@@ -189,11 +190,13 @@ Remarks about specific systems ~
 |os_win32.txt| MS-Windows 95/98/NT
                                                *standard-plugin-list*
 Standard plugins ~
-|pi_gzip.txt|  Reading and writing compressed files
-|pi_netrw.txt| Reading and writing files over a network
-|pi_paren.txt| Highlight matching parens
-|pi_tar.txt|   Tar file explorer
-|pi_zip.txt|   Zip archive explorer
+|pi_getscript.txt| Downloading latest version of Vim scripts
+|pi_gzip.txt|     Reading and writing compressed files
+|pi_netrw.txt|    Reading and writing files over a network
+|pi_paren.txt|    Highlight matching parens
+|pi_tar.txt|      Tar file explorer
+|pi_vimball.txt|   Create a self-installing Vim script
+|pi_zip.txt|      Zip archive explorer
 
 LOCAL ADDITIONS:                               *local-additions*
 
index 3a9de57cd7da6a057ee4594fcc2618f1707b52e1..b8b04403a075f80e75547a3ad49c3cc40e7bbb42 100644 (file)
@@ -1,4 +1,4 @@
-*if_cscop.txt*  For Vim version 7.0.  Last change: 2005 Mar 29
+*if_cscop.txt*  For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Andy Kahn
index 2760b116265687962612134936763c5f14b36e98..f42b1bfded7a3e5bbea771e58ee94f1360af742e 100644 (file)
@@ -1,4 +1,4 @@
-*if_mzsch.txt*  For Vim version 7.0.  Last change: 2006 Apr 30
+*if_mzsch.txt*  For Vim version 7.1a.  Last change: 2007 May 03
 
 
                  VIM REFERENCE MANUAL    by Sergey Khorev
@@ -23,6 +23,8 @@ Dynamic loading added by Sergey Khorev
 For downloading MzScheme and other info:
        http://www.plt-scheme.org/software/mzscheme/
 
+Note: On FreeBSD you should use the "drscheme" port.
+
 ==============================================================================
 1. Commands                                            *mzscheme-commands*
 
@@ -262,8 +264,9 @@ In a console window type "path" to see what directories are used.
 
 The names of the DLLs must match the MzScheme version Vim was compiled with.
 For MzScheme version 209 they will be "libmzsch209_000.dll" and
-"libmzgc209_000.dll". To know for sure edit "gvim.exe" and search for
-"libmzsch\d\d\d_\d\d\d\.dll\c".
+"libmzgc209_000.dll". To know for sure look at the output of the ":version"
+command, look for -DDYNAMIC_MZSCH_DLL="something" and
+-DDYNAMIC_MZGC_DLL="something" in the "Compilation" info.
 
 ======================================================================
   vim:tw=78:ts=8:sts=4:ft=help:norl:
index e8fac082ec6a32c7546451fb5f41826f4c9148d5..626da3e2fd7e588ee03f9c1fed5ae6888cad1a84 100644 (file)
@@ -1,4 +1,4 @@
-*if_ole.txt*    For Vim version 7.0.  Last change: 2006 Apr 30
+*if_ole.txt*    For Vim version 7.1a.  Last change: 2006 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Paul Moore
index c0c4bc8b798d44add9e91873c72342bfec66be50..930522df151fd30e4072a99482cdf98958c6639d 100644 (file)
@@ -1,4 +1,4 @@
-*if_perl.txt*   For Vim version 7.0.  Last change: 2006 Mar 06
+*if_perl.txt*   For Vim version 7.1a.  Last change: 2006 Mar 06
 
 
                  VIM REFERENCE MANUAL    by Sven Verdoolaege
index e171c6b12dd4a04ee450ea3f99558cfc542cfda2..04bbced3474fe953ca8d0b4ee8eb82e86174ff5e 100644 (file)
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*if_pyth.txt*   For Vim version 7.1a.  Last change: 2006 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Paul Moore
index 978782de39ca3ec40a2ef2c9b199df361038353e..a614172465dd778523b39cd84ed455a446c72b77 100644 (file)
@@ -1,4 +1,4 @@
-*if_ruby.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*if_ruby.txt*   For Vim version 7.1a.  Last change: 2006 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Shugo Maeda
index 9727760545939f178ea93f4b644a9b902379e535..3444c38311033b59689b27cbcf75a44cd558e7e8 100644 (file)
@@ -1,4 +1,4 @@
-*if_sniff.txt* For Vim version 7.0.  Last change: 2005 Mar 29
+*if_sniff.txt* For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL
index 8171ef9c350b8c0ed6308cf6b8d59e9dbf0a476c..f7188296cc3dcbf9575a7bc4a10365e6dc51b7f5 100644 (file)
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0.  Last change: 2006 May 05
+*insert.txt*    For Vim version 7.1a.  Last change: 2007 Apr 28
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -219,8 +219,8 @@ CTRL-_              Switch between languages, as follows:
                Please refer to |rileft.txt| for more information about
                right-to-left mode.
                {not in Vi}
-               Only if compiled with the |+rightleft| feature (which is not
-               the default).
+               Only if compiled with the |+rightleft| feature.
+
                                                *i_CTRL-^*
 CTRL-^         Toggle the use of typing language characters.
                When language |:lmap| mappings are defined:
@@ -1156,14 +1156,15 @@ any printable, non-white character:
 
 In all three states these can be used:
 CTRL-Y           Yes: Accept the currently selected match and stop completion.
-CTRL-E           End completion, go back to what was typed.
+CTRL-E           End completion, go back to what was there before selecting a
+                 match (what was typed or longest common string).
 <PageUp>         Select a match several entries back, but don't insert it.
 <PageDown>       Select a match several entries further, but don't insert it.
 <Up>             Select the previous match, as if CTRL-P was used, but don't
                  insert it.
 <Down>           Select the next match, as if CTRL-N was used, but don't
                  insert it.
-space or <Tab>   Stop completion without changing the match and insert the
+<Space> or <Tab>  Stop completion without changing the match and insert the
                  typed character.
 
 The behavior of the Enter key depends on the state you are in:
@@ -1210,7 +1211,8 @@ C                                                 *ft-c-omni*
 
 Completion of C code requires a tags file.  You should use Exuberant ctags,
 because it adds extra information that is needed for completion.  You can find
-it here: http://ctags.sourceforge.net/
+it here: http://ctags.sourceforge.net/  Version 5.6 or later is recommended.
+
 For version 5.5.4 you should add a patch that adds the "typename:" field:
        ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch
 A compiled .exe for MS-Windows can be found at:
@@ -1330,9 +1332,9 @@ will be suggested. All other elements are not placed in suggestion list.
 
 PHP                                                    *ft-php-omni*
 
-Completion of PHP code requires tags file for completion of data from external
-files. You should use Exuberant ctags version 5.5.4 or newer. You can find it
-here: http://ctags.sourceforge.net/
+Completion of PHP code requires a tags file for completion of data from
+external files and for class aware completion. You should use Exuberant ctags
+version 5.5.4 or newer. You can find it here: http://ctags.sourceforge.net/
 
 Script completes:
 
@@ -1390,8 +1392,10 @@ The completions provided by CTRL-X CTRL-O are sensitive to the context:
 
 Notes:
  - Vim will load/evaluate code in order to provide completions.  This may
-   cause some code execution, which may be a concern.
- - In context 1 above, Vim can parse the entire buffer to add a list of
+   cause some code execution, which may be a concern. This is no longer 
+   enabled by default, to enable this feature add >
+     let g:rubycomplete_buffer_loading = 1
+<- In context 1 above, Vim can parse the entire buffer to add a list of
    classes to the completion results. This feature is turned off by default,
    to enable it add >
      let g:rubycomplete_classes_in_global = 1
@@ -1407,8 +1411,13 @@ Notes:
 
 SYNTAX                                                 *ft-syntax-omni*
 
-This uses the current syntax highlighting for completion.  It can be used for
-any filetype and provides a minimal language-sensitive completion.
+Vim has the ability to color syntax highlight nearly 500 languages.  Part of
+this highlighting includes knowing what keywords are part of a language.  Many
+filetypes already have custom completion scripts written for them, the
+syntaxcomplete plugin provides basic completion for all other filetypes.  It
+does this by populating the omni completion list with the text Vim already
+knows how to color highlight.  It can be used for any filetype and provides a
+minimal language-sensitive completion.
 
 To enable syntax code completion you can run: >
        setlocal omnifunc=syntaxcomplete#Complete
@@ -1461,6 +1470,15 @@ groups: >
 You can create as many of these variables as you need, varying only the
 filetype at the end of the variable name.
 
+The plugin uses the isKeyword option to determine where word boundaries are
+for the syntax items.  For example, in the Scheme language completion should
+include the "-", call-with-output-file.  Depending on your filetype, this may
+not provide the words you are expecting.  Setting the
+g:omni_syntax_use_iskeyword option to 0 will force the syntax plugin to break
+on word characters.   This can be controlled adding the following to your
+vimrc: >
+    let g:omni_syntax_use_iskeyword = 0
+
 
 SQL                                                    *ft-sql-omni*
 
@@ -1771,13 +1789,13 @@ NOTE: ":append" and ":insert" don't work properly in between ":if" and
                        See |++opt| for the possible values of [++opt].
 
                                                        *:r!* *:read!*
-:r[ead] !{cmd}         Execute {cmd} and insert its standard output below
-                       the cursor.  A temporary file is used to store the
-                       output of the command which is then read into the
-                       buffer.  'shellredir' is used to save the output of
-                       the command, which can be set to include stderr or
-                       not.  {cmd} is executed like with ":!{cmd}", any '!'
-                       is replaced with the previous command |:!|.
+:[range]r[ead] !{cmd}  Execute {cmd} and insert its standard output below
+                       the cursor or the specified line.  A temporary file is
+                       used to store the output of the command which is then
+                       read into the buffer.  'shellredir' is used to save
+                       the output of the command, which can be set to include
+                       stderr or not.  {cmd} is executed like with ":!{cmd}",
+                       any '!' is replaced with the previous command |:!|.
 
 These commands insert the contents of a file, or the output of a command,
 into the buffer.  They can be undone.  They cannot be repeated with the "."
index 809abda4b968272256b876bbe0044f6d5ad8d79b..9a24736cb34a5dcba84f48a1c95fa40c0b223e41 100644 (file)
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 7.0.  Last change: 2006 Apr 30
+*mbyte.txt*     For Vim version 7.1a.  Last change: 2006 Aug 11
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
@@ -403,7 +403,8 @@ depends on the system used, no detailed list can be given.
  8bit      2byte       MS-Windows: works for all codepages installed on your
                        system; you can only type 8bit characters;
                        Other systems: does NOT work.
- 8bit     Unicode      Works, but you can only type 8bit characters; in a
+ 8bit     Unicode      Works, but only 8bit characters can be typed directly
+                       (others through digraphs, keymaps, etc.); in a
                        terminal you can only see 8bit characters; the GUI can
                        show all characters that the 'guifont' supports.
 
index c1ef8d502ba86f80da7dc2c8a90c429b769d8d47..7b27fc49745af434f76d4ba087b8707340f848d0 100644 (file)
@@ -1,4 +1,4 @@
-*mlang.txt*     For Vim version 7.0.  Last change: 2004 Feb 24
+*mlang.txt*     For Vim version 7.1a.  Last change: 2006 Jul 12
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -114,7 +114,7 @@ the language of your choice.  use "en" to disable translations. >
 ==============================================================================
 2. Menus                                               *multilang-menus*
 
-See |45.2| for the basics.
+See |45.2| for the basics, esp. using 'langmenu'.
 
 Note that if changes have been made to the menus after the translation was
 done, some of the menus may be shown in English.  Please try contacting the
index 6fdfd931023548db3e911005b620d99946a28c0e..1446db0a98a7668c291792a39d8108f8ae6f91eb 100644 (file)
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 7.0.  Last change: 2006 Apr 30
+*motion.txt*    For Vim version 7.1a.  Last change: 2006 Dec 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -169,15 +169,15 @@ l         or                                      *l*
 
                                                        *0*
 0                      To the first character of the line.  |exclusive|
-                       motion.  When moving up or down, stay in same screen
-                       column (if possible).
+                       motion.
 
                                                        *<Home>* *<kHome>*
 <Home>                 To the first character of the line.  |exclusive|
-                       motion.  When moving up or down, stay in same text
-                       column (if possible).  Works like "1|", which differs
-                       from "0" when the line starts with a <Tab>.  {not in
-                       Vi}
+                       motion.  When moving up or down next, stay in same
+                       TEXT column (if possible).  Most other commands stay
+                       in the same SCREEN column.  <Home> works like "1|",
+                       which differs from "0" when the line starts with a
+                       <Tab>.  {not in Vi}
 
                                                        *^*
 ^                      To the first non-blank character of the line.
@@ -752,11 +752,11 @@ m[  or  m]                Set the |'[| or |']| mark.  Useful when an operator is
                        be omitted.
 
                                                *'* *'a* *`* *`a*
-'{a-z}  `{a-z}         Jump to the mark {a-z}.
+'{a-z}  `{a-z}         Jump to the mark {a-z} in the current buffer.
 
                                                *'A* *'0* *`A* *`0*
-'{A-Z0-9}  `{A-Z0-9}   To the mark {A-Z0-9} in the correct file (not a motion
-                       command when in another file).  {not in Vi}
+'{A-Z0-9}  `{A-Z0-9}   To the mark {A-Z0-9} in the file where it was set (not
+                       a motion command when in another file).  {not in Vi}
 
                                                *g'* *g'a* *g`* *g`a*
 g'{mark}  g`{mark}
index fd9ab244cd0b5a46d3e38d73ffdcd3cdb4895eb6..11963557714f5f0d7e98656355a69c25ea6d8771 100644 (file)
@@ -1,4 +1,4 @@
-*os_390.txt*    For Vim version 7.0.  Last change: 2005 Mar 29
+*os_390.txt*    For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Ralf Schandl
index e872b4d04ef6219899690cffa3bfb623f81e0cfa..52276efaf8a8eda1e4eb093e7d0924ecc7295310 100644 (file)
@@ -1,4 +1,4 @@
-*os_beos.txt*  For Vim version 7.0.  Last change: 2005 Mar 29
+*os_beos.txt*  For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index d788477ea6e15ad69a2cb695c7b29405971cf5fa..e56d4c71ac8954bbeb769ea821effce5928d36b2 100644 (file)
@@ -1,4 +1,4 @@
-*os_mac.txt*    For Vim version 7.0.  Last change: 2006 Apr 30
+*os_mac.txt*    For Vim version 7.1a.  Last change: 2006 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
index 9a255d070efb47898628012c8f60a82271d9619e..e689b6e79d9730c342467274d423cf3728f381bd 100644 (file)
@@ -1,4 +1,4 @@
-*os_msdos.txt*  For Vim version 7.0.  Last change: 2005 Mar 29
+*os_msdos.txt*  For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 79f610617bdc52579320fe6084f9964b32092586..2756f224b764c97227f0b57c2319e0e78d2d3c5f 100644 (file)
@@ -1,4 +1,4 @@
-*os_risc.txt*   For Vim version 7.0.  Last change: 2005 Mar 29
+*os_risc.txt*   For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Thomas Leonard
index c6a987ffd479045162539066b589b7bc84faf442..96d7c14e1d6dc3b570301053512be3ee85f56c8f 100644 (file)
@@ -1,4 +1,4 @@
-*os_unix.txt*   For Vim version 7.0.  Last change: 2005 Mar 29
+*os_unix.txt*   For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/pi_getscript.txt b/runtime/doc/pi_getscript.txt
new file mode 100644 (file)
index 0000000..10d9387
--- /dev/null
@@ -0,0 +1,406 @@
+*pi_getscript.txt*  For Vim version 7.1a.  Last change: 2007 Apr 26
+>
+               GETSCRIPT REFERENCE MANUAL  by Charles E. Campbell, Jr.
+<
+Authors:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamilyA.Mbiz>
+         (remove NOSPAM from the email address)
+                                               *GetLatestVimScripts-copyright*
+Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.   *glvs-copyright*
+           The VIM LICENSE applies to getscript.vim and
+           pi_getscript.txt (see |copyright|) except use
+           "getscript" instead of "Vim".  No warranty, express or implied.
+          Use At-Your-Own-Risk.
+
+Getscript is a plugin that simplifies retrieval of the latest versions of the
+scripts that you yourself use!  Typing |:GLVS| will invoke getscript; it will
+then use the <GetLatestVimScripts.dat> (see |GetLatestVimScripts_dat|) file to
+get the latest versions of scripts listed therein from http://vim.sf.net/.
+
+==============================================================================
+1. Contents                            *glvs-contents* *glvs* *getscript*
+                                       *GetLatestVimScripts*
+
+       1. Contents........................................: |glvs-contents|
+       2. GetLatestVimScripts -- Getting Started..........: |glvs-install|
+       3. GetLatestVimScripts Usage.......................: |glvs-usage|
+       4. GetLatestVimScripts Data File...................: |glvs-data|
+       5. GetLatestVimScripts Friendly Plugins............: |glvs-plugins|
+       6. GetLatestVimScripts AutoInstall.................: |glvs-autoinstall|
+       7. GetLatestViMScripts Options.....................: |glvs-options|
+       8. GetLatestVimScripts Algorithm...................: |glvs-alg|
+       9. GetLatestVimScripts History.....................: |glvs-hist|
+
+
+==============================================================================
+2. GetLatestVimScripts -- Getting Started              *getscript-start*
+                                               *getlatestvimscripts-install*
+
+       VERSION FROM VIM DISTRIBUTION                   *glvs-dist-install*
+
+Vim 7.0 does not include the GetLatestVimScripts.dist file which
+serves as an example and a template.  So, you'll need to create
+your own!  See |GetLatestVimScripts_dat|.
+
+       VERSION FROM VIM SF NET                         *glvs-install*
+
+NOTE: The last step, that of renaming/moving the GetLatestVimScripts.dist
+file, is for those who have just downloaded GetLatestVimScripts.tar.bz2 for
+the first time.
+
+The GetLatestVimScripts.dist file serves as an example and a template for your
+own personal list.  Feel free to remove all the scripts mentioned within it;
+the "important" part of it is the first two lines.
+
+Your computer needs to have wget for GetLatestVimScripts to do its work.
+
+       1. if compressed:  gunzip getscript.vba.gz
+       2. Unix:
+               vim getscript.vba
+               :so %
+               :q
+               cd ~/.vim/GetLatest
+               mv GetLatestVimScripts.dist GetLatestVimScripts.dat
+               (edit GetLatestVimScripts.dat to install your own personal
+               list of desired plugins -- see |GetLatestVimScripts_dat|)
+       
+       3. Windows:
+               vim getscript.vba
+               :so %
+               :q
+               cd **path-to-vimfiles**/GetLatest
+               mv GetLatestVimScripts.dist GetLatestVimScripts.dat
+               (edit GetLatestVimScripts.dat to install your own personal
+               list of desired plugins -- see |GetLatestVimScripts_dat|)
+
+
+==============================================================================
+3. GetLatestVimScripts Usage                           *glvs-usage* *:GLVS*
+
+Unless its been defined elsewhere, >
+       :GLVS
+will invoke GetLatestVimScripts().  If some other plugin has defined that
+command, then you may type
+>
+       :GetLatestVimScripts
+<
+The script will attempt to update and, if permitted, will automatically
+install scripts from http://vim.sourceforge.net/.  To do so it will peruse a
+file,
+>
+       .vim/GetLatest/GetLatestVimScripts.dat                    (unix)
+<
+or >
+       ..wherever..\vimfiles\GetLatest\GetLatestVimScripts.dat   (windows)
+(see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin
+directory (see |glvs-plugins|).
+
+Scripts which have been downloaded will appear in the
+~/.vim/GetLatest (unix) or ..wherever..\vimfiles\GetLatest (windows)
+subdirectory.  GetLatestVimScripts will attempt to automatically
+install them if you have the following line in your <.vimrc>: >
+
+       let g:GetLatestVimScripts_allowautoinstall=1
+
+The <GetLatestVimScripts.dat> file will be automatically be updated to
+reflect the latest version of script(s) so downloaded.
+(also see |glvs-options|)
+
+
+==============================================================================
+4. GetLatestVimScripts Data File               *getscript-data* *glvs-data*
+                                               *:GetLatestVimScripts_dat*
+The data file <GetLatestVimScripts.dat> must have for its first two lines
+the following text:
+>
+       ScriptID SourceID Filename
+       --------------------------
+<
+Following those two lines are three columns; the first two are numeric
+followed by a text column.  The GetLatest/GetLatestVimScripts.dist file
+contains an example of such a data file.  Anything following a #... is
+ignored, so you may embed comments in the file.
+
+The first number on each line gives the script's ScriptID.  When you're about
+to use a web browser to look at scripts on http://vim.sf.net/, just before you
+click on the script's link, you'll see a line resembling
+
+       http://vim.sourceforge.net/scripts/script.php?script_id=40
+
+The "40" happens to be a ScriptID that GetLatestVimScripts needs to
+download the associated page.
+
+The second number on each line gives the script's SourceID.  The SourceID
+records the count of uploaded scripts as determined by vim.sf.net; hence it
+serves to indicate "when" a script was uploaded.  Setting the SourceID to 1
+insures that GetLatestVimScripts will assume that the script it has is
+out-of-date.
+
+The SourceID is extracted by GetLatestVimScripts from the script's page on
+vim.sf.net; whenever its greater than the one stored in the
+GetLatestVimScripts.dat file, the script will be downloaded
+(see |GetLatestVimScripts_dat|).
+
+If your script's author has included a special comment line in his/her plugin,
+the plugin itself will be used by GetLatestVimScripts to build your
+<GetLatestVimScripts.dat> file, including any dependencies on other scripts it
+may have.  As an example, consider: >
+
+       " GetLatestVimScripts: 884  1 :AutoInstall: AutoAlign.vim
+
+This comment line tells getscript.vim to check vimscript #884 and that the
+script is automatically installable.  Getscript will also use this line to
+help build the GetLatestVimScripts.dat file, by including a line such as: >
+
+       884 1 AutoAlign.vim
+<
+in it an AutoAlign.vim line isn't already in GetLatestVimScripts.dat file.
+See |glvs-plugins| for more.  Thus, GetLatestVimScripts thus provides a
+comprehensive ability to keep your plugins up-to-date!
+
+                                               *GetLatestVimScripts_dat*
+As an example of a <GetLatestVimScripts.dat> file:
+>
+    ScriptID SourceID Filename
+    --------------------------
+    294 1 Align.vim
+    120 2 decho.vim
+     40 3 DrawIt.tar.gz
+    451 4 EasyAccents.vim
+    195 5 engspchk.vim
+    642 6 GetLatestVimScripts.vim
+    489 7 Manpageview.vim
+<
+Note: the first two lines are required, but essentially act as comments.
+
+
+==============================================================================
+5. GetLatestVimScripts Friendly Plugins        *getscript-plugins* *glvs-plugins*
+
+If a plugin author includes the following comment anywhere in their plugin,
+GetLatestVimScripts will find it and use it to automatically build the user's
+GetLatestVimScripts.dat files:
+>
+                                src_id
+                                   v
+       " GetLatestVimScripts: ### ### yourscriptname
+                               ^
+                           scriptid
+<
+As an author, you should include such a line in to refer to your own script
+plus any additional lines describing any plugin dependencies it may have.
+Same format, of course!
+
+If your command is auto-installable (see |glvs-autoinstall|), and most scripts
+are, then you may include :AutoInstall: at the start of "yourscriptname".
+
+GetLatestVimScripts commands for those scripts are then appended, if not
+already present, to the user's GetLatest/GetLatestVimScripts.dat file.  Its a
+relatively painless way to automate the acquisition of any scripts your
+plugins depend upon.
+
+Now, as an author, you probably don't want GetLatestVimScripts to download
+your own scripts for you yourself, thereby overwriting your not-yet-released
+hard work.  GetLatestVimScripts provides a solution for this:  put
+>
+       0 0 yourscriptname
+<
+into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will skip
+examining the "yourscriptname" scripts for those GetLatestVimScripts comment
+lines.  As a result, those lines won't be inadvertently installed into your
+<GetLatestVimScripts.dat> file and subsequently used to download your own
+scripts.  This is especially important to do if you've included the
+:AutoInstall: option.
+
+Be certain to use the same "yourscriptname" in the "0 0 yourscriptname" line
+as you've used in your GetLatestVimScripts comment!
+
+
+==============================================================================
+6. GetLatestVimScripts AutoInstall                     *getscript-autoinstall*
+                                                       *glvs-autoinstall*
+
+GetLatestVimScripts now supports "AutoInstall".  Not all scripts are
+supportive of auto-install, as they may have special things you need to do to
+install them (please refer to the script's "install" directions).  On the
+other hand, most scripts will be auto-installable.
+
+To let GetLatestVimScripts do an autoinstall, the data file's comment field
+should begin with (surrounding blanks are ignored): >
+
+       :AutoInstall:
+<
+Both colons are needed, and it should begin the comment (yourscriptname)
+field.
+
+One may prevent any autoinstalling by putting the following line in your
+<.vimrc>: >
+
+       let g:GetLatestVimScripts_allowautoinstall= 0
+<
+With :AutoInstall: enabled, as it is by default, files which end with
+
+       ---.tar.bz2  : decompressed & untarred in .vim/ directory
+       ---.vba.bz2  : decompressed in .vim/ directory, then vimball handles it
+       ---.vim.bz2  : decompressed & moved into .vim/plugin directory
+       ---.tar.gz   : decompressed & untarred in .vim/ directory
+       ---.vba.gz   : decompressed in .vim/ directory, then vimball handles it
+       ---.vim.gz   : decompressed & moved into .vim/plugin directory
+       ---.vba      : unzipped in .vim/ directory
+       ---.vim      : moved to .vim/plugin directory
+       ---.zip      : unzipped in .vim/ directory
+
+and which merely need to have their components placed by the untar/gunzip or
+move-to-plugin-directory process should be auto-installable.  Vimballs, of
+course, should always be auto-installable.
+
+When is a script not auto-installable?  Let me give an example:
+
+       .vim/after/syntax/blockhl.vim
+
+The <blockhl.vim> script provides block highlighting for C/C++ programs; it is
+available at:
+
+       http://vim.sourceforge.net/scripts/script.php?script_id=104
+
+Currently, vim's after/syntax only supports by-filetype scripts (in
+blockhl.vim's case, that's after/syntax/c.vim).  Hence, auto-install would
+possibly overwrite the current user's after/syntax/c.vim file.
+
+In my own case, I use <aftersyntax.vim> (renamed to after/syntax/c.vim) to
+allow a after/syntax/c/ directory:
+
+       http://vim.sourceforge.net/scripts/script.php?script_id=1023
+
+The script allows multiple syntax files to exist separately in the
+after/syntax/c subdirectory.  I can't bundle aftersyntax.vim in and build an
+appropriate tarball for auto-install because of the potential for the
+after/syntax/c.vim contained in it to overwrite a user's c.vim.
+
+
+==============================================================================
+7. GetLatestVimScripts Options                                 *glvs-options*
+>
+       g:GetLatestVimScripts_wget
+<      default= "wget"
+               This variable holds the name of the command for obtaining
+               scripts.
+>
+       g:GetLatestVimScripts_options
+<      default= "-q -O"
+               This variable holds the options to be used with the
+               g:GetLatestVimScripts_wget command.
+>
+       g:getLatestVimScripts_allowautoinstall
+<      default= 1
+               This variable indicates whether GetLatestVimScripts is allowed
+               to attempt to automatically install scripts.  Note that it
+               doesn't understand vimballs (yet).  Furthermore, the plugin
+               author has to have explicitly indicated that his/her plugin
+               is automatically installable.
+
+
+==============================================================================
+8. GetLatestVimScripts Algorithm               *glvs-algorithm* *glvs-alg*
+
+The Vim sourceforge page dynamically creates a page by keying off of the
+so-called script-id.  Within the webpage of
+
+       http://vim.sourceforge.net/scripts/script.php?script_id=40
+
+is a line specifying the latest source-id (src_id).  The source identifier
+numbers are always increasing, hence if the src_id is greater than the one
+recorded for the script in GetLatestVimScripts then its time to download a
+newer copy of that script.
+
+GetLatestVimScripts will then download the script and update its internal
+database of script ids, source ids, and scriptnames.
+
+The AutoInstall process will:
+
+       Move the file from GetLatest/ to the following directory
+               Unix   : $HOME/.vim
+               Windows: $HOME\vimfiles
+       if the downloaded file ends with ".bz2"
+               bunzip2 it
+       else if the downloaded file ends with ".gz"
+               gunzip it
+       if the resulting file ends with ".zip"
+               unzip it
+       else if the resulting file ends with ".tar"
+               tar -oxvf it
+       else if the resulting file ends with ".vim"
+               move it to the plugin subdirectory
+
+
+==============================================================================
+9. GetLatestVimScripts History         *getscript-history* *glvs-hist* {{{1
+
+v23 Nov 03, 2006 : * ignores comments (#...)
+                   * handles vimballs
+v22 Oct 13, 2006 : * supports automatic use of curl if wget is not
+                     available
+v21 May 01, 2006 : * now takes advantage of autoloading.
+v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
+                     unzip needs the -o flag to overwrite.
+v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
+                     script! Fixed.
+v18 Mar 21, 2005 : * bugfix to automatic database construction
+                   * bugfix - nowrapscan caused an error
+                     (tnx to David Green for the fix)
+    Apr 01, 2005   * if shell is bash, "mv" instead of "ren" used in
+                     :AutoInstall:s, even though its o/s is windows
+    Apr 01, 2005   * when downloading errors occurred, GLVS was
+                     terminating early.  It now just goes on to trying
+                     the next script (after trying three times to
+                     download a script description page)
+    Apr 20, 2005   * bugfix - when a failure to download occurred,
+                     GetLatestVimScripts would stop early and claim that
+                     everything was current.  Fixed.
+v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
+                     defaults to 1, can be used to prevent all
+                     :AutoInstall:
+v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
+                   * fixed bug with :AutoInstall: use of helptags
+v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
+                     always preventing downloads (just usually).  Fixed.
+v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
+                     s:dotvim.  Fixed.
+v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
+                     is zero.  Useful for script authors; that way their
+                     own GetLatestVimScripts activity won't overwrite
+                     their scripts.
+v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
+                     was intended only for testing.  Removed, now works.
+                   * :AutoInstall: implemented
+v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
+                   * :GetLatestVimScripts command
+                   * (runtimepath)/GetLatest/GetLatestVimScripts.dat
+                     now holds scripts that need updating
+v10 Apr 19, 2004 : * moved history from script to doc
+v9  Jan 23, 2004 :   windows (win32/win16/win95) will use
+                     double quotes ("") whereas other systems will use
+                     single quotes ('') around the urls in calls via wget
+v8  Dec 01, 2003 :   makes three tries at downloading
+v7  Sep 02, 2003 :   added error messages if "Click on..." or "src_id="
+                     not found in downloaded webpage
+                     Uses t_ti, t_te, and rs to make progress visible
+v6  Aug 06, 2003 :   final status messages now display summary of work
+                     ( "Downloaded someqty scripts" or
+                       "Everything was current")
+                     Now GetLatestVimScripts is careful about downloading
+                     GetLatestVimScripts.vim itself!
+                     (goes to <NEW_GetLatestVimScripts.vim>)
+v5  Aug 04, 2003 :   missing an endif near bottom
+v4  Jun 17, 2003 :   redraw! just before each "considering" message
+v3  May 27, 2003 :   Protects downloaded files from errant shell
+                     expansions with single quotes: '...'
+v2  May 14, 2003 :   extracts name of item to be obtained from the
+                     script file.  Uses it instead of comment field
+                     for output filename; comment is used in the
+                     "considering..." line and is now just a comment!
+                   * Fixed a bug: a string-of-numbers is not the
+                     same as a number, so I added zero to them
+                     and they became numbers.  Fixes comparison.
+
+==============================================================================
+vim:tw=78:ts=8:ft=help:fdm=marker
index 1d9466ac27102a90bbbfd38c3118855a45614e26..e29ea1be7fdb29306ca6316aa527592ba56413fb 100644 (file)
@@ -1,4 +1,4 @@
-*pi_gzip.txt*   For Vim version 7.0.  Last change: 2002 Oct 29
+*pi_gzip.txt*   For Vim version 7.1a.  Last change: 2002 Oct 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 5c01d61acf7fb5267d67757cc91379368cc9d0b3..d5821de11be370a3ec84b11487e1c2065bceafde 100644 (file)
@@ -1,17 +1,20 @@
-*pi_netrw.txt*  For Vim version 7.0.  Last change: 2006 May 02
+*pi_netrw.txt*  For Vim version 7.1a.  Last change: 2007 May 05
 
-               NETRW REFERENCE MANUAL    by Charles E. Campbell, Jr.
+           -----------------------------------------------------
+           NETRW REFERENCE MANUAL    by Charles E. Campbell, Jr.
+           -----------------------------------------------------
 
 
-*dav*          *http*          *network*       *rcp*           *scp*
-*fetch*                *netrw*         *Nread*         *rsync*         *sftp*
-*ftp*          *netrw.vim*     *Nwrite*        *netrw-file*
+*dav*           *http*          *network*       *Nwrite*   *netrw-file*
+*fetch*         *netrw*         *Nread*         *rcp*      *scp*
+*ftp*           *netrw.vim*     *Nsource*       *rsync*    *sftp*
 
 ==============================================================================
-0. Contents                                            *netrw-contents*
+1. Contents                                            *netrw-contents*
 
-1.  Starting With Netrw..................................|netrw-start|
-2.  Netrw Reference......................................|netrw-ref|
+1.  Contents.............................................|netrw-contents|
+2.  Starting With Netrw..................................|netrw-start|
+3.  Netrw Reference......................................|netrw-ref|
       CONTROLLING EXTERNAL APPLICATIONS..................|netrw-externapp|
       READING............................................|netrw-read|
       WRITING............................................|netrw-write|
       CHANGING THE USERID AND PASSWORD...................|netrw-chgup|
       VARIABLES..........................................|netrw-variables|
       PATHS..............................................|netrw-path|
-3.  Network-Oriented File Transfer.......................|netrw-xfer|
+4.  Network-Oriented File Transfer.......................|netrw-xfer|
       NETRC..............................................|netrw-netrc|
       PASSWORD...........................................|netrw-passwd|
-4.  Activation...........................................|netrw-activate|
-5.  Transparent File Transfer............................|netrw-transparent|
-6.  Ex Commands..........................................|netrw-ex|
-7.  Variables and Options................................|netrw-var|
-8.  Directory Browsing...................................|netrw-browse| {{{1
+5.  Activation...........................................|netrw-activate|
+6.  Transparent File Transfer............................|netrw-transparent|
+7.  Ex Commands..........................................|netrw-ex|
+8.  Variables and Options................................|netrw-var|
+9.  Directory Browsing...................................|netrw-browse| {{{1
       Maps...............................................|netrw-maps|
       Exploring..........................................|netrw-explore-cmds|
       Quick Reference Commands Table.....................|netrw-browse-cmds|
       Going Up...........................................|netrw--|
       Browsing...........................................|netrw-cr|
       Obtaining A File...................................|netrw-O|
-      Thin, Long, and Wide Listings......................|netrw-i|
+      Change Listing Style...............................|netrw-i|
       Making A New Directory.............................|netrw-d|
       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|
       Browsing With A Horizontally Split Window..........|netrw-o|
+      Browsing With A Vertically Split Window............|netrw-v|
+      Browsing With A New Tab............................|netrw-t|
       Preview Window.....................................|netrw-p|
       Selecting Sorting Style............................|netrw-s|
       Editing The Sorting Sequence.......................|netrw-S|
       Reversing Sorting Order............................|netrw-r|
       Changing To A Predecessor Directory................|netrw-u|
       Changing To A Successor Directory..................|netrw-U|
-      Browsing With A Vertically Split Window............|netrw-v|
       Customizing Browsing With A User Function..........|netrw-x|
       Making The Browsing Directory The Current Directory|netrw-c|
-      Bookmarking A Directory............................|netrw-b| |netrw-Nb|
-      Changing To A Bookmarked Directory.................|netrw-B| |netrw-NB|
+      Bookmarking A Directory............................|netrw-mb|
+      Changing To A Bookmarked Directory.................|netrw-gb|
       Listing Bookmarks And History......................|netrw-q|
       Improving Directory Browsing.......................|netrw-listhack| }}}1
-9.  Problems and Fixes...................................|netrw-problems|
-10. Debugging............................................|netrw-debug|
-11. History..............................................|netrw-history|
-12. Credits..............................................|netrw-credits|
+10. Problems and Fixes...................................|netrw-problems|
+11. Debugging............................................|netrw-debug|
+12. History..............................................|netrw-history|
+13. Credits..............................................|netrw-credits|
 
 The Netrw plugin is generally sourced automatically as it is a
 |standard-plugin|.  That said, to make use of netrw, one must
 have plugins available which can be done with the following
 two lines in your <.vimrc>: >
 
-       set nocp                    " 'compatible' is not set
-       filetype plugin on          " plugins are enabled
+       set nocp                    " 'compatible' is not set
+       filetype plugin on          " plugins are enabled
 <
 You can avoid loading this plugin by setting the "loaded_netrw" variable
 in your <.vimrc> file: >
@@ -79,14 +83,14 @@ in your <.vimrc> file: >
 {Vi does not have any of this}
 
 ==============================================================================
-1. Starting With Netrw                                         *netrw-start*
+2. Starting With Netrw                                         *netrw-start*
 
 Netrw makes reading, writing, and browsing over a network connection easy!
 First, make sure that you have plugins enabled, so you'll need to have at
 least the following in your <.vimrc>: (or see |netrw-activate|) >
 
-       set nocp                    " 'compatible' is not set
-       filetype plugin on          " plugins are enabled
+       set nocp                    " 'compatible' is not set
+       filetype plugin on          " plugins are enabled
 <
 (see |'cp'| and |:filetype-plugin-on|)
 
@@ -111,9 +115,9 @@ and has lines resembling >
        machine HOSTNAME login USERID password "PASSWORD"
        machine HOSTNAME login USERID password "PASSWORD"
        ...
-       default          login USERID password "PASSWORD"
+       default          login USERID password "PASSWORD"
 <
-How about browsing -- ie. you just want to look around before editing a
+Now about browsing -- ie. when you just want to look around before editing a
 file.  For browsing on your current host, just "edit" a directory: >
 
        vim .
@@ -131,7 +135,7 @@ There's more protocols supported than scp and ftp, too: see the next
 section, |netrw-externapp|.
 
 ==============================================================================
-2. Netrw Reference                                             *netrw-ref*
+3. Netrw Reference                                             *netrw-ref*
 
 CONTROLLING EXTERNAL APPLICATIONS                      *netrw-externapp*
 
@@ -140,8 +144,9 @@ CONTROLLING EXTERNAL APPLICATIONS                   *netrw-externapp*
           dav:    *g:netrw_dav_cmd*  = "cadaver"
         fetch:  *g:netrw_fetch_cmd*  = "fetch -o"    if fetch is available
           ftp:    *g:netrw_ftp_cmd*  = "ftp"
-         http:   *g:netrw_http_cmd*  = "fetch -o"    if fetch is available
-         http:    g:netrw_http_cmd   = "wget -q -O"  If wget  is available
+         http:   *g:netrw_http_cmd*  = "curl -o"     if      curl  is available
+         http:    g:netrw_http_cmd   = "wget -q -O"  else if wget  is available
+          http:    g:netrw_http_cmd   = "fetch -o"    else if fetch is available
           rcp:    *g:netrw_rcp_cmd*  = "rcp"
         rsync:  *g:netrw_rsync_cmd*  = "rsync -a"
           scp:    *g:netrw_scp_cmd*  = "scp -q"
@@ -174,10 +179,22 @@ WRITING                                           *netrw-write* *netrw-nwrite*
        :Nwrite "sftp://[user@]machine/path"            uses sftp
        http: not supported!
 
+SOURCING                                       *netrw-source*
+       :Nsource ?                                      give help
+       :Nsource "dav://machine[:port]/path"            uses cadaver
+       :Nsource "fetch://[user@]machine/path"          uses fetch
+       :Nsource "ftp://[user@]machine[[:#]port]/path"  uses ftp w/ <.netrc>
+       :Nsource "http://[user@]machine/path"           uses http  uses wget
+       :Nsource "rcp://[user@]machine/path"            uses rcp
+       :Nsource "rsync://[user@]machine[:port]/path"   uses rsync
+       :Nsource "scp://[user@]machine[[:#]port]/path"  uses scp
+       :Nsource "sftp://[user@]machine/path"           uses sftp
+
 DIRECTORY LISTING                                      *netrw-dirlist*
        :Nread [protocol]://[user]@hostname/path/
 
- CHANGING USERID AND PASSWORD                          *netrw-chgup*
+                                               *netrw-login* *netrw-password*
+ CHANGING USERID AND PASSWORD                  *netrw-chgup* *netrw-userpass*
        Attempts to use ftp will prompt you for a user-id and a password.
        These will be saved in g:netrw_uid and g:netrw_passwd Subsequent uses
        of ftp will re-use those.  If you need to use a different user id
@@ -189,14 +206,12 @@ DIRECTORY LISTING                                 *netrw-dirlist*
        :call NetUserPass("uid","password")     -- sets global uid and password
 
 VARIABLES                                              *netrw-variables*
+
+(see also: |netrw-browse-var| |netrw-protocol| |netrw-settings| |netrw-var|)
+
  *b:netrw_lastfile*    last file Network-read/written retained on a per-buffer
                        basis           (supports plain :Nw )
 
- *s:netrw_line*                during :Nw/NetWrite, holds current line number
- *s:netrw_col*         during :Nw/NetWrite, holds current column number
-                       s:netrw_line and s:netrw_col are used to
-                       restore the cursor position on writes
-
  *g:netrw_ftp*         if it doesn't exist, use default ftp
                        =0 use default ftp                     (uid password)
                        =1 use alternate ftp method       (user uid password)
@@ -204,16 +219,36 @@ VARIABLES                                         *netrw-variables*
                        value of this variable to see if the alternate ftp
                        method works for your setup.
 
+ *g:netrw_extracmd*    default: doesn't exist
+                        If this variable exists, then any string it contains
+                       will be placed into the commands set to your ftp
+                       client.  As an example:
+                         ="passive"
+
  *g:netrw_ftpmode*     ="binary"                                   (default)
                        ="ascii"
 
- *g:netrw_ignorenetrc* =0 (default)
+ *g:netrw_ignorenetrc* =0 (default for linux, cygwin)
                        =1 If you have a <.netrc> file but it doesn't work and
                           you want it ignored, then set this variable as shown.
+                          (default for Windows + cmd.exe)
+
+ *g:netrw_menu*                =0 disable netrw's menu
+                       =1 (default) netrw's menu enabled
+
+ *g:netrw_nogx*                if this variable exists, then the "gx" map will not
+                       be available (see |netrw-gx|)
 
  *g:netrw_uid*         (ftp) user-id,      retained on a per-session basis
  *g:netrw_passwd*      (ftp) password,     retained on a per-session basis
 
+ *g:netrw_shq*         = "'" for Unix/Linux systems (ie. a single quote)
+                       = "'" for Windows + cygwin systems (ie. a single quote)
+                       = '"' for Windows systems, not using cygwin
+                             (ie. a double quote)
+                       Controls the quoting character used during scp and ftp
+                       commands.
+
  *g:netrw_win95ftp*    =1 if using Win95, will remove four trailing blank
                           lines that o/s's ftp "provides" on transfers
                        =0 force normal ftp behavior (no trailing line removal)
@@ -226,7 +261,7 @@ VARIABLES                                           *netrw-variables*
                        This option is ignored if you're using unix
 
  *g:netrw_use_nt_rcp*  =0 don't use the rcp of WinNT, Win2000 and WinXP
-                       =1 use WinNT's rcp in binary mode         (default)
+                       =1 use WinNT's rcp in binary mode         (default)
 
 PATHS                                                          *netrw-path*
 
@@ -245,7 +280,7 @@ file using root-relative paths, use the full path:
 <
 
 ==============================================================================
-3. Network-Oriented File Transfer                              *netrw-xfer*
+4. Network-Oriented File Transfer                              *netrw-xfer*
 
 Network-oriented file transfer under Vim is implemented by a VimL-based script
 (<netrw.vim>) using plugin techniques.  It currently supports both reading and
@@ -267,12 +302,16 @@ series of commands (typically ftp) which it issues to an external program
 from/written to a temporary file (under Unix/Linux, /tmp/...) which the
 <netrw.vim> script will clean up.
 
-                                               *netrw-putty* *netrw-pscp*
+                               *netrw-putty* *netrw-pscp* *netrw-psftp*
 One may modify any protocol's implementing external application by setting a
 variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to
 "scp -q").  As an example, consider using PuTTY: >
-       let g:netrw_scp_cmd= '"c:\Program Files\PuTTY\pscp.exe" -q -batch'
+
+       let g:netrw_scp_cmd = '"c:\Program Files\PuTTY\pscp.exe" -q -batch'
+       let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"'
 <
+See |netrw-p8| for more about putty, pscp, psftp, etc.
+
 Ftp, an old protocol, seems to be blessed by numerous implementations.
 Unfortunately, some implementations are noisy (ie., add junk to the end of the
 file).  Thus, concerned users may decide to write a NetReadFixup() function
@@ -303,57 +342,57 @@ additional prompting.
 
                                                                *netrw-urls*
   +=================================+============================+============+
-  |  Reading                       | Writing                    |  Uses      |
+  |  Reading                        | Writing                    |  Uses      |
   +=================================+============================+============+
-  | DAV:                           |                            |            |
-  |  dav://host/path               |                            | cadaver    |
-  |  :Nread dav://host/path        | :Nwrite dav://host/path    | cadaver    |
+  | DAV:                            |                            |            |
+  |  dav://host/path                |                            | cadaver    |
+  |  :Nread dav://host/path         | :Nwrite dav://host/path    | cadaver    |
   +---------------------------------+----------------------------+------------+
-  | FETCH:                         |                            |            |
-  |  fetch://[user@]host/path      |                            |            |
-  |  fetch://[user@]host:http/path  |  Not Available            | fetch      |
-  |  :Nread fetch://[user@]host/path|                           |            |
+  | FETCH:                          |                            |            |
+  |  fetch://[user@]host/path       |                            |            |
+  |  fetch://[user@]host:http/path  |  Not Available             | fetch      |
+  |  :Nread fetch://[user@]host/path|                            |            |
   +---------------------------------+----------------------------+------------+
-  | FILE:                          |                            |            |
-  |  file:///*                     | file:///*                  |            |
-  |  file://localhost/*                    | file://localhost/*         |            |
+  | FILE:                           |                            |            |
+  |  file:///*                      | file:///*                  |            |
+  |  file://localhost/*             | file://localhost/*         |            |
   +---------------------------------+----------------------------+------------+
-  | FTP:         (*3)              |              (*3)          |            |
-  |  ftp://[user@]host/path        | ftp://[user@]host/path     | ftp  (*2)  |
-  |  :Nread ftp://host/path        | :Nwrite ftp://host/path    | ftp+.netrc |
-  |  :Nread host path              | :Nwrite host path          | ftp+.netrc |
-  |  :Nread host uid pass path     | :Nwrite host uid pass path | ftp        |
+  | FTP:          (*3)              |              (*3)          |            |
+  |  ftp://[user@]host/path         | ftp://[user@]host/path     | ftp  (*2)  |
+  |  :Nread ftp://host/path         | :Nwrite ftp://host/path    | ftp+.netrc |
+  |  :Nread host path               | :Nwrite host path          | ftp+.netrc |
+  |  :Nread host uid pass path      | :Nwrite host uid pass path | ftp        |
   +---------------------------------+----------------------------+------------+
-  | HTTP: wget is executable: (*4)  |                           |            |
-  |  http://[user@]host/path       |        Not Available       | wget       |
+  | HTTP: wget is executable: (*4)  |                            |            |
+  |  http://[user@]host/path        |        Not Available       | wget       |
   +---------------------------------+----------------------------+------------+
-  | HTTP: fetch is executable (*4)  |                           |            |
-  |  http://[user@]host/path       |        Not Available       | fetch      |
+  | HTTP: fetch is executable (*4)  |                            |            |
+  |  http://[user@]host/path        |        Not Available       | fetch      |
   +---------------------------------+----------------------------+------------+
-  | RCP:                           |                            |            |
-  |  rcp://[user@]host/path        | rcp://[user@]host/path     | rcp        |
+  | RCP:                            |                            |            |
+  |  rcp://[user@]host/path         | rcp://[user@]host/path     | rcp        |
   +---------------------------------+----------------------------+------------+
-  | RSYNC:                         |                            |            |
-  |  rsync://[user@]host/path      | rsync://[user@]host/path   | rsync      |
-  |  :Nread rsync://host/path      | :Nwrite rsync://host/path  | rsync      |
-  |  :Nread rcp://host/path        | :Nwrite rcp://host/path    | rcp        |
+  | RSYNC:                          |                            |            |
+  |  rsync://[user@]host/path       | rsync://[user@]host/path   | rsync      |
+  |  :Nread rsync://host/path       | :Nwrite rsync://host/path  | rsync      |
+  |  :Nread rcp://host/path         | :Nwrite rcp://host/path    | rcp        |
   +---------------------------------+----------------------------+------------+
-  | SCP:                           |                            |            |
-  |  scp://[user@]host/path        | scp://[user@]host/path     | scp        |
-  |  :Nread scp://host/path        | :Nwrite scp://host/path    | scp  (*1)  |
+  | SCP:                            |                            |            |
+  |  scp://[user@]host/path         | scp://[user@]host/path     | scp        |
+  |  :Nread scp://host/path         | :Nwrite scp://host/path    | scp  (*1)  |
   +---------------------------------+----------------------------+------------+
-  | SFTP:                          |                            |            |
-  |  sftp://[user@]host/path       | sftp://[user@]host/path    | sftp       |
-  |  :Nread sftp://host/path       | :Nwrite sftp://host/path   | sftp  (*1) |
+  | SFTP:                           |                            |            |
+  |  sftp://[user@]host/path        | sftp://[user@]host/path    | sftp       |
+  |  :Nread sftp://host/path        | :Nwrite sftp://host/path   | sftp  (*1) |
   +=================================+============================+============+
 
        (*1) For an absolute path use scp://machine//path.
 
        (*2) if <.netrc> is present, it is assumed that it will
        work with your ftp client.  Otherwise the script will
-       prompt for user-id and pasword.
+       prompt for user-id and password.
 
-       (*3) for ftp, "machine" may be machine#port or machine:port
+        (*3) for ftp, "machine" may be machine#port or machine:port
        if a different port is needed than the standard ftp port
 
        (*4) for http:..., if wget is available it will be used.  Otherwise,
@@ -393,7 +432,7 @@ However, |netrw-listhack| can help with this problem.
 
 
 ==============================================================================
-4. Activation                                          *netrw-activate*
+5. Activation                                          *netrw-activate*
 
 Network-oriented file transfers are available by default whenever Vim's
 |'nocompatible'| mode is enabled.  The <netrw.vim> file resides in your
@@ -408,7 +447,7 @@ up vim.  I suggest that, at a minimum, you have at least the following in your
 <
 
 ==============================================================================
-5. Transparent File Transfer                           *netrw-transparent*
+6. Transparent File Transfer                           *netrw-transparent*
 
 Transparent file transfers occur whenever a regular file read or write
 (invoked via an |:autocmd| for |BufReadCmd| or |BufWriteCmd| events) is made.
@@ -423,12 +462,16 @@ such as netrw.
 
 
 ==============================================================================
-6. Ex Commands                                         *netrw-ex*
+7. Ex Commands                                         *netrw-ex*
 
 The usual read/write commands are supported.  There are also a few
 additional commands available.  Often you won't need to use Nw or
-Nread as shown in |netrw-transparent| (ie. use :e url, :r url, :w url;
-see |netrw-urls|).
+Nread as shown in |netrw-transparent| (ie. simply use >
+  :e url
+  :r url
+  :w url
+instead, as appropriate) -- see |netrw-urls|.  In the explanations
+below, a {netfile} is an url to a remote file.
 
 :[range]Nw     Write the specified lines to the current
                file as specified in b:netrw_lastfile.
@@ -443,7 +486,14 @@ see |netrw-urls|).
 :Nread {netfile} {netfile}...
                Read the {netfile} after the current line.
 
-                                                               *netrw-uidpass*
+:Nsource {netfile}
+               Source the {netfile}.
+               To start up vim using a remote .vimrc, one may use
+               the following (all on one line) (tnx to Antoine Mechelynck) >
+               vim -u NORC -N
+                --cmd "runtime plugin/netrwPlugin.vim"
+                --cmd "source scp://HOSTNAME/.vimrc"
+<                                                              *netrw-uidpass*
 :call NetUserPass()
                If b:netrw_uid and b:netrw_passwd don't exist,
                this function query the user for them.
@@ -458,48 +508,50 @@ see |netrw-urls|).
                effectively remove the user-id and password by using ""
                strings.
 
-:NetrwSettings This command is desribed in |netrw-settings| -- used to
-               display netrw settings and change netrw behavior.
+:NetrwSettings  This command is described in |netrw-settings| -- used to
+                display netrw settings and change netrw behavior.
 
 
 ==============================================================================
-7. Variables and Options                       *netrw-options* *netrw-var*
+8. Variables and Options                       *netrw-options* *netrw-var*
 
-The script <netrw.vim> uses several variables which can affect <netrw.vim>'s
-behavior.  These variables typically may be set in the user's <.vimrc> file:
-(also see |netrw-settings|) >
+The <netrw.vim> script provides several variables which act as options to
+ffect <netrw.vim>'s behavior.  These variables typically may be set in the
+user's <.vimrc> file:
+(see also: |netrw-settings| |netrw-browse-var| |netrw-protocol|
+|netrw-settings|) >
 
-                       -------------
-                       Netrw Options
-                       -------------
+                        -------------
+                        Netrw Options
+                        -------------
        Option                  Meaning
        --------------          -----------------------------------------------
 <
-       b:netrw_col             Holds current cursor position (during NetWrite)
-       g:netrw_cygwin          =1 assume scp under windows is from cygwin
-                                                             (default/windows)
-                               =0 assume scp under windows accepts windows
-                                  style paths                (default/else)
-       g:netrw_ftp             =0 use default ftp            (uid password)
-       g:netrw_ftpmode         ="binary"                     (default)
-                               ="ascii"                      (your choice)
-       g:netrw_ignorenetrc     =1                            (default)
-                                  if you have a <.netrc> file but you don't
+        b:netrw_col             Holds current cursor position (during NetWrite)
+        g:netrw_cygwin          =1 assume scp under windows is from cygwin
+                                                              (default/windows)
+                                =0 assume scp under windows accepts windows
+                                   style paths                (default/else)
+        g:netrw_ftp             =0 use default ftp            (uid password)
+        g:netrw_ftpmode         ="binary"                     (default)
+                                ="ascii"                      (your choice)
+       g:netrw_ignorenetrc     =1                            (default)
+                                  if you have a <.netrc> file but you don't
                                   want it used, then set this variable.  Its
                                   mere existence is enough to cause <.netrc>
                                   to be ignored.
-       b:netrw_lastfile        Holds latest method/machine/path.
-       b:netrw_line            Holds current line number     (during NetWrite)
-       g:netrw_passwd          Holds current password for ftp.
-       g:netrw_silent          =0 transfers done normally
-                               =1 transfers done silently
-       g:netrw_uid             Holds current user-id for ftp.
-                               =1 use alternate ftp         (user uid password)
-                               (see |netrw-options|)
-       g:netrw_use_nt_rcp      =0 don't use WinNT/2K/XP's rcp (default)
-                               =1 use WinNT/2K/XP's rcp, binary mode
-       g:netrw_win95ftp        =0 use unix-style ftp even if win95/98/ME/etc
-                               =1 use default method to do ftp >
+        b:netrw_lastfile        Holds latest method/machine/path.
+        b:netrw_line            Holds current line number     (during NetWrite)
+        g:netrw_passwd          Holds current password for ftp.
+       g:netrw_silent          =0 transfers done normally
+                               =1 transfers done silently
+        g:netrw_uid             Holds current user-id for ftp.
+                                =1 use alternate ftp         (user uid password)
+                                (see |netrw-options|)
+        g:netrw_use_nt_rcp      =0 don't use WinNT/2K/XP's rcp (default)
+                                =1 use WinNT/2K/XP's rcp, binary mode
+        g:netrw_win95ftp        =0 use unix-style ftp even if win95/98/ME/etc
+                                =1 use default method to do ftp >
        -----------------------------------------------------------------------
 <
 The script will also make use of the following variables internally, albeit
@@ -522,25 +574,25 @@ Netrw supports a number of protocols.  These protocols are invoked using the
 variables listed below, and may be modified by the user.
 >
                           ------------------------
-                          Protocol Control Options
+                           Protocol Control Options
                           ------------------------
-    Option           Type        Setting         Meaning
-    ---------        --------    --------------  ---------------------------
+    Option            Type        Setting         Meaning
+    ---------         --------    --------------  ---------------------------
 <
-    netrw_ftp        variable    =doesn't exist  userid set by "user userid"
-                                 =0              userid set by "user userid"
-                                 =1              userid set by "userid"
-    NetReadFixup      function   =doesn't exist  no change
-                                 =exists         Allows user to have files
-                                                 read via ftp automatically
-                                                 transformed however they wish
-                                                 by NetReadFixup()
+    netrw_ftp         variable    =doesn't exist  userid set by "user userid"
+                                  =0              userid set by "user userid"
+                                  =1              userid set by "userid"
+    NetReadFixup      function    =doesn't exist  no change
+                                  =exists         Allows user to have files
+                                                  read via ftp automatically
+                                                  transformed however they wish
+                                                  by NetReadFixup()
     g:netrw_dav_cmd    variable   ="cadaver"
-    g:netrw_fetch_cmd  variable   ="fetch -o"    if fetch is available
+    g:netrw_fetch_cmd  variable   ="fetch -o"     if fetch is available
     g:netrw_ftp_cmd    variable   ="ftp"
     g:netrw_http_cmd   variable   ="fetch -o"     if      fetch is available
     g:netrw_http_cmd   variable   ="wget -O"      else if wget  is available
-    g:netrw_list_cmd   variable   ="ssh HOSTNAME ls -Fa"
+    g:netrw_list_cmd   variable   ="ssh USEPORT HOSTNAME ls -Fa"
     g:netrw_rcp_cmd    variable   ="rcp"
     g:netrw_rsync_cmd  variable   ="rsync -a"
     g:netrw_scp_cmd    variable   ="scp -q"
@@ -548,16 +600,19 @@ variables listed below, and may be modified by the user.
     -------------------------------------------------------------------------
 <
                                                                *netrw-ftp*
-The first two options (netrw_ftp and NetReadFixup) both help with certain
-ftp's that give trouble otherwise.  In order to best understand how to use
-these options if ftp is giving you troubles, a bit of discussion follows on
-how netrw does ftp reads.
 
-The g:netrw_..._cmd variables specify the external program to use handle the
-associated protocol (rcp, ftp, etc), plus any options.
+The g:netrw_..._cmd options (|g:netrw_ftp_cmd| and |g:netrw_sftp_cmd|)
+specify the external program to use handle the ftp protocol.  They may
+include command line options (such as -p for passive mode).
 
-The g:netrw_list_cmd's HOSTNAME entry will be changed via substitution with
-whatever the current request is for a hostname.
+Browsing is supported by using the |g:netrw_list_cmd|; the substring
+"HOSTNAME" will be changed via substitution with whatever the current request
+is for a hostname.
+
+Two options (|g:netrw_ftp| and |netrw-fixup|) both help with certain ftp's
+that give trouble .  In order to best understand how to use these options if
+ftp is giving you troubles, a bit of discussion is provided on how netrw does
+ftp reads.
 
 For ftp, netrw typically builds up lines of one of the following formats in a
 temporary file:
@@ -565,18 +620,20 @@ temporary file:
   IF g:netrw_ftp !exists or is not 1     IF g:netrw_ftp exists and is 1
   ----------------------------------     ------------------------------
 <
-       open machine [port]                   open machine [port]
-       user userid password                  userid password
-       [g:netrw_ftpmode]                     password
-       get filename tempfile                 [g:netrw_ftpmode]
-                                             get filename tempfile >
+       open machine [port]                    open machine [port]
+       user userid password                   userid password
+       [g:netrw_ftpmode]                      password
+       [g:netrw_extracmd]                     [g:netrw_ftpmode]
+       get filename tempfile                  [g:netrw_extracmd]
+                                              get filename tempfile >
   ---------------------------------------------------------------------
 <
+The |g:netrw_ftpmode| and |g:netrw_extracmd| are optional.
+
 Netrw then executes the lines above by use of a filter:
 >
        :%! {g:netrw_ftp_cmd} -i [-n]
 <
-
 where
        g:netrw_ftp_cmd is usually "ftp",
        -i tells ftp not to be interactive
@@ -611,7 +668,7 @@ messages) you may write a NetReadFixup(tmpfile) function:
       elseif a:method == 7 "rsync
       elseif a:method == 8 "fetch
       elseif a:method == 9 "sftp
-      else              " complain
+      else               " complain
       endif
     endfunction
 >
@@ -625,15 +682,15 @@ itself:
     if has("win95") && g:netrw_win95ftp
      fun! NetReadFixup(method, line1, line2)
        if method == 3   " ftp (no <.netrc>)
-       let fourblanklines= line2 - 3
-       silent fourblanklines.",".line2."g/^\s*/d"
+        let fourblanklines= line2 - 3
+        silent fourblanklines.",".line2."g/^\s*/d"
        endif
      endfunction
     endif
 >
 
 ==============================================================================
-8. Directory Browsing  *netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
+9. Directory Browsing  *netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
 
 MAPS                                                           *netrw-maps*
      <F1>.............Help.......................................|netrw-help|
@@ -641,13 +698,13 @@ MAPS                                                              *netrw-maps*
      <del>............Deleting Files or Directories..............|netrw-delete|
      -................Going Up...................................|netrw--|
      a................Hiding Files or Directories................|netrw-a|
-     b................Bookmarking a Directory....................|netrw-b|
-     B................Changing to a Bookmarked Directory.........|netrw-B|
+     mb...............Bookmarking a Directory....................|netrw-mb|
+     gb...............Changing to a Bookmarked Directory.........|netrw-gb|
      c................Make Browsing Directory The Current Dir....|netrw-c|
      d................Make A New Directory.......................|netrw-d|
      D................Deleting Files or Directories..............|netrw-D|
      <c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h|
-     i................Long Listing...............................|netrw-i|
+     i................Change Listing Style.......................|netrw-i|
      <c-l>............Refreshing the Listing.....................|netrw-ctrl-l|
      o................Browsing with a Horizontal Split...........|netrw-o|
      p................Preview Window.............................|netrw-p|
@@ -656,6 +713,7 @@ MAPS                                                                *netrw-maps*
      R................Renaming Files or Directories..............|netrw-R|
      s................Selecting Sorting Style....................|netrw-s|
      S................Editing the Sorting Sequence...............|netrw-S|
+     t................Browsing with a new tab....................|netrw-t|
      u................Changing to a Predecessor Directory........|netrw-u|
      U................Changing to a Successor Directory..........|netrw-U|
      v................Browsing with a Vertical Split.............|netrw-v|
@@ -666,6 +724,7 @@ MAPS                                                                *netrw-maps*
      :Sexplore[!] [dir] Split & Explore directory ...............|netrw-explore|
      :Hexplore[!] [dir] Horizontal Split & Explore...............|netrw-explore|
      :Vexplore[!] [dir] Vertical Split & Explore.................|netrw-explore|
+     :Texplore[!] [dir] Tab & Explore............................|netrw-explore|
      :Pexplore[!] [dir] Vertical Split & Explore.................|netrw-explore|
      :Nexplore[!] [dir] Vertical Split & Explore.................|netrw-explore|
      :NetrwSettings.............................................|netrw-settings|
@@ -674,7 +733,7 @@ QUICK REFERENCE COMMANDS TABLE                              *netrw-browse-cmds*
 >
         -------        -----------
        Command Explanation
-       ------- -----------
+        -------        -----------
 <      <F1>    Causes Netrw to issue help
         <cr>   Netrw will enter the directory or read the file |netrw-cr|
         <del>  Netrw will attempt to remove the file/directory |netrw-del|
@@ -682,27 +741,25 @@ QUICK REFERENCE COMMANDS TABLE                            *netrw-browse-cmds*
           a    Toggles between normal display, |netrw-a|
                 hiding (suppress display of files matching g:netrw_list_hide)
                 showing (display only files which match g:netrw_list_hide)
-          b    bookmark current directory; use Nb if compact listing
-                in use |netrw-b|
-          B    go to previous bookmarked directory; use Nb if compact
-                listing is in use |netrw-B|
+          mb   bookmark current directory
+          gb   go to previous bookmarked directory
           c    Make current browsing directory the current directory |netrw-c|
           d    Make a directory |netrw-d|
           D    Netrw will attempt to remove the file(s)/directory(ies) |netrw-D|
         <c-h>  Edit file hiding list |netrw-ctrl-h|
-          i    Toggles between long and short listing |netrw-i|
+          i    Cycle between thin, long, wide, and tree listings|netrw-i|
         <c-l>  Causes Netrw to refresh the directory listing |netrw-ctrl-l|
-         Nb    Same as b, but always available |netrw-Nb|
-         NB    Same as B, but always available |netrw-NB|
           o    Enter the file/directory under the cursor in a new browser
                 window.  A horizontal split is used. |netrw-o|
           O    Obtain a file specified by cursor |netrw-O|
           p    Preview the file |netrw-p|
           P    Browse in the previously used window |netrw-P|
+          q    List bookmarked directories and history |netrw-q|
           r    Reverse sorting order |netrw-r|
           R    Rename the designed file(s)/directory(ies) |netrw-R|
           s    Select sorting style: by name, time, or file size |netrw-s|
           S    Specify suffix priority for name-sorting |netrw-S|
+          t    Enter the file/directory under the cursor in a new tab|netrw-t|
           u    Change to recently-visited directory |netrw-u|
           U    Change to subsequently-visited directory |netrw-U|
           v    Enter the file/directory under the cursor in a new browser
@@ -716,16 +773,17 @@ NETRW BROWSER VARIABLES                                   *netrw-browse-var*
    ---                         -----------
 < *g:netrw_alto*               change from above splitting to below splitting
                                by setting this variable (see |netrw-o|)
-                                default: =0
+                                default: =&sb           (see |'sb'|)
 
   *g:netrw_altv*               change from left splitting to right splitting
                                by setting this variable (see |netrw-v|)
-                                default: =0
+                                default: =&spr          (see |'spr'|)
 
   *g:netrw_browse_split*       when browsing, <cr> will open the file by:
                                =0: re-using the same window
-                               =1: horizontally splitting the window first
-                               =2: vertically   splitting the window first
+                               =1: horizontally splitting the window first  
+                               =2: vertically   splitting the window first  
+                               =3: open file in new tab
 
   *g:netrw_browsex_viewer*     specify user's preference for a viewer: >
                                        "kfmclient exec"
@@ -772,9 +830,22 @@ NETRW BROWSER VARIABLES                                    *netrw-browse-var*
   *g:netrw_ftp_list_cmd*       options for passing along to ftp for directory
                                listing.  Defaults:
                                 unix or g:netrw_cygwin set: : "ls -lF"
-                                otherwise                     "dir"
+                                otherwise                     "dir"
 
-  *g:netrw_hide*                       if true, the hiding list is used
+
+  *g:netrw_ftp_sizelist_cmd*   options for passing along to ftp for directory
+                               listing, sorted by size of file.
+                               Defaults:
+                                unix or g:netrw_cygwin set: : "ls -slF"
+                                otherwise                     "dir"
+
+  *g:netrw_ftp_timelist_cmd*   options for passing along to ftp for directory
+                               listing, sorted by time of last modification.
+                               Defaults:
+                                unix or g:netrw_cygwin set: : "ls -tlF"
+                                otherwise                     "dir"
+
+  *g:netrw_hide*               if true, the hiding list is used
                                 default: =0
 
   *g:netrw_keepdir*            =1 (default) keep current directory immune from
@@ -786,10 +857,14 @@ NETRW BROWSER VARIABLES                                   *netrw-browse-var*
 
   *g:netrw_list_cmd*           command for listing remote directories
                                 default: (if ssh is executable)
-                                         "ssh HOSTNAME ls -FLa"
-
-  *g:netrw_longlist*           if =1, then long listing will be default
-
+                                         "ssh HOSTNAME ls -FLa"
+
+  *g:netrw_liststyle*          Set the default listing style:
+                                = 0: thin listing (one file per line)
+                                = 1: long listing (one file per line with time
+                                    stamp information and file size)
+                               = 2: wide listing (multiple files in columns)
+                               = 3: tree style listing
   *g:netrw_list_hide*          comma separated pattern list for hiding files
                                 default: ""
 
@@ -807,16 +882,16 @@ NETRW BROWSER VARIABLES                                   *netrw-browse-var*
                                columnar.
 
   *g:netrw_mkdir_cmd*          command for making a remote directory
-                                default: "ssh HOSTNAME mkdir"
+                                default: "ssh USEPORT HOSTNAME mkdir"
 
   *g:netrw_rm_cmd*             command for removing files
-                                default: "ssh HOSTNAME rm"
+                                default: "ssh USEPORT HOSTNAME rm"
 
   *g:netrw_rmdir_cmd*          command for removing directories
-                                default: "ssh HOSTNAME rmdir"
+                                default: "ssh USEPORT HOSTNAME rmdir"
 
   *g:netrw_rmf_cmd*             command for removing softlinks
-                                default: "ssh HOSTNAME rm -f"
+                                default: "ssh USEPORT HOSTNAME rm -f"
 
   *g:netrw_sort_by*            sort by "name", "time", or "size"
                                 default: "name"
@@ -827,7 +902,7 @@ NETRW BROWSER VARIABLES                                     *netrw-browse-var*
   *g:netrw_sort_sequence*      when sorting by name, first sort by the
                                comma-separated pattern sequence
                                 default: '[\/]$,*,\.bak$,\.o$,\.h$,
-                                          \.info$,\.swp$,\.obj$'
+                                          \.info$,\.swp$,\.obj$'
 
   *g:netrw_ssh_cmd*            One may specify an executable command
                                to use instead of ssh for remote actions
@@ -841,6 +916,14 @@ NETRW BROWSER VARIABLES                                    *netrw-browse-var*
                                messages.  By default its value is:
                                         '^total\s\+\d\+$'
 
+  *g:netrw_use_noswf*          netrw normally avoids writing swapfiles
+                               for browser buffers.  However, under some
+                               systems this apparently is causing nasty
+                               ml_get errors to appear; if you're getting
+                               ml_get errors, try putting
+                                 let g:netrw_use_noswf= 0
+                               in your .vimrc.
+
   *g:netrw_timefmt*            specify format string to strftime() (%c)
                                 default: "%c"
 
@@ -888,33 +971,36 @@ 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*
+                       *netrw-explore*  *netrw-pexplore* *netrw-texplore*
+                       *netrw-hexplore* *netrw-sexplore* *netrw-nexplore*
+                       *netrw-vexplore*
+DIRECTORY EXPLORING COMMANDS 
 
      :Explore[!]   [dir]... Explore directory of current file       *:Explore*
      :Sexplore[!]  [dir]... Split&Explore directory of current file *:Sexplore*
-     :Hexplore[!]  [dir]... Horizontal Split & Explore             *:Hexplore*
-     :Vexplore[!]  [dir]... Vertical   Split & Explore             *:Vexplore*
+     :Hexplore[!]  [dir]... Horizontal Split & Explore              *:Hexplore*
+     :Vexplore[!]  [dir]... Vertical   Split & Explore              *:Vexplore*
+     :Texplore     [dir]... Tab              & Explore              *:Texplore*
 
-     Used with :Explore **/pattern :
-     :Nexplore............. go to next matching file               *:Nexplore*
-     :Pexplore............. go to previous matching file           *:Pexplore*
+     Used with :Explore **/pattern : (also see |netrw-starstar|)
+     :Nexplore............. go to next matching file                *:Nexplore*
+     :Pexplore............. go to previous matching file            *:Pexplore*
 
 :Explore  will open the local-directory browser on the current file's
-         directory (or on directory [dir] if specified).  The window will be
+          directory (or on directory [dir] if specified).  The window will be
          split only if the file has been modified, otherwise the browsing
          window will take over that window.  Normally the splitting is taken
          horizontally.
 :Explore! is like :Explore, but will use vertical splitting.
 :Sexplore will always split the window before invoking the local-directory
-         browser.  As with Explore, the splitting is normally done
+          browser.  As with Explore, the splitting is normally done
          horizontally.
 :Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically.
 :Hexplore  [dir] does an :Explore with |:belowright| horizontal splitting.
 :Hexplore! [dir] does an :Explore with |:aboveleft|  horizontal splitting.
 :Vexplore  [dir] does an :Explore with |:leftabove|  vertical splitting.
 :Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting.
+:Texplore  [dir] does a tabnew before generating the browser window
 
 By default, these commands use the current file's directory.  However, one
 may explicitly provide a directory (path) to use.
@@ -976,7 +1062,7 @@ however, Explore will also search subdirectories as well as the current
 directory.
 
 
-REFRESHING THE LISTING                                 *netrw-ctrl-l*
+REFRESHING THE LISTING                         *netrw-ctrl-l* *netrw-ctrl_l*
 
 To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or
 hit the <cr> when atop the ./ directory entry in the listing.  One may also
@@ -1005,18 +1091,19 @@ BROWSING                                                        *netrw-cr*
 Browsing is simple: move the cursor onto a file or directory of interest.
 Hitting the <cr> (the return key) will select the file or directory.
 Directories will themselves be listed, and files will be opened using the
-protocol given in the original read request.
+protocol given in the original read request.  
 
-  CAVEAT: There are three forms of listing (see |netrw-i|).  Netrw assumes
+  CAVEAT: There are four forms of listing (see |netrw-i|).  Netrw assumes
   that two or more spaces delimit filenames and directory names for the long
   and wide listing formats.  Thus, if your filename or directory name has two
   or more spaces embedded in it, or any trailing spaces, then you'll need to
   use the "thin" format to select it.
 
 The |g:netrw_browse_split| option, which is zero by default, may be used to
-cause the opening of files to be done in a new window.  The splitting will
-be done horizontally if the option is one and vertically if the option is
-two.
+cause the opening of files to be done in a new window or tab.  When the option
+is one or two, the splitting will be taken horizontally or vertically,
+respectively.  When the option is set to three, a <cr> will cause the file
+to appear in a new tab.
 
 
 OBTAINING A FILE                                               *netrw-O*
@@ -1041,9 +1128,9 @@ Related topics:
    directory, see |g:netrw_keepdir|.
 
 
-THIN, LONG, AND WIDE LISTINGS                                  *netrw-i*
+CHANGE LISTING STYLE                                           *netrw-i*
 
-The "i" map cycles between the thin, long, and wide listing formats.
+The "i" map cycles between the thin, long, wide, and tree listing formats.
 
 The short listing format gives just the files' and directories' names.
 
@@ -1053,14 +1140,17 @@ date of last modification for local directories.  With the long listing
 format, netrw is not able to recognize filenames which have trailing spaces.
 Use the thin listing format for such files.
 
-The wide listing format has a multi-column display of the various files in the
-netrw current directory, rather like the Unix "ls" presents.  In this mode the
-"b" and "B" maps are not available; instead, use Nb (|netrw-Nb|) and NB
-(|netrw-NB|).  The wide listing format uses two or more contiguous spaces to
-delineate filenames; when using that format, netrw won't be able to recognize
-or use filenames which have two or more contiguous spaces embedded in the name
-or any trailing spaces.  The thin listing format will, however, work with such
-files.
+The wide listing format uses two or more contiguous spaces to delineate
+filenames; when using that format, netrw won't be able to recognize or use
+filenames which have two or more contiguous spaces embedded in the name or any
+trailing spaces.  The thin listing format will, however, work with such files.
+This listing format is the most compact.
+
+The tree listing format has a top directory followed by files and directories
+preceded by a "|".  One may open and close directories by pressing the <cr>
+key while atop the directory name.  There is only one tree listing buffer;
+hence, using "v" or "o" on a subdirectory will only show the same buffer,
+twice.
 
 
 MAKING A NEW DIRECTORY                                         *netrw-d*
@@ -1116,21 +1206,30 @@ One may rename a block of files and directories by selecting them with
 the V (|linewise-visual|).
 
 
-HIDING FILES OR DIRECTORIES                            *netrw-a*
+HIDING FILES OR DIRECTORIES                    *netrw-a* *netrw-hiding*
 
 Netrw's browsing facility allows one to use the hiding list in one of three
 ways: ignore it, hide files which match, and show only those files which
 match.  The "a" map allows the user to cycle about these three ways.
 
 The g:netrw_list_hide variable holds a comma delimited list of patterns (ex.
-\.obj) which specify the hiding list. (also see |netrw-ctrl-h|)  To set the hiding
-list, use the <c-h> map.  As an example, to hide files which begin with a ".",
-one may use the <c-h> map to set the hiding list to '^\..*' (or one may put
-let g:netrw_list_hide= '^\..*' in one's <.vimrc>).  One may then use the "a"
-key to show all files, hide matching files, or to show only the matching
+\.obj) which specify the hiding list. (also see |netrw-ctrl-h|)  To set the
+hiding list, use the <c-h> map.  As an example, to hide files which begin with
+a ".", one may use the <c-h> map to set the hiding list to '^\..*' (or one may
+put let g:netrw_list_hide= '^\..*' in one's <.vimrc>).  One may then use the
+"a" key to show all files, hide matching files, or to show only the matching
 files.
 
+       Example: ^.*\.[ch]
+               This hiding list command will hide/show all *.c and *.h files.
 
+       Example: ^.*\.c,^.*\.h
+               This hiding list command will also hide/show all *.c and *.h
+               files.
+
+Don't forget to use the "a" map to select the normal/hiding/show mode you want!
+
+                                               *netrw-ctrl_h*
 EDIT FILE OR DIRECTORY HIDING LIST             *netrw-ctrl-h* *netrw-edithide*
 
 The "<ctrl-h>" map brings up a requestor allowing the user to change the
@@ -1152,13 +1251,41 @@ new window and cursor at the bottom, have
 
        let g:netrw_alto = 1
 
-in your <.vimrc>.
+in your <.vimrc>.  (also see |netrw-t| |netrw-v| |g:netrw_alto|)
+
+There is only one tree listing buffer; using "o" on a displayed subdirectory 
+will split the screen, but the same buffer will be shown twice.
+
+
+BROWSING WITH A VERTICALLY SPLIT WINDOW                                *netrw-v*
+
+Normally one enters a file or directory using the <cr>.  However, the "v" map
+allows one to open a new window to hold the new directory listing or file.  A
+vertical split is used.  (for horizontal splitting, see |netrw-o|)
+
+Normally, the v key splits the window vertically with the new window and
+cursor at the left.  To change to splitting the window vertically with the new
+window and cursor at the right, have
+
+       let g:netrw_altv = 1
+
+in your <.vimrc>.  (also see: |netrw-o| |netrw-t| |g:netrw_altv|)
+
+There is only one tree listing buffer; using "v" on a displayed subdirectory 
+will split the screen, but the same buffer will be shown twice.
+
+
+BROWSING WITH A NEW TAB                                        *netrw-t*
+
+Normally one enters a file or directory using the <cr>.  The "t" map
+allows one to open a new window hold the new directory listing or file in a
+new tab. (also see: |netrw-o| |netrw-v|)
 
 
 PREVIEW WINDOW                                 *netrw-p* *netrw-preview*
 
-One may use a preview window (currently only for local browsing) by using the
-"p" key when the cursor is atop the desired filename to be previewed.
+One may use a preview window by using the "p" key when the cursor is atop the
+desired filename to be previewed.
 
 
 PREVIOUS WINDOW                                        *netrw-P* *netrw-prvwin*
@@ -1218,23 +1345,9 @@ With the "U" map, one can change to a later directory (successor).
 This map is the opposite of the "u" map. (see |netrw-u|)  Use the
 q map to list both the bookmarks and history. (see |netrw-q|)
 
-
-BROWSING WITH A VERTICALLY SPLIT WINDOW                                *netrw-v*
-
-Normally one enters a file or directory using the <cr>.  However, the "v" map
-allows one to open a new window to hold the new directory listing or file.  A
-vertical split is used.  (for horizontal splitting, see |netrw-o|)
-
-Normally, the v key splits the window vertically with the new window and
-cursor at the left.  To change to splitting the window vertically with the new
-window and cursor at the right, have
-
-       let g:netrw_altv = 1
-
-in your <.vimrc>.
-
-
-CUSTOMIZING BROWSING WITH A USER FUNCTION      *netrw-x* *netrw-handler* *gx*
+                                               *netrw-gx*
+CUSTOMIZING BROWSING WITH A USER FUNCTION      *netrw-x* *netrw-handler*
+                                               (also see |netrw_filehandler|)
 
 Certain files, such as html, gif, jpeg, (word/office) doc, etc, files, are
 best seen with a special handler (ie. a tool provided with your computer).
@@ -1242,7 +1355,8 @@ Netrw allows one to invoke such special handlers by: >
 
        * when Exploring, hit the "x" key
        * when editing, hit gx with the cursor atop the special filename
-<
+<        (not available if the |g:netrw_nogx| variable exists)
+
 Netrw determines which special handler by the following method:
 
   * if |g:netrw_browsex_viewer| exists, then it will be used to attempt to
@@ -1255,7 +1369,7 @@ Netrw determines which special handler by the following method:
     If g:netrw_browsex_viewer == '-', then netrwFileHandler() will be
     invoked first (see |netrw_filehandler|).
 
-  * for Windows 32 or 64, the url and FileProtocolHandler dlls are used.
+  * for Windows 32 or 64, the url and FileProtocolHandler dlls are used.  
   * for Gnome (with gnome-open): gnome-open is used.
   * for KDE (with kfmclient): kfmclient is used.
   * otherwise the netrwFileHandler plugin is used.
@@ -1266,68 +1380,81 @@ OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps,
 *.eps) can be handled.
 
                                                        *netrw_filehandler*
-The netrwFileHandler applies a user-defined function to a file, based on its
-extension.  Of course, the handler function must exist for it to be called!
+
+The "x" map applies a function to a file, based on its extension.  Of course,
+the handler function must exist for it to be called!
 >
  Ex. mypgm.html   x ->
-                 netrwFileHandler_html("scp://user@host/some/path/mypgm.html")
+                  NFH_html("scp://user@host/some/path/mypgm.html")
 <
-See the <plugin/netrwFileHandlers.vim> for an example of how to handle an html
-file with mozilla.
-
-One may write custom netrwFileHandlers; please look at the >
-
-       plugin/netrwFileHandlers.vim
-
-script for examples.  If its likely to be generally useful, please feel free
-to forward a copy to me for future inclusion in the distribution.
+Users may write their own netrw File Handler functions to support more
+suffixes with special handling.  See <plugin/netrwFileHandlers.vim> for
+examples on how to make file handler functions.   As an example: >
+
+       " NFH_suffix(filename)
+       fun! NFH_suffix(filename)
+       ..do something special with filename..
+       endfun
+<
+These functions need to be defined in some file in your .vim/plugin
+(vimfiles\plugin) directory.  Vim's function names may not have punctuation
+characters (except for the underscore) in them.  To support suffices that
+contain such characters, netrw will first convert the suffix using the
+following table: >
+
+    @ -> AT       ! -> EXCLAMATION    % -> PERCENT  
+    : -> COLON    = -> EQUAL          ? -> QUESTION 
+    , -> COMMA    - -> MINUS          ; -> SEMICOLON
+    $ -> DOLLAR   + -> PLUS           ~ -> TILDE    
+<    
+So, for example: >
+
+       file.rcs,v  ->  NFH_rcsCOMMAv()
+<
+If more such translations are necessary, please send me email: >
+               NdrOchip at ScampbellPfamily.AbizM - NOSPAM
+with a request.
 
 
 MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY    *netrw-c* *netrw-curdir*
 
 By default, |g:netrw_keepdir| is 1.  This setting means that the current
-directory will not track the browsing directory.  However, setting
-g:netrw_keepdir to 0 (say, in your <.vimrc>) will tell netrw to make the
-currently browsed directory also be the current directory.
+directory will not track the browsing directory.
+
+Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory to
+track netrw's browsing directory.
 
-However, with the default setting for g:netrw_keepdir of 1 where netrw
+However, given the default setting for g:netrw_keepdir of 1 where netrw
 maintains its own separate notion of the current directory, in order to make
 the two directories the same, use the "c" map (just type c).  That map will
-set Vim's notion of the current directory to the netrw's current browsing
+set Vim's notion of the current directory to netrw's current browsing
 directory.
 
 
-BOOKMARKING A DIRECTORY                *netrw-b* *netrw-bookmark* *netrw-bookmarks*
-                                                       *netrw-Nb*
+BOOKMARKING A DIRECTORY                *netrw-mb* *netrw-bookmark* *netrw-bookmarks*
 One may easily "bookmark" a directory by using >
 
-       {cnt}b
+       {cnt}mb
 <
 Any count may be used.  One may use viminfo's "!" option to retain bookmarks
-between vim sessions.  See |netrw-B| for how to return to a bookmark and
+between vim sessions.  See |netrw-gb| for how to return to a bookmark and
 |netrw-q| for how to list them.
 
-When wide listing is in use (see |netrw-i|), then the b map is not available;
-instead, use {cnt}Nb.
-
 
-CHANGING TO A BOOKMARKED DIRECTORY                     *netrw-NB* *netrw-B*
+CHANGING TO A BOOKMARKED DIRECTORY                     *netrw-gb* 
 
 To change directory back to a bookmarked directory, use
 
-       {cnt}B
+       {cnt}gb
 
-Any count may be used to reference any of the bookmarks.  See |netrw-b| on
+Any count may be used to reference any of the bookmarks.  See |netrw-mb| on
 how to bookmark a directory and |netrw-q| on how to list bookmarks.
 
-When wide listing is in use (see |netrw-i|), then the B map is not available;
-instead, use {cnt}NB.
-
 
 LISTING BOOKMARKS AND HISTORY                  *netrw-q* *netrw-listbookmark*
 
 Pressing "q" will list the bookmarked directories and directory traversal
-history (query). (see |netrw-b|, |netrw-B|, |netrw-u|, and |netrw-U|)
+history (query). (see |netrw-mb|, |netrw-gb|, |netrw-u|, and |netrw-U|)
 
 
 IMPROVING DIRECTORY BROWSING                           *netrw-listhack*
@@ -1335,15 +1462,29 @@ IMPROVING DIRECTORY BROWSING                            *netrw-listhack*
 Especially with the remote directory browser, constantly entering the password
 is tedious.
 
-For Linux/Unix systems, I suggest looking into
-
-       http://hacks.oreilly.com/pub/h/66
-
-It gives a tip for setting up password-less use of ssh and scp, and discusses
-the associated security issues.
-
-For Windows, the vim mailing list has mentioned that Pageant helps with
-avoiding the constant need to enter the password.
+For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength
+tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3), gives a tip
+for setting up no-password ssh and scp, plus discusses associated security
+issues.  It used to be available at http://hacks.oreilly.com/pub/h/66 ,
+but apparently that address is now being redirected to some "hackzine".
+I'll attempt a summary:
+
+       1. Generate a public/private key pair on the ssh server:
+          ssh-keygen -t rsa
+          (saving the file in ~/.ssh/id_rsa is ok)
+       2. Just hit the <CR> when asked for passphrase (twice).
+       3. This creates two files:
+            ~/.ssh/id_rsa
+            ~/.ssh/id_rsa.pub
+       4. On the client:
+           cd
+           mkdir .ssh
+           chmod 0700 .ssh
+           scp {serverhostname}:.ssh/id_rsa.pub .
+           cat id_rsa.pub >> .ssh/authorized_keys2
+
+For Windows, folks on the vim mailing list have mentioned that Pageant helps
+with avoiding the constant need to enter the password.
 
 
 NETRW SETTINGS                                         *netrw-settings*
@@ -1355,9 +1496,11 @@ settings.  You may change any of their values; when you save the file, the
 settings therein will be used.  One may also press "?" on any of the lines for
 help on what each of the variables do.
 
+(see also: |netrw-browse-var| |netrw-protocol| |netrw-var| |netrw-variables|)
+
 
 ==============================================================================
-9. Problems and Fixes                                          *netrw-problems*
+10. Problems and Fixes                                         *netrw-problems*
 
        (This section is likely to grow as I get feedback)
        (also see |netrw-debug|)
@@ -1371,22 +1514,31 @@ help on what each of the variables do.
                        let g:netrw_win95ftp= 1
 
                                                                *netrw-p2*
-       P2. I use windows, and my network browsing with ftp doesn't sort by
-           time or size
+       P2. I use Windows, and my network browsing with ftp doesn't sort by
+           time or size!  -or-  The remote system is a Windows server; why
+           don't I get sorts by time or size?
 
                Windows' ftp has a minimal support for ls (ie. it doesn't
                accept sorting options).  It doesn't support the -F which
                gives an explanatory character (ABC/ for "ABC is a directory").
-               Netrw uses dir to get its short and long listings.  If you
-               think your ftp does support a full-up ls, put the following
-               into your <.vimrc>:
-
-                       let g:netrw_ftp_list_cmd= "ls -lF"
+               Netrw then uses "dir" to get both its short and long listings.
+               If you think your ftp does support a full-up ls, put the
+               following into your <.vimrc>: >
 
+                       let g:netrw_ftp_list_cmd    = "ls -lF"
+                       let g:netrw_ftp_timelist_cmd= "ls -tlF"
+                       let g:netrw_ftp_sizelist_cmd= "ls -slF"
+<
                Alternatively, if you have cygwin on your Windows box, put
-               into your <.vimrc>:
+               into your <.vimrc>: >
 
                        let g:netrw_cygwin= 1
+<
+               This problem also occurs when the remote system is Windows.
+               In this situation, the various g:netrw_ftp_[time|size]list_cmds
+               are as shown above, but the remote system will not correctly
+               modify its listing behavior.
+
 
                                                                *netrw-p3*
        P3. I tried rcp://user@host/ (or protocol other than ftp) and netrw
@@ -1400,7 +1552,7 @@ help on what each of the variables do.
                                                                *netrw-p4*
        P4. I would like long listings to be the default.
 
-                       let g:netrw_longlist=1
+                       let g:netrw_liststyle= 1
 
                Check out |netrw-browse-var| for more customizations that
                you can set.
@@ -1419,10 +1571,110 @@ help on what each of the variables do.
            How do I do that?
 
                let g:netrw_keepdir= 0
-
+       
+                                                               *netrw-p7*
+       P7. I use Chinese (or other non-ascii) characters in my filenames, and
+           netrw (Explore, Sexplore, Hexplore, etc) doesn't display them!
+
+               (taken from an answer provided by Wu Yongwei on the vim
+               mailing list)
+               I now see the problem. You code page is not 936, right? Vim
+               seems only able to open files with names that are valid in the
+               current code page, as are many other applications that do not
+               use the Unicode version of Windows APIs. This is an OS-related
+               issue. You should not have such problems when the system
+               locale uses UTF-8, such as modern Linux distros.
+
+               (...it is one more reason to recommend that people use utf-8!)
+
+                                                               *netrw-p8*
+       P8. I'm getting "ssh is not executable on your system" -- what do I
+           do?
+
+               (Dudley Fox) Most people I know use putty for windows ssh.  It
+               is a free ssh/telnet application. You can read more about it
+               here:
+
+               http://www.chiark.greenend.org.uk/~sgtatham/putty/ Also:
+
+               (Marlin Unruh) This program also works for me. It's a single
+               executable, so he/she can copy it into the Windows\System32
+               folder and create a shortcut to it. 
+
+               (Dudley Fox) You might also wish to consider plink, as it
+               sounds most similar to what you are looking for. plink is an
+               application in the putty suite.
+
+           http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink
+
+               (Vissale Neang) Maybe you can try OpenSSH for windows, which
+               can be obtained from:
+
+               http://sshwindows.sourceforge.net/
+
+               It doesn't need the full Cygwin package. 
+
+               (Antoine Mechelynck) For individual Unix-like programs needed
+               for work in a native-Windows environment, I recommend getting
+               them from the GnuWin32 project on sourceforge if it has them:
+
+                   http://gnuwin32.sourceforge.net/
+
+               Unlike Cygwin, which sets up a Unix-like virtual machine on
+               top of Windows, GnuWin32 is a rewrite of Unix utilities with
+               Windows system calls, and its programs works quite well in the
+               cmd.exe "Dos box". 
+
+               (dave) Download WinSCP and use that to connect to the server.
+               In Preferences > Editors, set gvim as your editor:
+
+                       - Click "Add..."
+                       - Set External Editor (adjust path as needed, include
+                         the quotes and !.! at the end):
+                           "c:\Program Files\Vim\vim70\gvim.exe" !.!
+                       - Check that the filetype in the box below is
+                         {asterisk}.{asterisk} (all files), or whatever types
+                         you want (cec: change {asterisk} to * ; I had to
+                         write it that way because otherwise the helptags
+                         system thinks its a tag)
+                       - Make sure its at the top of the listbox (click it,
+                         then click "Up" if its not)
+               If using the Norton Commander style, you just have to hit <F4>
+               to edit a file in a local copy of gvim.
+
+               (Vit Gottwald) How to generate public/private key and save
+               public key it on server: >
+  http://www.tartarus.org/~simon/puttydoc/Chapter8.html#pubkey-gettingready
+                       8.3 Getting ready for public key authentication
+<
+               How to use private key with 'pscp': >
+                       http://www.tartarus.org/~simon/puttydoc/Chapter5.html
+                       5.2.4 Using public key authentication with PSCP 
+<
+               (cec) To make proper use of these suggestions above, you will
+               need to modify the following user-settable variables in your
+               .vimrc:
+
+                       |g:netrw_ssh_cmd| |g:netrw_list_cmd|  |g:netrw_mkdir_cmd|
+                       |g:netrw_rm_cmd|  |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd|
+
+               The first one (|g:netrw_ssh_cmd|) is the most important; most
+               of the others will use the string in g:netrw_ssh_cmd by
+               default.
+                                               *netrw-p9* *netrw-ml_get*
+       P9. I'm browsing, changing directory, and bang!  ml_get errors
+           appear and I have to kill vim.  Any way around this?
+
+               Normally netrw attempts to avoid writing swapfiles for
+               its temporary directory buffers.  However, on some systems
+               this attempt appears to be causing ml_get errors to
+               appear.  Please try setting |g:netrw_use_noswf| to 0
+               in your <.vimrc>: >
+                       let g:netrw_use_noswf= 0
+<
 
 ==============================================================================
-10. Debugging                                          *netrw-debug*
+11. Debugging                                          *netrw-debug*
 
 The <netrw.vim> script is typically available as:
 >
@@ -1463,21 +1715,144 @@ which is loaded automatically at startup (assuming :set nocp).
           This command, provided by <Decho.vim>, will comment out all
           Decho-debugging statements (Dfunc(), Dret(), Decho(), Dredir()).
 
-       4. Then bring up vim and attempt a transfer.  A set of messages
-          should appear concerning the steps that <netrw.vim> took in
-          attempting to read/write your file over the network.  Please
-          send that information to <netrw.vim>'s maintainer,
+       4. Then bring up vim and attempt a transfer or do browsing.  A set of
+          messages should appear concerning the steps that <netrw.vim> took
+          in attempting to read/write your file over the network.
 
+          To save the file, use >
+               :wincmd j
+               :set bt=
+               :w! DBG
+<         Please send that information to <netrw.vim>'s maintainer, >
                NdrOchip at ScampbellPfamily.AbizM - NOSPAM
-
+<
 ==============================================================================
-11. History                                            *netrw-history* {{{1
-
-       v98: May 02, 2006 * the "p" key didn't work properly when the browsing
-                           directory name had spaces in it.
-       v97: May 01, 2006 * exists("&acd") now used to determine if
-                           the 'acd' option exists
-                         * "obtain" now works again under Windows
+12. History                                            *netrw-history* {{{1
+
+       v108: Jan 03, 2007 * included preview map (|netrw-p|), supporting
+                            remote browsing
+                          * netrw can now source remote files
+             Jan 26, 2007 * Colton Jamieson noted that remote directory
+                            browsing did not support alternate port
+                            selection.  This feature has now been extended
+                            to apply to all remote browsing commands via ssh.
+                            (list, remove/delete, rename)
+             Jan 31, 2007 * Luis Florit reported that @* was an invalid
+                            register.  The @* register is now only saved and
+                            restored if 'guioptions' contains "a".
+             Feb 02, 2007 * Fixed a bug that cropped up when writing files
+                            via scp using cygwin
+             Feb 08, 2007 * tree listing mode managed to stop working again;
+                            fixed again!
+             Feb 15, 2007 * Guido Van Hoecke reported that netrw didn't
+                            handle browsing well with M$ ftp servers.  He even
+                            set up a temporary account for me to test with
+                            (thanks!).  Netrw now can browse M$ ftp servers.
+       v107: Oct 12, 2006 * bypassed the autowrite option
+             Oct 24, 2006 * handles automatic decompression of *.gz and *.bz2
+                            files
+             Nov 03, 2006 * Explore will highlight matching files when
+                            **/pattern is used (and if the |'hls'| option
+                            is set)
+             Nov 09, 2006 * a debugging line, when enabled, was inadvertently
+                            bringing up help instead of simply reporting on
+                            list contents
+             Nov 21, 2006 * tree listing improved (cursor remains put)
+             Nov 27, 2006 * fixed b:netrw_curdir bug when repeated "i"s were
+                            pressed.
+             Dec 15, 2006 * considerable qty of changes, mostly to share more
+                            code between local and remote browsing.  Includes
+                            support for tree-style listing for both remote
+                            and local browsing.
+             Dec 15, 2006 * Included Peter Bengtsson's modifications to
+                            support the Amiga.
+       v106: Sep 21, 2006 * removed old v:version<700 code as netrw now
+                            requires vim 7.0
+                          * worked around a bug where register * was
+                            overwritten during local browsing
+       v104: Sep 05, 2006 * as suggested by Rodolfo Borges, :Explore and
+                            variants will position the cursor on the file
+                            just having been edited
+                          * changed default |g:netrw_sort_sequence| order
+                          * changed b, Nb to simply mb  (see |netrw-mb|)
+                          * changed B, NB to simply gb  (see |netrw-gb|)
+                          * tree listing style (see |g:netrw_liststyle|)
+                          * attempts to retain the alternate file
+       v103: Jul 26, 2006 * used Yakov Lerner's tip#1289 to improve netrw
+                            error message display
+                          * wide listings didn't handle files with backslashes
+                            in their names properly.  A symptom was an
+                            inability to open files.
+             Aug 09, 2006 * included "t" mapping for opening tabbed windows,
+                           both for remote and local browsing
+                          * changed netrw_longlist to netrw_liststyle
+             Aug 15, 2006 * fixed one of the NB maps
+             Aug 22, 2006 * changed *Explore commands to use -nargs=* instead
+                            of -nargs=?.  Allows both -complete=dir _and_ the
+                            starstar arguments to work (-nargs=? seems to
+                            require one or the other).
+             Aug 23, 2006 * copied all w:.. variables across splits to
+                            new windows
+             Aug 25, 2006 * when g:netrw_browsex_viewer was '-'
+                            (see |g:netrw_browsex_viewer|) it wasn't causing
+                            netrwFileHandlers#Invoke() to be called as it
+                            was expected to.  (tnx Steve Dugaro)
+             Aug 29, 2006 * changed NetBrowseX() to use "setlocal ... noswf"
+                            instead of "set ... noswf"  (tnx Benji Fisher)
+             Aug 31, 2006 * tabs and fastbrowse<=1 didn't work together.
+       v102: Jun 15, 2006 * chgd netrwPlugin to call netrw#LocalBrowseCheck()
+                          * bugfix: g:netrw_keepdir==0 had stopped working
+             Jul 06, 2006 * bugfix: NetOptionSave/Restore now saves/restores
+                            the unnamed register (|registers|)
+             Jul 07, 2006 * |g:netrw_menu| support included
+             Jul 13, 2006 * :Texplore command implemented
+             Jul 17, 2006 * NetSplit and (Local|Net)BrowseChgDir() were both
+                            splitting windows.  This affected o, v, and
+                            g:netrw_browse_split.
+             Jul 20, 2006 * works around wildignore setting (was causing
+                            netrw's local browser not to list wildignore'd
+                            files)
+             Jul 24, 2006 * <leftmouse> acts as a <cr> for selecting a file
+                            <rightmouse> acts as a <del> for deleting a file
+       v100: May 14, 2006 * when using Windows and shell==cmd.exe, the
+                            default for g:netrw_ignorenetrc is now 1
+                          * bugfix: unwanted ^Ms now removed
+                            (affected shell==cmd.exe - Windows)
+                          * added Bookmarks and History to the menu
+                          * an error message about non-existing
+                            w:netrw_longlist was appearing during attempts to
+                            Explore (fixed)
+                          * g:netrw_shq now available to make netrw use
+                            specified style of quotes for commands
+            May 29, 2006  * user NFH_*() functions were inadvertently being
+                            ignored
+                          * fixed a Windows non-cygwin ftp handling problem.
+                          * hiding pattern candidate separators included some
+                            characters it shouldn't have (tnx to Osei Poku)
+            Jun 01, 2006  * for browsing, netrw was supposed to use "dir"
+                            instead of "ls -lF" when using
+                            ftp+non-cygwin+windows.  Fixed.
+                          * an inadvertently left-in-place debugging statement
+                            was preventing use of the "x" key with browsing.
+            Jun 05, 2006  * g:netrw_nogx available to prevent making the gx
+                            map (see |g:netrw_nogx|)
+                          * bugfix, Explore woulnd't change directory
+                            properly (vim ., :Explore subdirname)
+            Jun 06, 2006  * moved history to 2nd line in Netrw menu
+                          * fixed delete for unix-based systems
+            Jun 07, 2006  * x key now works for windows-noncygwin-ftp
+            Jun 08, 2006  * Explore */pat and **//pat now wraps
+       v99: May 09, 2006  * g:netrw_browse_split=3 for opening files in new
+                            tabs implemented.
+            May 12, 2006  * deletes temporary file at end of NetRead()
+                          * visual mode based Obtain implemented
+                          * added -complete=dir to the various Explore
+                            commands
+       v98: May 02, 2006  * the "p" key didn't work properly when the browsing
+                            directory name had spaces in it.
+       v97: May 01, 2006  * exists("&acd") now used to determine if
+                            the 'acd' option exists
+                          * "obtain" now works again under Windows
        v96: * bugfix - the |'acd'| option is not always defined but is
               now bypassed only when it is
        v95: * bugfix - Hiding mode worked correctly (don't show any file
@@ -1532,7 +1907,7 @@ which is loaded automatically at startup (assuming :set nocp).
             * g:netrw_browsex_viewer implemented
             * Mikolaj Machowski pointed out that gnome-open is often
               executable under KDE systems, although it is effectively
-              not functional.  NetBrowseX now looks for "kicker" as
+              not functional.  NetBrowseX now looks for "kicker" as 
               a running process to determine if KDE is actually the
               really running.
             * Explorer's O functionality was inadvertently left out.
@@ -1590,7 +1965,7 @@ which is loaded automatically at startup (assuming :set nocp).
               in order to allow them to be used for motions
        v65: * Browser functions now use NetOptionSave/Restore; in particular,
               netrw now works around the report setting
-       v64: * Bugfix - browsing a "/" directory (Unix) yielded buffers
+       v64: * Bugfix - browsing a "/" directory (Unix) yielded buffers 
               named "[Scratch]" instead of "/"
             * Bugfix - remote browsing with ftp was omitting the ./ and ../
        v63: * netrw now takes advantage of autoload (and requires 7.0)
@@ -1732,7 +2107,7 @@ which is loaded automatically at startup (assuming :set nocp).
 
 
 ==============================================================================
-11. Credits                                            *netrw-credits* {{{1
+12. Credits                                            *netrw-credits* {{{1
 
        Vim editor      by Bram Moolenaar (Thanks, Bram!)
        dav             support by C Campbell
index b3488496f757f5613c9184e1673940cbd8552568..3752637ebca55be89754bdf46e38cc2631404b18 100644 (file)
@@ -1,4 +1,4 @@
-*pi_paren.txt*  For Vim version 7.0.  Last change: 2006 Apr 24
+*pi_paren.txt*  For Vim version 7.1a.  Last change: 2006 Jun 14
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -43,7 +43,7 @@ are:
 - What is visible in the window.
 - 100 lines above or below the cursor to avoid a long delay when there are
   closed folds.
-- 'synmaxcolumn' times 2 bytes before or after the cursor to avoid a delay
+- 'synmaxcol' times 2 bytes before or after the cursor to avoid a delay
   in a long line with syntax highlighting.
 
 ==============================================================================
index 9dd7469069b297eccd29442597edc359a48a9d0d..51c96ccb50232f85fdf7add1230c43f0e2ebb537 100644 (file)
@@ -1,8 +1,8 @@
-*pi_tar.txt*   For Vim version 7.0.  Last change: 2006 May 02
+*pi_tar.txt*   For Vim version 7.1a.  Last change: 2006 Sep 29
 
-                      +====================+
-                      | Tar File Interface |
-                      +====================+
+                              +====================+
+                              | Tar File Interface |
+                              +====================+
 
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
          (remove NOSPAM from Campbell's email first)
@@ -31,35 +31,37 @@ Copyright: The GPL (gnu public license) applies to  *tar-copyright*
 
    These options are variables that one may change, typically in one's
    <.vimrc> file.
-                        Default
-   Variable              Value   Explanation
+                         Default
+   Variable               Value   Explanation
    *g:tar_browseoptions*  "Ptf"   used to get a list of contents
-   *g:tar_readoptions*   "OPxf"  used to extract a file from a tarball
-   *g:tar_cmd*           "tar"   the name of the tar program
-   *g:tar_writeoptions*   "uf"   used to update/replace a file
+   *g:tar_readoptions*    "OPxf"  used to extract a file from a tarball
+   *g:tar_cmd*            "tar"   the name of the tar program
+   *g:tar_writeoptions*   "uf"    used to update/replace a file
 
 
 ==============================================================================
 4. History                                             *tar-history*
 
+   v10 May 02, 2006 * now using "redraw then echo" to show messages, instead
+                      of "echo and prompt user"
    v9 May 02, 2006 * improved detection of masquerading as tar file
    v8 May 02, 2006 * allows editing of files that merely masquerade as tar
-                    files
+                     files
    v7 Mar 22, 2006 * work on making tar plugin work across network
       Mar 27, 2006 * g:tar_cmd now available for users to change the name
-                    of the tar program to be used.  By default, of course,
+                     of the tar program to be used.  By default, of course,
                     its "tar".
    v6 Dec 21, 2005 * writing to files not in directories caused problems -
-                    fixed (pointed out by Christian Robinson)
+                     fixed (pointed out by Christian Robinson)
    v5 Nov 22, 2005 * report option workaround installed
    v3 Sep 16, 2005 * handles writing files in an archive back to the
-                    archive
+                     archive
       Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
       Oct 18, 2005 * handles writing to compressed archives
       Nov 03, 2005 * handles writing tarfiles across a network using
-                    netrw#NetWrite()
-   v2             * converted to use Vim7's new autoload feature by
-                    Bram Moolenaar
+                     netrw#NetWrite()
+   v2              * converted to use Vim7's new autoload feature by
+                     Bram Moolenaar
    v1 (original)   * Michael Toren (see http://michael.toren.net/code/)
 
 ==============================================================================
index 1fefc7f906a77af0073f0fa7c65ef9179807508d..75eae344a81c9ecc9d1e6546313b015ae378d3e5 100644 (file)
@@ -1,4 +1,4 @@
-*pi_vimball.txt*       For Vim version 7.0.  Last change: 2006 May 01
+*pi_vimball.txt*       For Vim version 7.1a.  Last change: 2007 Jan 03
 
                               ----------------
                               Vimball Archiver
@@ -13,10 +13,13 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.        *Vimball-copyright*
           Use At-Your-Own-Risk!
 
 ==============================================================================
-1. Contents                                    *vimball* *vimball-contents*
+1. Contents                            *vba* *vimball* *vimball-contents*
 
        1. Contents......................................: |vimball-contents|
        2. Vimball Manual................................: |vimball-manual|
+          MkVimball.....................................: |:MkVimball|
+          UseVimball....................................: |:UseVimball|
+          RmVimball.....................................: |:RmVimball|
        3. Vimball History...............................: |vimball-history|
 
 
@@ -24,19 +27,26 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.        *Vimball-copyright*
 2. Vimball Manual                                      *vimball-manual*
 
                                                        *:MkVimball*
-               :[range]MkVimball[!] filename
+               :[range]MkVimball[!] filename [path]
 
-       This command takes lines holding a path to files to be included in
-       your vimball; as an example: >
+       The range is composed of lines holding paths to files to be included
+       in your new vimball.  As an example: >
                plugin/something.vim
                doc/something.txt
-<      using MkVimball on this range will create a file called "filename.vba"
-       which can be used by Vimball.vim to re-create these files.  If the
+<      using >
+               :[range]MkVimball filename
+<
+       on this range of lines will create a file called "filename.vba" which
+       can be used by Vimball.vim to re-create these files.  If the
        "filename.vba" file already exists, then MkVimball will issue a
        warning and not create the file.  Note that these paths are relative
        to your .vim (vimfiles) directory, and the files should be in that
-       directory.  The vimball plugin uses the first |'runtimepath'|directory
-       that exists as a prefix; don't use absolute paths.
+       directory.  The vimball plugin normally uses the first |'runtimepath'|
+       directory that exists as a prefix; don't use absolute paths, unless
+       the user has specified such a path.
+                                                       *g:vimball_home*
+       You may override the use of the |'runtimepath'| by specifying a
+       variable, g:vimball_home.
 
        If you use the exclamation point (!), then MkVimball will create the
        "filename.vba" file, overwriting it if it already exists.  This
@@ -52,22 +62,57 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.        *Vimball-copyright*
        file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D."
        line.
 
-               :VimballList                            *vimball-vimballlist*
+               :VimballList                            *:VimballList*
 
        This command will tell Vimball to list the files in the archive, along
        with their lengths in lines.
 
+               :UseVimball [path]                      *:UseVimball*
+
+       This command is contained within the vimball itself; it invokes the
+       vimball#Vimball() routine which is responsible for unpacking the
+       vimball.  One may choose to execute it by hand instead of sourcing
+       the vimball; one may also choose to specify a path for the
+       installation, thereby overriding the automatic choice of the first
+       existing directory on the |'runtimepath'|.
+
+               :RmVimball vimballfile [path]           *:RmVimball*
+
+       This command removes all files generated by the specified vimball
+       (but not any directories it may have made).  One may choose a path
+       for de-installation, too (see |'runtimepath'|); otherwise, the
+       default is the first existing directory on the |'runtimepath'|.
+       To implement this, a file (.VimballRecord) is made in that directory
+       containing a record of what files need to be removed for all vimballs
+       used thus far.
+
 
 ==============================================================================
 3. Vimball History                                     *vimball-history* {{{1
 
+       21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header
+                           handling problem and it now changes \s to /s
+       20 : Nov 20, 2006 * substitute() calls have all had the 'e' flag
+                           removed.
+       18 : Aug 01, 2006 * vimballs now use folding to easily display their
+                           contents.
+                         * if a user has AsNeeded/somefile, then vimball
+                           will extract plugin/somefile to the AsNeeded/
+                           directory
+       17 : Jun 28, 2006 * changes all \s to /s internally for Windows
+       16 : Jun 15, 2006 * A. Mechylynk's idea to allow users to specify
+                           installation root paths implemented for
+                           UseVimball, MkVimball, and RmVimball.
+                         * RmVimball implemented
+       15 : Jun 13, 2006 * bugfix
+       14 : May 26, 2006 * bugfixes
        13 : May 01, 2006 * exists("&acd") used to determine if the acd
                            option exists
        12 : May 01, 2006 * bugfix - the |'acd'| option is not always defined
        11 : Apr 27, 2006 * VimballList would create missing subdirectories that
-                           the vimball specified were needed.  Fixed.
+                           the vimball specified were needed.  Fixed.
        10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of
-                           functions.  Included some more settings in them
+                           functions.  Included some more settings in them
                            which frequently cause trouble.
        9  : Apr 26, 2006 * various changes to support Windows prediliction
                            for backslashes and spaces in file and directory
@@ -80,7 +125,7 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
                            only fires once, so the "Source this file..."
                            message is now issued only once.
        3  : Mar 20, 2006 * removed query, now requires sourcing to be
-                           extracted (:so %).  Message to that effect
+                           extracted (:so %).  Message to that effect
                            included.
                          * :VimballList  now shows files that would be
                            extracted.
index ce2dcd18c64443f1fa7bc03ce28a458e5ce2f83a..cedd9114aed915cf26f1f8417d7f3f176b8f6ebc 100644 (file)
@@ -1,4 +1,4 @@
-*pi_zip.txt*   For Vim version 7.0.  Last change: 2006 May 01
+*pi_zip.txt*   For Vim version 7.1a.  Last change: 2006 Sep 29
 
                                +====================+
                                | Zip File Interface |
@@ -7,7 +7,7 @@
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
          (remove NOSPAM from Campbell's email first)
 Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright*
-          Permission is hereby granted to use and distribute this code,
+           Permission is hereby granted to use and distribute this code,
           with or without modifications, provided that this copyright
           notice is copied with it. Like anything else that's free,
           zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is*
@@ -31,24 +31,34 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright*
    also write to the file.  Currently, one may not make a new file in
    zip archives via the plugin.
 
+   The zip program supports one option: >
+       g:zip_shq
+<  which by default is a single quote under Unix (') and a double quote
+   under Windows (").  If you'd rather have no quotes, simply set
+   g:zip_shq to the empty string (let g:zip_shq= "") in your <.vimrc>.
+
 ==============================================================================
 3. History                                     *zip-history*
+   v10 May 02, 2006 * now using "redraw then echo" to show messages, instead
+                      of "echo and prompt user"
+                   * g:zip_shq provided to allow for quoting control for the
+                     command being passed via :r! ... commands.
    v8 Apr 10, 2006 * Bram Moolenaar reported that he received an error message
-                    due to "Pattern not found: ^.*\%0c"; this was caused by
+                     due to "Pattern not found: ^.*\%0c"; this was caused by
                     stridx finding a Name... at the beginning of the line;
                     zip.vim tried 4,$s/^.*\%0c//, but that doesn't work.
                     Fixed.
    v7 Mar 22, 2006 * escaped some characters that can cause filename handling
-                    problems.
+                     problems.
    v6 Dec 21, 2005 * writing to files not in directories caused problems -
-                    fixed (pointed out by Christian Robinson)
+                     fixed (pointed out by Christian Robinson)
    v5 Nov 22, 2005 * report option workaround installed
    v3 Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
    v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt)
-                  * began testing under Windows; works thus far
+                   * began testing under Windows; works thus far
                   * filetype detection fixed
       Nov 03, 2005 * handles writing zipfiles across a network using
-                    netrw#NetWrite()
+                     netrw#NetWrite()
    v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing
 
 ==============================================================================
index 36f9470fce95ab2b68a3d9acad6b09baffe6eff3..9f912815bce428e4b2ca30b3f1757f3ea325893c 100644 (file)
@@ -1,4 +1,4 @@
-*print.txt*     For Vim version 7.0.  Last change: 2006 Apr 30
+*print.txt*     For Vim version 7.1a.  Last change: 2007 Apr 22
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -427,7 +427,7 @@ There are currently a number of limitations with PostScript printing:
                                                                *E618* *E619*
 To use your own print character encoding when printing 8-bit character data
 you need to define your own PostScript font encoding vector.  Details on how
-to to define a font encoding vector is beyond the scope of this help file, but
+to define a font encoding vector is beyond the scope of this help file, but
 you can find details in the PostScript Language Reference Manual, 3rd Edition,
 published by Addison-Wesley and available in PDF form at
 http://www.adobe.com/.  The following describes what you need to do for VIM to
index bdd2be5089cdc8bbba83ac39b791ffca2b3cde66..9377d644373a6cf9a2c3dd978474877d0c04326a 100644 (file)
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 7.0.  Last change: 2006 Apr 30
+*quickref.txt*  For Vim version 7.1a.  Last change: 2006 Nov 18
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -783,7 +783,8 @@ Short explanation of each option:           *option-list*
 'number'         'nu'      print the line number in front of each line
 'numberwidth'    'nuw'     number of columns used for the line number
 'omnifunc'       'ofu'     function for filetype-specific completion
-'operatorfunc'   'opfunc'  funtion to be called for |g@| operator
+'opendevice'     'odev'    allow reading/writing devices on MS-Windows
+'operatorfunc'   'opfunc'  function to be called for |g@| operator
 'osfiletype'     'oft'     operating system-specific filetype information
 'paragraphs'     'para'    nroff macros that separate paragraphs
 'paste'                            allow pasting text
index 0de489a83174b5181ab8a05f75f2dde0cd6e1198..159bd3c03ce3ebd3d03ec5054be1fb77326fd90b 100644 (file)
@@ -1,4 +1,4 @@
-*recover.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*recover.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index a149e150c3c9040de75706bca1a827dd09aa94fd..a3f655f0cd13cc9f33a51bb0d803f05f30f776a2 100644 (file)
@@ -1,4 +1,4 @@
-*rileft.txt*    For Vim version 7.0.  Last change: 2006 Apr 24
+*rileft.txt*    For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
                  VIM REFERENCE MANUAL    by Avner Lottem
index c240a9ba142871bb29080e7759588ec6d8862ddc..d487d97ce3314dd943d7bf25bfb4768df89cae96 100644 (file)
@@ -1,4 +1,4 @@
-*russian.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*russian.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
                  VIM REFERENCE MANUAL    by Vassily Ragosin
index ea47050d3f93708489ec3fcfc26e6256773b97a0..de12c32f797f24dba724cb74a785221dbec418b0 100644 (file)
@@ -1,4 +1,4 @@
-*sign.txt*      For Vim version 7.0.  Last change: 2006 Apr 24
+*sign.txt*      For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
                  VIM REFERENCE MANUAL    by Gordon Prieur
index d77f4e84184344cff741f208082e28d38e2ae92a..170643ae8f6866ae2ce4dacbe0a8777355619e8c 100644 (file)
@@ -1,4 +1,4 @@
-*sponsor.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*sponsor.txt*   For Vim version 7.1a.  Last change: 2007 Jan 05
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -59,7 +59,7 @@ But only if you enable this on your account page.
 HOW TO SEND MONEY                                              *send-money*
 
 Credit card    Through PayPal, see the PayPal site for information:
-                       https://www.paypal.com
+                       https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q
                The e-mail address for sending sponsorship money is:
                        donate@vim.org
                The e-mail address for Vim registration is:
index 7431960ef009bd98daadd5c16d7ddb1f68bac2ff..f69f0e6ff3224ddade87b1fc02ded54b2937d02f 100644 (file)
@@ -253,6 +253,26 @@ $VIMRUNTIME        starting.txt    /*$VIMRUNTIME*
 'gfw'  options.txt     /*'gfw'*
 'ghr'  options.txt     /*'ghr'*
 'go'   options.txt     /*'go'*
+'go-A' options.txt     /*'go-A'*
+'go-F' options.txt     /*'go-F'*
+'go-L' options.txt     /*'go-L'*
+'go-M' options.txt     /*'go-M'*
+'go-R' options.txt     /*'go-R'*
+'go-T' options.txt     /*'go-T'*
+'go-a' options.txt     /*'go-a'*
+'go-b' options.txt     /*'go-b'*
+'go-c' options.txt     /*'go-c'*
+'go-e' options.txt     /*'go-e'*
+'go-f' options.txt     /*'go-f'*
+'go-g' options.txt     /*'go-g'*
+'go-h' options.txt     /*'go-h'*
+'go-i' options.txt     /*'go-i'*
+'go-l' options.txt     /*'go-l'*
+'go-m' options.txt     /*'go-m'*
+'go-p' options.txt     /*'go-p'*
+'go-r' options.txt     /*'go-r'*
+'go-t' options.txt     /*'go-t'*
+'go-v' options.txt     /*'go-v'*
 'gp'   options.txt     /*'gp'*
 'gr'   vi_diff.txt     /*'gr'*
 'graphic'      vi_diff.txt     /*'graphic'*
@@ -528,6 +548,8 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 'nomousehide'  options.txt     /*'nomousehide'*
 'nonu' options.txt     /*'nonu'*
 'nonumber'     options.txt     /*'nonumber'*
+'noodev'       options.txt     /*'noodev'*
+'noopendevice' options.txt     /*'noopendevice'*
 'nopaste'      options.txt     /*'nopaste'*
 'nopi' options.txt     /*'nopi'*
 'nopreserveindent'     options.txt     /*'nopreserveindent'*
@@ -629,11 +651,13 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 'number'       options.txt     /*'number'*
 'numberwidth'  options.txt     /*'numberwidth'*
 'nuw'  options.txt     /*'nuw'*
+'odev' options.txt     /*'odev'*
 'oft'  options.txt     /*'oft'*
 'ofu'  options.txt     /*'ofu'*
 'omnifunc'     options.txt     /*'omnifunc'*
 'op'   vi_diff.txt     /*'op'*
 'open' vi_diff.txt     /*'open'*
+'opendevice'   options.txt     /*'opendevice'*
 'operatorfunc' options.txt     /*'operatorfunc'*
 'opfunc'       options.txt     /*'opfunc'*
 'optimize'     vi_diff.txt     /*'optimize'*
@@ -1283,6 +1307,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 -xrm   gui_x11.txt     /*-xrm*
 -y     starting.txt    /*-y*
 .      repeat.txt      /*.*
+...    eval.txt        /*...*
 .Xdefaults     gui_x11.txt     /*.Xdefaults*
 .aff   spell.txt       /*.aff*
 .dic   spell.txt       /*.dic*
@@ -1296,6 +1321,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 /<CR>  pattern.txt     /*\/<CR>*
 /[[.   pattern.txt     /*\/[[.*
 /[[=   pattern.txt     /*\/[[=*
+/[\n]  pattern.txt     /*\/[\\n]*
 /[]    pattern.txt     /*\/[]*
 /\     pattern.txt     /*\/\\*
 /\$    pattern.txt     /*\/\\$*
@@ -1672,6 +1698,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :!cmd  various.txt     /*:!cmd*
 :!start        os_win32.txt    /*:!start*
 :#     various.txt     /*:#*
+:#!    various.txt     /*:#!*
 :$     cmdline.txt     /*:$*
 :%     cmdline.txt     /*:%*
 :&     change.txt      /*:&*
@@ -1707,8 +1734,20 @@ $VIMRUNTIME      starting.txt    /*$VIMRUNTIME*
 :@     repeat.txt      /*:@*
 :@:    repeat.txt      /*:@:*
 :@@    repeat.txt      /*:@@*
+:AdaLines      ada.txt /*:AdaLines*
+:AdaRainbow    ada.txt /*:AdaRainbow*
+:AdaSpaces     ada.txt /*:AdaSpaces*
+:AdaTagDir     ada.txt /*:AdaTagDir*
+:AdaTagFile    ada.txt /*:AdaTagFile*
+:AdaTypes      ada.txt /*:AdaTypes*
 :CompilerSet   usr_41.txt      /*:CompilerSet*
+:DiffOrig      diff.txt        /*:DiffOrig*
 :Explore       pi_netrw.txt    /*:Explore*
+:GLVS  pi_getscript.txt        /*:GLVS*
+:GetLatestVimScripts_dat       pi_getscript.txt        /*:GetLatestVimScripts_dat*
+:GnatFind      ada.txt /*:GnatFind*
+:GnatPretty    ada.txt /*:GnatPretty*
+:GnatTags      ada.txt /*:GnatTags*
 :Hexplore      pi_netrw.txt    /*:Hexplore*
 :Man   filetype.txt    /*:Man*
 :MkVimball     pi_vimball.txt  /*:MkVimball*
@@ -1718,9 +1757,13 @@ $VIMRUNTIME      starting.txt    /*$VIMRUNTIME*
 :P     various.txt     /*:P*
 :Pexplore      pi_netrw.txt    /*:Pexplore*
 :Print various.txt     /*:Print*
+:RmVimball     pi_vimball.txt  /*:RmVimball*
 :Sexplore      pi_netrw.txt    /*:Sexplore*
 :TOhtml        syntax.txt      /*:TOhtml*
+:Texplore      pi_netrw.txt    /*:Texplore*
+:UseVimball    pi_vimball.txt  /*:UseVimball*
 :Vexplore      pi_netrw.txt    /*:Vexplore*
+:VimballList   pi_vimball.txt  /*:VimballList*
 :X     editing.txt     /*:X*
 :XMLent        insert.txt      /*:XMLent*
 :XMLns insert.txt      /*:XMLns*
@@ -1906,9 +1949,17 @@ $VIMRUNTIME      starting.txt    /*$VIMRUNTIME*
 :comc  map.txt /*:comc*
 :comclear      map.txt /*:comclear*
 :command       map.txt /*:command*
+:command-bang  map.txt /*:command-bang*
+:command-bar   map.txt /*:command-bar*
+:command-buffer        map.txt /*:command-buffer*
+:command-complete      map.txt /*:command-complete*
 :command-completion    map.txt /*:command-completion*
 :command-completion-custom     map.txt /*:command-completion-custom*
 :command-completion-customlist map.txt /*:command-completion-customlist*
+:command-count map.txt /*:command-count*
+:command-nargs map.txt /*:command-nargs*
+:command-range map.txt /*:command-range*
+:command-register      map.txt /*:command-register*
 :command-verbose       map.txt /*:command-verbose*
 :comment       eval.txt        /*:comment*
 :comp  quickfix.txt    /*:comp*
@@ -1992,6 +2043,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :earlier       undo.txt        /*:earlier*
 :ec    eval.txt        /*:ec*
 :echo  eval.txt        /*:echo*
+:echo-redraw   eval.txt        /*:echo-redraw*
 :echoe eval.txt        /*:echoe*
 :echoerr       eval.txt        /*:echoerr*
 :echoh eval.txt        /*:echoh*
@@ -2186,12 +2238,12 @@ $VIMRUNTIME     starting.txt    /*$VIMRUNTIME*
 :let   eval.txt        /*:let*
 :let+= eval.txt        /*:let+=*
 :let-$ eval.txt        /*:let-$*
+:let-& eval.txt        /*:let-&*
 :let-= eval.txt        /*:let-=*
 :let-@ eval.txt        /*:let-@*
 :let-environment       eval.txt        /*:let-environment*
 :let-option    eval.txt        /*:let-option*
 :let-register  eval.txt        /*:let-register*
-:let-star      eval.txt        /*:let-star*
 :let-unpack    eval.txt        /*:let-unpack*
 :let.= eval.txt        /*:let.=*
 :lex   quickfix.txt    /*:lex*
@@ -2708,6 +2760,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :syn-sync-second       syntax.txt      /*:syn-sync-second*
 :syn-sync-third        syntax.txt      /*:syn-sync-third*
 :syn-transparent       syntax.txt      /*:syn-transparent*
+:sync  scroll.txt      /*:sync*
 :syncbind      scroll.txt      /*:syncbind*
 :syntax        syntax.txt      /*:syntax*
 :syntax-enable syntax.txt      /*:syntax-enable*
@@ -3027,6 +3080,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 <cfile>        cmdline.txt     /*<cfile>*
 <character>    intro.txt       /*<character>*
 <count>        map.txt /*<count>*
+<f-args>       map.txt /*<f-args>*
 <k0>   term.txt        /*<k0>*
 <k1>   term.txt        /*<k1>*
 <k2>   term.txt        /*<k2>*
@@ -3086,7 +3140,9 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 @      repeat.txt      /*@*
 @/     change.txt      /*@\/*
 @:     repeat.txt      /*@:*
+@=     change.txt      /*@=*
 @@     repeat.txt      /*@@*
+@r     eval.txt        /*@r*
 A      insert.txt      /*A*
 ACL    editing.txt     /*ACL*
 ATTENTION      usr_11.txt      /*ATTENTION*
@@ -4017,6 +4073,11 @@ E789     syntax.txt      /*E789*
 E79    message.txt     /*E79*
 E790   undo.txt        /*E790*
 E791   mbyte.txt       /*E791*
+E792   gui.txt /*E792*
+E793   diff.txt        /*E793*
+E794   eval.txt        /*E794*
+E795   eval.txt        /*E795*
+E796   editing.txt     /*E796*
 E80    message.txt     /*E80*
 E800   arabic.txt      /*E800*
 E81    map.txt /*E81*
@@ -4079,7 +4140,10 @@ GTK+     gui_x11.txt     /*GTK+*
 GUI    gui.txt /*GUI*
 GUI-X11        gui_x11.txt     /*GUI-X11*
 GUIEnter       autocmd.txt     /*GUIEnter*
-GetLatestVimScripts-copyright  getscript.txt   /*GetLatestVimScripts-copyright*
+GUIFailed      autocmd.txt     /*GUIFailed*
+GetLatestVimScripts    pi_getscript.txt        /*GetLatestVimScripts*
+GetLatestVimScripts-copyright  pi_getscript.txt        /*GetLatestVimScripts-copyright*
+GetLatestVimScripts_dat        pi_getscript.txt        /*GetLatestVimScripts_dat*
 Gnome  gui_x11.txt     /*Gnome*
 H      motion.txt      /*H*
 I      insert.txt      /*I*
@@ -4129,6 +4193,7 @@ NetBSD-backspace  options.txt     /*NetBSD-backspace*
 Normal intro.txt       /*Normal*
 Normal-mode    intro.txt       /*Normal-mode*
 Nread  pi_netrw.txt    /*Nread*
+Nsource        pi_netrw.txt    /*Nsource*
 Nvi    intro.txt       /*Nvi*
 Nwrite pi_netrw.txt    /*Nwrite*
 O      insert.txt      /*O*
@@ -4222,6 +4287,7 @@ SessionLoad-variable      starting.txt    /*SessionLoad-variable*
 SessionLoadPost        autocmd.txt     /*SessionLoadPost*
 ShellCmdPost   autocmd.txt     /*ShellCmdPost*
 ShellFilterPost        autocmd.txt     /*ShellFilterPost*
+SourceCmd      autocmd.txt     /*SourceCmd*
 SourcePre      autocmd.txt     /*SourcePre*
 SpellFileMissing       autocmd.txt     /*SpellFileMissing*
 StdinReadPost  autocmd.txt     /*StdinReadPost*
@@ -4418,7 +4484,17 @@ abandon  editing.txt     /*abandon*
 abbreviations  map.txt /*abbreviations*
 abel.vim       syntax.txt      /*abel.vim*
 active-buffer  windows.txt     /*active-buffer*
-ada.vim        syntax.txt      /*ada.vim*
+ada#Create_Tags()      ada.txt /*ada#Create_Tags()*
+ada#Jump_Tag() ada.txt /*ada#Jump_Tag()*
+ada#Listtags() ada.txt /*ada#Listtags()*
+ada#Switch_Syntax_Option()     ada.txt /*ada#Switch_Syntax_Option()*
+ada#Word()     ada.txt /*ada#Word()*
+ada-compiler   ada.txt /*ada-compiler*
+ada-ctags      ada.txt /*ada-ctags*
+ada-extra-plugins      ada.txt /*ada-extra-plugins*
+ada-reference  ada.txt /*ada-reference*
+ada.txt        ada.txt /*ada.txt*
+ada.vim        ada.txt /*ada.vim*
 add()  eval.txt        /*add()*
 add-filetype-plugin    usr_05.txt      /*add-filetype-plugin*
 add-global-plugin      usr_05.txt      /*add-global-plugin*
@@ -4437,6 +4513,7 @@ added-6.1 version6.txt    /*added-6.1*
 added-6.2      version6.txt    /*added-6.2*
 added-6.3      version6.txt    /*added-6.3*
 added-6.4      version6.txt    /*added-6.4*
+added-7.1      version7.txt    /*added-7.1*
 added-BeOS     version5.txt    /*added-BeOS*
 added-Mac      version5.txt    /*added-Mac*
 added-VMS      version5.txt    /*added-VMS*
@@ -4650,6 +4727,7 @@ c_CTRL-Y  cmdline.txt     /*c_CTRL-Y*
 c_CTRL-\_CTRL-G        intro.txt       /*c_CTRL-\\_CTRL-G*
 c_CTRL-\_CTRL-N        intro.txt       /*c_CTRL-\\_CTRL-N*
 c_CTRL-\_e     cmdline.txt     /*c_CTRL-\\_e*
+c_CTRL-]       cmdline.txt     /*c_CTRL-]*
 c_CTRL-^       cmdline.txt     /*c_CTRL-^*
 c_CTRL-_       cmdline.txt     /*c_CTRL-_*
 c_digraph      cmdline.txt     /*c_digraph*
@@ -4679,6 +4757,7 @@ changed-6.1       version6.txt    /*changed-6.1*
 changed-6.2    version6.txt    /*changed-6.2*
 changed-6.3    version6.txt    /*changed-6.3*
 changed-6.4    version6.txt    /*changed-6.4*
+changed-7.1    version7.txt    /*changed-7.1*
 changelist     motion.txt      /*changelist*
 changelog.vim  syntax.txt      /*changelog.vim*
 changenr()     eval.txt        /*changenr()*
@@ -4729,10 +4808,15 @@ compatible-default      starting.txt    /*compatible-default*
 compile-changes-5      version5.txt    /*compile-changes-5*
 compile-changes-6      version6.txt    /*compile-changes-6*
 compile-changes-7      version7.txt    /*compile-changes-7*
+compiler-compaqada     ada.txt /*compiler-compaqada*
+compiler-decada        ada.txt /*compiler-decada*
+compiler-gnat  ada.txt /*compiler-gnat*
+compiler-hpada ada.txt /*compiler-hpada*
 compiler-manx  quickfix.txt    /*compiler-manx*
 compiler-pyunit        quickfix.txt    /*compiler-pyunit*
 compiler-select        quickfix.txt    /*compiler-select*
 compiler-tex   quickfix.txt    /*compiler-tex*
+compiler-vaxada        ada.txt /*compiler-vaxada*
 compl-current  insert.txt      /*compl-current*
 compl-define   insert.txt      /*compl-define*
 compl-dictionary       insert.txt      /*compl-dictionary*
@@ -4916,6 +5000,7 @@ debugger-integration      debugger.txt    /*debugger-integration*
 debugger-support       debugger.txt    /*debugger-support*
 debugger.txt   debugger.txt    /*debugger.txt*
 dec-mouse      options.txt     /*dec-mouse*
+decada_members ada.txt /*decada_members*
 deepcopy()     eval.txt        /*deepcopy()*
 definition-search      tagsrch.txt     /*definition-search*
 definitions    intro.txt       /*definitions*
@@ -4952,6 +5037,7 @@ diff      diff.txt        /*diff*
 diff-diffexpr  diff.txt        /*diff-diffexpr*
 diff-mode      diff.txt        /*diff-mode*
 diff-options   diff.txt        /*diff-options*
+diff-original-file     diff.txt        /*diff-original-file*
 diff-patchexpr diff.txt        /*diff-patchexpr*
 diff.txt       diff.txt        /*diff.txt*
 diff_filler()  eval.txt        /*diff_filler()*
@@ -5203,6 +5289,7 @@ fixed-6.1 version6.txt    /*fixed-6.1*
 fixed-6.2      version6.txt    /*fixed-6.2*
 fixed-6.3      version6.txt    /*fixed-6.3*
 fixed-6.4      version6.txt    /*fixed-6.4*
+fixed-7.1      version7.txt    /*fixed-7.1*
 flexwiki.vim   syntax.txt      /*flexwiki.vim*
 fname_diff-variable    eval.txt        /*fname_diff-variable*
 fname_in-variable      eval.txt        /*fname_in-variable*
@@ -5250,7 +5337,15 @@ fortran.vim      syntax.txt      /*fortran.vim*
 french-maillist        intro.txt       /*french-maillist*
 frombook       usr_01.txt      /*frombook*
 ft-abel-syntax syntax.txt      /*ft-abel-syntax*
-ft-ada-syntax  syntax.txt      /*ft-ada-syntax*
+ft-ada-commands        ada.txt /*ft-ada-commands*
+ft-ada-constants       ada.txt /*ft-ada-constants*
+ft-ada-functions       ada.txt /*ft-ada-functions*
+ft-ada-indent  ada.txt /*ft-ada-indent*
+ft-ada-omni    ada.txt /*ft-ada-omni*
+ft-ada-options ada.txt /*ft-ada-options*
+ft-ada-plugin  ada.txt /*ft-ada-plugin*
+ft-ada-syntax  ada.txt /*ft-ada-syntax*
+ft-ada-variables       ada.txt /*ft-ada-variables*
 ft-ant-syntax  syntax.txt      /*ft-ant-syntax*
 ft-apache-syntax       syntax.txt      /*ft-apache-syntax*
 ft-asm-syntax  syntax.txt      /*ft-asm-syntax*
@@ -5395,18 +5490,60 @@ g-      undo.txt        /*g-*
 g0     motion.txt      /*g0*
 g8     various.txt     /*g8*
 g:NetrwTopLvlMenu      pi_netrw.txt    /*g:NetrwTopLvlMenu*
+g:ada#Comment  ada.txt /*g:ada#Comment*
+g:ada#Ctags_Kinds      ada.txt /*g:ada#Ctags_Kinds*
+g:ada#DotWordRegex     ada.txt /*g:ada#DotWordRegex*
+g:ada#Keywords ada.txt /*g:ada#Keywords*
+g:ada#WordRegex        ada.txt /*g:ada#WordRegex*
+g:ada_abbrev   ada.txt /*g:ada_abbrev*
+g:ada_all_tab_usage    ada.txt /*g:ada_all_tab_usage*
+g:ada_begin_preproc    ada.txt /*g:ada_begin_preproc*
+g:ada_default_compiler ada.txt /*g:ada_default_compiler*
+g:ada_extended_completion      ada.txt /*g:ada_extended_completion*
+g:ada_extended_tagging ada.txt /*g:ada_extended_tagging*
+g:ada_folding  ada.txt /*g:ada_folding*
+g:ada_gnat_extensions  ada.txt /*g:ada_gnat_extensions*
+g:ada_line_errors      ada.txt /*g:ada_line_errors*
+g:ada_no_tab_space_error       ada.txt /*g:ada_no_tab_space_error*
+g:ada_no_trail_space_error     ada.txt /*g:ada_no_trail_space_error*
+g:ada_omni_with_keywords       ada.txt /*g:ada_omni_with_keywords*
+g:ada_rainbow_color    ada.txt /*g:ada_rainbow_color*
+g:ada_space_errors     ada.txt /*g:ada_space_errors*
+g:ada_standard_types   ada.txt /*g:ada_standard_types*
+g:ada_with_gnat_project_files  ada.txt /*g:ada_with_gnat_project_files*
+g:ada_withuse_ordinary ada.txt /*g:ada_withuse_ordinary*
+g:decada       ada.txt /*g:decada*
+g:decada.Error_Format  ada.txt /*g:decada.Error_Format*
+g:decada.Make()        ada.txt /*g:decada.Make()*
+g:decada.Make_Command  ada.txt /*g:decada.Make_Command*
+g:decada.Unit_Name()   ada.txt /*g:decada.Unit_Name()*
+g:gnat ada.txt /*g:gnat*
+g:gnat.Error_Format    ada.txt /*g:gnat.Error_Format*
+g:gnat.Find()  ada.txt /*g:gnat.Find()*
+g:gnat.Find_Program    ada.txt /*g:gnat.Find_Program*
+g:gnat.Make()  ada.txt /*g:gnat.Make()*
+g:gnat.Make_Command    ada.txt /*g:gnat.Make_Command*
+g:gnat.Pretty()        ada.txt /*g:gnat.Pretty()*
+g:gnat.Pretty_Program  ada.txt /*g:gnat.Pretty_Program*
+g:gnat.Project_File    ada.txt /*g:gnat.Project_File*
+g:gnat.Set_Project_File()      ada.txt /*g:gnat.Set_Project_File()*
+g:gnat.Tags()  ada.txt /*g:gnat.Tags()*
+g:gnat.Tags_Command    ada.txt /*g:gnat.Tags_Command*
 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_extracmd       pi_netrw.txt    /*g:netrw_extracmd*
 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*
 g:netrw_ftp_cmd        pi_netrw.txt    /*g:netrw_ftp_cmd*
 g:netrw_ftp_list_cmd   pi_netrw.txt    /*g:netrw_ftp_list_cmd*
+g:netrw_ftp_sizelist_cmd       pi_netrw.txt    /*g:netrw_ftp_sizelist_cmd*
+g:netrw_ftp_timelist_cmd       pi_netrw.txt    /*g:netrw_ftp_timelist_cmd*
 g:netrw_ftpmode        pi_netrw.txt    /*g:netrw_ftpmode*
 g:netrw_hide   pi_netrw.txt    /*g:netrw_hide*
 g:netrw_http_cmd       pi_netrw.txt    /*g:netrw_http_cmd*
@@ -5414,11 +5551,13 @@ g:netrw_ignorenetrc     pi_netrw.txt    /*g:netrw_ignorenetrc*
 g:netrw_keepdir        pi_netrw.txt    /*g:netrw_keepdir*
 g:netrw_list_cmd       pi_netrw.txt    /*g:netrw_list_cmd*
 g:netrw_list_hide      pi_netrw.txt    /*g:netrw_list_hide*
+g:netrw_liststyle      pi_netrw.txt    /*g:netrw_liststyle*
 g:netrw_local_mkdir    pi_netrw.txt    /*g:netrw_local_mkdir*
 g:netrw_local_rmdir    pi_netrw.txt    /*g:netrw_local_rmdir*
-g:netrw_longlist       pi_netrw.txt    /*g:netrw_longlist*
 g:netrw_maxfilenamelen pi_netrw.txt    /*g:netrw_maxfilenamelen*
+g:netrw_menu   pi_netrw.txt    /*g:netrw_menu*
 g:netrw_mkdir_cmd      pi_netrw.txt    /*g:netrw_mkdir_cmd*
+g:netrw_nogx   pi_netrw.txt    /*g:netrw_nogx*
 g:netrw_passwd pi_netrw.txt    /*g:netrw_passwd*
 g:netrw_rcp_cmd        pi_netrw.txt    /*g:netrw_rcp_cmd*
 g:netrw_rm_cmd pi_netrw.txt    /*g:netrw_rm_cmd*
@@ -5427,6 +5566,7 @@ g:netrw_rmf_cmd   pi_netrw.txt    /*g:netrw_rmf_cmd*
 g:netrw_rsync_cmd      pi_netrw.txt    /*g:netrw_rsync_cmd*
 g:netrw_scp_cmd        pi_netrw.txt    /*g:netrw_scp_cmd*
 g:netrw_sftp_cmd       pi_netrw.txt    /*g:netrw_sftp_cmd*
+g:netrw_shq    pi_netrw.txt    /*g:netrw_shq*
 g:netrw_sort_by        pi_netrw.txt    /*g:netrw_sort_by*
 g:netrw_sort_direction pi_netrw.txt    /*g:netrw_sort_direction*
 g:netrw_sort_sequence  pi_netrw.txt    /*g:netrw_sort_sequence*
@@ -5434,6 +5574,7 @@ g:netrw_ssh_browse_reject pi_netrw.txt    /*g:netrw_ssh_browse_reject*
 g:netrw_ssh_cmd        pi_netrw.txt    /*g:netrw_ssh_cmd*
 g:netrw_timefmt        pi_netrw.txt    /*g:netrw_timefmt*
 g:netrw_uid    pi_netrw.txt    /*g:netrw_uid*
+g:netrw_use_noswf      pi_netrw.txt    /*g:netrw_use_noswf*
 g:netrw_use_nt_rcp     pi_netrw.txt    /*g:netrw_use_nt_rcp*
 g:netrw_win95ftp       pi_netrw.txt    /*g:netrw_win95ftp*
 g:netrw_winsize        pi_netrw.txt    /*g:netrw_winsize*
@@ -5442,6 +5583,7 @@ g:tar_cmd pi_tar.txt      /*g:tar_cmd*
 g:tar_readoptions      pi_tar.txt      /*g:tar_readoptions*
 g:tar_writeoptions     pi_tar.txt      /*g:tar_writeoptions*
 g:var  eval.txt        /*g:var*
+g:vimball_home pi_vimball.txt  /*g:vimball_home*
 g;     motion.txt      /*g;*
 g<     message.txt     /*g<*
 g<Down>        motion.txt      /*g<Down>*
@@ -5496,20 +5638,19 @@ getfperm()      eval.txt        /*getfperm()*
 getfsize()     eval.txt        /*getfsize()*
 getftime()     eval.txt        /*getftime()*
 getftype()     eval.txt        /*getftype()*
-getlatestvimscripts    getscript.txt   /*getlatestvimscripts*
-getlatestvimscripts-algorithm  getscript.txt   /*getlatestvimscripts-algorithm*
-getlatestvimscripts-autoinstall        getscript.txt   /*getlatestvimscripts-autoinstall*
-getlatestvimscripts-data       getscript.txt   /*getlatestvimscripts-data*
-getlatestvimscripts-history    getscript.txt   /*getlatestvimscripts-history*
-getlatestvimscripts-plugins    getscript.txt   /*getlatestvimscripts-plugins*
+getlatestvimscripts-install    pi_getscript.txt        /*getlatestvimscripts-install*
 getline()      eval.txt        /*getline()*
 getloclist()   eval.txt        /*getloclist()*
 getpos()       eval.txt        /*getpos()*
 getqflist()    eval.txt        /*getqflist()*
 getreg()       eval.txt        /*getreg()*
 getregtype()   eval.txt        /*getregtype()*
-getscript      getscript.txt   /*getscript*
-getscript.txt  getscript.txt   /*getscript.txt*
+getscript      pi_getscript.txt        /*getscript*
+getscript-autoinstall  pi_getscript.txt        /*getscript-autoinstall*
+getscript-data pi_getscript.txt        /*getscript-data*
+getscript-history      pi_getscript.txt        /*getscript-history*
+getscript-plugins      pi_getscript.txt        /*getscript-plugins*
+getscript-start        pi_getscript.txt        /*getscript-start*
 gettabwinvar() eval.txt        /*gettabwinvar()*
 getwinposx()   eval.txt        /*getwinposx()*
 getwinposy()   eval.txt        /*getwinposy()*
@@ -5526,14 +5667,24 @@ global-ime      mbyte.txt       /*global-ime*
 global-local   options.txt     /*global-local*
 global-variable        eval.txt        /*global-variable*
 globpath()     eval.txt        /*globpath()*
-glvs   getscript.txt   /*glvs*
-glvs-alg       getscript.txt   /*glvs-alg*
-glvs-autoinstall       getscript.txt   /*glvs-autoinstall*
-glvs-contents  getscript.txt   /*glvs-contents*
-glvs-data      getscript.txt   /*glvs-data*
-glvs-hist      getscript.txt   /*glvs-hist*
-glvs-plugins   getscript.txt   /*glvs-plugins*
+glvs   pi_getscript.txt        /*glvs*
+glvs-alg       pi_getscript.txt        /*glvs-alg*
+glvs-algorithm pi_getscript.txt        /*glvs-algorithm*
+glvs-autoinstall       pi_getscript.txt        /*glvs-autoinstall*
+glvs-contents  pi_getscript.txt        /*glvs-contents*
+glvs-copyright pi_getscript.txt        /*glvs-copyright*
+glvs-data      pi_getscript.txt        /*glvs-data*
+glvs-dist-install      pi_getscript.txt        /*glvs-dist-install*
+glvs-hist      pi_getscript.txt        /*glvs-hist*
+glvs-install   pi_getscript.txt        /*glvs-install*
+glvs-options   pi_getscript.txt        /*glvs-options*
+glvs-plugins   pi_getscript.txt        /*glvs-plugins*
+glvs-usage     pi_getscript.txt        /*glvs-usage*
 gm     motion.txt      /*gm*
+gnat#Insert_Tags_Header()      ada.txt /*gnat#Insert_Tags_Header()*
+gnat#New()     ada.txt /*gnat#New()*
+gnat-xref      ada.txt /*gnat-xref*
+gnat_members   ada.txt /*gnat_members*
 gnome-session  gui_x11.txt     /*gnome-session*
 go     motion.txt      /*go*
 gp     change.txt      /*gp*
@@ -5621,7 +5772,6 @@ gvimrc    gui.txt /*gvimrc*
 gw     change.txt      /*gw*
 gwgw   change.txt      /*gwgw*
 gww    change.txt      /*gww*
-gx     pi_netrw.txt    /*gx*
 gzip   pi_gzip.txt     /*gzip*
 gzip-autocmd   pi_gzip.txt     /*gzip-autocmd*
 gzip-example   autocmd.txt     /*gzip-example*
@@ -5636,11 +5786,13 @@ has()   eval.txt        /*has()*
 has-patch      eval.txt        /*has-patch*
 has_key()      eval.txt        /*has_key()*
 haskell.vim    syntax.txt      /*haskell.vim*
+haslocaldir()  eval.txt        /*haslocaldir()*
 hasmapto()     eval.txt        /*hasmapto()*
 hebrew hebrew.txt      /*hebrew*
 hebrew.txt     hebrew.txt      /*hebrew.txt*
 help   various.txt     /*help*
 help-context   help.txt        /*help-context*
+help-summary   usr_02.txt      /*help-summary*
 help-translated        various.txt     /*help-translated*
 help-xterm-window      various.txt     /*help-xterm-window*
 help.txt       help.txt        /*help.txt*
@@ -6162,6 +6314,9 @@ mouse-mode-table  term.txt        /*mouse-mode-table*
 mouse-overview term.txt        /*mouse-overview*
 mouse-swap-buttons     term.txt        /*mouse-swap-buttons*
 mouse-using    term.txt        /*mouse-using*
+mouse_col-variable     eval.txt        /*mouse_col-variable*
+mouse_lnum-variable    eval.txt        /*mouse_lnum-variable*
+mouse_win-variable     eval.txt        /*mouse_win-variable*
 movement       intro.txt       /*movement*
 ms-dos os_msdos.txt    /*ms-dos*
 msdos  os_msdos.txt    /*msdos*
@@ -6232,10 +6387,7 @@ netbeans.txt     netbeans.txt    /*netbeans.txt*
 netreadfixup   pi_netrw.txt    /*netreadfixup*
 netrw  pi_netrw.txt    /*netrw*
 netrw--        pi_netrw.txt    /*netrw--*
-netrw-B        pi_netrw.txt    /*netrw-B*
 netrw-D        pi_netrw.txt    /*netrw-D*
-netrw-NB       pi_netrw.txt    /*netrw-NB*
-netrw-Nb       pi_netrw.txt    /*netrw-Nb*
 netrw-O        pi_netrw.txt    /*netrw-O*
 netrw-P        pi_netrw.txt    /*netrw-P*
 netrw-R        pi_netrw.txt    /*netrw-R*
@@ -6243,7 +6395,6 @@ netrw-S   pi_netrw.txt    /*netrw-S*
 netrw-U        pi_netrw.txt    /*netrw-U*
 netrw-a        pi_netrw.txt    /*netrw-a*
 netrw-activate pi_netrw.txt    /*netrw-activate*
-netrw-b        pi_netrw.txt    /*netrw-b*
 netrw-bookmark pi_netrw.txt    /*netrw-bookmark*
 netrw-bookmarks        pi_netrw.txt    /*netrw-bookmarks*
 netrw-browse   pi_netrw.txt    /*netrw-browse*
@@ -6258,6 +6409,8 @@ netrw-cr  pi_netrw.txt    /*netrw-cr*
 netrw-credits  pi_netrw.txt    /*netrw-credits*
 netrw-ctrl-h   pi_netrw.txt    /*netrw-ctrl-h*
 netrw-ctrl-l   pi_netrw.txt    /*netrw-ctrl-l*
+netrw-ctrl_h   pi_netrw.txt    /*netrw-ctrl_h*
+netrw-ctrl_l   pi_netrw.txt    /*netrw-ctrl_l*
 netrw-curdir   pi_netrw.txt    /*netrw-curdir*
 netrw-d        pi_netrw.txt    /*netrw-d*
 netrw-debug    pi_netrw.txt    /*netrw-debug*
@@ -6274,9 +6427,12 @@ netrw-externapp  pi_netrw.txt    /*netrw-externapp*
 netrw-file     pi_netrw.txt    /*netrw-file*
 netrw-fixup    pi_netrw.txt    /*netrw-fixup*
 netrw-ftp      pi_netrw.txt    /*netrw-ftp*
+netrw-gb       pi_netrw.txt    /*netrw-gb*
+netrw-gx       pi_netrw.txt    /*netrw-gx*
 netrw-handler  pi_netrw.txt    /*netrw-handler*
 netrw-help     pi_netrw.txt    /*netrw-help*
 netrw-hexplore pi_netrw.txt    /*netrw-hexplore*
+netrw-hiding   pi_netrw.txt    /*netrw-hiding*
 netrw-history  pi_netrw.txt    /*netrw-history*
 netrw-horiz    pi_netrw.txt    /*netrw-horiz*
 netrw-i        pi_netrw.txt    /*netrw-i*
@@ -6284,7 +6440,10 @@ 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*
+netrw-login    pi_netrw.txt    /*netrw-login*
 netrw-maps     pi_netrw.txt    /*netrw-maps*
+netrw-mb       pi_netrw.txt    /*netrw-mb*
+netrw-ml_get   pi_netrw.txt    /*netrw-ml_get*
 netrw-move     pi_netrw.txt    /*netrw-move*
 netrw-netrc    pi_netrw.txt    /*netrw-netrc*
 netrw-nexplore pi_netrw.txt    /*netrw-nexplore*
@@ -6299,7 +6458,11 @@ netrw-p3 pi_netrw.txt    /*netrw-p3*
 netrw-p4       pi_netrw.txt    /*netrw-p4*
 netrw-p5       pi_netrw.txt    /*netrw-p5*
 netrw-p6       pi_netrw.txt    /*netrw-p6*
+netrw-p7       pi_netrw.txt    /*netrw-p7*
+netrw-p8       pi_netrw.txt    /*netrw-p8*
+netrw-p9       pi_netrw.txt    /*netrw-p9*
 netrw-passwd   pi_netrw.txt    /*netrw-passwd*
+netrw-password pi_netrw.txt    /*netrw-password*
 netrw-path     pi_netrw.txt    /*netrw-path*
 netrw-pexplore pi_netrw.txt    /*netrw-pexplore*
 netrw-preview  pi_netrw.txt    /*netrw-preview*
@@ -6307,6 +6470,7 @@ netrw-problems    pi_netrw.txt    /*netrw-problems*
 netrw-protocol pi_netrw.txt    /*netrw-protocol*
 netrw-prvwin   pi_netrw.txt    /*netrw-prvwin*
 netrw-pscp     pi_netrw.txt    /*netrw-pscp*
+netrw-psftp    pi_netrw.txt    /*netrw-psftp*
 netrw-putty    pi_netrw.txt    /*netrw-putty*
 netrw-q        pi_netrw.txt    /*netrw-q*
 netrw-r        pi_netrw.txt    /*netrw-r*
@@ -6319,15 +6483,19 @@ netrw-settings  pi_netrw.txt    /*netrw-settings*
 netrw-sexplore pi_netrw.txt    /*netrw-sexplore*
 netrw-sort     pi_netrw.txt    /*netrw-sort*
 netrw-sortsequence     pi_netrw.txt    /*netrw-sortsequence*
+netrw-source   pi_netrw.txt    /*netrw-source*
 netrw-starpat  pi_netrw.txt    /*netrw-starpat*
 netrw-starstar pi_netrw.txt    /*netrw-starstar*
 netrw-starstarpat      pi_netrw.txt    /*netrw-starstarpat*
 netrw-start    pi_netrw.txt    /*netrw-start*
+netrw-t        pi_netrw.txt    /*netrw-t*
+netrw-texplore pi_netrw.txt    /*netrw-texplore*
 netrw-transparent      pi_netrw.txt    /*netrw-transparent*
 netrw-u        pi_netrw.txt    /*netrw-u*
 netrw-uidpass  pi_netrw.txt    /*netrw-uidpass*
 netrw-updir    pi_netrw.txt    /*netrw-updir*
 netrw-urls     pi_netrw.txt    /*netrw-urls*
+netrw-userpass pi_netrw.txt    /*netrw-userpass*
 netrw-v        pi_netrw.txt    /*netrw-v*
 netrw-var      pi_netrw.txt    /*netrw-var*
 netrw-variables        pi_netrw.txt    /*netrw-variables*
@@ -6415,8 +6583,10 @@ new-vimgrep      version7.txt    /*new-vimgrep*
 new-virtedit   version6.txt    /*new-virtedit*
 news   intro.txt       /*news*
 nextnonblank() eval.txt        /*nextnonblank()*
+nice   todo.txt        /*nice*
 no-eval-feature        eval.txt        /*no-eval-feature*
 no_buffers_menu        gui.txt /*no_buffers_menu*
+non-greedy     pattern.txt     /*non-greedy*
 normal-index   index.txt       /*normal-index*
 not-compatible usr_01.txt      /*not-compatible*
 not-edited     editing.txt     /*not-edited*
@@ -6523,6 +6693,7 @@ photon-gui        os_qnx.txt      /*photon-gui*
 php.vim        syntax.txt      /*php.vim*
 php3.vim       syntax.txt      /*php3.vim*
 phtml.vim      syntax.txt      /*phtml.vim*
+pi_getscript.txt       pi_getscript.txt        /*pi_getscript.txt*
 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*
@@ -6694,6 +6865,7 @@ replacing change.txt      /*replacing*
 replacing-ex   insert.txt      /*replacing-ex*
 reselect-Visual        visual.txt      /*reselect-Visual*
 resolve()      eval.txt        /*resolve()*
+restore-cursor usr_05.txt      /*restore-cursor*
 restore-position       tips.txt        /*restore-position*
 restricted-mode        starting.txt    /*restricted-mode*
 retab-example  change.txt      /*retab-example*
@@ -6761,8 +6933,6 @@ s/\r      change.txt      /*s\/\\r*
 s/\t   change.txt      /*s\/\\t*
 s/\u   change.txt      /*s\/\\u*
 s/\~   change.txt      /*s\/\\~*
-s:netrw_col    pi_netrw.txt    /*s:netrw_col*
-s:netrw_line   pi_netrw.txt    /*s:netrw_line*
 s:var  eval.txt        /*s:var*
 s<CR>  change.txt      /*s<CR>*
 sandbox        eval.txt        /*sandbox*
@@ -6775,6 +6945,7 @@ script    usr_41.txt      /*script*
 script-here    if_perl.txt     /*script-here*
 script-local   map.txt /*script-local*
 script-variable        eval.txt        /*script-variable*
+scriptnames-dictionary eval.txt        /*scriptnames-dictionary*
 scriptout-changed      version4.txt    /*scriptout-changed*
 scroll-binding scroll.txt      /*scroll-binding*
 scroll-cursor  scroll.txt      /*scroll-cursor*
@@ -6832,6 +7003,7 @@ sgml.vim  syntax.txt      /*sgml.vim*
 sh.vim syntax.txt      /*sh.vim*
 shell-window   tips.txt        /*shell-window*
 shell_error-variable   eval.txt        /*shell_error-variable*
+shellescape()  eval.txt        /*shellescape()*
 shift  intro.txt       /*shift*
 shift-left-right       change.txt      /*shift-left-right*
 short-name-changed     version4.txt    /*short-name-changed*
@@ -7340,6 +7512,8 @@ termresponse-variable     eval.txt        /*termresponse-variable*
 tex-error      syntax.txt      /*tex-error*
 tex-folding    syntax.txt      /*tex-folding*
 tex-math       syntax.txt      /*tex-math*
+tex-morecommands       syntax.txt      /*tex-morecommands*
+tex-package    syntax.txt      /*tex-package*
 tex-runon      syntax.txt      /*tex-runon*
 tex-slow       syntax.txt      /*tex-slow*
 tex-style      syntax.txt      /*tex-style*
@@ -7481,6 +7655,9 @@ v:key     eval.txt        /*v:key*
 v:lang eval.txt        /*v:lang*
 v:lc_time      eval.txt        /*v:lc_time*
 v:lnum eval.txt        /*v:lnum*
+v:mouse_col    eval.txt        /*v:mouse_col*
+v:mouse_lnum   eval.txt        /*v:mouse_lnum*
+v:mouse_win    eval.txt        /*v:mouse_win*
 v:prevcount    eval.txt        /*v:prevcount*
 v:profiling    eval.txt        /*v:profiling*
 v:progname     eval.txt        /*v:progname*
@@ -7610,6 +7787,7 @@ various-cmds      various.txt     /*various-cmds*
 various-motions        motion.txt      /*various-motions*
 various.txt    various.txt     /*various.txt*
 vb.vim syntax.txt      /*vb.vim*
+vba    pi_vimball.txt  /*vba*
 verbose        starting.txt    /*verbose*
 version-5.1    version5.txt    /*version-5.1*
 version-5.2    version5.txt    /*version-5.2*
@@ -7623,6 +7801,7 @@ version-6.1       version6.txt    /*version-6.1*
 version-6.2    version6.txt    /*version-6.2*
 version-6.3    version6.txt    /*version-6.3*
 version-6.4    version6.txt    /*version-6.4*
+version-7.1    version7.txt    /*version-7.1*
 version-variable       eval.txt        /*version-variable*
 version4.txt   version4.txt    /*version4.txt*
 version5.txt   version5.txt    /*version5.txt*
@@ -7648,13 +7827,13 @@ vim-multibyte   intro.txt       /*vim-multibyte*
 vim-script-intro       usr_41.txt      /*vim-script-intro*
 vim-variable   eval.txt        /*vim-variable*
 vim.vim        syntax.txt      /*vim.vim*
+vim7   version7.txt    /*vim7*
 vim:   options.txt     /*vim:*
 vimball        pi_vimball.txt  /*vimball*
 vimball-contents       pi_vimball.txt  /*vimball-contents*
 vimball-extract        pi_vimball.txt  /*vimball-extract*
 vimball-history        pi_vimball.txt  /*vimball-history*
 vimball-manual pi_vimball.txt  /*vimball-manual*
-vimball-vimballlist    pi_vimball.txt  /*vimball-vimballlist*
 vimdev intro.txt       /*vimdev*
 vimdiff        diff.txt        /*vimdiff*
 vimfiles       options.txt     /*vimfiles*
@@ -7709,6 +7888,7 @@ warningmsg-variable       eval.txt        /*warningmsg-variable*
 white-space    pattern.txt     /*white-space*
 whitespace     pattern.txt     /*whitespace*
 wildcard       editing.txt     /*wildcard*
+wildcards      editing.txt     /*wildcards*
 win16-!start   gui_w16.txt     /*win16-!start*
 win16-clipboard        gui_w16.txt     /*win16-clipboard*
 win16-colors   gui_w16.txt     /*win16-colors*
index 515ceaed3fdf132ee8647946569900c3f240a7dc..41fca5ffac456b76971f7b7ea8f938f57184dc2f 100644 (file)
@@ -1,4 +1,4 @@
-*term.txt*      For Vim version 7.0.  Last change: 2006 Apr 30
+*term.txt*      For Vim version 7.1a.  Last change: 2007 Feb 28
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -749,7 +749,7 @@ to be used while keeping the shift key pressed.  When clicking in a window
 which is editing another buffer, the Visual or Select mode is stopped.
 
 In Normal, Visual and Select mode clicking the right mouse button with the alt
-key pressed causes the Visual area to become blockwise.  When 'mousemodel is
+key pressed causes the Visual area to become blockwise.  When 'mousemodel' is
 "popup" the left button has to be used with the alt key.  Note that this won't
 work on systems where the window manager consumes the mouse events when the
 alt key is pressed (it may move the window).
index 597664f4af1d771d6f9c761c06ef5d2658bd952d..1abfba91a8457bdeb015ffd1647da2ad429df9f6 100644 (file)
@@ -1,4 +1,4 @@
-*tips.txt*      For Vim version 7.0.  Last change: 2006 Apr 30
+*tips.txt*      For Vim version 7.1a.  Last change: 2006 Jul 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -149,8 +149,8 @@ these two variables are the correct place where the above mentioned control
 sequences should go.
 
 Compare your xterm termcap entry (found in /etc/termcap) with your xterm
-terminfo entry (retrieved with /usr/5bin/infocmp -C xterm).  Both should
-contain entries similar to: >
+terminfo entry (retrieved with "infocmp -C xterm").  Both should contain
+entries similar to: >
        :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:
 
 PS: If you find any difference, someone (your sysadmin?) should better check
index a1258b7d1ed8a02c5ab7fb8c211a5371383262c6..a8990c0f31bec142ee8bd9e4f02d908e0e6af337 100644 (file)
@@ -1,4 +1,4 @@
-*uganda.txt*    For Vim version 7.0.  Last change: 2006 Apr 24
+*uganda.txt*    For Vim version 7.1a.  Last change: 2007 May 05
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -13,6 +13,7 @@ below or visit the ICCF web site, available at these URLs:
 
        http://iccf-holland.org/
        http://www.vim.org/iccf/
+       http://www.iccf.nl/
 
 You can also sponsor the development of Vim.  Vim sponsors can vote for
 features.  See |sponsor|.  The money goes to Uganda anyway.
@@ -211,21 +212,12 @@ Sending money:                                            *iccf-donations*
 Check the ICCF web site for the latest information!  See |iccf| for the URL.
 
 
-USA:           The methods mentioned below can be used.  Alternatively, you
-               can send a check to the Nehemiah Group Outreach Society
-               (NGOS).  This will reduce banking costs and you can get an IRS
-               tax receipt.  The NGOS forwards the funds directly to the
-               Kibaale project in Uganda.  Checks must be made payable to
-               NGOS but please note on the check "donation Kibaale".  Mail
-               checks to:
-                       NGOS
-                       P.O. Box 50862
-                       Indianapolis, IN 45250
-               Questions regarding the Nehemiah Group Outreach Society (NGOS)
-               should be directed to: Ross deMerchant, Executive Director -
-               r.demerchant AT sbcglobal DOT net.
-               For sponsoring a child contact KCF in Canada (see below) and
-               send the check to NGOS in Indianapolis.
+USA:           The methods mentioned below can be used.
+               Sending a check to the Nehemiah Group Outreach Society (NGOS)
+               is no longer possible, unfortunately. We are looking for
+               another way to get you an IRS tax receipt. 
+               For sponsoring a child contact KCF in Canada (see below). US
+               checks can be send to them to lower banking costs.
 
 Canada:                Contact Kibaale Children's Fund (KCF) in Surrey, Canada.  They
                take care of the Canadian sponsors for the children in
@@ -264,7 +256,7 @@ Europe:             Use a bank transfer if possible.  Your bank should have a form
 Credit Card:   You can use PayPal to send money with a Credit card.  This is
                the most widely used Internet based payment system.  It's
                really simple to use.  Use this link to find more info:
-                   https://www.paypal.com/affil/pal=Bram%40iccf-holland.org
+                   https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q
                The e-mail address for sending the money to is:
                    Bram@iccf-holland.org
                For amounts above 400 Euro ($500) sending a check is
index fde879d448f145124e8ad7d7d78942eb5da31a7b..e1f65858d5bfaf952bdde6b4feb5331aa0b5f708 100644 (file)
@@ -1,4 +1,4 @@
-*undo.txt*      For Vim version 7.0.  Last change: 2006 Apr 30
+*undo.txt*      For Vim version 7.1a.  Last change: 2006 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 2b3dd788a65eb3cbe96b0b864b444dced1ebb8a4..e782754c9779f362e26337daec3d3a763778c7de 100644 (file)
@@ -1,4 +1,4 @@
-*usr_02.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_02.txt*   For Vim version 7.1a.  Last change: 2007 Feb 28
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -302,7 +302,7 @@ edited.  Typing this command twice cancels the preceding "U".
 
 The "U" command is a change by itself, which the "u" command undoes and CTRL-R
 redoes.  This might be a bit confusing.  Don't worry, with "u" and CTRL-R you
-can go to any of the situations you had.  More about that in section ||.
+can go to any of the situations you had.  More about that in section |32.1|.
 
 ==============================================================================
 *02.6* Other editing commands
@@ -497,6 +497,66 @@ You can use the error ID at the start to find help about it: >
 
        :help E37
 
+
+Summary:                                       *help-summary*  >
+       :help
+<              Gives you very general help.  Scroll down to see a list of all
+               helpfiles, including those added locally (i.e. not distributed
+               with Vim). >
+       :help user-toc.txt
+<              Table of contents of the User Manual. >
+       :help :subject
+<              Ex-command "subject", for instance the following: >
+       :help :help
+<              Help on getting help. >
+       :help abc
+<              normal-mode command "abc". >
+       :help CTRL-B
+<              Control key <C-B> in Normal mode. >
+       :help i_abc
+       :help i_CTRL-B
+<              The same in Insert mode. >
+       :help v_abc
+       :help v_CTRL-B
+<              The same in Visual mode. >
+       :help c_abc
+       :help c_CTRL-B
+<              The same in Command-line mode. >
+       :help 'subject'
+<              Option 'subject'. >
+       :help subject()
+<              Function "subject". >
+       :help -subject
+<              Command-line option "-subject". >
+       :help +subject
+<              Compile-time feature "+subject'. >
+       :help EventName
+<              Autocommand event "EventName". >
+       :help digraphs.txt
+<              The top of the helpfile "digraph.txt".
+               Similarly for any other helpfile. >
+       :help pattern<Tab>
+<              Find a help tag starting with "pattern".  Repeat <Tab> for
+               others. >
+       :help pattern<Ctrl-D>
+<              See all possible help tag matches "pattern" at once. >
+       :helpgrep pattern
+<              Search the whole text of all help files for pattern "pattern".
+               Jumps to the first match.  Jump to other matches with: >
+           :cn
+<                      next match >
+           :cprev
+           :cN
+<                      previous match >
+           :cfirst
+           :clast
+<                      first or last match >
+           :copen
+           :cclose
+<                      open/close the quickfix window; press <Enter> to jump
+                       to the item under the cursor
+
+
 ==============================================================================
 
 Next chapter: |usr_03.txt|  Moving around
index 9f15540bc53aef17e59b7efdeeb1640a54d81d1e..b082f83cb9c997db6ef69c4d761e2efdad585b47 100644 (file)
@@ -1,4 +1,4 @@
-*usr_03.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_03.txt*   For Vim version 7.1a.  Last change: 2006 Jun 21
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -606,7 +606,7 @@ NAMED MARKS                                                 *bookmark*
 Vim enables you to place your own marks in the text.  The command "ma" marks
 the place under the cursor as mark a.  You can place 26 marks (a through z) in
 your text.  You can't see them, it's just a position that Vim remembers.
-   To go to a mark, use the command `{mark}, where "{mark} is the mark letter.
+   To go to a mark, use the command `{mark}, where {mark} is the mark letter.
 Thus to move to the a mark:
 >
        `a
@@ -622,7 +622,7 @@ while working on some text near the end of the file.
 
        ms
 
-The move to the text you want to work on and put the e (end) mark there: >
+Then move to the text you want to work on and put the e (end) mark there: >
 
        me
 
index cdb157e109357ce95b735af9a3f4ddcda6999adc..20de736dd6d64a886fa4ca29907747636cccd3c1 100644 (file)
@@ -1,4 +1,4 @@
-*usr_08.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*usr_08.txt*   For Vim version 7.1a.  Last change: 2006 Jul 18
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -197,8 +197,8 @@ unmodified.)
 MOVING BETWEEN WINDOWS
 
 Since you can split windows horizontally and vertically as much as you like,
-you can create any layout of windows.  Then you can use these commands to move
-between them:
+you can create almost any layout of windows.  Then you can use these commands
+to move between them:
 
        CTRL-W h        move to the window on the left
        CTRL-W j        move to the window below
@@ -242,7 +242,7 @@ and the type this command: >
 This uses the uppercase letter K.  What happens is that the window is moved to
 the very top.  You will notice that K is again used for moving upwards.
    When you have vertical splits, CTRL-W K will move the current window to the
-top and make it occupy the full with of the Vim window.  If this is your
+top and make it occupy the full width of the Vim window.  If this is your
 layout:
 
        +-------------------------------------------+
index fcfbcb65ace46635cb5aaa0ffc0d894304b1bde1..0c7a0418dd26844b892645dea6770ce85e4afdb3 100644 (file)
@@ -1,4 +1,4 @@
-*usr_09.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_09.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index b094a72963d33ac2148e1868f6cbdfe248038653..3e7de4b54dcd4cecb5c5f2ceb69973f454abc8ca 100644 (file)
@@ -1,4 +1,4 @@
-*usr_10.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_10.txt*   For Vim version 7.1a.  Last change: 2006 Nov 05
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -183,8 +183,9 @@ results in (starting with the original line):
        Teacher Smith criticized Teacher Johnson today. ~
 
 Other flags include p (print), which causes the ":substitute" command to print
-out each line it changes.  The c (confirm) flag tells ":substitute" to ask you
-for confirmation before it performs each substitution.  Enter the following: >
+out the last line it changes.  The c (confirm) flag tells ":substitute" to ask
+you for confirmation before it performs each substitution.  Enter the
+following: >
 
        :%s/Professor/Teacher/c
 
index a1e887afbcdc9be4386d5d95521229b93519e6c8..998cc1a25307c4cd72d167d72c7b39e9fe6cdf97 100644 (file)
@@ -1,4 +1,4 @@
-*usr_25.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_25.txt*   For Vim version 7.1a.  Last change: 2006 Jun 21
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -122,7 +122,7 @@ whole file by typing this: >
 together.  A common mistake is to have a line with a space or Tab.  That's a
 blank line, but not an empty line.
 
-Vim is able format more than just plain text.  See |fo-table| for how to
+Vim is able to format more than just plain text.  See |fo-table| for how to
 change this.  See the 'joinspaces' option to change the number of spaces used
 after a full stop.
    It is possible to use an external program for formatting.  This is useful
index ca78681adf6517d6099d7ce15ddae5fe80c5566c..c2159714afd641b98dc6a51cb659c9fb9abfc2ed 100644 (file)
@@ -1,4 +1,4 @@
-*usr_26.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_26.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index b3a1d51eb245b949d5fbce28b0126eed2407b0fa..aa05560da6183911dea787270afe5d1d25eadef2 100644 (file)
@@ -1,4 +1,4 @@
-*usr_29.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_29.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index 055a5add3c600a82a89587ba6e636c294dcecdae..4b243fb2732964510b4338a5a5155be0402012e0 100644 (file)
@@ -1,4 +1,4 @@
-*usr_32.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*usr_32.txt*   For Vim version 7.1a.  Last change: 2006 Apr 30
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index 5370a30dad88fc043e14079e138d6a6a66c6fd8b..3b0cb0498fec3d2f12696d40f74f63c9ba51c2fe 100644 (file)
@@ -1,4 +1,4 @@
-*usr_42.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_42.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index e5b0fa95d6cbd583a2a29abbfda7397af7c864ce..48b4b92fcedb23f65f65867dce3c493d40ff3eab 100644 (file)
@@ -1,4 +1,4 @@
-*usr_44.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_44.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index 65aad26c8fa92a2f7b59b0efc04f51db226a0091..7334b451f29bec9842efdda3d9567744197155a4 100644 (file)
@@ -1,4 +1,4 @@
-*usr_90.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_90.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index 9fe133c49accd3d9a9c34465a54943a3844af7a3..ff42aa96a8786d5fb146db18232b1576469b98a9 100644 (file)
@@ -1,4 +1,4 @@
-*usr_toc.txt*  For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_toc.txt*  For Vim version 7.1a.  Last change: 2006 Apr 24
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index bc0628e5a648d91ac79b494a8d4d74a80c849d47..503cde476e0dfaf130f5b6212530205130420940 100644 (file)
@@ -1,4 +1,4 @@
-*version5.txt*  For Vim version 7.0.  Last change: 2006 Apr 24
+*version5.txt*  For Vim version 7.1a.  Last change: 2006 Nov 18
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1865,7 +1865,7 @@ For ":syntax keyword" the "transparent" option did work, although not
 mentioned in the help.  But synID() returned wrong name.
 
 "gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and
-not interruptable.
+not interruptible.
 
 "gq" operator inserted screen lines in the wrong situation.  Now screen
 lines are inserted or deleted when this speeds up displaying.
@@ -2870,7 +2870,7 @@ backspace key.  "\<Del>" produces 0x7f.
 
 The shell syntax didn't contain a "syn sync maxlines" setting.  In a long file
 without recognizable items, syncing took so long it looked like Vim hangs.
-Added a maxlines setting, and made syncing interruptable.
+Added a maxlines setting, and made syncing interruptible.
 
 The "gs" command didn't flush output before waiting.
 
@@ -7578,7 +7578,7 @@ Fixed compiling under NeXT. (Jeroen C.M. Goudswaard)
 
 optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C').
 
-Tcl interpreter: "buffer" command didn't check for presense of an argument.
+Tcl interpreter: "buffer" command didn't check for presence of an argument.
 (Dave Bodenstab)
 
 dosinst.c: Added checks for too long file name.
index 9dda5777abecde757ca8f07054c5bcfd72c17aeb..9d33aa6f42e271daa44344e8f830f206a04ba757 100644 (file)
@@ -1,4 +1,4 @@
-*version6.txt*  For Vim version 7.0.  Last change: 2006 Apr 30
+*version6.txt*  For Vim version 7.1a.  Last change: 2006 Nov 18
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -11128,7 +11128,7 @@ Solution:   Insert the indent.  Also fix other mistakes.
 Files:     runtime/doc/eval.txt
 
 Patch 6.2.187
-Problem:    Using Insure++ reveals a number of bugs.  (Dominuque Pelle)
+Problem:    Using Insure++ reveals a number of bugs.  (Dominique Pelle)
 Solution:   Initialize variables where needed.  Free allocated memory to avoid
            leaks.  Fix comparing tags to avoid reading past allocated memory.
 Files:     src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c,
@@ -14406,7 +14406,7 @@ Files:      src/normal.c
 Patch 6.3.075
 Problem:    After unloading another buffer, syntax highlighting in the current
            buffer may be wrong when it uses "containedin". (Eric Arnold)
-Solution:   Use "buf" intead of "curbuf" in syntax_clear().
+Solution:   Use "buf" instead of "curbuf" in syntax_clear().
 Files:     src/syntax.c
 
 Patch 6.3.076
index ddb1c4623a5b5d53117dedece803dbfe584477de..d51f607096d04bffc1482367473fc3ee38fbcfdd 100644 (file)
@@ -182,7 +182,6 @@ EOF
 }
 
 
-
 sub writeCSS
 {
        open( CSS, ">vim-stylesheet.css"  ) || die "Couldn't write stylesheet: $!\n";
index e588d954b03bef11e1b8ec67ac9e6700dbe9f526..ef4a0a708a927c63dd961c96ef20cd1686d3afbf 100644 (file)
@@ -1,4 +1,4 @@
-*visual.txt*    For Vim version 7.0.  Last change: 2006 Apr 24
+*visual.txt*    For Vim version 7.1a.  Last change: 2006 Sep 26
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -175,7 +175,7 @@ stops when a motion command is used that does not move straight up or down.
 
 For moving the end of the block many commands can be used, but you cannot
 use Ex commands, commands that make changes or abandon the file.  Commands
-(starting with) ".pPiIaAO&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I
+(starting with) ".", "&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I
 and CTRL-O cause a beep and Visual mode continues.
 
 When switching to another window on the same buffer, the cursor position in
index 82f77cc89899b8ee09778f4b4b4dbc43b403a494..41298495a04c7f44479e75c90974e06ed5ac3f65 100755 (executable)
@@ -226,7 +226,7 @@ Stampa 3 linee (0x30 bytes esadecimali) alla fine di
 \fI% xxd \-s \-0x30 file
 .PP
 .br
-Stampa 120 bytes come immagine esadecimale continua con 40 bytes per linea.
+Stampa 120 bytes come immagine esadecimale continua con 20 bytes per linea.
 .br
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
 
index 624de29debd2d21f478e309b80fc22cab8078ba9..669ffc2ea9919be30b7304964b6fe8589ec110c1 100644 (file)
@@ -216,7 +216,7 @@ Wypisz trzy linie (heksowe 0x30 bajtów) z końca
 \fI% xxd \-s \-0x30 plik
 .PP
 .br
-Wypisz 120 bajtów jako ciągły zrzut heksowy z 40 oktetami na linię.
+Wypisz 120 bajtów jako ciągły zrzut heksowy z 20 oktetami na linię.
 .br
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
 .br
index ce75f8304d8c64cf5493d7c1edebbfdcfec1c838..647845bab4af3f6f3d413338b075bb7244b0b47d 100644 (file)
@@ -231,7 +231,7 @@ xxd с помощью strace(1) или truss(1) в тех случаях, ког
 .PP
 .br
 Вывести 120 байтов в виде непрерывного шестнадцатеричного представления
-по 40 октетов в строке:
+по 20 октетов в строке:
 .PP
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
 .br
index 13fa8f93f475f84fccd799541de8d553eb1a4185..688cf97f70ab9a01512952461fe9da432fdb13e3 100644 (file)
-" Vim Ada plugin file
-" Language:    Ada
-" Maintainer:  Neil Bird <neil@fnxweb.com>
-" Last Change: 2006 Apr 21
-" Version:     $Id$
-" Look for the latest version at http://vim.sourceforge.net/
-"
-" Perform Ada specific completion & tagging.
-"
-"
+"------------------------------------------------------------------------------
+"  Description: Perform Ada specific completion & tagging.
+"     Language: Ada (2005)
+"         $Id$
+"   Maintainer: Martin Krischik
+"              Neil Bird <neil@fnxweb.com>
+"      $Author$
+"       $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $
+"      History: 24.05.2006 MK Unified Headers
+"              26.05.2006 MK ' should not be in iskeyword.
+"              16.07.2006 MK Ada-Mode as vim-ball
+"              02.10.2006 MK Better folding.
+"              15.10.2006 MK Bram's suggestion for runtime integration
+"               05.11.2006 MK Bram suggested not to use include protection for
+"                             autoload
+"              05.11.2006 MK Bram suggested to save on spaces
+"    Help Page: ft-ada-plugin
+"------------------------------------------------------------------------------
 " Provides mapping overrides for tag jumping that figure out the current
 " Ada object and tag jump to that, not the 'simple' vim word.
 " Similarly allows <Ctrl-N> matching of full-length ada entities from tags.
-" Exports 'AdaWord()' function to return full name of Ada entity under the
-" cursor( or at given line/column), stripping whitespace/newlines as necessary.
+"------------------------------------------------------------------------------
 
 " Only do this when not done yet for this buffer
-if exists("b:did_ftplugin")
-  finish
+if exists ("b:did_ftplugin") || version < 700
+   finish
 endif
 
 " Don't load another plugin for this buffer
-let b:did_ftplugin = 1
+let b:did_ftplugin = 38
 
+"
 " Temporarily set cpoptions to ensure the script loads OK
+"
 let s:cpoptions = &cpoptions
-set cpo-=C
+set cpoptions-=C
 
-" Ada comments
-setlocal comments+=O:--
+" Section: Comments {{{1
+"
+setlocal comments=O:--,:--\ \
+setlocal commentstring=--\ \ %s
+setlocal complete=.,w,b,u,t,i
 
-" Make local tag mappings for this buffer (if not already set)
-if mapcheck('<C-]>','n') == ''
-  nnoremap <unique> <buffer> <C-]>    :call JumpToTag_ada('')<cr>
-endif
-if mapcheck('g<C-]>','n') == ''
-  nnoremap <unique> <buffer> g<C-]>   :call JumpToTag_ada('','stj')<cr>
+" Section: Tagging {{{1
+"
+if exists ("g:ada_extended_tagging")
+   " Make local tag mappings for this buffer (if not already set)
+   if g:ada_extended_tagging == 'jump'
+      if mapcheck('<C-]>','n') == ''
+        nnoremap <unique> <buffer> <C-]>    :call ada#Jump_Tag ('', 'tjump')<cr>
+      endif
+      if mapcheck('g<C-]>','n') == ''
+        nnoremap <unique> <buffer> g<C-]>   :call ada#Jump_Tag ('','stjump')<cr>
+      endif
+   elseif g:ada_extended_tagging == 'list'
+      if mapcheck('<C-]>','n') == ''
+        nnoremap <unique> <buffer> <C-]>    :call ada#List_Tag ()<cr>
+      endif
+      if mapcheck('g<C-]>','n') == ''
+        nnoremap <unique> <buffer> g<C-]>   :call ada#List_Tag ()<cr>
+      endif
+   endif
 endif
 
-if mapcheck('<C-N>','i') == ''
-  inoremap <unique> <buffer> <C-N> <C-R>=<SID>AdaCompletion("\<lt>C-N>")<cr>
-endif
-if mapcheck('<C-P>','i') == ''
-  inoremap <unique> <buffer> <C-P> <C-R>=<SID>AdaCompletion("\<lt>C-P>")<cr>
-endif
-if mapcheck('<C-X><C-]>','i') == ''
-  inoremap <unique> <buffer> <C-X><C-]> <C-R>=<SID>AdaCompletion("\<lt>C-X>\<lt>C-]>")<cr>
-endif
-if mapcheck('<bs>','i') == ''
-  inoremap <silent> <unique> <buffer> <bs> <C-R>=<SID>AdaInsertBackspace()<cr>
+" Section: Completion {{{1
+"
+setlocal completefunc=ada#User_Complete
+setlocal omnifunc=adacomplete#Complete
+
+if exists ("g:ada_extended_completion")
+   if mapcheck ('<C-N>','i') == ''
+      inoremap <unique> <buffer> <C-N> <C-R>=ada#Completion("\<lt>C-N>")<cr>
+   endif
+   if mapcheck ('<C-P>','i') == ''
+      inoremap <unique> <buffer> <C-P> <C-R>=ada#Completion("\<lt>C-P>")<cr>
+   endif
+   if mapcheck ('<C-X><C-]>','i') == ''
+      inoremap <unique> <buffer> <C-X><C-]> <C-R>=<SID>ada#Completion("\<lt>C-X>\<lt>C-]>")<cr>
+   endif
+   if mapcheck ('<bs>','i') == ''
+      inoremap <silent> <unique> <buffer> <bs> <C-R>=ada#Insert_Backspace ()<cr>
+   endif
 endif
 
-
+" Section: Matchit {{{1
+"
 " Only do this when not done yet for this buffer & matchit is used
-if ! exists("b:match_words")  &&  exists("loaded_matchit")
-  " The following lines enable the macros/matchit.vim plugin for
-  " Ada-specific extended matching with the % key.
-  let s:notend = '\%(\<end\s\+\)\@<!'
-  let b:match_words=
-  \ s:notend . '\<if\>:\<elsif\>:\<else\>:\<end\>\s\+\<if\>,' .
-  \ s:notend . '\<case\>:\<when\>:\<end\>\s\+\<case\>,' .
-  \ '\%(\<while\>.*\|\<for\>.*\|'.s:notend.'\)\<loop\>:\<end\>\s\+\<loop\>,' .
-  \ '\%(\<do\>\|\<begin\>\):\<exception\>:\<end\>\s*\%($\|[;A-Z]\),' .
-  \ s:notend . '\<record\>:\<end\>\s\+\<record\>'
+"
+if !exists ("b:match_words")  &&
+  \ exists ("loaded_matchit")
+   "
+   " The following lines enable the macros/matchit.vim plugin for
+   " Ada-specific extended matching with the % key.
+   "
+   let s:notend      = '\%(\<end\s\+\)\@<!'
+   let b:match_words =
+      \ s:notend . '\<if\>:\<elsif\>:\<else\>:\<end\>\s\+\<if\>,' .
+      \ s:notend . '\<case\>:\<when\>:\<end\>\s\+\<case\>,' .
+      \ '\%(\<while\>.*\|\<for\>.*\|'.s:notend.'\)\<loop\>:\<end\>\s\+\<loop\>,' .
+      \ '\%(\<do\>\|\<begin\>\):\<exception\>:\<end\>\s*\%($\|[;A-Z]\),' .
+      \ s:notend . '\<record\>:\<end\>\s\+\<record\>'
 endif
 
-
-" Prevent re-load of functions
-if exists('s:id')
-  finish
+" Section: Compiler {{{1
+"
+if ! exists("current_compiler")                        ||
+   \ current_compiler != g:ada_default_compiler
+   execute "compiler " . g:ada_default_compiler
 endif
 
-" Get this script's unique id
-map <script> <SID>?? <SID>??
-let s:id = substitute( maparg('<SID>??'), '^<SNR>\(.*\)_??$', '\1', '' )
-unmap <script> <SID>??
-
-
-" Extract current Ada word across multiple lines
-" AdaWord( [line, column] )\
-let s:AdaWordRegex = '\a\w*\(\_s*\.\_s*\a\w*\)*'
-let s:AdaComment   = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*"
-
-function! AdaWord(...)
-  if a:0 > 1
-    let linenr = a:1
-    let colnr  = a:2 - 1
-  else
-    let linenr = line('.')
-    let colnr  = col('.') - 1
-  endif
-  let line = substitute( getline(linenr), s:AdaComment, '', '' )
-  " Cope with tag searching for items in comments; if we are, don't loop
-  " backards looking for previous lines
-  if colnr > strlen(line)
-    " We were in a comment
-    let line = getline(linenr)
-    let search_prev_lines = 0
-  else
-    let search_prev_lines = 1
-  endif
-
-  " Go backwards until we find a match (Ada ID) that *doesn't* include our
-  " location - i.e., the previous ID. This is because the current 'correct'
-  " match will toggle matching/not matching as we traverse characters
-  " backwards. Thus, we have to find the previous unrelated match, exclude
-  " it, then use the next full match (ours).
-  " Remember to convert vim column 'colnr' [1..n] to string offset [0..(n-1)]
-  " ... but start, here, one after the required char.
-  let newcol = colnr + 1
-  while 1
-    let newcol = newcol - 1
-    if newcol < 0
-      " Have to include previous line from file
-      let linenr = linenr - 1
-      if linenr < 1  ||  !search_prev_lines
-       " Start of file or matching in a comment
-       let linenr = 1
-       let newcol = 0
-       let ourmatch = match( line, s:AdaWordRegex )
-       break
-      endif
-      " Get previous line, and prepend it to our search string
-      let newline = substitute( getline(linenr), s:AdaComment, '', '' )
-      let newcol  = strlen(newline) - 1
-      let colnr   = colnr + newcol
-      let line    = newline . line
-    endif
-    " Check to see if this is a match excluding 'us'
-    let mend = newcol + matchend( strpart(line,newcol), s:AdaWordRegex ) - 1
-    if mend >= newcol  &&  mend < colnr
-      " Yes
-      let ourmatch = mend+1 + match( strpart(line,mend+1), s:AdaWordRegex )
-      break
-    endif
-  endwhile
-
-  " Got anything?
-  if ourmatch < 0
-    return ''
-  else
-    let line = strpart( line, ourmatch)
-  endif
-
-  " Now simply add further lines until the match gets no bigger
-  let matchstr = matchstr( line, s:AdaWordRegex )
-  let lastline  = line('$')
-  let linenr    = line('.') + 1
-  while linenr <= lastline
-    let lastmatch = matchstr
-    let line = line . substitute( getline(linenr), s:AdaComment, '', '' )
-    let matchstr = matchstr( line, s:AdaWordRegex )
-    if matchstr == lastmatch
-      break
-    endif
-  endwhile
-
-  " Strip whitespace & return
-  return substitute( matchstr, '\s\+', '', 'g' )
-endfunction
-
-
-" Word tag - include '.' and if Ada make uppercase
-" Name allows a common JumpToTag() to look for an ft specific JumpToTag_ft().
-function! JumpToTag_ada(word,...)
-  if a:word == ''
-    " Get current word
-    let word = AdaWord()
-    if word == ''
-      return
-    endif
-  else
-    let word = a:word
-  endif
-  if a:0 > 0
-    let mode = a:1
-  else
-    let mode = 'tj'
-  endif
-
-  let v:errmsg = ''
-  execute 'silent!' mode word
-  if v:errmsg != ''
-    if v:errmsg =~ '^E426:'  " Tag not found
-      let ignorecase = &ignorecase
-      set ignorecase
-      execute mode word
-      let &ignorecase = ignorecase
-    else
-      " Repeat to give error
-      execute mode word
-    endif
-  endif
-endfunction
-
-
-" Word completion (^N/^R/^X^]) - force '.' inclusion
-function! s:AdaCompletion(cmd)
-  set iskeyword+=46
-  return a:cmd . "\<C-R>=<SNR>" . s:id . "_AdaCompletionEnd()\<CR>"
-endfunction
-function! s:AdaCompletionEnd()
-  set iskeyword-=46
-  return ''
-endfunction
-
-
-" Backspace at end of line after auto-inserted commentstring '-- ' wipes it
-function! s:AdaInsertBackspace()
-  let line = getline('.')
-  if col('.') > strlen(line) && match(line,'-- $') != -1 && match(&comments,'--') != -1
-    return "\<bs>\<bs>\<bs>"
-  else
-    return "\<bs>"
-  endif
-endfunction
+" Section: Folding {{{1
+"
+if exists("g:ada_folding")
+   if g:ada_folding[0] == 'i'
+      setlocal foldmethod=indent
+      setlocal foldignore=--
+      setlocal foldnestmax=5
+   elseif g:ada_folding[0] == 'g'
+      setlocal foldmethod=expr
+      setlocal foldexpr=ada#Pretty_Print_Folding(v:lnum)
+   elseif g:ada_folding[0] == 's'
+      setlocal foldmethod=syntax
+   endif
+   setlocal tabstop=8
+   setlocal softtabstop=3
+   setlocal shiftwidth=3
+endif
 
+" Section: Abbrev {{{1
+"
+if exists("g:ada_abbrev")
+   iabbrev ret return
+   iabbrev proc procedure
+   iabbrev pack package
+   iabbrev func function
+endif
 
+" Section: Commands, Mapping, Menus {{{1
+"
+call ada#Map_Popup (
+   \ 'Tag.List',
+   \  'l',
+   \ 'call ada#List_Tag ()')
+call ada#Map_Popup (
+   \'Tag.Jump',
+   \'j',
+   \'call ada#Jump_Tag ()')
+call ada#Map_Menu (
+   \'Tag.Create File',
+   \':AdaTagFile',
+   \'call ada#Create_Tags (''file'')')
+call ada#Map_Menu (
+   \'Tag.Create Dir',
+   \':AdaTagDir',
+   \'call ada#Create_Tags (''dir'')')
+
+call ada#Map_Menu (
+   \'Highlight.Toggle Space Errors',
+   \ ':AdaSpaces',
+   \'call ada#Switch_Syntax_Option (''space_errors'')')
+call ada#Map_Menu (
+   \'Highlight.Toggle Lines Errors',
+   \ ':AdaLines',
+   \'call ada#Switch_Syntax_Option (''line_errors'')')
+call ada#Map_Menu (
+   \'Highlight.Toggle Rainbow Color',
+   \ ':AdaRainbow',
+   \'call ada#Switch_Syntax_Option (''rainbow_color'')')
+call ada#Map_Menu (
+   \'Highlight.Toggle Standard Types',
+   \ ':AdaTypes',
+   \'call ada#Switch_Syntax_Option (''standard_types'')')
+
+" 1}}}
 " Reset cpoptions
 let &cpoptions = s:cpoptions
 unlet s:cpoptions
 
-" vim: sts=2 sw=2 :
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006 Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
diff --git a/runtime/ftplugin/bst.vim b/runtime/ftplugin/bst.vim
new file mode 100644 (file)
index 0000000..973e342
--- /dev/null
@@ -0,0 +1,15 @@
+" Vim filetype plugin file
+" Language:    bst
+" Author:      Tim Pope <vimNOSPAM@tpope.info>
+" $Id$
+
+if exists("b:did_ftplugin")
+    finish
+endif
+let b:did_ftplugin = 1
+
+setlocal commentstring=%\ %s
+setlocal comments=:%
+setlocal fo-=t fo+=croql
+
+let b:undo_ftplugin = "setlocal com< cms< fo<"
diff --git a/runtime/ftplugin/cobol.vim b/runtime/ftplugin/cobol.vim
new file mode 100644 (file)
index 0000000..443ea68
--- /dev/null
@@ -0,0 +1,266 @@
+" Vim filetype plugin file
+" Language:    cobol
+" Author:      Tim Pope <vimNOSPAM@tpope.info>
+" $Id$
+
+" Insert mode mappings: <C-T> <C-D> <Tab>
+" Normal mode mappings: < > << >> [[ ]] [] ][
+" Visual mode mappings: < >
+
+if exists("b:did_ftplugin")
+    finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal commentstring=\ \ \ \ \ \ *%s
+setlocal comments=:*
+setlocal fo+=croqlt
+setlocal expandtab
+setlocal textwidth=72
+
+" matchit support
+if exists("loaded_matchit")
+    let s:ordot = '\|\ze\.\%( \@=\|$\)'
+    let b:match_ignorecase=1
+    "let b:match_skip = 'getline(".") =~ "^.\\{6\\}[*/C]"'
+    let b:match_words=
+    \ '\$if\>:$else\>:\$endif\>,' .
+    \ '[$-]\@<!\<if\>:\<\%(then\|else\)\>:\<end-if\>'.s:ordot.',' .
+    \ '-\@<!\<perform\s\+\%(\d\+\s\+times\|until\|varying\|with\s\+test\)\>:\<end-perform\>'.s:ordot . ',' .
+    \ '-\@<!\<\%(search\|evaluate\)\>:\<\%(when\)\>:\<end-\%(search\|evaluate\)\>' .s:ordot . ',' .
+    \ '-\@<!\<\%(add\|compute\|divide\|multiply\|subtract\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(not\s\+\)\=on\s\+size\s\+error\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=on\s\+size\s\+error\>:\<end-\%(add\|compute\|divide\|multiply\|subtract\)\>' .s:ordot . ',' .
+    \ '-\@<!\<\%(string\|unstring\|accept\|display\|call\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(not\s\+\)\=on\s\+\%(overflow\|exception\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=on\s\+\%(overflow\|exception\)\>:\<end-\%(string\|unstring\|accept\|display\|call\)\>' .s:ordot . ',' .
+    \ '-\@<!\<\%(delete\|rewrite\|start\|write\|read\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>:\<end-\%(delete\|rewrite\|start\|write\|read\)\>' .s:ordot
+endif
+
+if has("gui_win32") && !exists("b:browsefilter")
+  let b:browsefilter = "COBOL Source Files (*.cbl, *.cob)\t*.cbl;*.cob;*.lib\n".
+                    \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setlocal com< cms< fo< et< tw<" .
+            \ " | unlet! b:browsefilter b:match_words b:match_ignorecase b:match_skip"
+if !exists("g:no_plugin_maps") && !exists("g:no_cobol_maps")
+    let b:undo_ftplugin = b:undo_ftplugin .
+            \ " | sil! exe 'nunmap <buffer> <'" .
+            \ " | sil! exe 'nunmap <buffer> >'" .
+            \ " | sil! exe 'nunmap <buffer> <<'" .
+            \ " | sil! exe 'nunmap <buffer> >>'" .
+            \ " | sil! exe 'vunmap <buffer> <'" .
+            \ " | sil! exe 'vunmap <buffer> >'" .
+            \ " | sil! exe 'iunmap <buffer> <C-D>'" .
+            \ " | sil! exe 'iunmap <buffer> <C-T>'" .
+            \ " | sil! exe 'iunmap <buffer> <Tab>'" .
+            \ " | sil! exe 'nunmap <buffer> <Plug>Traditional'" .
+            \ " | sil! exe 'nunmap <buffer> <Plug>Comment'" .
+            \ " | sil! exe 'nunmap <buffer> <Plug>DeComment'" .
+            \ " | sil! exe 'vunmap <buffer> <Plug>VisualTraditional'" .
+            \ " | sil! exe 'vunmap <buffer> <Plug>VisualComment'" .
+            \ " | sil! exe 'iunmap <buffer> <Plug>VisualDeComment'" .
+            \ " | sil! exe 'unmap  <buffer> [['" .
+            \ " | sil! exe 'unmap  <buffer> ]]'" .
+            \ " | sil! exe 'unmap  <buffer> []'" .
+            \ " | sil! exe 'unmap  <buffer> ]['"
+endif
+
+if !exists("g:no_plugin_maps") && !exists("g:no_cobol_maps")
+    if version >= 700
+        nnoremap <silent> <buffer> > :set opfunc=<SID>IncreaseFunc<CR>g@
+        nnoremap <silent> <buffer> < :set opfunc=<SID>DecreaseFunc<CR>g@
+    endif
+    nnoremap <silent> <buffer> >> :call CobolIndentBlock(1)<CR>
+    nnoremap <silent> <buffer> << :call CobolIndentBlock(-1)<CR>
+    vnoremap <silent> <buffer> > :call CobolIndentBlock(v:count1)<CR>
+    vnoremap <silent> <buffer> < :call CobolIndentBlock(-v:count1)<CR>
+    inoremap <silent> <buffer> <C-T> <C-R>=<SID>IncreaseIndent()<CR><C-R>=<SID>RestoreShiftwidth()<CR>
+    inoremap <silent> <buffer> <C-D> <C-R>=<SID>DecreaseIndent()<CR><C-R>=<SID>RestoreShiftwidth()<CR>
+    if !maparg("<Tab>","i")
+        inoremap <silent> <buffer> <Tab> <C-R>=<SID>Tab()<CR><C-R>=<SID>RestoreShiftwidth()<CR>
+    endif
+    noremap <silent> <buffer> [[ m':call search('\c^\%(\s*\<Bar>.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\<Bar>section\)\s*\.','bW')<CR>
+    noremap <silent> <buffer> ]] m':call search('\c^\%(\s*\<Bar>.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\<Bar>section\)\.','W')<CR>
+    noremap <silent> <buffer> [] m':call <SID>toend('b')<CR>
+    noremap <silent> <buffer> ][ m':call <SID>toend('')<CR>
+    " For EnhancedCommentify
+    noremap <silent> <buffer> <Plug>Traditional      :call <SID>Comment('t')<CR>
+    noremap <silent> <buffer> <Plug>Comment          :call <SID>Comment('c')<CR>
+    noremap <silent> <buffer> <Plug>DeComment        :call <SID>Comment('u')<CR>
+    noremap <silent> <buffer> <Plug>VisualTraditional :'<,'>call <SID>Comment('t')<CR>
+    noremap <silent> <buffer> <Plug>VisualComment     :'<,'>call <SID>Comment('c')<CR>
+    noremap <silent> <buffer> <Plug>VisualDeComment   :'<,'>call <SID>Comment('u')<CR>
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+if exists("g:did_cobol_ftplugin_functions")
+    finish
+endif
+let g:did_cobol_ftplugin_functions = 1
+
+function! s:repeat(str,count)
+    let i = 0
+    let ret = ""
+    while i < a:count
+        let ret = ret . a:str
+        let i = i + 1
+    endwhile
+    return ret
+endfunction
+
+function! s:increase(...)
+    let lnum = '.'
+    let sw = &shiftwidth
+    let i = a:0 ? a:1 : indent(lnum)
+    if i >= 11
+        return sw - (i - 11) % sw
+    elseif i >= 7
+        return 11-i
+    elseif i == 6
+        return 1
+    else
+        return 6-i
+    endif
+endfunction
+
+function! s:decrease(...)
+    let lnum = '.'
+    let sw = &shiftwidth
+    let i = indent(a:0 ? a:1 : lnum)
+    if i >= 11 + sw
+        return 1 + (i + 12) % sw
+    elseif i > 11
+        return i-11
+    elseif i > 7
+        return i-7
+    elseif i == 7
+        return 1
+    else
+        return i
+    endif
+endfunction
+
+function! CobolIndentBlock(shift)
+    let head = strpart(getline('.'),0,7)
+    let tail = strpart(getline('.'),7)
+    let indent = match(tail,'[^ ]')
+    let sw = &shiftwidth
+    let shift = a:shift
+    if shift > 0
+        if indent < 4
+            let tail = s:repeat(" ",4-indent).tail
+            let shift = shift - 1
+        endif
+        let tail = s:repeat(" ",shift*sw).tail
+        let shift = 0
+    elseif shift < 0
+        if (indent-4) > -shift * sw
+            let tail = strpart(tail,-shift * sw)
+        elseif (indent-4) > (-shift-1) * sw
+            let tail = strpart(tail,indent - 4)
+        else
+            let tail = strpart(tail,indent)
+        endif
+    endif
+    call setline('.',head.tail)
+endfunction
+
+function! s:IncreaseFunc(type)
+    '[,']call CobolIndentBlock(1)
+endfunction
+
+function! s:DecreaseFunc(type)
+    '[,']call CobolIndentBlock(-1)
+endfunction
+
+function! s:IncreaseIndent()
+    let c = "\<C-T>"
+    if exists("*InsertCtrlTWrapper")
+        let key = InsertCtrlTWrapper()
+        if key != c
+            return key
+        endif
+    endif
+    let interval = s:increase()
+    let b:cobol_shiftwidth = &shiftwidth
+    let &shiftwidth = 1
+    let lastchar = strpart(getline('.'),col('.')-2,1)
+    if lastchar == '0' || lastchar == '^'
+        return "\<BS>".lastchar.c
+    else
+        return s:repeat(c,interval)
+    endif
+endfunction
+
+function! s:DecreaseIndent()
+    let c = "\<C-D>"
+    if exists("*InsertCtrlDWrapper")
+        " I hack Ctrl-D to delete when not at the end of the line.
+        let key = InsertCtrlDWrapper()
+        if key != c
+            return key
+        endif
+    endif
+    let interval = s:decrease()
+    let b:cobol_shiftwidth = &shiftwidth
+    let &shiftwidth = 1
+    return s:repeat(c,interval)
+endfunction
+
+function! s:RestoreShiftwidth()
+    if exists("b:cobol_shiftwidth")
+        let &shiftwidth=b:cobol_shiftwidth
+        unlet b:cobol_shiftwidth
+    endif
+    return ""
+endfunction
+
+function! s:Tab()
+    if (strpart(getline('.'),0,col('.')-1) =~ '^\s*$' && &sta)
+        return s:IncreaseIndent()
+    elseif &sts == &sw && &sts != 8 && &et
+        return s:repeat(" ",s:increase(col('.')-1))
+    else
+        return "\<Tab>"
+    endif
+endfunction
+
+function! s:Comment(arg)
+    " For EnhancedCommentify
+    let line = getline('.')
+    if (line =~ '^.\{6\}[*/C]' || a:arg == 'c') && a:arg != 'u'
+        let line = substitute(line,'^.\{6\}\zs.',' ','')
+    else
+        let line = substitute(line,'^.\{6\}\zs.','*','')
+    endif
+    call setline('.',line)
+endfunction
+
+function! s:toend(direction)
+    let ignore = '^\(\s*\|.\{6\}\)\%([*/]\|\s*$\)'
+    let keep = line('.')
+    keepjumps +
+    while line('.') < line('$') && getline('.') =~ ignore
+        keepjumps +
+    endwhile
+    let res = search('\c^\%(\s*\|.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\|section\)\s*\.',a:direction.'W')
+    if a:direction != 'b' && !res
+        let res = line('$')
+        keepjumps $
+    elseif res
+        keepjumps -
+    endif
+    if res
+        while line('.') > 1 && getline('.') =~ ignore
+            keepjumps -
+        endwhile
+        if line('.') == 1 && getline('.') =~ ignore
+            exe "keepjumps ".keep
+        endif
+    else
+        exe "keepjumps ".keep
+    endif
+endfunction
index 167f56c7307f50b2b57c48a5e9be464658b92ca1..a3079d198836a320558565c00cadc2b2d6fed314 100644 (file)
@@ -2,14 +2,14 @@
 " Language:    Debian Changelog
 " Maintainer:  Michael Piefel <piefel@informatik.hu-berlin.de>
 "              Stefano Zacchiroli <zack@debian.org>
-" Last Change: $LastChangedDate: 2006-04-28 12:15:12 -0400 (ven, 28 apr 2006) $
+" Last Change: $LastChangedDate: 2006-08-24 23:41:26 +0200 (gio, 24 ago 2006) $
 " License:     GNU GPL, version 2.0 or later
 " URL:         http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/ftplugin/debchangelog.vim?op=file&rev=0&sc=0
 
 if exists("b:did_ftplugin")
   finish
 endif
-let b:did_ftplugin = 1
+let b:did_ftplugin=1
 
 " {{{1 Local settings (do on every load)
 setlocal foldmethod=expr
@@ -227,21 +227,22 @@ augroup END
 " }}}
 " {{{1 folding
 
-" look for an author name searching backward from a given line number
-function! s:getAuthor(lnum)
-  let line = getline(a:lnum)
-  let backsteps = 0
-  while line !~ '^ --'
-    let backsteps += 1
-    let line = getline(a:lnum - backsteps)
+" look for an author name in the [zonestart zoneend] lines searching backward
+function! s:getAuthor(zonestart, zoneend)
+  let linepos = a:zoneend
+  while linepos >= a:zonestart
+    let line = getline(linepos)
+    if line =~ '^ --'
+      return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '')
+    endif
+    let linepos -= 1
   endwhile
-  let author = substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '')
-  return author
+  return '[unknown]'
 endfunction
 
 function! DebChangelogFoldText()
   if v:folddashes == '-'  " changelog entry fold
-    return foldtext() . ' -- ' . s:getAuthor(v:foldend) . ' '
+    return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' '
   endif
   return foldtext()
 endfunction
@@ -260,6 +261,8 @@ function! GetDebChangelogFold(lnum)
   return '='
 endfunction
 
+foldopen!   " unfold the entry the cursor is on (usually the first one)
+
 " }}}
 
 " vim: set foldmethod=marker:
diff --git a/runtime/ftplugin/hamster.vim b/runtime/ftplugin/hamster.vim
new file mode 100644 (file)
index 0000000..ddb40f9
--- /dev/null
@@ -0,0 +1,61 @@
+" Vim filetype plugin
+" Language:    Hamster Script
+" Version:     2.0.6.0
+" Maintainer:  David Fishburn <fishburn@ianywhere.com>
+" Last Change: Wed Nov 08 2006 12:03:09 PM
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+  finish
+endif
+
+" Don't load another plugin for this buffer
+let b:did_ftplugin = 1
+
+let cpo_save = &cpo
+set cpo-=C
+
+let b:undo_ftplugin = "setl fo< com< tw< commentstring<"
+       \ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
+
+" Set 'formatoptions' to break comment lines but not other lines,
+" and insert the comment leader when hitting <CR> or using "o".
+setlocal fo-=t fo+=croql
+
+" Use the # sign for comments
+setlocal comments=:#
+
+" Format comments to be up to 78 characters long
+if &tw == 0
+  setlocal tw=78
+endif
+
+" Comments start with a double quote
+setlocal commentstring=#%s
+
+" Move around functions.
+noremap <silent><buffer> [[ :call search('^\s*sub\>', "bW")<CR>
+noremap <silent><buffer> ]] :call search('^\s*sub\>', "W")<CR>
+noremap <silent><buffer> [] :call search('^\s*endsub\>', "bW")<CR>
+noremap <silent><buffer> ][ :call search('^\s*endsub\>', "W")<CR>
+
+" Move around comments
+noremap <silent><buffer> ]# :call search('^\s*#\@!', "W")<CR>
+noremap <silent><buffer> [# :call search('^\s*#\@!', "bW")<CR>
+
+" Let the matchit plugin know what items can be matched.
+if exists("loaded_matchit")
+  let b:match_ignorecase = 0
+  let b:match_words =
+       \ '\<sub\>:\<return\>:\<endsub\>,' .
+        \ '\<do\|while\|repeat\|for\>:\<break\>:\<continue\>:\<loop\|endwhile\|until\|endfor\>,' .
+       \ '\<if\>:\<else\%[if]\>:\<endif\>' 
+
+  " Ignore ":syntax region" commands, the 'end' argument clobbers if-endif
+  " let b:match_skip = 'getline(".") =~ "^\\s*sy\\%[ntax]\\s\\+region" ||
+  "    \ synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string"'
+endif
+
+setlocal ignorecase
+let &cpo = cpo_save
+setlocal cpo+=M                " makes \%( match \)
index a16dadb0011cc818f5a152e3edcec19f9c52038c..f5a3a807aa6097d436915546303a1da95c70e716 100644 (file)
@@ -8,7 +8,7 @@ if exists("b:did_ftplugin")
 endif
 let b:did_ftplugin = 1
 
-let b:undo_plugin = "setl com< cms< fo<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s
 setlocal formatoptions-=t formatoptions+=croql
index 16bf197589245a3419cc49972ca57a1915e78775..34e1d3c22fc4d3183c67771dd23734c05625b422 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:    Mail
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2004 Feb 20
+" Last Change: 2007 Apr 30
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -11,7 +11,8 @@ let b:did_ftplugin = 1
 
 let b:undo_ftplugin = "setl modeline< tw< fo<"
 
-" Don't use modelines in e-mail messages, avoid trojan horses
+" Don't use modelines in e-mail messages, avoid trojan horses and nasty
+" "jokes" (e.g., setting 'textwidth' to 5).
 setlocal nomodeline
 
 " many people recommend keeping e-mail messages 72 chars wide
index a947be1ad9867ba924d7ed46cd1eb5c352b13ffa..38ee030f52e2ecc60cc66928f6568d4cd7fe456e 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:    Make
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2004 Dec 17
+" Last Change: 2006 Jun 17
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -9,7 +9,7 @@ if exists("b:did_ftplugin")
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl et< fo< com< commentstring<"
+let b:undo_ftplugin = "setl et< sts< fo< com< cms< inc<"
 
 " Make sure a hard tab is used, required for most make programs
 setlocal noexpandtab softtabstop=0
index 0b9819a9b6e0ceaa47229d7ec4ec5ab8ce352461..10ead8a1eb9aae5803a0ccacec0e99b7477d6791 100644 (file)
@@ -4,7 +4,8 @@
 "              Markus Mottl        <markus.mottl@gmail.com>
 "              Stefano Zacchiroli  <zack@bononia.it>
 " URL:         http://www.ocaml.info/vim/ftplugin/ocaml.vim
-" Last Change: 2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM)
+" Last Change: 2006 May 01 - Added .annot support for file.whateverext (SZ)
+"             2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM)
 "              2005 Oct 13 - removed GPL; better matchit support (MM, SZ)
 "
 if exists("b:did_ftplugin")
@@ -202,6 +203,7 @@ python << EOF
 
 import re
 import os
+import os.path
 import string
 import time
 import vim
@@ -288,13 +290,13 @@ class Annotations:
                 line = f.readline() # position line
             f.close()
             self.__filename = fname
-            self.__ml_filename = re.sub("\.annot$", ".ml", fname)
+            self.__ml_filename = vim.current.buffer.name
             self.__timestamp = int(time.time())
         except IOError:
             raise no_annotations
 
     def parse(self):
-        annot_file = re.sub("\.ml$", ".annot", vim.current.buffer.name)
+        annot_file = os.path.splitext(vim.current.buffer.name)[0] + ".annot"
         self.__parse(annot_file)
 
     def get_type(self, (line1, col1), (line2, col2)):
index 8cf915dc4323ae61436db9a0d97085aac4b03f31..f2fc1ab4b0dc4a1f4825ae4416717af94d9f3f20 100644 (file)
@@ -1,19 +1,32 @@
-" Vim indent file
-" Language:    Ada
-" Maintainer:  Neil Bird <neil@fnxweb.com>
-" Last Change: 2006 Apr 30
-" Version:     $Id$
-" Look for the latest version at http://vim.sourceforge.net/
-"
+"------------------------------------------------------------------------------
+"  Description: Vim Ada indent file
+"     Language: Ada (2005)
+"         $Id$
+"    Copyright: Copyright (C) 2006 Martin Krischik
+"   Maintainer: Martin Krischik
+"              Neil Bird <neil@fnxweb.com>
+"      $Author$
+"       $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/indent/ada.vim $
+"      History: 24.05.2006 MK Unified Headers
+"              16.07.2006 MK Ada-Mode as vim-ball
+"              15.10.2006 MK Bram's suggestion for runtime integration
+"              05.11.2006 MK Bram suggested to save on spaces
+"    Help Page: ft-vim-indent
+"------------------------------------------------------------------------------
 " ToDo:
 "  Verify handling of multi-line exprs. and recovery upon the final ';'.
 "  Correctly find comments given '"' and "" ==> " syntax.
 "  Combine the two large block-indent functions into one?
+"------------------------------------------------------------------------------
 
 " Only load this indent file when no other was loaded.
-if exists("b:did_indent")
+if exists("b:did_indent") || version < 700
    finish
 endif
+
 let b:did_indent = 1
 
 setlocal indentexpr=GetAdaIndent()
@@ -25,10 +38,14 @@ if exists("*GetAdaIndent")
    finish
 endif
 
-let s:AdaBlockStart = '^\s*\(if\>\|while\>\|else\>\|elsif\>\|loop\>\|for\>.*\<\(loop\|use\)\>\|declare\>\|begin\>\|type\>.*\<is\>[^;]*$\|\(type\>.*\)\=\<record\>\|procedure\>\|function\>\|accept\>\|do\>\|task\>\|package\>\|then\>\|when\>\|is\>\)'
-let s:AdaComment = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*"
-
+if exists("g:ada_with_gnat_project_files")
+   let s:AdaBlockStart = '^\s*\(if\>\|while\>\|else\>\|elsif\>\|loop\>\|for\>.*\<\(loop\|use\)\>\|declare\>\|begin\>\|type\>.*\<is\>[^;]*$\|\(type\>.*\)\=\<record\>\|procedure\>\|function\>\|accept\>\|do\>\|task\>\|package\>\|project\>\|then\>\|when\>\|is\>\)'
+else
+   let s:AdaBlockStart = '^\s*\(if\>\|while\>\|else\>\|elsif\>\|loop\>\|for\>.*\<\(loop\|use\)\>\|declare\>\|begin\>\|type\>.*\<is\>[^;]*$\|\(type\>.*\)\=\<record\>\|procedure\>\|function\>\|accept\>\|do\>\|task\>\|package\>\|then\>\|when\>\|is\>\)'
+endif
 
+" Section: s:MainBlockIndent {{{1
+"
 " Try to find indent of the block we're in
 " prev_indent = the previous line's indent
 " prev_lnum   = previous line (to start looking on)
@@ -39,9 +56,9 @@ let s:AdaComment = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*"
 " This shouldn't work as well as it appears to with lines that are currently
 " nowhere near the correct indent (e.g., start of line)!
 " Seems to work OK as it 'starts' with the indent of the /previous/ line.
-function s:MainBlockIndent( prev_indent, prev_lnum, blockstart, stop_at )
+function s:MainBlockIndent (prev_indent, prev_lnum, blockstart, stop_at)
    let lnum = a:prev_lnum
-   let line = substitute( getline(lnum), s:AdaComment, '', '' )
+   let line = substitute( getline(lnum), ada#Comment, '', '' )
    while lnum > 1
       if a:stop_at != ''  &&  line =~ '^\s*' . a:stop_at  &&  indent(lnum) < a:prev_indent
         return a:prev_indent
@@ -55,7 +72,7 @@ function s:MainBlockIndent( prev_indent, prev_lnum, blockstart, stop_at )
       let lnum = prevnonblank(lnum - 1)
       " Get previous non-blank/non-comment-only line
       while 1
-        let line = substitute( getline(lnum), s:AdaComment, '', '' )
+        let line = substitute( getline(lnum), ada#Comment, '', '' )
         if line !~ '^\s*$' && line !~ '^\s*#'
            break
         endif
@@ -67,8 +84,10 @@ function s:MainBlockIndent( prev_indent, prev_lnum, blockstart, stop_at )
    endwhile
    " Fallback - just move back one
    return a:prev_indent - &sw
-endfunction
+endfunction MainBlockIndent
 
+" Section: s:EndBlockIndent {{{1
+"
 " Try to find indent of the block we're in (and about to complete),
 " including handling of nested blocks. Works on the 'end' of a block.
 " prev_indent = the previous line's indent
@@ -97,7 +116,7 @@ function s:EndBlockIndent( prev_indent, prev_lnum, blockstart, blockend )
       " Get previous non-blank/non-comment-only line
       while 1
         let line = getline(lnum)
-        let line = substitute( line, s:AdaComment, '', '' )
+        let line = substitute( line, ada#Comment, '', '' )
         if line !~ '^\s*$'
            break
         endif
@@ -109,8 +128,10 @@ function s:EndBlockIndent( prev_indent, prev_lnum, blockstart, blockend )
    endwhile
    " Fallback - just move back one
    return a:prev_indent - &sw
-endfunction
+endfunction EndBlockIndent
 
+" Section: s:StatementIndent {{{1
+"
 " Return indent of previous statement-start
 " (after we've indented due to multi-line statements).
 " This time, we start searching on the line *before* the one given (which is
@@ -122,7 +143,7 @@ function s:StatementIndent( current_indent, prev_lnum )
       let lnum = prevnonblank(lnum - 1)
       " Get previous non-blank/non-comment-only line
       while 1
-        let line = substitute( getline(lnum), s:AdaComment, '', '' )
+        let line = substitute( getline(lnum), ada#Comment, '', '' )
         if line !~ '^\s*$' && line !~ '^\s*#'
            break
         endif
@@ -145,10 +166,13 @@ function s:StatementIndent( current_indent, prev_lnum )
    endwhile
    " Fallback - just use current one
    return a:current_indent
-endfunction
+endfunction StatementIndent
 
 
+" Section: GetAdaIndent {{{1
+"
 " Find correct indent of a new line based upon what went before
+"
 function GetAdaIndent()
    " Find a non-blank line above the current line.
    let lnum = prevnonblank(v:lnum - 1)
@@ -157,7 +181,7 @@ function GetAdaIndent()
 
    " Get previous non-blank/non-comment-only/non-cpp line
    while 1
-      let line = substitute( getline(lnum), s:AdaComment, '', '' )
+      let line = substitute( getline(lnum), g:ada#Comment, '', '' )
       if line !~ '^\s*$' && line !~ '^\s*#'
         break
       endif
@@ -198,7 +222,7 @@ function GetAdaIndent()
       exe lnum
       exe 'normal! $F)%'
       if getline('.') =~ '^\s*('
-        " Dire layout - use previous indent (could check for AdaComment here)
+        " Dire layout - use previous indent (could check for ada#Comment here)
         let ind = indent( prevnonblank( line('.')-1 ) )
       else
         let ind = indent('.')
@@ -263,6 +287,14 @@ function GetAdaIndent()
    endif
 
    return ind
-endfunction
+endfunction GetAdaIndent
 
-" vim: set sw=3 sts=3 :
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006 Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
index ab950b6599ead350d6206e4dbbce1c1e3130893a..d621bfa08b53048d7a76778914aedf62fd250ab4 100644 (file)
@@ -1,16 +1,59 @@
 " Vim indent file
-" Language:            Ruby
-" Maintainer:          Doug Kearns <dougkearns@gmail.com>
+" Language:            eRuby
+" Maintainer:          Tim Pope <vimNOSPAM@tpope.info>
 " Info:                        $Id$
 " URL:                 http://vim-ruby.rubyforge.org
 " Anon CVS:            See above site
 " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
 
+runtime! indent/ruby.vim
+unlet! b:did_indent
+
 runtime! indent/html.vim
+unlet! b:did_indent
+
+let b:did_indent = 1
+
+setlocal indentexpr=GetErubyIndent(v:lnum)
+setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when
+
+" Only define the function once.
+if exists("*GetErubyIndent")
+  finish
+endif
+
+function! GetErubyIndent(lnum)
+  let vcol = col('.')
+  call cursor(a:lnum,1)
+  let inruby = searchpair('<%','','%>')
+  call cursor(a:lnum,vcol)
+  if inruby && getline(a:lnum) !~ '^<%'
+    let ind = GetRubyIndent()
+  else
+    let ind = HtmlIndentGet(a:lnum)
+  endif
+  let lnum = prevnonblank(a:lnum-1)
+  let line = getline(lnum)
+  let cline = getline(a:lnum)
+  if cline =~# '<%\s*\%(end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%(-\=%>\|$\)'
+    let ind = ind - &sw
+  endif
+  if line =~# '\<do\%(\s*|[^|]*|\)\=\s*-\=%>'
+    let ind = ind + &sw
+  elseif line =~# '<%\s*\%(module\|class\|def\|if\|for\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\)\>.*%>'
+    let ind = ind + &sw
+  endif
+  if line =~# '^\s*<%[=#]\=\s*$' && cline !~# '^\s*end\>'
+    let ind = ind + &sw
+  endif
+  if cline =~# '^\s*-\=%>\s*$'
+    let ind = ind - &sw
+  endif
+  return ind
+endfunction
 
-" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
+" vim:set sw=2 sts=2 ts=8 noet ff=unix:
index be34409552121283dbc00e4f03abb9d2e266f581..6f016ad16ce1cfcd84551ca22aca96bb5df60278 100644 (file)
@@ -1,6 +1,6 @@
 " Description: html indenter
 " Author:      Johannes Zellner <johannes@zellner.org>
-" Last Change: Tue, 27 Apr 2004 10:28:39 CEST
+" Last Change: Mo, 05 Jun 2006 22:32:41 CEST
 "              Restoring 'cpo' and 'ic' added by Bram 2006 May 5
 " Globals:     g:html_indent_tags         -- indenting tags
 "              g:html_indent_strict       -- inhibit 'O O' elements
@@ -193,8 +193,17 @@ fun! HtmlIndentGet(lnum)
 
     " [-- special handling for <javascript>: use cindent --]
     let js = '<script.*type\s*=\s*.*java'
+
+    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+    " by Tye Zdrojewski <zdro@yahoo.com>, 05 Jun 2006
+    " ZDR: This needs to be an AND (we are 'after the start of the pair' AND
+    "      we are 'before the end of the pair').  Otherwise, indentation
+    "      before the start of the script block will be affected; the end of
+    "      the pair will still match if we are before the beginning of the
+    "      pair.
+    "
     if   0 < searchpair(js, '', '</script>', 'nWb')
-    \ || 0 < searchpair(js, '', '</script>', 'nW')
+    \ && 0 < searchpair(js, '', '</script>', 'nW')
        " we're inside javascript
        if getline(lnum) !~ js && getline(a:lnum) != '</script>'
            if restore_ic == 0
diff --git a/runtime/indent/htmldjango.vim b/runtime/indent/htmldjango.vim
new file mode 100644 (file)
index 0000000..8da9fe3
--- /dev/null
@@ -0,0 +1,12 @@
+" Vim indent file
+" Language:    Django HTML template
+" Maintainer:  Dave Hodder <dmh@dmh.org.uk>
+" Last Change: 2007 Jan 25
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+  finish
+endif
+
+" Use HTML formatting rules.
+runtime! indent/html.vim
diff --git a/runtime/indent/jsp.vim b/runtime/indent/jsp.vim
new file mode 100644 (file)
index 0000000..6f7069e
--- /dev/null
@@ -0,0 +1,17 @@
+" Vim filetype indent file
+" Language:    JSP files
+" Maintainer:  David Fishburn <fishburn@ianywhere.com>
+" Version:     1.0
+" Last Change: Wed Nov 08 2006 11:08:05 AM
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+    finish
+endif
+
+" If there has been no specific JSP indent script created, 
+" use the default html indent script which will handle
+" html, javascript and most of the JSP constructs.
+runtime! indent/html.vim
+
+
index 1893d84a8f7cdfb9402041350d16fb21b128be23..5c267af8b16ece3a5feb8c339ffb5728874a9583 100644 (file)
@@ -4,7 +4,7 @@
 "              Mike Leary           <leary@nwlink.com>
 "              Markus Mottl         <markus.mottl@gmail.com>
 " URL:         http://www.ocaml.info/vim/indent/ocaml.vim
-" Last Change: 2006 Apr 30
+" Last Change:  2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
 "              2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
 "              2005 Apr 11 - Fixed an indentation bug concerning "let" (MM)
 
index 3e14afc99fc85844ce7a7677769240d79e04399c..0c04e81105fa251d1509c29dc1f5df9ee40b9043 100644 (file)
@@ -2,7 +2,7 @@
 " Language:            Python
 " Maintainer:          Bram Moolenaar <Bram@vim.org>
 " Original Author:     David Bustos <bustos@caltech.edu>
-" Last Change:         2006 Apr 30
+" Last Change:         2006 Jun 18
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -136,7 +136,7 @@ function GetPythonIndent(lnum)
   endif
 
   " If the previous line was a stop-execution statement...
-  if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\)\>'
+  if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
     " See if the user has already dedented
     if indent(a:lnum) > indent(plnum) - &sw
       " If not, recommend one dedent
index 3a2837e046e8dbc35250d6d18131f8e762b7e036..824635bc5d813fe424927f0665828383e06f3ecf 100644 (file)
@@ -217,7 +217,11 @@ function GetRubyIndent()
     call cursor(v:lnum, col)
     let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)
     if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
-      let ind = line[col-1]==')' ? virtcol('.')-1 : indent(s:GetMSL(line('.')))
+      if line[col-1]==')' && col('.') != col('$') - 1
+       let ind = virtcol('.')-1
+      else
+       let ind = indent(s:GetMSL(line('.')))
+      endif
     endif
     return ind
   endif
@@ -274,7 +278,11 @@ function GetRubyIndent()
   if line =~ '[[({]'
     let counts = s:LineHasOpeningBrackets(lnum)
     if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
-      return virtcol('.')
+      if col('.') + 1 == col('$')
+       return ind + &sw
+      else
+       return virtcol('.')
+      endif
     elseif counts[1] == '1' || counts[2] == '1'
       return ind + &sw
     else
@@ -361,3 +369,5 @@ endfunction
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
+
+" vim:set sw=2 sts=2 ts=8 noet ff=unix:
index c6f01988dad94763a4c6ea32fed0431c76e5661e..d288be4ceb113e9d4415609e21e4b4c841aaf847 100644 (file)
@@ -1,8 +1,8 @@
 " VHDL indent ('93 syntax)
 " Language:    VHDL
 " Maintainer:  Gerald Lai <laigera+vim?gmail.com>
-" Version:     1.36
-" Last Change: 2006 Apr 12
+" Version:     1.50
+" Last Change: 2007 Jan 29
 " URL:         http://www.vim.org/scripts/script.php?script_id=1450
 
 " only load this indent file when no other was loaded
@@ -13,9 +13,11 @@ let b:did_indent = 1
 
 " setup indent options for local VHDL buffer
 setlocal indentexpr=GetVHDLindent()
-setlocal indentkeys=!^F,o,O,e,0(,0)
+setlocal indentkeys=!^F,o,O,0(,0)
+setlocal indentkeys+==~begin,=~end\ ,=~end\    ,=~is,=~select,=~when
 setlocal indentkeys+==~if,=~then,=~elsif,=~else
-setlocal indentkeys+==~begin,=~is,=~select
+setlocal indentkeys+==~case,=~loop,=~for,=~generate,=~record,=~units,=~process,=~block,=~function,=~component,=~procedure
+setlocal indentkeys+==~architecture,=~configuration,=~entity,=~package
 
 " constants
 " not a comment
@@ -25,6 +27,16 @@ let s:ES = '\s*\%(--.*\)\=$'
 " no "end" keyword in front
 let s:NE = '\%(\<end\s\+\)\@<!'
 
+" option to disable alignment of generic/port mappings
+if !exists("g:vhdl_align_genportmap")
+  let g:vhdl_align_genportmap = 1
+endif
+
+" option to disable alignment of right-hand side assignment "<=" statements
+if !exists("g:vhdl_align_rhsassign")
+  let g:vhdl_align_rhsassign = 1
+endif
+
 " only define indent function once
 if exists("*GetVHDLindent")
   finish
@@ -100,7 +112,11 @@ function GetVHDLindent()
     if m != -1
       return m
     else
-      return stridx(prevs, '(') + &sw
+      if g:vhdl_align_genportmap
+        return stridx(prevs, '(') + &sw
+      else
+        return ind2 + &sw
+      endif
     endif
   endif
 
@@ -108,7 +124,11 @@ function GetVHDLindent()
   " keywords: variable + "<=" without ";" ending
   " where:    start of previous line
   if prevs =~? '^\s*\S\+\s*<=[^;]*'.s:ES
-    return matchend(prevs, '<=\s*\ze.')
+    if g:vhdl_align_rhsassign
+      return matchend(prevs, '<=\s*\ze.')
+    else
+      return ind2 + &sw
+    endif
   endif
 
   " indent:   backtrace previous non-comment lines for next smaller or equal size indent
@@ -190,7 +210,7 @@ function GetVHDLindent()
     " find previous opening statement of
     " keywords: "architecture", "block", "entity", "function", "generate", "procedure", "process"
     let s2 = s:NC.s:NE.'\<\%(architecture\|block\|entity\|function\|generate\|procedure\|process\)\>'
-    if curs !~? s2.'.*'.s:NC.'\<begin\>.*'.s:ES && prevs =~? s2
+    if (curs !~? s2.'.*'.s:NC.'\<begin\>.*'.s:ES && prevs =~? s2) || m == 1
       let ind = ind + &sw
     endif
     return ind
@@ -240,61 +260,55 @@ function GetVHDLindent()
   " where:    start of current line
   " find previous opening statement of
   " keywords: "for", "if"
-  if curs =~? '^\s*\<generate\>' && prevs =~? s:NC.s:NE.'\%(\%(\<wait\s\+\)\@<!\<for\>\|\<if\>\)'
+  if curs =~? '^\s*\<generate\>' && prevs =~? s:NC.s:NE.'\%(\%(\<wait\s\+\)\@<!\<for\|\<if\)\>'
     return ind2
   endif
 
   " indent:   +sw
-  " keywords: "begin", "block", "loop", "process", "record", "units"
-  " removed:  "case", "elsif", "if", "while"
+  " keywords: "block", "process"
+  " removed:  "begin", "case", "elsif", "if", "loop", "record", "units", "while"
   " where:    anywhere in previous line
-  if prevs =~? s:NC.'\%(\<begin\>\|'.s:NE.'\<\%(block\|loop\|process\|record\|units\)\>\)'
+  if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>'
     return ind + &sw
   endif
 
   " indent:   +sw
-  " keywords: "architecture", "component", "configuration", "entity", "for", "package"
-  " removed:  "when", "with"
+  " keywords: "architecture", "configuration", "entity", "package"
+  " removed:  "component", "for", "when", "with"
   " where:    start of previous line
-  if prevs =~? '^\s*\%(architecture\|component\|configuration\|entity\|for\|package\)\>'
+  if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>'
     return ind + &sw
   endif
 
   " indent:   +sw
-  " keyword:  "generate", "is", "select", "=>"
+  " keyword:  "select"
+  " removed:  "generate", "is", "=>"
   " where:    end of previous line
-  if prevs =~? s:NC.'\%(\%('.s:NE.'\<generate\|\<is\|\<select\)\|=>\)'.s:ES
+  if prevs =~? s:NC.'\<select'.s:ES
     return ind + &sw
   endif
 
   " indent:   +sw
-  " keyword:  "else"
+  " keyword:  "begin", "loop", "record", "units"
+  " where:    anywhere in previous line
+  " keyword:  "component", "else", "for"
   " where:    start of previous line
-  " keyword:  "then"
+  " keyword:  "generate", "is", "then", "=>"
   " where:    end of previous line
   " _note_:   indent allowed to leave this filter
-  if prevs =~? '^\s*else\>' || prevs =~? s:NC.'\<then'.s:ES
+  if prevs =~? s:NC.'\%(\<begin\>\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\<generate\|\<\%(is\|then\)\|=>\)'.s:ES
     let ind = ind + &sw
   endif
 
   " ****************************************************************************************
   " indent:   -sw
-  " keywords: "when", provided previous line does not begin with "when"
+  " keywords: "when", provided previous line does not begin with "when", does not end with "is"
   " where:    start of current line
   let s4 = '^\s*when\>'
   if curs =~? s4
-    if prevs !~? s4
-      return ind - &sw
-    else
-      return ind2
-    endif
-  endif
-
-  " indent:   -sw
-  " keywords: "else", "elsif", provided previous line does not contain "then"
-  " where:    start of current line
-  if curs =~? '^\s*\%(else\|elsif\)\>'
-    if prevs !~? s:NC.'\<then\>'
+    if prevs =~? s:NC.'\<is'.s:ES
+      return ind
+    elseif prevs !~? s4
       return ind - &sw
     else
       return ind2
@@ -302,31 +316,9 @@ function GetVHDLindent()
   endif
 
   " indent:   -sw
-  " keywords: "end" + "if", provided previous line does not begin with "else", not contain "then"
+  " keywords: "else", "elsif", "end" + "block", "for", "function", "generate", "if", "loop", "procedure", "process", "record", "units"
   " where:    start of current line
-  if curs =~? '^\s*end\s\+if\>'
-    if prevs !~? '^\s*else\>' && prevs !~? s:NC.'\<then\>'
-      return ind - &sw
-    else
-      return ind2
-    endif
-  endif
-
-  " indent:   -sw
-  " keywords: "end" + "function", "procedure", provided previous line does not contain "begin"
-  " where:    start of current line
-  if curs =~? '^\s*end\s\+\%(function\|procedure\)\>'
-    if prevs !~? s:NC.'\<begin\>'
-      return ind - &sw
-    else
-      return ind2
-    endif
-  endif
-
-  " indent:   -sw
-  " keywords: "end" + "block", "for", "generate", "loop", "process", "record", "units"
-  " where:    start of current line
-  if curs =~? '^\s*end\s\+\%(block\|for\|generate\|loop\|process\|record\|units\)\>'
+  if curs =~? '^\s*\%(else\|elsif\|end\s\+\%(block\|for\|function\|generate\|if\|loop\|procedure\|process\|record\|units\)\)\>'
     return ind - &sw
   endif
 
@@ -365,9 +357,9 @@ function GetVHDLindent()
           endif
         "indent:   follow
         "keyword:  "component"
-        "where:    anywhere in previous non-comment line
+        "where:    start of previous non-comment line
         elseif m == 2
-          if ps =~? s:NC.s:NE.'\<component\>'
+          if ps =~? '^\s*component\>'
             return indent(pn)
           endif
         endif
@@ -395,7 +387,8 @@ function GetVHDLindent()
   " indent:   -sw
   " keywords: "end" + identifier
   " where:    start of current line
-  if curs =~? '^\s*end\s\+\w\+\>'
+  "if curs =~? '^\s*end\s\+\w\+\>'
+  if curs =~? '^\s*end\s'
     return ind - &sw
   endif
 
diff --git a/runtime/keymap/bulgarian-bds.vim b/runtime/keymap/bulgarian-bds.vim
new file mode 100644 (file)
index 0000000..bb789a9
--- /dev/null
@@ -0,0 +1,127 @@
+" Vim keymap file for Bulgarian and Russian characters, `bds' layout.
+" Can be used with utf-8 or cp1251 file encodings.
+" This file itself is in utf-8
+
+" Maintainer: Boyko Bantchev <boykobb@gmail.com>
+" URI: http://www.math.bas.bg/softeng/bantchev/misc/vim/bulgarian-bds.vim
+" Last Changed: 2006 Oct 18
+
+" This keymap corresponds to what is called Bulgarian standard,
+" or BDS (БДС) typewriter keyboard layout.
+" In addition to the Bulgarian alphabet, BDS prescribes the presence
+" of the following characters:
+"     —  The Cyrillic letters Э (capital), and ы and э (small)
+"        (these are present in the Russian alphabet).
+"     —  The latin capital letters I and V (these are used to type
+"        Roman numerals without having to leave Cyrillic mode).
+"     —  „ and “ (Bulgarian quotation style), and « and » (Russian quotation
+"        style).
+"     —  §, №, —, •, ·, ±, ¬, ¤, and €
+"
+" Some punctuation characters that are present in ascii are mapped in BDS
+" to keys different from the ones they occupy in the qwerty layout, because
+" the latter are used to type other characters.
+"
+" In this keymap also defined (not in BDS) are the Russian letters Ё (capital)
+" and ё (small), as well as the Russian capital letter Ы (see above the small
+" counterpart).  This way, using the bulgarian-bds keymap, one can access both
+" the Bulgarian and the Russian alphabets.
+
+scriptencoding utf-8
+
+let b:keymap_name = "bds"
+
+loadkeymap
+D       А       CYRILLIC CAPITAL LETTER A
+?       Б       CYRILLIC CAPITAL LETTER BE
+L       В       CYRILLIC CAPITAL LETTER VE
+H       Г       CYRILLIC CAPITAL LETTER GHE
+O       Д       CYRILLIC CAPITAL LETTER DE
+E       Е       CYRILLIC CAPITAL LETTER IE
+E::     Ё       CYRILLIC CAPITAL LETTER IO
+G       Ж       CYRILLIC CAPITAL LETTER ZHE
+P       З       CYRILLIC CAPITAL LETTER ZE
+R       И       CYRILLIC CAPITAL LETTER I
+X       Й       CYRILLIC CAPITAL LETTER SHORT I
+U       К       CYRILLIC CAPITAL LETTER KA
+>       Л       CYRILLIC CAPITAL LETTER EL
+:       М       CYRILLIC CAPITAL LETTER EM
+K       Н       CYRILLIC CAPITAL LETTER EN
+F       О       CYRILLIC CAPITAL LETTER O
+M       П       CYRILLIC CAPITAL LETTER PE
+<       Р       CYRILLIC CAPITAL LETTER ER
+I       С       CYRILLIC CAPITAL LETTER ES
+J       Т       CYRILLIC CAPITAL LETTER TE
+W       У       CYRILLIC CAPITAL LETTER U
+B       Ф       CYRILLIC CAPITAL LETTER EF
+N       Х       CYRILLIC CAPITAL LETTER HA
+{       Ц       CYRILLIC CAPITAL LETTER TSE
+\"      Ч       CYRILLIC CAPITAL LETTER CHE
+T       Ш       CYRILLIC CAPITAL LETTER SHA
+Y       Щ       CYRILLIC CAPITAL LETTER SHCHA
+C       Ъ       CYRILLIC CAPITAL LETTER HARD SIGN
+CX      Ы       CYRILLIC CAPITAL LETTER YERU
+A       Ь       CYRILLIC CAPITAL LETTER SOFT SIGN
+V       Э       CYRILLIC CAPITAL LETTER REVERSED E
+Z       Ю       CYRILLIC CAPITAL LETTER YU
+S       Я       CYRILLIC CAPITAL LETTER YA
+d       а       CYRILLIC SMALL LETTER A
+\/      б       CYRILLIC SMALL LETTER BE
+l       в       CYRILLIC SMALL LETTER VE
+h       г       CYRILLIC SMALL LETTER GHE
+o       д       CYRILLIC SMALL LETTER DE
+e       е       CYRILLIC SMALL LETTER IE
+e::     ё       CYRILLIC SMALL LETTER IO
+g       ж       CYRILLIC SMALL LETTER ZHE
+p       з       CYRILLIC SMALL LETTER ZE
+r       и       CYRILLIC SMALL LETTER I
+x       й       CYRILLIC SMALL LETTER SHORT I
+u       к       CYRILLIC SMALL LETTER KA
+\.      л       CYRILLIC SMALL LETTER EL
+;       м       CYRILLIC SMALL LETTER EM
+k       н       CYRILLIC SMALL LETTER EN
+f       о       CYRILLIC SMALL LETTER O
+m       п       CYRILLIC SMALL LETTER PE
+,       р       CYRILLIC SMALL LETTER ER
+i       с       CYRILLIC SMALL LETTER ES
+j       т       CYRILLIC SMALL LETTER TE
+w       у       CYRILLIC SMALL LETTER U
+b       ф       CYRILLIC SMALL LETTER EF
+n       х       CYRILLIC SMALL LETTER HA
+[       ц       CYRILLIC SMALL LETTER TSE
+'       ч       CYRILLIC SMALL LETTER CHE
+t       ш       CYRILLIC SMALL LETTER SHA
+y       щ       CYRILLIC SMALL LETTER SHCHA
+c       ъ       CYRILLIC SMALL LETTER HARD SIGN
+Q       ы       CYRILLIC SMALL LETTER YERU
+a       ь       CYRILLIC SMALL LETTER SOFT SIGN
+v       э       CYRILLIC SMALL LETTER REVERSED E
+z       ю       CYRILLIC SMALL LETTER YU
+s       я       CYRILLIC SMALL LETTER YA
+_       I       LATIN CAPITAL LETTER I
++       V       LATIN CAPITAL LETTER V
+$       "       QUOTATION MARK
+\\      (       LEFT PARENTHESIS
+|       )       RIGHT PARENTHESIS
+#       +       PLUS SIGN
+q       ,       COMMA
+(       -       HYPHEN-MINUS
+=       .       FULL STOP (PERIOD)
+*       /       SOLIDUS (SLASH)
+&       :       COLON
+]       ;       SEMICOLON
+^       =       EQUALS SIGN
+@       ?       QUESTION MARK
+}       §       SECTION SIGN (PARAGRAPH SIGN)
+)       №       NUMERO SIGN
+--      —       EM DASH
+,,      „       DOUBLE LOW-9 QUOTATION MARK
+``      “       LEFT DOUBLE QUOTATION  MARK
+<<      «       LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+>>      »       RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00      •       BULLET
+..      ·       MIDDLE DOT      
++-      ±       PLUS-MINUS SIGN
+~~      ¬       NOT SIGN
+@@      ¤       CURRENCY SIGN
+$$      €       EURO SIGN
diff --git a/runtime/keymap/bulgarian-phonetic.vim b/runtime/keymap/bulgarian-phonetic.vim
new file mode 100644 (file)
index 0000000..feec587
--- /dev/null
@@ -0,0 +1,108 @@
+" Vim keymap file for Bulgarian and Russian characters, `phonetic' layout.
+" Can be used with utf-8 or cp1251 file encodings.
+" This file itself is in utf-8
+
+" Maintainer:   Boyko Bantchev <boykobb@gmail.com>
+" URI: http://www.math.bas.bg/softeng/bantchev/misc/vim/bulgarian-phonetic.vim
+" Last Changed: 2006 Oct 18
+
+" This keymap corresponds to what is called `phonetic layout' in Bulgaria:
+" Cyrillic letters homophonous with Latin letters tend to take the same
+" places as the latter ones.  Most of the keys corresponding to punctuation
+" characters are left unmapped, so they retain their usual (qwerty) meanings
+" while typing in Cyrillic.
+"
+" In addition to the Bulgarian alphabet, the keymap defines the following
+" characters:
+"     —  The Cyrillic letters Ё and ё, Э and э, and Ы and ы (in pairs of
+"        capital and small).  These are the letters in the Russian alphabet
+"        that are not present in Bulgarian, so using the bulgarian-phonetic
+"        keymap one can type in Russian, too.
+"     —  „ and “ (Bulgarian quotation style), and « and » (Russian quotation
+"        style).
+"     —  §, №, —, •, ·, ±, ¬, ¤, and €
+
+scriptencoding utf-8
+
+let b:keymap_name = "pho"
+
+loadkeymap
+A       А       CYRILLIC CAPITAL LETTER A
+B       Б       CYRILLIC CAPITAL LETTER BE
+W       В       CYRILLIC CAPITAL LETTER VE
+G       Г       CYRILLIC CAPITAL LETTER GHE
+D       Д       CYRILLIC CAPITAL LETTER DE
+E       Е       CYRILLIC CAPITAL LETTER IE
+E::     Ё       CYRILLIC CAPITAL LETTER IO
+V       Ж       CYRILLIC CAPITAL LETTER ZHE
+Z       З       CYRILLIC CAPITAL LETTER ZE
+I       И       CYRILLIC CAPITAL LETTER I
+J       Й       CYRILLIC CAPITAL LETTER SHORT I
+K       К       CYRILLIC CAPITAL LETTER KA
+L       Л       CYRILLIC CAPITAL LETTER EL
+M       М       CYRILLIC CAPITAL LETTER EM
+N       Н       CYRILLIC CAPITAL LETTER EN
+O       О       CYRILLIC CAPITAL LETTER O
+P       П       CYRILLIC CAPITAL LETTER PE
+R       Р       CYRILLIC CAPITAL LETTER ER
+S       С       CYRILLIC CAPITAL LETTER ES
+T       Т       CYRILLIC CAPITAL LETTER TE
+U       У       CYRILLIC CAPITAL LETTER U
+F       Ф       CYRILLIC CAPITAL LETTER EF
+H       Х       CYRILLIC CAPITAL LETTER HA
+C       Ц       CYRILLIC CAPITAL LETTER TSE
+~       Ч       CYRILLIC CAPITAL LETTER CHE
+{       Ш       CYRILLIC CAPITAL LETTER SHA
+}       Щ       CYRILLIC CAPITAL LETTER SHCHA
+Y       Ъ       CYRILLIC CAPITAL LETTER HARD SIGN
+YJ      Ы       CYRILLIC CAPITAL LETTER YERU
+X       Ь       CYRILLIC CAPITAL LETTER SOFT SIGN
+YE      Э       CYRILLIC CAPITAL LETTER REVERSED E
+|       Ю       CYRILLIC CAPITAL LETTER YU
+Q       Я       CYRILLIC CAPITAL LETTER YA
+a       а       CYRILLIC SMALL LETTER A
+b       б       CYRILLIC SMALL LETTER BE
+w       в       CYRILLIC SMALL LETTER VE
+g       г       CYRILLIC SMALL LETTER GHE
+d       д       CYRILLIC SMALL LETTER DE
+e       е       CYRILLIC SMALL LETTER IE
+e::     ё       CYRILLIC SMALL LETTER IO
+v       ж       CYRILLIC SMALL LETTER ZHE
+z       з       CYRILLIC SMALL LETTER ZE
+i       и       CYRILLIC SMALL LETTER I
+j       й       CYRILLIC SMALL LETTER SHORT I
+k       к       CYRILLIC SMALL LETTER KA
+l       л       CYRILLIC SMALL LETTER EL
+m       м       CYRILLIC SMALL LETTER EM
+n       н       CYRILLIC SMALL LETTER EN
+o       о       CYRILLIC SMALL LETTER O
+p       п       CYRILLIC SMALL LETTER PE
+r       р       CYRILLIC SMALL LETTER ER
+s       с       CYRILLIC SMALL LETTER ES
+t       т       CYRILLIC SMALL LETTER TE
+u       у       CYRILLIC SMALL LETTER U
+f       ф       CYRILLIC SMALL LETTER EF
+h       х       CYRILLIC SMALL LETTER HA
+c       ц       CYRILLIC SMALL LETTER TSE
+`       ч       CYRILLIC SMALL LETTER CHE
+[       ш       CYRILLIC SMALL LETTER SHA
+]       щ       CYRILLIC SMALL LETTER SHCHA
+y       ъ       CYRILLIC SMALL LETTER HARD SIGN
+yj      ы       CYRILLIC SMALL LETTER YERU
+x       ь       CYRILLIC SMALL LETTER SOFT SIGN
+ye      э       CYRILLIC SMALL LETTER REVERSED E
+\\      ю       CYRILLIC SMALL LETTER YU
+q       я       CYRILLIC SMALL LETTER YA
+!!      §       SECTION SIGN (PARAGRAPH SIGN)
+##      №       NUMERO SIGN
+--      —       EM DASH
+,,      „       DOUBLE LOW-9 QUOTATION MARK
+``      “       LEFT DOUBLE QUOTATION  MARK
+<<      «       LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+>>      »       RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00      •       BULLET
+..      ·       MIDDLE DOT      
++-      ±       PLUS-MINUS SIGN
+~~      ¬       NOT SIGN
+@@      ¤       CURRENCY SIGN
+$$      €       EURO SIGN
diff --git a/runtime/keymap/thaana.vim b/runtime/keymap/thaana.vim
new file mode 100644 (file)
index 0000000..bf22d80
--- /dev/null
@@ -0,0 +1,3 @@
+if &enc == 'utf-8'
+       source <sfile>:p:h/thaana-phonetic_utf-8.vim
+endif
diff --git a/runtime/keymap/vietnamese-viqr_utf-8.vim b/runtime/keymap/vietnamese-viqr_utf-8.vim
new file mode 100644 (file)
index 0000000..b17be6d
--- /dev/null
@@ -0,0 +1,160 @@
+" Vim Keymap file for vietnamese through the usual viqr method
+" Maintainer: Samuel Thibault <samuel.thibault@ens-lyon.org>
+" Last Change: 2006 Jun 17
+
+scriptencoding utf-8
+
+let b:keymap_name = "vietnamese"
+
+loadkeymap
+a      a
+A      A
+a`     à
+A`     À
+a?     ả
+A?     Ả
+a~     ã
+A~     Ã
+a'     á
+A'     Á
+a.     ạ
+A.     Ạ
+a(     ă
+A(     Ă
+a(`    ằ
+A(`    Ằ
+a(?    ẳ
+A(?    Ẳ
+a(~    ẵ
+A(~    Ẵ
+a('    ắ
+A('    Ắ
+a(.    ặ
+A(.    Ặ
+a^     â
+A^     Â
+a^`    ầ
+A^`    Ầ
+a^?    ẩ
+A^?    Ẩ
+a^~    ẫ
+A^~    Ẫ
+a^'    ấ
+A^'    Ấ
+a^.    ậ
+A^.    Ậ
+d      d
+D      D
+dd     đ
+Dd     Đ
+DD     Đ
+e      e
+E      E
+e`     è
+E`     È
+e?     ẻ
+E?     Ẻ
+e~     ẽ
+E~     Ẽ
+e'     é
+E'     É
+e.     ẹ
+E.     Ẹ
+e^     ê
+E^     Ê
+e^`    ề
+E^`    Ề
+e^?    ể
+E^?    Ể
+e^~    ễ
+E^~    Ễ
+e^'    ế
+E^'    Ế
+e^.    ệ
+E^.    Ệ
+i      i
+I      I
+i`     ì
+I`     Ì
+i?     ỉ
+I?     Ỉ
+i~     ĩ
+I~     Ĩ
+i'     í
+I'     Í
+i.     ị
+I.     Ị
+o      o
+O      O
+o`     ò
+O`     Ò
+o?     ỏ
+O?     Ỏ
+o~     õ
+O~     Õ
+o'     ó
+O'     Ó
+o.     ọ
+O.     Ọ
+o^     ô
+O^     Ô
+o^`    ồ
+O^`    Ồ
+o^?    ổ
+O^?    Ổ
+o^~    ỗ
+O^~    Ỗ
+o^'    ố
+O^'    Ố
+o^.    ộ
+O^.    Ộ
+o+     ơ
+O+     Ơ
+o+`    ờ
+O+`    Ờ
+o+?    ở
+O+?    Ở
+o+~    ỡ
+O+~    Ỡ
+o+'    ớ
+O+'    Ớ
+o+.    ợ
+O+.    Ợ
+u      u
+U      U
+u`     ù
+U`     Ù
+u?     ủ
+U?     Ủ
+u~     ũ
+U~     Ũ
+u'     ú
+U'     Ú
+u.     ụ
+U.     Ụ
+u+     ư
+U+     Ư
+u+`    ừ
+U+`    Ừ
+u+?    ử
+U+?    Ử
+u+~    ữ
+U+~    Ữ
+u+'    ứ
+U+'    Ứ
+u+.    ự
+U+.    Ự
+y      y
+Y      Y
+y`     ỳ
+Y`     Ỳ
+y?     ỷ
+Y?     Ỷ
+y~     ỹ
+Y~     Ỹ
+y'     ý
+Y'     Ý
+y.     ỵ
+Y.     Ỵ
+\\d    d
+\\D    D
diff --git a/runtime/lang/menu_sl_si.cp1250.vim b/runtime/lang/menu_sl_si.cp1250.vim
new file mode 100644 (file)
index 0000000..23f668c
--- /dev/null
@@ -0,0 +1,294 @@
+" Menu Translations:   Slovenian / Slovensko
+" Maintainer:          Mojca Miklavec <mojca.miklavec.lists@gmail.com>
+" Originally By:       Mojca Miklavec <mojca.miklavec.lists@gmail.com>
+" Last Change:         Sat, 17 Jun 2006
+" vim:set foldmethod=marker tabstop=8:
+
+" TODO: add/check all '&'s
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+  finish
+endif
+let did_menu_trans = 1
+
+scriptencoding cp1250
+
+" {{{ FILE / DATOTEKA
+menutrans &File                                &Datoteka
+menutrans &Open\.\.\.<Tab>:e           &Odpri\ \.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp    Odpri\ de&ljeno\ \.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew  Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew               &Nova<Tab>:enew
+menutrans &Close<Tab>:close            &Zapri<Tab>:close
+menutrans &Save<Tab>:w                 &Shrani<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav     Shrani\ &kot\ \.\.\.<Tab>:sav
+menutrans &Print                       Na&tisni
+menutrans Sa&ve-Exit<Tab>:wqa          Shrani\ in\ &konèaj<Tab>:wqa
+menutrans E&xit<Tab>:qa                        &Izhod<Tab>:qa
+
+if has("diff")
+    menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\.
+    menutrans Split\ Patched\ &By\.\.\.        &Popravi\ z\ (patch)\ \.\.\.
+endif
+" }}} FILE / DATOTEKA
+
+" {{{ EDIT / UREDI
+menutrans &Edit                                &Uredi
+menutrans &Undo<Tab>u                  &Razveljavi<Tab>u
+menutrans &Redo<Tab>^R                 &Obnovi<Tab>^R
+menutrans Rep&eat<Tab>\.               Po&novi<Tab>\.
+menutrans Cu&t<Tab>"+x                 &Izre\9ei<Tab>"+x
+menutrans &Copy<Tab>"+y                        &Kopiraj<Tab>"+y
+menutrans &Paste<Tab>"+gP              &Prilepi<Tab>"+gP
+menutrans Put\ &Before<Tab>[p          Vrini\ pred<Tab>[p
+menutrans Put\ &After<Tab>]p           Vrini\ za<Tab>]p
+menutrans &Delete<Tab>x                        Iz&bri\9ai<Tab>x
+menutrans &Select\ all<Tab>ggVG                Izberi\ vse<Tab>ggVG
+menutrans &Find\.\.\.                  Po&i\9aèi\ \.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.    Poi\9aèi\ in\ &zamenjaj\ \.\.\.
+
+" [-- SETTINGS --]
+menutrans Settings\ &Window                            Nastavitve\ \.\.\.
+menutrans Startup\ &Settings                           Zaèetne\ nastavitve
+menutrans &Global\ Settings                            &Globalne\ nastavitve
+
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!   Vkljuèi/izkljuèi\ poudarjanje\ iskanega\ niza<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic!           Vkljuèi/izkljuèi\ loèevanje\ velikih\ in\ malih\ èrk<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm!             Vkljuèi/izkljuèi\ kratek\ skok\ na\ pripadajoèi\ oklepaj<Tab>:set\ sm!
+
+menutrans &Context\ lines                              \8at\.\ vidnih\ vrstic\ pred/za\ kurzorjem
+
+menutrans &Virtual\ Edit                               Dovoli\ polo\9eaj\ kazalèka,\ kjer\ ni\ besedila
+menutrans Never                                                Nikoli
+menutrans Block\ Selection                             Le\ med\ izbiranjem\ bloka
+menutrans Insert\ mode                                 Le\ v\ naèinu\ za\ pisanje
+menutrans Block\ and\ Insert                           Pri\ obojem
+menutrans Always                                       Vedno
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!          Vkljuèi/izkljuèi\ naèin\ za\ pisanje<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!                Vkljuèi/izkljuèi\ zdru\9eljivost\ z\ Vi-jem<Tab>:set\ cp!
+
+menutrans Search\ &Path\.\.\.                          Pot\ za\ iskanje\ \.\.\.
+menutrans Ta&g\ Files\.\.\.                            Ta&g-datoteke\.\.\.
+
+menutrans Toggle\ &Toolbar                             Poka\9ei/skrij\ Orodja
+menutrans Toggle\ &Bottom\ Scrollbar                   Poka\9ei/skrij\ spodnji\ drsnik
+menutrans Toggle\ &Left\ Scrollbar                     Poka\9ei/skrij\ levi\ drsnik
+menutrans Toggle\ &Right\ Scrollbar                    Poka\9ei/skrij\ desni\ drsnik
+
+" Edit/File Settings
+menutrans F&ile\ Settings                              &Nastavitve\ datoteke
+
+" Boolean options
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!       Poka\9ei/skrij\ \9atevilke\ vrstic<Tab>:set\ nu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!          Poka\9ei/skrij\ nevidne\ znake<Tab>:set\ list! " space/tab
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!          Vkljuèi/izkljuèi\ prelome\ vrstic<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!       Vkljuèi/izkljuèi\ prelome\ vrstic\ med\ besedami<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et!            Vkljuèi/izkljuèi\ zamenjavo\ tabulatorjev\ s\ presledki<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai!           Vkljuèi/izkljuèi\ avtomatsko\ zamikanje\ vrstic<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin!          Vkljuèi/izkljuèi\ C-jevski\ naèin\ zamikanja\ vrstic<Tab>:set\ cin!
+
+" other options
+menutrans &Shiftwidth                                  \8airina\ zamika\ vrstic
+menutrans Soft\ &Tabstop                               \8airina\ &tabulatorja
+menutrans Te&xt\ Width\.\.\.                           \8airina\ besedila\ \.\.\.
+menutrans &File\ Format\.\.\.                          Format\ &datoteke\ \.\.\.
+menutrans C&olor\ Scheme                               &Barvna\ shema\ \.\.\.
+menutrans &Keymap                                      &Keymap
+menutrans Select\ Fo&nt\.\.\.                          Pisava\ \.\.\.
+" }}} EDIT / UREDI
+
+" {{{  TOOLS / ORODJA
+menutrans &Tools                                       &Orodja
+menutrans &Jump\ to\ this\ tag<Tab>g^]                 &Skoèi\ k\ tej\ znaèki<Tab>g^]
+menutrans Jump\ &back<Tab>^T                           Skoèi\ Na&zaj<Tab>^T
+menutrans Build\ &Tags\ File                           Napravi\ datoteke\ z\ znaèkami\ (tag)
+if has("spell")
+    menutrans &Spelling                                        Èrkovalnik
+    menutrans &Spell\ Check\ On                                &Vkljuèi
+    menutrans Spell\ Check\ &Off                       &Izkljuèi
+    menutrans To\ &Next\ error<Tab>]s                  K\ &naslednji\ napaki<Tab>]s
+    menutrans To\ &Previous\ error<Tab>[s              K\ &prej\9anji\ napaki<Tab>[s
+    menutrans Suggest\ &Corrections<Tab>z=             Predlagaj\ popravek<Tab>z=
+    menutrans &Repeat\ correction<Tab>:spellrepall     Po&novi\ popravke\ na\ vseh\ besedah<Tab>:spellrepall
+    menutrans Set\ language\ to\ "en"                  Angle\9aki\ "en"
+    menutrans Set\ language\ to\ "en_au"               Angle\9aki\ "en_au"
+    menutrans Set\ language\ to\ "en_ca"               Angle\9aki\ "en_ca"
+    menutrans Set\ language\ to\ "en_gb"               Angle\9aki\ "en_gb"
+    menutrans Set\ language\ to\ "en_nz"               Angle\9aki\ "en_nz"
+    menutrans Set\ language\ to\ "en_us"               Angle\9aki\ "en_us"
+    menutrans Set\ language\ to\ "sl"                  Slovenski\ "sl"
+    menutrans Set\ language\ to\ "de"                  Nem\9aki\ "de"
+    menutrans Set\ language\ to\                       Èrkovalnik:\
+    menutrans &Find\ More\ Languages                   &Ostali\ jeziki
+endif
+if has("folding")
+  menutrans &Folding                                   Zvijanje\ kode
+  " open close folds
+  menutrans &Enable/Disable\ folds<Tab>zi              Omogoèi/onemogoèi\ zvijanje<Tab>zi " Omogoèi/onemogoèi\ zavihke
+  menutrans &View\ Cursor\ Line<Tab>zv                 Poka\9ei\ vrstico\ s\ kazalèkom<Tab>zv " kjer je kazalec
+  menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx         Poka\9ei\ samo\ vrstico\ s\ kazalèkom<Tab>zMzx
+  menutrans C&lose\ more\ folds<Tab>zm                 Zvij\ naslednji\ nivo<Tab>zm " Zapri\ veè\ zavihkov
+  menutrans &Close\ all\ folds<Tab>zM                  Zvij\ vso\ kodo<Tab>zM " Zapri\ vse\ zavihke
+  menutrans O&pen\ more\ folds<Tab>zr                  Razvij\ en\ nivo<Tab>zr " Odpri\ veè\ zavihkov
+  menutrans &Open\ all\ folds<Tab>zR                   Razvij\ vso\ kodo<Tab>zR " Odpri\ vse\ zavihke
+  " fold method
+  menutrans Fold\ Met&hod                              Kriterij\ za\ zvijanje " Ustvarjanje\ zavihkov
+  menutrans M&anual                                    &Roèno
+  menutrans I&ndent                                    Glede\ na\ &poravnavo
+  menutrans E&xpression                                        Z\ &izrazi\ (foldexpr)
+  menutrans S&yntax                                    Glede\ na\ &sintakso
+  menutrans &Diff                                      Razlike\ (&diff)
+  menutrans Ma&rker                                    Z\ &markerji/oznaèbami
+  " create and delete folds
+  " TODO accelerators
+  menutrans Create\ &Fold<Tab>zf                       Ustvari\ zvitek<Tab>zf
+  menutrans &Delete\ Fold<Tab>zd                       Izbri\9ai\ zvitek<Tab>zd
+  menutrans Delete\ &All\ Folds<Tab>zD                 Izbri\9ai\ vse\ zvitke<Tab>zD
+  " moving around in folds
+  menutrans Fold\ column\ &width                       \8airina\ drevesa\ z\ zvitki
+endif  " has folding
+
+if has("diff")
+  menutrans &Diff                                      Razlike\ (&Diff)
+  menutrans &Update                                    &Posodobi<Tab>
+  menutrans &Get\ Block                                        &Sprejmi\ (spremeni\ to\ okno) " XXX: check if translation is OK
+  menutrans &Put\ Block                                        &Po\9alji\ (spremeni\ drugo\ okno)
+endif
+
+menutrans &Make<Tab>:make                              Napravi\ (&make)<Tab>:make
+menutrans &List\ Errors<Tab>:cl                                Poka\9ei\ napake<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!                     Poka\9ei\ sporoèila<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn                         K\ &naslednji\ napaki<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp                     K\ &prej\9anji\ napaki<Tab>:cp
+menutrans &Older\ List<Tab>:cold                       K\ &starej\9aemu\ seznamu\ napak<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew                       K\ &novej\9aemu\ seznamu\ napak<Tab>:cnew
+
+menutrans Error\ &Window                               Okno\ z\ napakami
+menutrans &Update<Tab>:cwin                            &Posodobi<Tab>:cwin
+menutrans &Open<Tab>:copen                             &Odpri<Tab>:copen
+menutrans &Close<Tab>:cclose                           &Zapri<Tab>:cclose
+
+menutrans &Set\ Compiler                               Nastavi\ &prevajalnik
+menutrans Se&T\ Compiler                               Nastavi\ &prevajalnik " bug in original translation?
+
+menutrans &Convert\ to\ HEX<Tab>:%!xxd                 Pretvori\ v\ HE&X<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r                        Pretvori\ nazaj<Tab>:%!xxd\ -r
+" }}}  TOOLS / ORODJA
+
+" {{{ SYNTAX / BARVANJE KODE
+menutrans &Syntax                              &Barvanje\ kode
+menutrans &Show\ filetypes\ in\ menu           Podprte\ vrste\ datotek
+menutrans Set\ '&syntax'\ only                 Samo\ barvanje\ ('&syntax')
+menutrans Set\ '&filetype'\ too                        Tudi\ obna\9aanje\ ('&filetype')
+menutrans &Off                                 &Izkljuèeno
+menutrans &Manual                              &Roèno
+menutrans A&utomatic                           &Avtomatsko
+menutrans on/off\ for\ &This\ file             Vkljuèi/izkljuèi\ za\ to\ datoteko
+menutrans Co&lor\ test                         Preizkus\ barv
+menutrans &Highlight\ test                     Preizkus\ barvanja\ kode
+menutrans &Convert\ to\ HTML                   Pretvori\ v\ &HTML
+" }}} SYNTAX / BARVANJE KODE
+
+" {{{ BUFFERS / MEDPOMNILNIK
+menutrans &Buffers                                     &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je \9ee
+menutrans &Refresh\ menu                               &Osve\9ei
+menutrans Delete                                       &Bri\9ai
+menutrans &Alternate                                   &Menjaj
+menutrans &Next                                                &Naslednji
+menutrans &Previous                                    &Prej\9anji
+menutrans [No\ File]                                   [Brez\ datoteke]
+" }}} BUFFERS / MEDPOMNILNIK
+
+" {{{ WINDOW / OKNO
+menutrans &Window                      &Okno
+menutrans &New<Tab>^Wn                 &Novo<Tab>^Wn
+menutrans S&plit<Tab>^Ws               Razdeli<Tab>^Ws
+menutrans Split\ &Vertically<Tab>^Wv   Razdeli\ navpièno<Tab>^Ws
+menutrans Split\ File\ E&xplorer       Razdeli:\ Vsebina\ mape
+menutrans Sp&lit\ To\ #<Tab>^W^^       Razdeli\ v\ #<Tab>^W^^
+menutrans &Close<Tab>^Wc               &Zapri<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo     Zapri\ &ostala<Tab>^Wo
+menutrans Move\ &To                    Premakni
+menutrans &Top<Tab>^WK                 &Gor<Tab>^WK
+menutrans &Bottom<Tab>^WJ              &Dol<Tab>^WJ
+menutrans &Left\ side<Tab>^WH          &Levo<Tab>^WH
+menutrans &Right\ side<Tab>^WL         &Desno<Tab>^WL
+menutrans Rotate\ &Up<Tab>^WR          Zavrti\ navzgor<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr                Zavrti\ navzdol<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W=         &Enaka\ velikost<Tab>^W=
+menutrans &Max\ Height<Tab>^W_         Najvi\9aje<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_                Najni\9eje<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\|         Naj\9air\9ae<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\|                Najo\9eje<Tab>^W1\|
+" }}} WINDOW / OKNO
+
+" {{{ HELP / POMOÈ
+menutrans &Help                        &Pomoè
+menutrans &Overview<Tab><F1>   Hitri\ pregled<Tab><F1>
+menutrans &User\ Manual                P&riroènik
+menutrans &How-to\ links       &How-to\ kazalo
+menutrans &Find\.\.\.          Po&i\9aèi\ \.\.\. " conflicts with Edit.Find
+menutrans &Credits             &Avtorji
+menutrans Co&pying             &Licenca
+menutrans &Sponsor/Register    Registracija\ in\ &donacije
+menutrans O&rphans             &Sirotam
+menutrans &Version             &Verzija
+menutrans &About               &O\ programu
+" }}} HELP / POMOÈ
+
+" {{{ POPUP
+menutrans &Undo                                &Razveljavi
+menutrans Cu&t                         &Izre\9ei
+menutrans &Copy                                &Kopieraj
+menutrans &Paste                       &Prilepi
+menutrans &Delete                      &Zbri\9ai
+menutrans Select\ Blockwise            Izbiraj\ po\ blokih
+menutrans Select\ &Word                        Izberi\ &besedo
+menutrans Select\ &Sentence            Izberi\ &stavek
+menutrans Select\ Pa&ragraph           Izberi\ &odstavek
+menutrans Select\ &Line                        Izberi\ vrs&tico
+menutrans Select\ &Block               Izberi\ b&lok
+menutrans &Select\ All<Tab>ggVG                Izberi\ &vse<Tab>ggVG
+" }}} POPUP
+
+" {{{ TOOLBAR
+if has("toolbar")
+  if exists("*Do_toolbar_tmenu")
+    delfun Do_toolbar_tmenu
+  endif
+  fun Do_toolbar_tmenu()
+    tmenu ToolBar.Open         Odpri datoteko
+    tmenu ToolBar.Save         Shrani datoteko
+    tmenu ToolBar.SaveAll      Shrani vse datoteke
+    tmenu ToolBar.Print                Natisni
+    tmenu ToolBar.Undo         Razveljavi
+    tmenu ToolBar.Redo         Obnovi
+    tmenu ToolBar.Cut          Izre\9ei
+    tmenu ToolBar.Copy         Kopiraj
+    tmenu ToolBar.Paste                Prilepi
+    tmenu ToolBar.Find         Najdi ...
+    tmenu ToolBar.FindNext     Najdi naslednje
+    tmenu ToolBar.FindPrev     Najdi prej\9anje
+    tmenu ToolBar.Replace      Najdi in zamenjaj ...
+    tmenu ToolBar.LoadSesn     Nalo\9ei sejo
+    tmenu ToolBar.SaveSesn     Shrani trenutno sejo
+    tmenu ToolBar.RunScript    Izberi Vim skripto za izvajanje
+    tmenu ToolBar.Make         Napravi trenutni projekt (:make)
+    tmenu ToolBar.RunCtags     Napravi znaèke v trenutnem direktoriju (!ctags -R.)
+    tmenu ToolBar.TagJump      Skoèi k znaèki pod kurzorjem
+    tmenu ToolBar.Help         Pomoè za Vim
+    tmenu ToolBar.FindHelp     I\9aèi v pomoèi za Vim
+  endfun
+endif
+" }}} TOOLBAR
+
+" {{{ DIALOG TEXTS
+let g:menutrans_no_file = "[Brez datoteke]"
+let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero \9eelite pomoè:\n\nUporabite predpono i_ za ukaze v naèinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_<Del>)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')"
+let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev loèite z vejico."
+let g:menutrans_tags_dialog = "Vnesite imena datotek z znaèkami ('tag').\nImana loèite z vejicami."
+let g:menutrans_textwidth_dialog = "Vnesite novo \9airino besedila (ali 0 za izklop formatiranja): "
+let g:menutrans_fileformat_dialog = "Izberite format datoteke"
+let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Preklièi"
+" }}}
diff --git a/runtime/lang/menu_sl_si.latin2.vim b/runtime/lang/menu_sl_si.latin2.vim
new file mode 100644 (file)
index 0000000..57d6c89
--- /dev/null
@@ -0,0 +1,294 @@
+" Menu Translations:   Slovenian / Slovensko
+" Maintainer:          Mojca Miklavec <mojca.miklavec.lists@gmail.com>
+" Originally By:       Mojca Miklavec <mojca.miklavec.lists@gmail.com>
+" Last Change:         Mon, 12 Jun 2006 00:00:00 CEST
+" vim:set foldmethod=marker tabstop=8:
+
+" TODO: add/check all '&'s
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+  finish
+endif
+let did_menu_trans = 1
+
+scriptencoding latin2
+
+" {{{ FILE / DATOTEKA
+menutrans &File                                &Datoteka
+menutrans &Open\.\.\.<Tab>:e           &Odpri\ \.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp    Odpri\ de&ljeno\ \.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew  Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew               &Nova<Tab>:enew
+menutrans &Close<Tab>:close            &Zapri<Tab>:close
+menutrans &Save<Tab>:w                 &Shrani<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav     Shrani\ &kot\ \.\.\.<Tab>:sav
+menutrans &Print                       Na&tisni
+menutrans Sa&ve-Exit<Tab>:wqa          Shrani\ in\ &konèaj<Tab>:wqa
+menutrans E&xit<Tab>:qa                        &Izhod<Tab>:qa
+
+if has("diff")
+    menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\.
+    menutrans Split\ Patched\ &By\.\.\.        &Popravi\ z\ (patch)\ \.\.\.
+endif
+" }}} FILE / DATOTEKA
+
+" {{{ EDIT / UREDI
+menutrans &Edit                                &Uredi
+menutrans &Undo<Tab>u                  &Razveljavi<Tab>u
+menutrans &Redo<Tab>^R                 &Obnovi<Tab>^R
+menutrans Rep&eat<Tab>\.               Po&novi<Tab>\.
+menutrans Cu&t<Tab>"+x                 &Izre¾i<Tab>"+x
+menutrans &Copy<Tab>"+y                        &Kopiraj<Tab>"+y
+menutrans &Paste<Tab>"+gP              &Prilepi<Tab>"+gP
+menutrans Put\ &Before<Tab>[p          Vrini\ pred<Tab>[p
+menutrans Put\ &After<Tab>]p           Vrini\ za<Tab>]p
+menutrans &Delete<Tab>x                        Iz&bri¹i<Tab>x
+menutrans &Select\ all<Tab>ggVG                Izberi\ vse<Tab>ggVG
+menutrans &Find\.\.\.                  Po&i¹èi\ \.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.    Poi¹èi\ in\ &zamenjaj\ \.\.\.
+
+" [-- SETTINGS --]
+menutrans Settings\ &Window                            Nastavitve\ \.\.\.
+menutrans Startup\ &Settings                           Zaèetne nastavitve
+menutrans &Global\ Settings                            &Globalne\ nastavitve
+
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!   Vkljuèi/izkljuèi\ poudarjanje\ iskanega\ niza<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic!           Vkljuèi/izkljuèi\ loèevanje\ velikih\ in\ malih\ èrk<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm!             Vkljuèi/izkljuèi\ kratek\ skok\ na\ pripadajoèi\ oklepaj<Tab>:set\ sm!
+
+menutrans &Context\ lines                              ©t\.\ vidnih\ vrstic\ pred/za\ kurzorjem
+
+menutrans &Virtual\ Edit                               Dovoli\ polo¾aj\ kazalèka,\ kjer\ ni\ besedila
+menutrans Never                                                Nikoli
+menutrans Block\ Selection                             Le\ med\ izbiranjem\ bloka
+menutrans Insert\ mode                                 Le\ v\ naèinu\ za\ pisanje
+menutrans Block\ and\ Insert                           Pri\ obojem
+menutrans Always                                       Vedno
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!          Vkljuèi/izkljuèi\ naèin\ za\ pisanje<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!                Vkljuèi/izkljuèi\ zdru¾ljivost\ z\ Vi-jem<Tab>:set\ cp!
+
+menutrans Search\ &Path\.\.\.                          Pot\ za\ iskanje\ \.\.\.
+menutrans Ta&g\ Files\.\.\.                            Ta&g-datoteke\.\.\.
+
+menutrans Toggle\ &Toolbar                             Poka¾i/skrij\ Orodja
+menutrans Toggle\ &Bottom\ Scrollbar                   Poka¾i/skrij\ spodnji\ drsnik
+menutrans Toggle\ &Left\ Scrollbar                     Poka¾i/skrij\ levi\ drsnik
+menutrans Toggle\ &Right\ Scrollbar                    Poka¾i/skrij\ desni\ drsnik
+
+" Edit/File Settings
+menutrans F&ile\ Settings                              &Nastavitve\ datoteke
+
+" Boolean options
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!       Poka¾i/skrij\ ¹tevilke\ vrstic<Tab>:set\ nu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!          Poka¾i/skrij\ nevidne\ znake<Tab>:set\ list! " space/tab
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!          Vkljuèi/izkljuèi\ prelome\ vrstic<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!       Vkljuèi/izkljuèi\ prelome\ vrstic\ med\ besedami<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et!            Vkljuèi/izkljuèi\ zamenjavo\ tabulatorjev\ s\ presledki<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai!           Vkljuèi/izkljuèi\ avtomatsko\ zamikanje\ vrstic<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin!          Vkljuèi/izkljuèi\ C-jevski\ naèin\ zamikanja\ vrstic<Tab>:set\ cin!
+
+" other options
+menutrans &Shiftwidth                                  ©irina\ zamika\ vrstic
+menutrans Soft\ &Tabstop                               ©irina &tabulatorja
+menutrans Te&xt\ Width\.\.\.                           ©irina\ besedila\ \.\.\.
+menutrans &File\ Format\.\.\.                          Format\ &datoteke\ \.\.\.
+menutrans C&olor\ Scheme                               &Barvna\ shema\ \.\.\.
+menutrans &Keymap                                      &Keymap
+menutrans Select\ Fo&nt\.\.\.                          Pisava\ \.\.\.
+" }}} EDIT / UREDI
+
+" {{{  TOOLS / ORODJA
+menutrans &Tools                                       &Orodja
+menutrans &Jump\ to\ this\ tag<Tab>g^]                 &Skoèi\ k\ tej\ znaèki<Tab>g^]
+menutrans Jump\ &back<Tab>^T                           Skoèi\ Na&zaj<Tab>^T
+menutrans Build\ &Tags\ File                           Napravi\ datoteke\ z\ znaèkami\ (tag)
+if has("spell")
+    menutrans &Spelling                                        Èrkovalnik
+    menutrans &Spell\ Check\ On                                &Vkljuèi
+    menutrans Spell\ Check\ &Off                       &Izkljuèi
+    menutrans To\ &Next\ error<Tab>]s                  K\ &naslednji\ napaki<Tab>]s
+    menutrans To\ &Previous\ error<Tab>[s              K\ &prej¹nji\ napaki<Tab>[s
+    menutrans Suggest\ &Corrections<Tab>z=             Predlagaj\ popravek<Tab>z=
+    menutrans &Repeat\ correction<Tab>:spellrepall     Po&novi\ popravke\ na\ vseh\ besedah<Tab>:spellrepall
+    menutrans Set\ language\ to\ "en"                  Èrkovalnik:\ angle¹ki\ "en"
+    menutrans Set\ language\ to\ "en_au"               Èrkovalnik:\ angle¹ki\ "en_au"
+    menutrans Set\ language\ to\ "en_ca"               Èrkovalnik:\ angle¹ki\ "en_ca"
+    menutrans Set\ language\ to\ "en_gb"               Èrkovalnik:\ angle¹ki\ "en_gb"
+    menutrans Set\ language\ to\ "en_nz"               Èrkovalnik:\ angle¹ki\ "en_nz"
+    menutrans Set\ language\ to\ "en_us"               Èrkovalnik:\ angle¹ki\ "en_us"
+    menutrans Set\ language\ to\ "sl"                  Èrkovalnik:\ slovenski\ "sl"
+    menutrans Set\ language\ to\ "de"                  Èrkovalnik:\ nem¹ki\ "de"
+    menutrans Set\ language\ to\                       Èrkovalnik:\
+    menutrans &Find\ More\ Languages                   &Ostali\ jeziki
+endif
+if has("folding")
+  menutrans &Folding                                   Zavihek
+  " open close folds
+  menutrans &Enable/Disable\ folds<Tab>zi              Omogoèi/onemogoèi\ zavihke<Tab>zi
+  menutrans &View\ Cursor\ Line<Tab>zv                 Poka¾i\ vrstico\ s\ kazalcem<Tab>zv " kjer je kazalec
+  menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx         Poka¾i\ samo\ vrstico\ s\ kazalcem<Tab>zMzx
+  menutrans C&lose\ more\ folds<Tab>zm                 Zapri\ veè\ zavihkov<Tab>zm
+  menutrans &Close\ all\ folds<Tab>zM                  Zapri\ vse\ zavihke<Tab>zM
+  menutrans O&pen\ more\ folds<Tab>zr                  Odpri\ veè\ zavihkov<Tab>zr
+  menutrans &Open\ all\ folds<Tab>zR                   Odpri\ vse\ zavihke<Tab>zR
+  " fold method
+  menutrans Fold\ Met&hod                              Ustvarjanje\ zavihkov
+  menutrans M&anual                                    &Roèno
+  menutrans I&ndent                                    Glede\ na\ &poravnavo
+  menutrans E&xpression                                        Z\ &izrazi\ (foldexpr)
+  menutrans S&yntax                                    Glede\ na\ &sintakso
+  menutrans &Diff                                      Razlike\ (&diff)
+  menutrans Ma&rker                                    Z\ &markerji/oznaèbami
+  " create and delete folds
+  " TODO accelerators
+  menutrans Create\ &Fold<Tab>zf                       Ustvari\ zavihek<Tab>zf
+  menutrans &Delete\ Fold<Tab>zd                       Izbri¹i\ zavihek<Tab>zd
+  menutrans Delete\ &All\ Folds<Tab>zD                 Izbri¹i\ vse\ zavihke<Tab>zD
+  " moving around in folds
+  menutrans Fold\ column\ &width                       ©irina\ stolpca\ z\ zavihkom
+endif  " has folding
+
+if has("diff")
+  menutrans &Diff                                      Razlike\ (&Diff)
+  menutrans &Update                                    &Posodobi<Tab>
+  menutrans &Get\ Block                                        &Sprejmi\ (spremeni\ to\ okno) " TODO: check if translation is OK
+  menutrans &Put\ Block                                        &Po¹lji\ (spremeni\ drugo\ okno)
+endif
+
+menutrans &Make<Tab>:make                              Napravi\ (&make)<Tab>:make
+menutrans &List\ Errors<Tab>:cl                                Poka¾i\ napake<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!                     Poka¾i\ sporoèila<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn                         K\ &naslednji\ napaki<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp                     K\ &prej¹nji\ napaki<Tab>:cp
+menutrans &Older\ List<Tab>:cold                       K\ &starej¹emu\ seznamu\ napak<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew                       K\ &novej¹emu\ seznamu\ napak<Tab>:cnew
+
+menutrans Error\ &Window                               Okno\ z\ napakami
+menutrans &Update<Tab>:cwin                            &Posodobi<Tab>:cwin
+menutrans &Open<Tab>:copen                             &Odpri<Tab>:copen
+menutrans &Close<Tab>:cclose                           &Zapri<Tab>:cclose
+
+menutrans &Set\ Compiler                               Nastavi\ &prevajalnik
+menutrans Se&T\ Compiler                               Nastavi\ &prevajalnik " bug in original translation?
+
+menutrans &Convert\ to\ HEX<Tab>:%!xxd                 Pretvori\ v\ HE&X<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r                        Pretvori\ nazaj<Tab>:%!xxd\ -r
+" }}}  TOOLS / ORODJA
+
+" {{{ SYNTAX / BARVANJE KODE
+menutrans &Syntax                              &Barvanje\ kode
+menutrans &Show\ filetypes\ in\ menu           Podprte\ vrste\ datotek
+menutrans Set\ '&syntax'\ only                 Samo\ barvanje\ ('&syntax')
+menutrans Set\ '&filetype'\ too                        Tudi\ obna¹anje\ ('&filetype')
+menutrans &Off                                 &Izkljuèeno
+menutrans &Manual                              &Roèno
+menutrans A&utomatic                           &Avtomatsko
+menutrans on/off\ for\ &This\ file             Vkljuèi/izkljuèi\ za\ to\ datoteko
+menutrans Co&lor\ test                         Preizkus\ barv
+menutrans &Highlight\ test                     Preizkus\ barvanja\ kode
+menutrans &Convert\ to\ HTML                   Pretvori\ v\ &HTML
+" }}} SYNTAX / BARVANJE KODE
+
+" {{{ BUFFERS / MEDPOMNILNIK
+menutrans &Buffers                                     &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je ¾e
+menutrans &Refresh\ menu                               &Osve¾i
+menutrans Delete                                       &Bri¹i
+menutrans &Alternate                                   &Menjaj
+menutrans &Next                                                &Naslednji
+menutrans &Previous                                    &Prej¹nji
+menutrans [No\ File]                                   [Brez\ datoteke]
+" }}} BUFFERS / MEDPOMNILNIK
+
+" {{{ WINDOW / OKNO
+menutrans &Window                      &Okno
+menutrans &New<Tab>^Wn                 &Novo<Tab>^Wn
+menutrans S&plit<Tab>^Ws               Razdeli<Tab>^Ws
+menutrans Split\ &Vertically<Tab>^Wv   Razdeli\ navpièno<Tab>^Ws
+menutrans Split\ File\ E&xplorer       Razdeli:\ Vsebina\ mape
+menutrans Sp&lit\ To\ #<Tab>^W^^       Razdeli\ v\ #<Tab>^W^^
+menutrans &Close<Tab>^Wc               &Zapri<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo     Zapri\ &ostala<Tab>^Wo
+menutrans Move\ &To                    Premakni
+menutrans &Top<Tab>^WK                 &Gor<Tab>^WK
+menutrans &Bottom<Tab>^WJ              &Dol<Tab>^WJ
+menutrans &Left\ side<Tab>^WH          &Levo<Tab>^WH
+menutrans &Right\ side<Tab>^WL         &Desno<Tab>^WL
+menutrans Rotate\ &Up<Tab>^WR          Zavrti\ navzgor<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr                Zavrti\ navzdol<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W=         &Enaka\ velikost<Tab>^W=
+menutrans &Max\ Height<Tab>^W_         Najvi¹je<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_                Najni¾je<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\|         Naj¹ir¹e<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\|                Najo¾je<Tab>^W1\|
+" }}} WINDOW / OKNO
+
+" {{{ HELP / POMOÈ
+menutrans &Help                        &Pomoè
+menutrans &Overview<Tab><F1>   Hitri\ pregled<Tab><F1>
+menutrans &User\ Manual                P&riroènik
+menutrans &How-to\ links       &How-to\ kazalo
+menutrans &Find\.\.\.          Po&i¹èi\ \.\.\. " conflicts with Edit.Find
+menutrans &Credits             &Avtorji
+menutrans Co&pying             &Licenca
+menutrans &Sponsor/Register    Registracija\ in\ &donacije
+menutrans O&rphans             &Sirotam
+menutrans &Version             &Verzija
+menutrans &About               &O\ programu
+" }}} HELP / POMOÈ
+
+" {{{ POPUP
+menutrans &Undo                                &Razveljavi
+menutrans Cu&t                         &Izre¾i
+menutrans &Copy                                &Kopieraj
+menutrans &Paste                       &Prilepi
+menutrans &Delete                      &Zbri¹i
+menutrans Select\ Blockwise            Izbiraj\ po\ blokih
+menutrans Select\ &Word                        Izberi\ &besedo
+menutrans Select\ &Sentence            Izberi\ &stavek
+menutrans Select\ Pa&ragraph           Izberi\ &odstavek
+menutrans Select\ &Line                        Izberi\ vrs&tico
+menutrans Select\ &Block               Izberi\ b&lok
+menutrans Select\ &All                 Izberi\ &vse
+" }}} POPUP
+
+" {{{ TOOLBAR
+if has("toolbar")
+  if exists("*Do_toolbar_tmenu")
+    delfun Do_toolbar_tmenu
+  endif
+  fun Do_toolbar_tmenu()
+    tmenu ToolBar.Open         Odpri datoteko
+    tmenu ToolBar.Save         Shrani datoteko
+    tmenu ToolBar.SaveAll      Shrani vse datoteke
+    tmenu ToolBar.Print                Natisni
+    tmenu ToolBar.Undo         Razveljavi
+    tmenu ToolBar.Redo         Obnovi
+    tmenu ToolBar.Cut          Izre¾i
+    tmenu ToolBar.Copy         Kopiraj
+    tmenu ToolBar.Paste                Prilepi
+    tmenu ToolBar.Find         Najdi ...
+    tmenu ToolBar.FindNext     Najdi naslednje
+    tmenu ToolBar.FindPrev     Najdi prej¹nje
+    tmenu ToolBar.Replace      Najdi in zamenjaj ...
+    tmenu ToolBar.LoadSesn     Nalo¾i sejo
+    tmenu ToolBar.SaveSesn     Shrani trenutno sejo
+    tmenu ToolBar.RunScript    Izberi Vim skripto za izvajanje
+    tmenu ToolBar.Make         Napravi trenutni projekt (:make)
+    tmenu ToolBar.RunCtags     Napravi znaèke v trenutnem direktoriju (!ctags -R.)
+    tmenu ToolBar.TagJump      Skoèi k znaèki pod kurzorjem
+    tmenu ToolBar.Help         Pomoè za Vim
+    tmenu ToolBar.FindHelp     I¹èi v pomoèi za Vim
+  endfun
+endif
+" }}} TOOLBAR
+
+" {{{ DIALOG TEXTS
+let g:menutrans_no_file = "[Brez datoteke]"
+let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero ¾elite pomoè:\n\nUporabite predpono i_ za ukaze v naèinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_<Del>)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')"
+let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev loèite z vejico."
+let g:menutrans_tags_dialog = "Vnesite imena datotek z znaèkami ('tag').\nImana loèite z vejicami."
+let g:menutrans_textwidth_dialog = "Vnesite novo ¹irino besedila (ali 0 za izklop formatiranja): "
+let g:menutrans_fileformat_dialog = "Izberite format datoteke"
+let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Preklièi"
+" }}}
index 950aea94d57e6e3cbf5d550edae6130420195a6a..1df513de9c4131a2dda499b5a9ad6da93869df15 100644 (file)
@@ -1,6 +1,6 @@
 " Menu Translations:   Slovak
 " Translated By:       Martin Lacko <lacko@host.sk>
-" Last Change:         2003 Mar 30
+" Last Change:         2006 Jun 17
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
index cb87ed9ec89b75709aaa1c3c3806521c7185f38a..37e22e57c08c1bcc2d139e0d978a41e4f7604bfe 100644 (file)
@@ -1,15 +1,19 @@
 The plugin directory is for standard Vim plugin scripts.
 
 All files here ending in .vim will be sourced by Vim when it starts up.
+Look in the file for hints on how it can be disabled without deleting it.
 
-Standard plugins:
-gzip.vim       edit compressed files
-netrw.vim      edit files over a network and browse (remote) directories
-rrhelper.vim   used for --remote-wait editing
-tar.vim                edit (compressed) tar files
-tohtml.vim     convert a file with syntax highlighting to HTML
-vimball.vim    create and unpack .vba files
+getscriptPlugin.vim  get latest version of Vim scripts
+gzip.vim            edit compressed files
+matchparen.vim      highlight paren matching the one under the cursor
+netrwPlugin.vim             edit files over a network and browse (remote) directories
+rrhelper.vim        used for --remote-wait editing
+spellfile.vim       download a spellfile when it's missing
+tarPlugin.vim       edit (compressed) tar files
+tohtml.vim          convert a file with syntax highlighting to HTML
+vimballPlugin.vim    create and unpack .vba files
+zipPlugin.vim       edit zip archives
 
 Note: the explorer.vim plugin is no longer here, the netrw.vim plugin has
-taken over browsing directories (also over ftp).
+taken over browsing directories (also for remote directories).
 
index 95c06c3ec07c63f8d663febec95efde7654eba78..9b3b4d3186fe0b9c20f1ddaafeca89ec7c679b38 100644 (file)
@@ -1,32 +1,36 @@
-" vimball : construct a file containing both paths and files
+" vimballPlugin : construct a file containing both paths and files
 " Author: Charles E. Campbell, Jr.
-" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
 "            (see |copyright|) except use "Vimball" instead of "Vim".
 "            No warranty, express or implied.
 "  *** ***   Use At-Your-Own-Risk!   *** ***
+"
+" (Rom 2:1 WEB) Therefore you are without excuse, O man, whoever you are who
+"      judge. For in that which you judge another, you condemn yourself. For
+"      you who judge practice the same things.
+" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 
 " ---------------------------------------------------------------------
 "  Load Once: {{{1
-if &cp || exists("g:loaded_vimball") || exists("g:loaded_vimballplugin")
+if &cp || exists("g:loaded_vimballPlugin")
  finish
 endif
-let g:loaded_vimballplugin= 1
-
-let s:keepcpo= &cpo
+let g:loaded_vimballPlugin = 1
+let s:keepcpo              = &cpo
 set cpo&vim
 
 " ------------------------------------------------------------------------------
 " Public Interface: {{{1
-com! -ra -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
-com! -na=0 UseVimball  call vimball#Vimball(1)
-com! -na=0 VimballList call vimball#Vimball(0)
+com! -ra   -complete=dir -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
+com! -na=? -complete=dir UseVimball  call vimball#Vimball(1,<f-args>)
+com! -na=0               VimballList call vimball#Vimball(0)
+com! -na=* -complete=dir RmVimball   call vimball#RmVimball(<f-args>)
 au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))
-au BufEnter *.vba call vimball#ShowMesg("Source this file to extract it! (:so %)")
+au BufEnter *.vba set noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
 
-let &cpo= s:keepcpo
-unlet s:keepcpo
 " =====================================================================
-" Modelines: {{{1
+" Restoration And Modelines: {{{1
 " vim: fdm=marker
+let &cpo= s:keepcpo
+unlet s:keepcpo
index 20319a3284ca358c2d5ff84c0c62a249512e30ab..69e98bd669c5eb288cf8d91002793f98a6bdb6d6 100644 (file)
@@ -1,9 +1,9 @@
 " zipPlugin.vim: Handles browsing zipfiles
 "            PLUGIN PORTION
-" Date:                        Sep 14, 2005
-" Maintainer:  Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" Date:                        Jul 18, 2006
+" Maintainer:  Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " License:             Vim License  (see vim's :help license)
-" Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
+" Copyright:    Copyright (C) 2005,2006 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
 "               plugin, you agree that in no event will the copyright
 "               holder be liable for any damages resulting from the use
 "               of this software.
-
+"
+" (James 4:8 WEB) Draw near to God, and he will draw near to you.
+" Cleanse your hands, you sinners; and purify your hearts, you double-minded.
 " ---------------------------------------------------------------------
-" Initialization: {{{1
-let s:keepcpo= &cpo
+" Load Once: {{{1
+if &cp || exists("g:loaded_zipPlugin")
+ finish
+endif
+let g:loaded_zipPlugin = 1
+let s:keepcpo          = &cpo
 set cpo&vim
 
 " ---------------------------------------------------------------------
@@ -37,8 +43,8 @@ augroup zip
  au BufReadCmd   *.zip         call zip#Browse(expand("<amatch>"))
 augroup END
 
-" ------------------------------------------------------------------------
-" Modelines And Restoration: {{{1
+" ---------------------------------------------------------------------
+"  Restoration And Modelines: {{{1
+"  vim: fdm=marker
 let &cpo= s:keepcpo
 unlet s:keepcpo
-" vim:ts=8 fdm=marker
index 65e1a2f7d4b65718f764e93c4418f71f1b36d296..4c371b246f18c31bcdfcda03e955438be166a279 100644 (file)
@@ -35,7 +35,7 @@ da_DK.aff da_DK.dic: {buildcheck=}
         :fetch da_DK.zip
         :sys $UNZIP da_DK.zip
         :delete da_DK.zip
-        :delete contributors COPYING Makefile da_DK.excluded
+        :delete COPYING Makefile da_DK.excluded
         @if not os.path.exists('da_DK.orig.aff'):
             :copy da_DK.aff da_DK.orig.aff
         @if not os.path.exists('da_DK.orig.dic'):
index eb21c5e48f285efff4c199ae6601a08d84a4870c..74cd1d58bdcdeba5652ca73e0643873c03c563c1 100644 (file)
@@ -33,29 +33,19 @@ $SPELLDIR/pl.cp1250.spl : $FILES
 #
 # Fetching the files from
 #
-HTTPDIR = http://www.kurnik.pl/slownik/ort/
+HTTPDIR = http://www.kurnik.pl/dictionary
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
 # This is a bit tricky, since the file name includes the date.
 pl_PL.aff pl_PL.dic: {buildcheck=}
         :assertpkg tar bunzip2
-        @from time import strftime, gmtime, time
-        @for day in range(20):
-            date = `strftime('%Y%m%d', gmtime(time() - day * 24 * 60 * 60))`
-            base =  alt-myspell-pl-$date
-            fname = $base.tar.bz2
-            :attr {fetch = $HTTPDIR/%file%} $fname
-            @try:
-                :fetch $fname
-                ok = 1
-            @except:
-                ok = 0
-            @if ok:
-                @break
+        fname = alt-myspell-pl.tar.bz2
+        :attr {fetch = $HTTPDIR/%file%} $fname
+        :fetch $fname
         :sys bunzip2 -c $fname | tar xf -
-        :move $base/* .
-        :deldir $base
+        :move alt-myspell-pl-20[0-9]*/* .
+        :deldir alt-myspell-pl-20[0-9]*
         :delete $fname
         @if not os.path.exists('pl_PL.orig.aff'):
             :copy pl_PL.aff pl_PL.orig.aff
@@ -79,21 +69,11 @@ diff:
 
 check:
         :assertpkg tar bunzip2 diff
-        @from time import strftime, gmtime, time
-        @for day in range(20):
-            date = `strftime('%Y%m%d', gmtime(time() - day * 24 * 60 * 60))`
-            base =  alt-myspell-pl-$date
-            fname = $base.tar.bz2
-            :attr {fetch = $HTTPDIR/%file%} $fname
-            @try:
-                :fetch $fname
-                ok = 1
-            @except:
-                ok = 0
-            @if ok:
-                @break
+        fname = alt-myspell-pl.tar.bz2
+        :attr {fetch = $HTTPDIR/%file%} $fname
+        :fetch $fname
         :sys bunzip2 -c $fname | tar xf -
-        :cd $base
+        :cd alt-myspell-pl-20[0-9]*
         @try:
             @import stat
             :sys $UNZIP ../pl_PL.zip
index 653a2d2de20477b75dd0a8db6cf6d2e73106b70e..cb287d1e789af3d4bce03938616948144a76892a 100644 (file)
@@ -1,27 +1,35 @@
-*** pt_PT.orig.aff     Wed Aug 31 20:05:16 2005
---- pt_PT.aff  Wed Aug 31 20:05:16 2005
+*** pt_PT.orig.aff     Mon Apr 16 15:20:13 2007
+--- pt_PT.aff  Mon Apr 16 15:52:13 2007
 ***************
 *** 3,4 ****
---- 3,24 ----
+--- 3,7 ----
   
 + FOL  ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
 + LOW  ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
 + UPP  ßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞÿ
-+ 
-+ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-+ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-+ 
-+ MIDWORD      '
-+ 
-+ MAP 9
-+ MAP aàáâãäå
-+ MAP eèéêë
-+ MAP iìíîï
-+ MAP oòóôõö
-+ MAP uùúûü
-+ MAP nñ
-+ MAP cç
-+ MAP yÿý
-+ MAP sß
-+ 
-  PFX A Y 1
+  
+***************
+*** 1065,1078 ****
+  
+! MAP 11
+! MAP aá
+! MAP aã
+! MAP aâ
+! MAP eé
+! MAP eê
+! MAP ií
+  MAP cç
+! MAP oó
+! MAP oô
+! MAP oõ
+! MAP uú
+! 
+--- 1068,1075 ----
+  
+! MAP 6
+! MAP aáãâAÁÃÂ
+! MAP eéêEÉÊ
+! MAP iíIÍ
+  MAP cç
+! MAP oóõôOÓÕÔ
+! MAP uúüUÚÜ
index a2a28bfd7b4e9a1c562563ae2d0e3b2e8610f301..06383188a57a037ee449ec7f0c571e8105acbfc4 100644 (file)
@@ -74,20 +74,25 @@ an 50.10.450 &Syntax.AB.ASN\.1 :cal SetSyn("asn")<CR>
 an 50.10.460 &Syntax.AB.Asterisk\ config :cal SetSyn("asterisk")<CR>
 an 50.10.470 &Syntax.AB.Asterisk\ voicemail\ config :cal SetSyn("asteriskvm")<CR>
 an 50.10.480 &Syntax.AB.Atlas :cal SetSyn("atlas")<CR>
-an 50.10.490 &Syntax.AB.Automake :cal SetSyn("automake")<CR>
-an 50.10.500 &Syntax.AB.Avenue :cal SetSyn("ave")<CR>
-an 50.10.510 &Syntax.AB.Awk :cal SetSyn("awk")<CR>
-an 50.10.520 &Syntax.AB.AYacc :cal SetSyn("ayacc")<CR>
-an 50.10.540 &Syntax.AB.B :cal SetSyn("b")<CR>
-an 50.10.550 &Syntax.AB.Baan :cal SetSyn("baan")<CR>
-an 50.10.560 &Syntax.AB.BASIC :cal SetSyn("basic")<CR>
-an 50.10.570 &Syntax.AB.BC\ calculator :cal SetSyn("bc")<CR>
-an 50.10.580 &Syntax.AB.BDF\ font :cal SetSyn("bdf")<CR>
-an 50.10.590 &Syntax.AB.BibTeX.Bibliography\ database :cal SetSyn("bib")<CR>
-an 50.10.600 &Syntax.AB.BibTeX.Bibliography\ Style :cal SetSyn("bst")<CR>
-an 50.10.610 &Syntax.AB.BIND.BIND\ config :cal SetSyn("named")<CR>
-an 50.10.620 &Syntax.AB.BIND.BIND\ zone :cal SetSyn("bindzone")<CR>
-an 50.10.630 &Syntax.AB.Blank :cal SetSyn("blank")<CR>
+an 50.10.490 &Syntax.AB.AutoIt :cal SetSyn("autoit")<CR>
+an 50.10.500 &Syntax.AB.Automake :cal SetSyn("automake")<CR>
+an 50.10.510 &Syntax.AB.Avenue :cal SetSyn("ave")<CR>
+an 50.10.520 &Syntax.AB.Awk :cal SetSyn("awk")<CR>
+an 50.10.530 &Syntax.AB.AYacc :cal SetSyn("ayacc")<CR>
+an 50.10.550 &Syntax.AB.B :cal SetSyn("b")<CR>
+an 50.10.560 &Syntax.AB.Baan :cal SetSyn("baan")<CR>
+an 50.10.570 &Syntax.AB.Basic.FreeBasic :cal SetSyn("freebasic")<CR>
+an 50.10.580 &Syntax.AB.Basic.IBasic :cal SetSyn("ibasic")<CR>
+an 50.10.590 &Syntax.AB.Basic.QBasic :cal SetSyn("basic")<CR>
+an 50.10.600 &Syntax.AB.Basic.Visual\ Basic :cal SetSyn("vb")<CR>
+an 50.10.610 &Syntax.AB.Bazaar\ commit\ file :cal SetSyn("bzr")<CR>
+an 50.10.620 &Syntax.AB.BC\ calculator :cal SetSyn("bc")<CR>
+an 50.10.630 &Syntax.AB.BDF\ font :cal SetSyn("bdf")<CR>
+an 50.10.640 &Syntax.AB.BibTeX.Bibliography\ database :cal SetSyn("bib")<CR>
+an 50.10.650 &Syntax.AB.BibTeX.Bibliography\ Style :cal SetSyn("bst")<CR>
+an 50.10.660 &Syntax.AB.BIND.BIND\ config :cal SetSyn("named")<CR>
+an 50.10.670 &Syntax.AB.BIND.BIND\ zone :cal SetSyn("bindzone")<CR>
+an 50.10.680 &Syntax.AB.Blank :cal SetSyn("blank")<CR>
 an 50.20.100 &Syntax.C.C :cal SetSyn("c")<CR>
 an 50.20.110 &Syntax.C.C++ :cal SetSyn("cpp")<CR>
 an 50.20.120 &Syntax.C.C# :cal SetSyn("cs")<CR>
@@ -107,11 +112,11 @@ an 50.20.250 &Syntax.C.Clean :cal SetSyn("clean")<CR>
 an 50.20.260 &Syntax.C.Clever :cal SetSyn("cl")<CR>
 an 50.20.270 &Syntax.C.Clipper :cal SetSyn("clipper")<CR>
 an 50.20.280 &Syntax.C.Cmake :cal SetSyn("cmake")<CR>
-an 50.20.290 &Syntax.C.Cold\ Fusion :cal SetSyn("cf")<CR>
-an 50.20.300 &Syntax.C.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
-an 50.20.310 &Syntax.C.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
-an 50.20.320 &Syntax.C.Config.Configure\.in :cal SetSyn("config")<CR>
-an 50.20.330 &Syntax.C.ConTeXt :cal SetSyn("context")<CR>
+an 50.20.290 &Syntax.C.Cmusrc :cal SetSyn("cmusrc")<CR>
+an 50.20.300 &Syntax.C.Cold\ Fusion :cal SetSyn("cf")<CR>
+an 50.20.310 &Syntax.C.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
+an 50.20.320 &Syntax.C.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
+an 50.20.330 &Syntax.C.Config.Configure\.in :cal SetSyn("config")<CR>
 an 50.20.340 &Syntax.C.CRM114 :cal SetSyn("crm")<CR>
 an 50.20.350 &Syntax.C.Ctrl-H :cal SetSyn("ctrlh")<CR>
 an 50.20.360 &Syntax.C.Cobol :cal SetSyn("cobol")<CR>
@@ -189,46 +194,48 @@ an 50.40.340 &Syntax.FG.Gretl :cal SetSyn("gretl")<CR>
 an 50.40.350 &Syntax.FG.Groff :cal SetSyn("groff")<CR>
 an 50.40.360 &Syntax.FG.Groovy :cal SetSyn("groovy")<CR>
 an 50.40.370 &Syntax.FG.GTKrc :cal SetSyn("gtkrc")<CR>
-an 50.50.100 &Syntax.HIJK.Haskell.Haskell :cal SetSyn("haskell")<CR>
-an 50.50.110 &Syntax.HIJK.Haskell.Haskell-c2hs :cal SetSyn("chaskell")<CR>
-an 50.50.120 &Syntax.HIJK.Haskell.Haskell-literate :cal SetSyn("lhaskell")<CR>
-an 50.50.130 &Syntax.HIJK.Hercules :cal SetSyn("hercules")<CR>
-an 50.50.140 &Syntax.HIJK.Hex\ dump.XXD :cal SetSyn("xxd")<CR>
-an 50.50.150 &Syntax.HIJK.Hex\ dump.Intel\ MCS51 :cal SetSyn("hex")<CR>
-an 50.50.160 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR>
-an 50.50.170 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR>
-an 50.50.180 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR>
-an 50.50.190 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR>
-an 50.50.200 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR>
-an 50.50.210 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR>
-an 50.50.220 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR>
-an 50.50.230 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR>
-an 50.50.250 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR>
-an 50.50.260 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR>
-an 50.50.270 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR>
-an 50.50.280 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR>
-an 50.50.290 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR>
-an 50.50.300 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR>
-an 50.50.310 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR>
-an 50.50.320 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR>
-an 50.50.330 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR>
-an 50.50.340 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR>
-an 50.50.350 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR>
-an 50.50.360 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR>
-an 50.50.380 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR>
-an 50.50.390 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR>
-an 50.50.400 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR>
-an 50.50.410 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR>
-an 50.50.420 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR>
-an 50.50.430 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR>
-an 50.50.440 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR>
-an 50.50.450 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR>
-an 50.50.460 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR>
-an 50.50.470 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR>
-an 50.50.490 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR>
-an 50.50.500 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
-an 50.50.510 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
-an 50.50.520 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
+an 50.50.100 &Syntax.HIJK.Hamster :cal SetSyn("hamster")<CR>
+an 50.50.110 &Syntax.HIJK.Haskell.Haskell :cal SetSyn("haskell")<CR>
+an 50.50.120 &Syntax.HIJK.Haskell.Haskell-c2hs :cal SetSyn("chaskell")<CR>
+an 50.50.130 &Syntax.HIJK.Haskell.Haskell-literate :cal SetSyn("lhaskell")<CR>
+an 50.50.140 &Syntax.HIJK.Hercules :cal SetSyn("hercules")<CR>
+an 50.50.150 &Syntax.HIJK.Hex\ dump.XXD :cal SetSyn("xxd")<CR>
+an 50.50.160 &Syntax.HIJK.Hex\ dump.Intel\ MCS51 :cal SetSyn("hex")<CR>
+an 50.50.170 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR>
+an 50.50.180 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR>
+an 50.50.190 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR>
+an 50.50.200 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR>
+an 50.50.210 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR>
+an 50.50.220 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR>
+an 50.50.230 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR>
+an 50.50.240 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR>
+an 50.50.260 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR>
+an 50.50.270 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR>
+an 50.50.280 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR>
+an 50.50.290 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR>
+an 50.50.300 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR>
+an 50.50.310 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR>
+an 50.50.320 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR>
+an 50.50.330 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR>
+an 50.50.340 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR>
+an 50.50.350 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR>
+an 50.50.360 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR>
+an 50.50.370 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR>
+an 50.50.380 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR>
+an 50.50.400 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR>
+an 50.50.410 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR>
+an 50.50.420 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR>
+an 50.50.430 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR>
+an 50.50.440 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR>
+an 50.50.450 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR>
+an 50.50.460 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR>
+an 50.50.470 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR>
+an 50.50.480 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR>
+an 50.50.490 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR>
+an 50.50.510 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR>
+an 50.50.520 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
+an 50.50.530 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
+an 50.50.540 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
 an 50.60.100 &Syntax.L-Ma.Lace :cal SetSyn("lace")<CR>
 an 50.60.110 &Syntax.L-Ma.LamdaProlog :cal SetSyn("lprolog")<CR>
 an 50.60.120 &Syntax.L-Ma.Latte :cal SetSyn("latte")<CR>
@@ -268,45 +275,46 @@ an 50.60.460 &Syntax.L-Ma.Mathematica :cal SetSyn("mma")<CR>
 an 50.60.470 &Syntax.L-Ma.Matlab :cal SetSyn("matlab")<CR>
 an 50.60.480 &Syntax.L-Ma.Maxima :cal SetSyn("maxima")<CR>
 an 50.70.100 &Syntax.Me-NO.MEL\ (for\ Maya) :cal SetSyn("mel")<CR>
-an 50.70.110 &Syntax.Me-NO.Metafont :cal SetSyn("mf")<CR>
-an 50.70.120 &Syntax.Me-NO.MetaPost :cal SetSyn("mp")<CR>
-an 50.70.130 &Syntax.Me-NO.MGL :cal SetSyn("mgl")<CR>
-an 50.70.140 &Syntax.Me-NO.MMIX :cal SetSyn("mmix")<CR>
-an 50.70.150 &Syntax.Me-NO.Modconf :cal SetSyn("modconf")<CR>
-an 50.70.160 &Syntax.Me-NO.Model :cal SetSyn("model")<CR>
-an 50.70.170 &Syntax.Me-NO.Modsim\ III :cal SetSyn("modsim3")<CR>
-an 50.70.180 &Syntax.Me-NO.Modula\ 2 :cal SetSyn("modula2")<CR>
-an 50.70.190 &Syntax.Me-NO.Modula\ 3 :cal SetSyn("modula3")<CR>
-an 50.70.200 &Syntax.Me-NO.Monk :cal SetSyn("monk")<CR>
-an 50.70.210 &Syntax.Me-NO.Mplayer\ config :cal SetSyn("mplayerconf")<CR>
-an 50.70.220 &Syntax.Me-NO.MOO :cal SetSyn("moo")<CR>
-an 50.70.230 &Syntax.Me-NO.Mrxvtrc :cal SetSyn("mrxvtrc")<CR>
-an 50.70.240 &Syntax.Me-NO.MS-DOS/Windows.4DOS\ \.bat\ file :cal SetSyn("btm")<CR>
-an 50.70.250 &Syntax.Me-NO.MS-DOS/Windows.\.bat\/\.cmd\ file :cal SetSyn("dosbatch")<CR>
-an 50.70.260 &Syntax.Me-NO.MS-DOS/Windows.\.ini\ file :cal SetSyn("dosini")<CR>
-an 50.70.270 &Syntax.Me-NO.MS-DOS/Windows.Module\ Definition :cal SetSyn("def")<CR>
-an 50.70.280 &Syntax.Me-NO.MS-DOS/Windows.Registry :cal SetSyn("registry")<CR>
-an 50.70.290 &Syntax.Me-NO.MS-DOS/Windows.Resource\ file :cal SetSyn("rc")<CR>
-an 50.70.300 &Syntax.Me-NO.Msql :cal SetSyn("msql")<CR>
-an 50.70.310 &Syntax.Me-NO.MuPAD :cal SetSyn("mupad")<CR>
-an 50.70.320 &Syntax.Me-NO.MUSHcode :cal SetSyn("mush")<CR>
-an 50.70.330 &Syntax.Me-NO.Muttrc :cal SetSyn("muttrc")<CR>
-an 50.70.350 &Syntax.Me-NO.Nanorc :cal SetSyn("nanorc")<CR>
-an 50.70.360 &Syntax.Me-NO.Nastran\ input/DMAP :cal SetSyn("nastran")<CR>
-an 50.70.370 &Syntax.Me-NO.Natural :cal SetSyn("natural")<CR>
-an 50.70.380 &Syntax.Me-NO.Netrc :cal SetSyn("netrc")<CR>
-an 50.70.390 &Syntax.Me-NO.Novell\ NCF\ batch :cal SetSyn("ncf")<CR>
-an 50.70.400 &Syntax.Me-NO.Not\ Quite\ C\ (LEGO) :cal SetSyn("nqc")<CR>
-an 50.70.410 &Syntax.Me-NO.Nroff :cal SetSyn("nroff")<CR>
-an 50.70.420 &Syntax.Me-NO.NSIS\ script :cal SetSyn("nsis")<CR>
-an 50.70.440 &Syntax.Me-NO.Objective\ C :cal SetSyn("objc")<CR>
-an 50.70.450 &Syntax.Me-NO.Objective\ C++ :cal SetSyn("objcpp")<CR>
-an 50.70.460 &Syntax.Me-NO.OCAML :cal SetSyn("ocaml")<CR>
-an 50.70.470 &Syntax.Me-NO.Occam :cal SetSyn("occam")<CR>
-an 50.70.480 &Syntax.Me-NO.Omnimark :cal SetSyn("omnimark")<CR>
-an 50.70.490 &Syntax.Me-NO.OpenROAD :cal SetSyn("openroad")<CR>
-an 50.70.500 &Syntax.Me-NO.Open\ Psion\ Lang :cal SetSyn("opl")<CR>
-an 50.70.510 &Syntax.Me-NO.Oracle\ config :cal SetSyn("ora")<CR>
+an 50.70.110 &Syntax.Me-NO.Messages\ (/var/log) :cal SetSyn("messages")<CR>
+an 50.70.120 &Syntax.Me-NO.Metafont :cal SetSyn("mf")<CR>
+an 50.70.130 &Syntax.Me-NO.MetaPost :cal SetSyn("mp")<CR>
+an 50.70.140 &Syntax.Me-NO.MGL :cal SetSyn("mgl")<CR>
+an 50.70.150 &Syntax.Me-NO.MMIX :cal SetSyn("mmix")<CR>
+an 50.70.160 &Syntax.Me-NO.Modconf :cal SetSyn("modconf")<CR>
+an 50.70.170 &Syntax.Me-NO.Model :cal SetSyn("model")<CR>
+an 50.70.180 &Syntax.Me-NO.Modsim\ III :cal SetSyn("modsim3")<CR>
+an 50.70.190 &Syntax.Me-NO.Modula\ 2 :cal SetSyn("modula2")<CR>
+an 50.70.200 &Syntax.Me-NO.Modula\ 3 :cal SetSyn("modula3")<CR>
+an 50.70.210 &Syntax.Me-NO.Monk :cal SetSyn("monk")<CR>
+an 50.70.220 &Syntax.Me-NO.Mplayer\ config :cal SetSyn("mplayerconf")<CR>
+an 50.70.230 &Syntax.Me-NO.MOO :cal SetSyn("moo")<CR>
+an 50.70.240 &Syntax.Me-NO.Mrxvtrc :cal SetSyn("mrxvtrc")<CR>
+an 50.70.250 &Syntax.Me-NO.MS-DOS/Windows.4DOS\ \.bat\ file :cal SetSyn("btm")<CR>
+an 50.70.260 &Syntax.Me-NO.MS-DOS/Windows.\.bat\/\.cmd\ file :cal SetSyn("dosbatch")<CR>
+an 50.70.270 &Syntax.Me-NO.MS-DOS/Windows.\.ini\ file :cal SetSyn("dosini")<CR>
+an 50.70.280 &Syntax.Me-NO.MS-DOS/Windows.Module\ Definition :cal SetSyn("def")<CR>
+an 50.70.290 &Syntax.Me-NO.MS-DOS/Windows.Registry :cal SetSyn("registry")<CR>
+an 50.70.300 &Syntax.Me-NO.MS-DOS/Windows.Resource\ file :cal SetSyn("rc")<CR>
+an 50.70.310 &Syntax.Me-NO.Msql :cal SetSyn("msql")<CR>
+an 50.70.320 &Syntax.Me-NO.MuPAD :cal SetSyn("mupad")<CR>
+an 50.70.330 &Syntax.Me-NO.MUSHcode :cal SetSyn("mush")<CR>
+an 50.70.340 &Syntax.Me-NO.Muttrc :cal SetSyn("muttrc")<CR>
+an 50.70.360 &Syntax.Me-NO.Nanorc :cal SetSyn("nanorc")<CR>
+an 50.70.370 &Syntax.Me-NO.Nastran\ input/DMAP :cal SetSyn("nastran")<CR>
+an 50.70.380 &Syntax.Me-NO.Natural :cal SetSyn("natural")<CR>
+an 50.70.390 &Syntax.Me-NO.Netrc :cal SetSyn("netrc")<CR>
+an 50.70.400 &Syntax.Me-NO.Novell\ NCF\ batch :cal SetSyn("ncf")<CR>
+an 50.70.410 &Syntax.Me-NO.Not\ Quite\ C\ (LEGO) :cal SetSyn("nqc")<CR>
+an 50.70.420 &Syntax.Me-NO.Nroff :cal SetSyn("nroff")<CR>
+an 50.70.430 &Syntax.Me-NO.NSIS\ script :cal SetSyn("nsis")<CR>
+an 50.70.450 &Syntax.Me-NO.Objective\ C :cal SetSyn("objc")<CR>
+an 50.70.460 &Syntax.Me-NO.Objective\ C++ :cal SetSyn("objcpp")<CR>
+an 50.70.470 &Syntax.Me-NO.OCAML :cal SetSyn("ocaml")<CR>
+an 50.70.480 &Syntax.Me-NO.Occam :cal SetSyn("occam")<CR>
+an 50.70.490 &Syntax.Me-NO.Omnimark :cal SetSyn("omnimark")<CR>
+an 50.70.500 &Syntax.Me-NO.OpenROAD :cal SetSyn("openroad")<CR>
+an 50.70.510 &Syntax.Me-NO.Open\ Psion\ Lang :cal SetSyn("opl")<CR>
+an 50.70.520 &Syntax.Me-NO.Oracle\ config :cal SetSyn("ora")<CR>
 an 50.80.100 &Syntax.PQ.Packet\ filter\ conf :cal SetSyn("pf")<CR>
 an 50.80.110 &Syntax.PQ.Palm\ resource\ compiler :cal SetSyn("pilrc")<CR>
 an 50.80.120 &Syntax.PQ.Pam\ config :cal SetSyn("pamconf")<CR>
@@ -334,16 +342,17 @@ an 50.80.330 &Syntax.PQ.Povray.Povray\ scene\ descr :cal SetSyn("pov")<CR>
 an 50.80.340 &Syntax.PQ.Povray.Povray\ configuration :cal SetSyn("povini")<CR>
 an 50.80.350 &Syntax.PQ.Prescribe\ (Kyocera) :cal SetSyn("prescribe")<CR>
 an 50.80.360 &Syntax.PQ.Printcap :cal SetSyn("pcap")<CR>
-an 50.80.370 &Syntax.PQ.Procmail :cal SetSyn("procmail")<CR>
-an 50.80.380 &Syntax.PQ.Product\ Spec\ File :cal SetSyn("psf")<CR>
-an 50.80.390 &Syntax.PQ.Progress :cal SetSyn("progress")<CR>
-an 50.80.400 &Syntax.PQ.Prolog :cal SetSyn("prolog")<CR>
-an 50.80.410 &Syntax.PQ.Protocols :cal SetSyn("protocols")<CR>
-an 50.80.420 &Syntax.PQ.Purify\ log :cal SetSyn("purifylog")<CR>
-an 50.80.430 &Syntax.PQ.Pyrex :cal SetSyn("pyrex")<CR>
-an 50.80.440 &Syntax.PQ.Python :cal SetSyn("python")<CR>
-an 50.80.460 &Syntax.PQ.Quake :cal SetSyn("quake")<CR>
-an 50.80.470 &Syntax.PQ.Quickfix\ window :cal SetSyn("qf")<CR>
+an 50.80.370 &Syntax.PQ.Privoxy :cal SetSyn("privoxy")<CR>
+an 50.80.380 &Syntax.PQ.Procmail :cal SetSyn("procmail")<CR>
+an 50.80.390 &Syntax.PQ.Product\ Spec\ File :cal SetSyn("psf")<CR>
+an 50.80.400 &Syntax.PQ.Progress :cal SetSyn("progress")<CR>
+an 50.80.410 &Syntax.PQ.Prolog :cal SetSyn("prolog")<CR>
+an 50.80.420 &Syntax.PQ.Protocols :cal SetSyn("protocols")<CR>
+an 50.80.430 &Syntax.PQ.Purify\ log :cal SetSyn("purifylog")<CR>
+an 50.80.440 &Syntax.PQ.Pyrex :cal SetSyn("pyrex")<CR>
+an 50.80.450 &Syntax.PQ.Python :cal SetSyn("python")<CR>
+an 50.80.470 &Syntax.PQ.Quake :cal SetSyn("quake")<CR>
+an 50.80.480 &Syntax.PQ.Quickfix\ window :cal SetSyn("qf")<CR>
 an 50.90.100 &Syntax.R-Sg.R.R :cal SetSyn("r")<CR>
 an 50.90.110 &Syntax.R-Sg.R.R\ help :cal SetSyn("rhelp")<CR>
 an 50.90.120 &Syntax.R-Sg.R.R\ noweb :cal SetSyn("rnoweb")<CR>
@@ -438,9 +447,10 @@ an 50.100.560 &Syntax.Sh-S.Stata.SMCL :cal SetSyn("smcl")<CR>
 an 50.100.570 &Syntax.Sh-S.Stata.Stata :cal SetSyn("stata")<CR>
 an 50.100.580 &Syntax.Sh-S.Stored\ Procedures :cal SetSyn("stp")<CR>
 an 50.100.590 &Syntax.Sh-S.Strace :cal SetSyn("strace")<CR>
-an 50.100.600 &Syntax.Sh-S.Subversion\ commit :cal SetSyn("svn")<CR>
-an 50.100.610 &Syntax.Sh-S.Sudoers :cal SetSyn("sudoers")<CR>
-an 50.100.620 &Syntax.Sh-S.Sysctl\.conf :cal SetSyn("sysctl")<CR>
+an 50.100.600 &Syntax.Sh-S.Streaming\ descriptor\ file :cal SetSyn("sd")<CR>
+an 50.100.610 &Syntax.Sh-S.Subversion\ commit :cal SetSyn("svn")<CR>
+an 50.100.620 &Syntax.Sh-S.Sudoers :cal SetSyn("sudoers")<CR>
+an 50.100.630 &Syntax.Sh-S.Sysctl\.conf :cal SetSyn("sysctl")<CR>
 an 50.110.100 &Syntax.TUV.TADS :cal SetSyn("tads")<CR>
 an 50.110.110 &Syntax.TUV.Tags :cal SetSyn("tags")<CR>
 an 50.110.120 &Syntax.TUV.TAK.TAK\ compare :cal SetSyn("takcmp")<CR>
@@ -451,37 +461,39 @@ an 50.110.160 &Syntax.TUV.TealInfo :cal SetSyn("tli")<CR>
 an 50.110.170 &Syntax.TUV.Telix\ Salt :cal SetSyn("tsalt")<CR>
 an 50.110.180 &Syntax.TUV.Termcap/Printcap :cal SetSyn("ptcap")<CR>
 an 50.110.190 &Syntax.TUV.Terminfo :cal SetSyn("terminfo")<CR>
-an 50.110.200 &Syntax.TUV.TeX.TeX :cal SetSyn("tex")<CR>
-an 50.110.210 &Syntax.TUV.TeX.TeX\ configuration :cal SetSyn("texmf")<CR>
-an 50.110.220 &Syntax.TUV.TeX.Texinfo :cal SetSyn("texinfo")<CR>
-an 50.110.230 &Syntax.TUV.TF\ mud\ client :cal SetSyn("tf")<CR>
-an 50.110.240 &Syntax.TUV.Tidy\ configuration :cal SetSyn("tidy")<CR>
-an 50.110.250 &Syntax.TUV.Tilde :cal SetSyn("tilde")<CR>
-an 50.110.260 &Syntax.TUV.TPP :cal SetSyn("tpp")<CR>
-an 50.110.270 &Syntax.TUV.Trasys\ input :cal SetSyn("trasys")<CR>
-an 50.110.280 &Syntax.TUV.Trustees :cal SetSyn("trustees")<CR>
-an 50.110.290 &Syntax.TUV.TSS.Command\ Line :cal SetSyn("tsscl")<CR>
-an 50.110.300 &Syntax.TUV.TSS.Geometry :cal SetSyn("tssgm")<CR>
-an 50.110.310 &Syntax.TUV.TSS.Optics :cal SetSyn("tssop")<CR>
-an 50.110.330 &Syntax.TUV.Udev\ config :cal SetSyn("udevconf")<CR>
-an 50.110.340 &Syntax.TUV.Udev\ permissions :cal SetSyn("udevperm")<CR>
-an 50.110.350 &Syntax.TUV.Udev\ rules :cal SetSyn("udevrules")<CR>
-an 50.110.360 &Syntax.TUV.UIT/UIL :cal SetSyn("uil")<CR>
-an 50.110.370 &Syntax.TUV.UnrealScript :cal SetSyn("uc")<CR>
-an 50.110.380 &Syntax.TUV.Updatedb\.conf :cal SetSyn("updatedb")<CR>
-an 50.110.400 &Syntax.TUV.Valgrind :cal SetSyn("valgrind")<CR>
-an 50.110.410 &Syntax.TUV.Vera :cal SetSyn("vera")<CR>
-an 50.110.420 &Syntax.TUV.Verilog-AMS\ HDL :cal SetSyn("verilogams")<CR>
-an 50.110.430 &Syntax.TUV.Verilog\ HDL :cal SetSyn("verilog")<CR>
-an 50.110.440 &Syntax.TUV.Vgrindefs :cal SetSyn("vgrindefs")<CR>
-an 50.110.450 &Syntax.TUV.VHDL :cal SetSyn("vhdl")<CR>
-an 50.110.460 &Syntax.TUV.Vim.Vim\ help\ file :cal SetSyn("help")<CR>
-an 50.110.470 &Syntax.TUV.Vim.Vim\ script :cal SetSyn("vim")<CR>
-an 50.110.480 &Syntax.TUV.Vim.Viminfo\ file :cal SetSyn("viminfo")<CR>
-an 50.110.490 &Syntax.TUV.Virata\ config :cal SetSyn("virata")<CR>
-an 50.110.500 &Syntax.TUV.Visual\ Basic :cal SetSyn("vb")<CR>
-an 50.110.510 &Syntax.TUV.VRML :cal SetSyn("vrml")<CR>
-an 50.110.520 &Syntax.TUV.VSE\ JCL :cal SetSyn("vsejcl")<CR>
+an 50.110.200 &Syntax.TUV.TeX.TeX/LaTeX :cal SetSyn("tex")<CR>
+an 50.110.210 &Syntax.TUV.TeX.plain\ TeX :cal SetSyn("plaintex")<CR>
+an 50.110.220 &Syntax.TUV.TeX.ConTeXt :cal SetSyn("context")<CR>
+an 50.110.230 &Syntax.TUV.TeX.TeX\ configuration :cal SetSyn("texmf")<CR>
+an 50.110.240 &Syntax.TUV.TeX.Texinfo :cal SetSyn("texinfo")<CR>
+an 50.110.250 &Syntax.TUV.TF\ mud\ client :cal SetSyn("tf")<CR>
+an 50.110.260 &Syntax.TUV.Tidy\ configuration :cal SetSyn("tidy")<CR>
+an 50.110.270 &Syntax.TUV.Tilde :cal SetSyn("tilde")<CR>
+an 50.110.280 &Syntax.TUV.TPP :cal SetSyn("tpp")<CR>
+an 50.110.290 &Syntax.TUV.Trasys\ input :cal SetSyn("trasys")<CR>
+an 50.110.300 &Syntax.TUV.Trustees :cal SetSyn("trustees")<CR>
+an 50.110.310 &Syntax.TUV.TSS.Command\ Line :cal SetSyn("tsscl")<CR>
+an 50.110.320 &Syntax.TUV.TSS.Geometry :cal SetSyn("tssgm")<CR>
+an 50.110.330 &Syntax.TUV.TSS.Optics :cal SetSyn("tssop")<CR>
+an 50.110.350 &Syntax.TUV.Udev\ config :cal SetSyn("udevconf")<CR>
+an 50.110.360 &Syntax.TUV.Udev\ permissions :cal SetSyn("udevperm")<CR>
+an 50.110.370 &Syntax.TUV.Udev\ rules :cal SetSyn("udevrules")<CR>
+an 50.110.380 &Syntax.TUV.UIT/UIL :cal SetSyn("uil")<CR>
+an 50.110.390 &Syntax.TUV.UnrealScript :cal SetSyn("uc")<CR>
+an 50.110.400 &Syntax.TUV.Updatedb\.conf :cal SetSyn("updatedb")<CR>
+an 50.110.420 &Syntax.TUV.Valgrind :cal SetSyn("valgrind")<CR>
+an 50.110.430 &Syntax.TUV.Vera :cal SetSyn("vera")<CR>
+an 50.110.440 &Syntax.TUV.Verilog-AMS\ HDL :cal SetSyn("verilogams")<CR>
+an 50.110.450 &Syntax.TUV.Verilog\ HDL :cal SetSyn("verilog")<CR>
+an 50.110.460 &Syntax.TUV.Vgrindefs :cal SetSyn("vgrindefs")<CR>
+an 50.110.470 &Syntax.TUV.VHDL :cal SetSyn("vhdl")<CR>
+an 50.110.480 &Syntax.TUV.Vim.Vim\ help\ file :cal SetSyn("help")<CR>
+an 50.110.490 &Syntax.TUV.Vim.Vim\ script :cal SetSyn("vim")<CR>
+an 50.110.500 &Syntax.TUV.Vim.Viminfo\ file :cal SetSyn("viminfo")<CR>
+an 50.110.510 &Syntax.TUV.Virata\ config :cal SetSyn("virata")<CR>
+an 50.110.520 &Syntax.TUV.Visual\ Basic :cal SetSyn("vb")<CR>
+an 50.110.530 &Syntax.TUV.VRML :cal SetSyn("vrml")<CR>
+an 50.110.540 &Syntax.TUV.VSE\ JCL :cal SetSyn("vsejcl")<CR>
 an 50.120.100 &Syntax.WXYZ.WEB.CWEB :cal SetSyn("cweb")<CR>
 an 50.120.110 &Syntax.WXYZ.WEB.WEB :cal SetSyn("web")<CR>
 an 50.120.120 &Syntax.WXYZ.WEB.WEB\ Changes :cal SetSyn("change")<CR>
index d35f0561cbdba6ccaff7b4e259e7b2bee0b04c23..e70f995f68f5785f7ab22125012298695fc18f5d 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    AmigaDos
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Sep 06, 2005
-" Version:     5
+" Last Change: Sep 11, 2006
+" Version:     6
 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 
 " For version 5.x: Clear all syntax items
@@ -23,7 +23,7 @@ syn match amiAlias    "\<[a-zA-Z][a-zA-Z0-9]\+:"
 syn match amiAlias     "\<[a-zA-Z][a-zA-Z0-9]\+:[a-zA-Z0-9/]*/"
 
 " strings
-syn region amiString   start=+"+ end=+"+ oneline
+syn region amiString   start=+"+ end=+"+ oneline contains=@Spell
 
 " numbers
 syn match amiNumber    "\<\d\+\>"
index 74bf2a15ed8837ace0e396601df7dc5c85c08f6f..e73d6749129199cd0184b3019314d57226f628a4 100644 (file)
@@ -2,7 +2,8 @@
 " Language:    Microsoft VBScript Web Content (ASP)
 " Maintainer:  Devin Weaver <ktohg@tritarget.com> (non-functional)
 " URL:         http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken)
-" Last Change: 2004 Jul 29
+" Last Change: 2006 Jun 19
+"              by Dan Casey
 " Version:     $Revision$
 " Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian
 " notation, and extra highlighting.
@@ -35,7 +36,7 @@ syn cluster htmlPreProc add=AspVBScriptInsideHtmlTags
 hi def AspVBSVariableSimple   term=standout  ctermfg=3  guifg=#99ee99
 hi def AspVBSVariableComplex  term=standout  ctermfg=3  guifg=#ee9900
 syn match AspVBSVariableSimple  contained "\<\(bln\|byt\|dtm\=\|dbl\|int\|str\)\u\w*"
-syn match AspVBSVariableComplex contained "\<\(arr\|obj\)\u\w*"
+syn match AspVBSVariableComplex contained "\<\(arr\|ary\|obj\)\u\w*"
 
 
 " Functions and methods that are in VB but will cause errors in an ASP page
@@ -67,8 +68,9 @@ syn match AspVBSError contained "Respose\.\S*"
 
 " AspVBScript Reserved Words.
 syn match AspVBSStatement contained "\<On\s\+Error\s\+\(Resume\s\+Next\|goto\s\+0\)\>\|\<Next\>"
-syn match AspVBSStatement contained "\<End\s\+\(If\|For\|Select\|Class\|Function\|Sub\|With\)\>"
+syn match AspVBSStatement contained "\<End\s\+\(If\|For\|Select\|Class\|Function\|Sub\|With\|Property\)\>"
 syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\)\>"
+syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\|Property\)\>"
 syn match AspVBSStatement contained "\<Option\s\+Explicit\>"
 syn match AspVBSStatement contained "\<For\s\+Each\>\|\<For\>"
 syn match AspVBSStatement contained "\<Set\>"
diff --git a/runtime/syntax/autoit.vim b/runtime/syntax/autoit.vim
new file mode 100644 (file)
index 0000000..47210f5
--- /dev/null
@@ -0,0 +1,1111 @@
+" Vim syntax file
+"
+" Language:    AutoIt v3 (http://www.autoitscript.com/autoit3/)
+" Maintainer:  Jared Breland <jbreland@legroom.net>
+" Authored By: Riccardo Casini <ric@libero.it>
+" Script URL:  http://www.vim.org/scripts/script.php?script_id=1239
+" ChangeLog:   Please visit the script URL for detailed change information
+
+" AutoIt is not case dependent
+syn case ignore
+
+" Definitions for AutoIt reserved keywords
+syn keyword autoitKeyword Default False True
+syn keyword autoitKeyword Const Dim Global Local ReDim
+syn keyword autoitKeyword If Else ElseIf Then EndIf
+syn keyword autoitKeyword Select Switch Case EndSelect EndSwitch
+syn keyword autoitKeyword Enum For In To Step Next
+syn keyword autoitKeyword With While EndWith Wend Do Until
+syn keyword autoitKeyword ContinueCase ContinueLoop ExitLoop Exit
+
+" inside script inclusion and global options
+syn match autoitIncluded display contained "<[^>]*>"
+syn match autoitInclude        display "^\s*#\s*include\>\s*["<]"
+       \ contains=autoitIncluded,autoitString
+syn match autoitInclude "^\s*#include-once\>"
+syn match autoitInclude "^\s*#NoTrayIcon\>"
+syn match autoitInclude "^\s*#RequireAdmin\>"
+
+" user-defined functions
+syn keyword autoitKeyword Func ByRef EndFunc Return OnAutoItStart OnAutoItExit
+
+" built-in functions
+" environment management
+syn keyword autoitFunction ClipGet ClipPut EnvGet EnvSet EnvUpdate MemGetStats
+" file, directory, and disk management
+syn keyword autoitFunction ConsoleRead ConsoleWrite ConsoleWriteError
+syn keyword autoitFunction DirCopy DirCreate DirGetSize DirMove DirRemove
+syn keyword autoitFunction DriveGetDrive DriveGetFileSystem DriveGetLabel
+       \ DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet
+       \ DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus
+syn keyword autoitFunction FileChangeDir FileClose FileCopy FileCreateNTFSLink
+       \ FileCreateShortcut FileDelete FileExists FileFindFirstFile
+       \ FileFindNextFile FileGetAttrib FileGetLongName FileGetShortcut
+       \ FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall
+       \ FileMove FileOpen FileOpenDialog FileRead FileReadLine FileRecycle
+       \ FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib
+       \ FileSetTime FileWrite FileWriteLine
+syn keyword autoitFunction IniDelete IniRead IniReadSection IniReadSectionNames
+       \ IniRenameSection IniWrite IniWriteSection
+syn keyword autoitFunction StderrRead StdinWrite StdoutRead
+" graphic and sound
+syn keyword autoitFunction Beep PixelChecksum PixelGetColor PixelSearch
+       \ SoundPlay SoundSetWaveVolume
+" gui reference
+syn keyword autoitFunction GUICreate GUIDelete GUICtrlGetHandle GUICtrlGetState
+       \ GUICtrlRead GUICtrlRecvMsg GUICtrlSendMsg GUICtrlSendToDummy
+       \ GUIGetCursorInfo GUIGetMsg GUIRegisterMsg GUIStartGroup GUISwitch
+syn keyword autoitFunction GUICtrlCreateAvi GUICtrlCreateButton
+       \ GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu
+       \ GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit
+       \ GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon
+       \ GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList
+       \ GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu
+       \ GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj
+       \ GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio
+       \ GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem
+       \ GUICtrlCreateTreeView GUICtrlCreateTreeViewItem
+       \ GUICtrlCreateUpDown GUICtrlDelete
+syn keyword autoitFunction GUICtrlRegisterListViewSort GUICtrlSetBkColor
+       \ GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetFont
+       \ GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent
+       \ GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle
+       \ GUICtrlSetTip
+syn keyword autoitFunction GUISetBkColor GUISetCoord GUISetCursor GUISetFont
+       \ GUISetHelp GUISetIcon GUISetOnEvent GUISetState
+" keyboard control
+syn keyword autoitFunction HotKeySet Send
+" math
+syn keyword autoitFunction Abs ACos ASin ATan BitAND BitNOT BitOR BitRotate
+       \ BitShift BitXOR Cos Ceiling Exp Floor Log Mod Random Round Sin Sqrt
+       \ SRandom Tan
+" message boxes and dialogs
+syn keyword autoitFunction InputBox MsgBox ProgressOff ProgressOn ProgressSet
+       \ SplashImageOn SplashOff SplashTextOn ToolTip
+" miscellaneous
+syn keyword autoitFunction AdlibDisable AdlibEnable AutoItSetOption
+       \ AutoItWinGetTitle AutoItWinSetTitle BlockInput Break Call CDTray
+       \ Execute Opt SetError SetExtended
+" mouse control
+syn keyword autoitFunction MouseClick MouseClickDrag MouseDown MouseGetCursor
+       \ MouseGetPos MouseMove MouseUp MouseWheel
+" network
+syn keyword autoitFunction FtpSetProxy HttpSetProxy InetGet InetGetSize Ping
+       \ TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIp TCPRecv
+       \ TCPSend TCPShutDown TCPStartup UDPBind UDPCloseSocket UDPOpen UDPRecv
+       \ UDPSend UDPShutdown UDPStartup
+" obj/com reference
+syn keyword autoitFunction ObjCreate ObjEvent ObjGet ObjName
+" process management
+syn keyword autoitFunction DllCall DllClose DllOpen DllStructCreate
+       \ DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData
+       \ ProcessClose ProcessExists ProcessSetPriority ProcessList ProcessWait
+       \ ProcessWaitClose Run RunAsSet RunWait ShellExecute ShellExecuteWait
+       \ Shutdown
+       " removed from 3.2.0 docs - PluginClose PluginOpen
+" registry management
+syn keyword autoitFunction RegDelete RegEnumKey RegEnumVal RegRead RegWrite
+" string management
+syn keyword autoitFunction StringAddCR StringFormat StringInStr StringIsAlNum
+       \ StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt
+       \ StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft
+       \ StringLen StringLower StringMid StringRegExp StringRegExpReplace
+       \ StringReplace StringRight StringSplit StringStripCR StringStripWS
+       \ StringTrimLeft StringTrimRight StringUpper
+" timer and delay
+syn keyword autoitFunction Sleep TimerInit TimerDiff
+" tray
+syn keyword autoitFunction TrayCreateItem TrayCreateMenu TrayItemDelete
+       \ TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent
+       \ TrayItemSetState TrayItemSetText TrayGetMsg TraySetClick TraySetIcon
+       \ TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip
+" variables and conversions
+syn keyword autoitFunction Asc Assign Binary Chr Dec Eval Hex HWnd Int IsAdmin
+       \ IsArray IsBinaryString IsBool IsDeclared IsDllStruct IsFloat IsHWnd
+       \ IsInt IsKeyword IsNumber IsObj IsString Number String UBound
+" window management
+syn keyword autoitFunction WinActivate WinActive WinClose WinExists WinFlash
+       \ WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos
+       \ WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList
+       \ WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove
+       \ WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive
+       \ WinWaitClose WinWaitNotActive
+syn keyword autoitFunction ControlClick ControlCommand ControlDisable
+       \ ControlEnable ControlFocus ControlGetFocus ControlGetHandle
+       \ ControlGetPos ControlGetText ControlHide ControlListView ControlMove
+       \ ControlSend ControlSetText ControlShow StatusBarGetText
+
+" user defined functions
+" array
+syn keyword autoitFunction _ArrayAdd _ArrayBinarySearch _ArrayCreate
+       \ _ArrayDelete _ArrayDisplay _ArrayInsert _ArrayMax _ArrayMaxIndex
+       \ _ArrayMin _ArrayMinIndex _ArrayPop _ArrayPush _ArrayReverse
+       \ _ArraySearch _ArraySort _ArraySwap _ArrayToClip _ArrayToString
+       \ _ArrayTrim
+" color
+syn keyword autoitFunction _ColorgetBlue _ColorGetGreen _ColorGetRed
+" date
+syn keyword autoitFunction _DateAdd _DateDayOfWeek _DateDaysInMonth _DateDiff
+       \ _DateIsLeapYear _DateIsValid _DateTimeFormat _DateTimeSplit
+       \ _DateToDayOfWeek _ToDayOfWeekISO _DateToDayValue _DayValueToDate _Now
+       \ _NowCalc _NowCalcDate _NowDate _NowTime _SetDate _SetTime _TicksToTime
+       \ _TimeToTicks _WeekNumberISO
+" file
+syn keyword autoitFunction _FileCountLines _FileCreate _FileListToArray
+       \ _FilePrint _FileReadToArray _FileWriteFromArray _FileWriteLog
+       \ _FileWriteToLine _PathFull _PathMake _PathSplit _ReplaceStringInFile
+       \ _TempFile
+" guicombo
+syn keyword autoitFunction _GUICtrlComboAddDir _GUICtrlComboAddString
+       \ _GUICtrlComboAutoComplete _GUICtrlComboDeleteString
+       \ _GUICtrlComboFindString _GUICtrlComboGetCount _GUICtrlComboGetCurSel
+       \ _GUICtrlComboGetDroppedControlRect _GUICtrlComboGetDroppedState
+       \ _GUICtrlComboGetDroppedWidth _GUICtrlComboGetEditSel
+       \ _GUICtrlComboGetExtendedUI _GUICtrlComboGetHorizontalExtent
+       \ _GUICtrlComboGetItemHeight _GUICtrlComboGetLBText
+       \ _GUICtrlComboGetLBTextLen _GUICtrlComboGetList _GUICtrlComboGetLocale
+       \ _GUICtrlComboGetMinVisible _GUICtrlComboGetTopIndex
+       \ _GUICtrlComboInitStorage _GUICtrlComboInsertString
+       \ _GUICtrlComboLimitText _GUICtrlComboResetContent
+       \ _GUICtrlComboSelectString _GUICtrlComboSetCurSel
+       \ _GUICtrlComboSetDroppedWidth _GUICtrlComboSetEditSel
+       \ _GUICtrlComboSetExtendedUI _GUICtrlComboSetHorizontalExtent
+       \ _GUICtrlComboSetItemHeight _GUICtrlComboSetMinVisible
+       \ _GUICtrlComboSetTopIndex _GUICtrlComboShowDropDown
+" guiedit
+syn keyword autoitFunction _GUICtrlEditCanUndo _GUICtrlEditEmptyUndoBuffer
+       \ _GuiCtrlEditFind _GUICtrlEditGetFirstVisibleLine _GUICtrlEditGetLine
+       \ _GUICtrlEditGetLineCount _GUICtrlEditGetModify _GUICtrlEditGetRect
+       \ _GUICtrlEditGetSel _GUICtrlEditLineFromChar _GUICtrlEditLineIndex
+       \ _GUICtrlEditLineLength _GUICtrlEditLineScroll _GUICtrlEditReplaceSel
+       \ _GUICtrlEditScroll _GUICtrlEditSetModify _GUICtrlEditSetRect
+       \ _GUICtrlEditSetSel _GUICtrlEditUndo
+" guiipaddress
+syn keyword autoitFunction _GUICtrlIpAddressClear _GUICtrlIpAddressCreate
+       \ _GUICtrlIpAddressDelete _GUICtrlIpAddressGet _GUICtrlIpAddressIsBlank
+       \ _GUICtrlIpAddressSet _GUICtrlIpAddressSetFocus
+       \ _GUICtrlIpAddressSetFont
+       \ _GUICtrlIpAddressSetRange _GUICtrlIpAddressShowHide
+" guilist
+syn keyword autoitFunction _GUICtrlListAddDir _GUICtrlListAddItem
+       \ _GUICtrlListClear
+       \ _GUICtrlListCount _GUICtrlListDeleteItem _GUICtrlListFindString
+       \ _GUICtrlListGetAnchorIndex _GUICtrlListGetCaretIndex
+       \ _GUICtrlListGetHorizontalExtent _GUICtrlListGetInfo
+       \ _GUICtrlListGetItemRect _GUICtrlListGetLocale _GUICtrlListGetSelCount
+       \ _GUICtrlListGetSelItems _GUICtrlListGetSelItemsText
+       \ _GUICtrlListGetSelState _GUICtrlListGetText _GUICtrlListGetTextLen
+       \ _GUICtrlListGetTopIndex _GUICtrlListInsertItem
+       \ _GUICtrlListReplaceString _GUICtrlListSelectedIndex
+       \ _GUICtrlListSelectIndex _GUICtrlListSelectString
+       \ _GUICtrlListSelItemRange _GUICtrlListSelItemRangeEx
+       \ _GUICtrlListSetAnchorIndex _GUICtrlListSetCaretIndex
+       \ _GUICtrlListSetHorizontalExtent _GUICtrlListSetLocale
+       \ _GUICtrlListSetSel _GUICtrlListSetTopIndex _GUICtrlListSort
+       \ _GUICtrlListSwapString
+" guilistview
+syn keyword autoitFunction _GUICtrlListViewCopyItems
+       \ _GUICtrlListViewDeleteAllItems _GUICtrlListViewDeleteColumn
+       \ _GUICtrlListViewDeleteItem _GUICtrlListViewDeleteItemsSelected
+       \ _GUICtrlListViewEnsureVisible _GUICtrlListViewFindItem
+       \ _GUICtrlListViewGetBackColor _GUICtrlListViewGetCallBackMask
+       \ _GUICtrlListViewGetCheckedState _GUICtrlListViewGetColumnOrder
+       \ _GUICtrlListViewGetColumnWidth _GUICtrlListViewGetCounterPage
+       \ _GUICtrlListViewGetCurSel _GUICtrlListViewGetExtendedListViewStyle
+       \ _GUICtrlListViewGetHeader _GUICtrlListViewGetHotCursor
+       \ _GUICtrlListViewGetHotItem _GUICtrlListViewGetHoverTime
+       \ _GUICtrlListViewGetItemCount _GUICtrlListViewGetItemText
+       \ _GUICtrlListViewGetItemTextArray _GUICtrlListViewGetNextItem
+       \ _GUICtrlListViewGetSelectedCount _GUICtrlListViewGetSelectedIndices
+       \ _GUICtrlListViewGetSubItemsCount _GUICtrlListViewGetTopIndex
+       \ _GUICtrlListViewGetUnicodeFormat _GUICtrlListViewHideColumn
+       \ _GUICtrlListViewInsertColumn _GUICtrlListViewInsertItem
+       \ _GUICtrlListViewJustifyColumn _GUICtrlListViewScroll
+       \ _GUICtrlListViewSetCheckState _GUICtrlListViewSetColumnHeaderText
+       \ _GUICtrlListViewSetColumnOrder _GUICtrlListViewSetColumnWidth
+       \ _GUICtrlListViewSetHotItem _GUICtrlListViewSetHoverTime
+       \ _GUICtrlListViewSetItemCount _GUICtrlListViewSetItemSelState
+       \ _GUICtrlListViewSetItemText _GUICtrlListViewSort
+" guimonthcal
+syn keyword autoitFunction _GUICtrlMonthCalGet1stDOW _GUICtrlMonthCalGetColor
+       \ _GUICtrlMonthCalGetDelta _GUICtrlMonthCalGetMaxSelCount
+       \ _GUICtrlMonthCalGetMaxTodayWidth _GUICtrlMonthCalGetMinReqRect
+       \ _GUICtrlMonthCalSet1stDOW _GUICtrlMonthCalSetColor
+       \ _GUICtrlMonthCalSetDelta _GUICtrlMonthCalSetMaxSelCount
+" guislider
+syn keyword autoitFunction _GUICtrlSliderClearTics _GUICtrlSliderGetLineSize
+       \ _GUICtrlSliderGetNumTics _GUICtrlSliderGetPageSize
+       \ _GUICtrlSliderGetPos _GUICtrlSliderGetRangeMax
+       \ _GUICtrlSliderGetRangeMin _GUICtrlSliderSetLineSize
+       \ _GUICtrlSliderSetPageSize _GUICtrlSliderSetPos
+       \ _GUICtrlSliderSetTicFreq
+" guistatusbar
+syn keyword autoitFunction _GuiCtrlStatusBarCreate
+       \ _GUICtrlStatusBarCreateProgress _GUICtrlStatusBarDelete
+       \ _GuiCtrlStatusBarGetBorders _GuiCtrlStatusBarGetIcon
+       \ _GuiCtrlStatusBarGetParts _GuiCtrlStatusBarGetRect
+       \ _GuiCtrlStatusBarGetText _GuiCtrlStatusBarGetTextLength
+       \ _GuiCtrlStatusBarGetTip _GuiCtrlStatusBarGetUnicode
+       \ _GUICtrlStatusBarIsSimple _GuiCtrlStatusBarResize
+       \ _GuiCtrlStatusBarSetBKColor _GuiCtrlStatusBarSetIcon
+       \ _GuiCtrlStatusBarSetMinHeight _GUICtrlStatusBarSetParts
+       \ _GuiCtrlStatusBarSetSimple _GuiCtrlStatusBarSetText
+       \ _GuiCtrlStatusBarSetTip _GuiCtrlStatusBarSetUnicode
+       \ _GUICtrlStatusBarShowHide 
+" guitab
+syn keyword autoitFunction _GUICtrlTabDeleteAllItems _GUICtrlTabDeleteItem
+       \ _GUICtrlTabDeselectAll _GUICtrlTabGetCurFocus _GUICtrlTabGetCurSel
+       \ _GUICtrlTabGetExtendedStyle _GUICtrlTabGetItemCount
+       \ _GUICtrlTabGetItemRect _GUICtrlTabGetRowCount
+       \ _GUICtrlTabGetUnicodeFormat _GUICtrlTabHighlightItem
+       \ _GUICtrlTabSetCurFocus _GUICtrlTabSetCurSel
+       \ _GUICtrlTabSetMinTabWidth _GUICtrlTabSetUnicodeFormat
+" guitreeview
+syn keyword autoitFunction _GUICtrlTreeViewDeleteAllItems
+       \ _GUICtrlTreeViewDeleteItem _GUICtrlTreeViewExpand
+       \ _GUICtrlTreeViewGetBkColor _GUICtrlTreeViewGetCount
+       \ _GUICtrlTreeViewGetIndent _GUICtrlTreeViewGetLineColor
+       \ _GUICtrlTreeViewGetParentHandle _GUICtrlTreeViewGetParentID
+       \ _GUICtrlTreeViewGetState _GUICtrlTreeViewGetText
+       \ _GUICtrlTreeViewGetTextColor _GUICtrlTreeViewItemGetTree
+       \ _GUICtrlTreeViewInsertItem _GUICtrlTreeViewSetBkColor
+       \ _GUICtrlTreeViewSetIcon _GUICtrlTreeViewSetIndent
+       \ _GUICtrlTreeViewSetLineColor GUICtrlTreeViewSetState
+       \ _GUICtrlTreeViewSetText _GUICtrlTreeViewSetTextColor
+       \ _GUICtrlTreeViewSort
+" ie
+syn keyword autoitFunction _IE_Example _IE_Introduction _IE_VersionInfo
+       \ _IEAction _IEAttach _IEBodyReadHTML _IEBodyReadText _IEBodyWriteHTML
+       \ _IECreate _IECreateEmbedded _IEDocGetObj _IEDocInsertHTML
+       \ _IEDocInsertText _IEDocReadHTML _IEDocWriteHTML
+       \ _IEErrorHandlerDeRegister _IEErrorHandlerRegister _IEErrorNotify
+       \ _IEFormElementCheckboxSelect _IEFormElementGetCollection
+       \ _IEFormElementGetObjByName _IEFormElementGetValue
+       \ _IEFormElementOptionSelect _IEFormElementRadioSelect
+       \ _IEFormElementSetValue _IEFormGetCollection _IEFormGetObjByName
+       \ _IEFormImageClick _IEFormReset _IEFormSubmit _IEFrameGetCollection
+       \ _IEFrameGetObjByName _IEGetObjByName _IEHeadInsertEventScript
+       \ _IEImgClick _IEImgGetCollection _IEIsFrameSet _IELinkClickByIndex
+       \ _IELinkClickByText _IELinkGetCollection _IELoadWait _IELoadWaitTimeout
+       \ _IENavigate _IEPropertyGet _IEPropertySet _IEQuit
+       \ _IETableGetCollection _IETableWriteToArray _IETagNameAllGetCollection
+       \  _IETagNameGetCollection
+" inet
+syn keyword autoitFunction _GetIP _INetExplorerCapable _INetGetSource _INetMail
+       \ _INetSmtpMail _TCPIpToName
+" math
+syn keyword autoitFunction _Degree _MathCheckDiv _Max _Min _Radian
+" miscellaneous
+syn keyword autoitFunction _ChooseColor _ChooseFont _ClipPutFile _Iif
+       \ _IsPressed _MouseTrap _SendMessage _Singleton
+" process
+syn keyword autoitFunction _ProcessGetName _ProcessGetPriority _RunDOS
+" sound
+syn keyword autoitFunction _SoundClose _SoundLength _SoundOpen _SoundPause
+       \ _SoundPlay _SoundPos _SoundResume _SoundSeek _SoundStatus _SoundStop
+" sqlite
+syn keyword autoitFunction _SQLite_Changes _SQLite_Close
+       \ _SQLite_Display2DResult _SQLite_Encode _SQLite_ErrCode _SQLite_ErrMsg
+       \ _SQLite_Escape _SQLite_Exec _SQLite_FetchData _SQLite_FetchNames
+       \ _SQLite_GetTable _SQLite_GetTable2D _SQLite_LastInsertRowID
+       \ _SQLite_LibVersion _SQLite_Open _SQLite_Query _SQLite_QueryFinalize
+       \ _SQLite_QueryReset _SQLite_QuerySingleRow _SQLite_SaveMode
+       \ _SQLite_SetTimeout _SQLite_Shutdown _SQLite_SQLiteExe _SQLite_Startup
+       \ _SQLite_TotalChanges
+" string
+syn keyword autoitFunction _HexToString _StringAddComma _StringBetween
+       \ _StringEncrypt _StringInsert _StringProper _StringRepeat
+       \ _StringReverse _StringToHex
+" visa
+syn keyword autoitFunction _viClose _viExecCommand _viFindGpib _viGpibBusReset
+       \ _viGTL _viOpen _viSetAttribute _viSetTimeout
+
+" read-only macros
+syn match autoitBuiltin "@AppData\(Common\)\=Dir"
+syn match autoitBuiltin "@AutoItExe"
+syn match autoitBuiltin "@AutoItPID"
+syn match autoitBuiltin "@AutoItVersion"
+syn match autoitBuiltin "@COM_EventObj"
+syn match autoitBuiltin "@CommonFilesDir"
+syn match autoitBuiltin "@Compiled"
+syn match autoitBuiltin "@ComputerName"
+syn match autoitBuiltin "@ComSpec"
+syn match autoitBuiltin "@CR\(LF\)\="
+syn match autoitBuiltin "@Desktop\(Common\)\=Dir"
+syn match autoitBuiltin "@DesktopDepth"
+syn match autoitBuiltin "@DesktopHeight"
+syn match autoitBuiltin "@DesktopRefresh"
+syn match autoitBuiltin "@DesktopWidth"
+syn match autoitBuiltin "@DocumentsCommonDir"
+syn match autoitBuiltin "@Error"
+syn match autoitBuiltin "@ExitCode"
+syn match autoitBuiltin "@ExitMethod"
+syn match autoitBuiltin "@Extended"
+syn match autoitBuiltin "@Favorites\(Common\)\=Dir"
+syn match autoitBuiltin "@GUI_CtrlId"
+syn match autoitBuiltin "@GUI_CtrlHandle"
+syn match autoitBuiltin "@GUI_DragId"
+syn match autoitBuiltin "@GUI_DragFile"
+syn match autoitBuiltin "@GUI_DropId"
+syn match autoitBuiltin "@GUI_WinHandle"
+syn match autoitBuiltin "@HomeDrive"
+syn match autoitBuiltin "@HomePath"
+syn match autoitBuiltin "@HomeShare"
+syn match autoitBuiltin "@HOUR"
+syn match autoitBuiltin "@HotKeyPressed"
+syn match autoitBuiltin "@InetGetActive"
+syn match autoitBuiltin "@InetGetBytesRead"
+syn match autoitBuiltin "@IPAddress[1234]"
+syn match autoitBuiltin "@KBLayout"
+syn match autoitBuiltin "@LF"
+syn match autoitBuiltin "@Logon\(DNS\)\=Domain"
+syn match autoitBuiltin "@LogonServer"
+syn match autoitBuiltin "@MDAY"
+syn match autoitBuiltin "@MIN"
+syn match autoitBuiltin "@MON"
+syn match autoitBuiltin "@MyDocumentsDir"
+syn match autoitBuiltin "@NumParams"
+syn match autoitBuiltin "@OSBuild"
+syn match autoitBuiltin "@OSLang"
+syn match autoitBuiltin "@OSServicePack"
+syn match autoitBuiltin "@OSTYPE"
+syn match autoitBuiltin "@OSVersion"
+syn match autoitBuiltin "@ProcessorArch"
+syn match autoitBuiltin "@ProgramFilesDir"
+syn match autoitBuiltin "@Programs\(Common\)\=Dir"
+syn match autoitBuiltin "@ScriptDir"
+syn match autoitBuiltin "@ScriptFullPath"
+syn match autoitBuiltin "@ScriptLineNumber"
+syn match autoitBuiltin "@ScriptName"
+syn match autoitBuiltin "@SEC"
+syn match autoitBuiltin "@StartMenu\(Common\)\=Dir"
+syn match autoitBuiltin "@Startup\(Common\)\=Dir"
+syn match autoitBuiltin "@SW_DISABLE"
+syn match autoitBuiltin "@SW_ENABLE"
+syn match autoitBuiltin "@SW_HIDE"
+syn match autoitBuiltin "@SW_LOCK"
+syn match autoitBuiltin "@SW_MAXIMIZE"
+syn match autoitBuiltin "@SW_MINIMIZE"
+syn match autoitBuiltin "@SW_RESTORE"
+syn match autoitBuiltin "@SW_SHOW"
+syn match autoitBuiltin "@SW_SHOWDEFAULT"
+syn match autoitBuiltin "@SW_SHOWMAXIMIZED"
+syn match autoitBuiltin "@SW_SHOWMINIMIZED"
+syn match autoitBuiltin "@SW_SHOWMINNOACTIVE"
+syn match autoitBuiltin "@SW_SHOWNA"
+syn match autoitBuiltin "@SW_SHOWNOACTIVATE"
+syn match autoitBuiltin "@SW_SHOWNORMAL"
+syn match autoitBuiltin "@SW_UNLOCK"
+syn match autoitBuiltin "@SystemDir"
+syn match autoitBuiltin "@TAB"
+syn match autoitBuiltin "@TempDir"
+syn match autoitBuiltin "@TRAY_ID"
+syn match autoitBuiltin "@TrayIconFlashing"
+syn match autoitBuiltin "@TrayIconVisible"
+syn match autoitBuiltin "@UserProfileDir"
+syn match autoitBuiltin "@UserName"
+syn match autoitBuiltin "@WDAY"
+syn match autoitBuiltin "@WindowsDir"
+syn match autoitBuiltin "@WorkingDir"
+syn match autoitBuiltin "@YDAY"
+syn match autoitBuiltin "@YEAR"
+
+"comments and commenting-out
+syn match autoitComment ";.*"
+"in this way also #ce alone will be highlighted
+syn match autoitCommDelimiter "^\s*#comments-start\>"
+syn match autoitCommDelimiter "^\s*#cs\>"
+syn match autoitCommDelimiter "^\s*#comments-end\>"
+syn match autoitCommDelimiter "^\s*#ce\>"
+syn region autoitComment
+       \ matchgroup=autoitCommDelimiter
+       \ start="^\s*#comments-start\>" start="^\s*#cs\>"
+       \ end="^\s*#comments-end\>" end="^\s*#ce\>"
+
+"one character operators
+syn match autoitOperator "[-+*/&^=<>][^-+*/&^=<>]"me=e-1
+"two characters operators
+syn match autoitOperator "==[^=]"me=e-1
+syn match autoitOperator "<>"
+syn match autoitOperator "<="
+syn match autoitOperator ">="
+syn match autoitOperator "+="
+syn match autoitOperator "-="
+syn match autoitOperator "*="
+syn match autoitOperator "/="
+syn match autoitOperator "&="
+syn keyword autoitOperator NOT AND OR
+
+syn match autoitParen "(\|)"
+syn match autoitBracket "\[\|\]"
+syn match autoitComma ","
+
+"numbers must come after operator '-'
+"decimal numbers without a dot
+syn match autoitNumber "-\=\<\d\+\>"
+"hexadecimal numbers without a dot
+syn match autoitNumber "-\=\<0x\x\+\>"
+"floating point number with dot (inside or at end)
+
+syn match autoitNumber "-\=\<\d\+\.\d*\>"
+"floating point number, starting with a dot
+syn match autoitNumber "-\=\<\.\d\+\>"
+"scientific notation numbers without dots
+syn match autoitNumber "-\=\<\d\+e[-+]\=\d\+\>"
+"scientific notation numbers with dots
+syn match autoitNumber "-\=\<\(\(\d\+\.\d*\)\|\(\.\d\+\)\)\(e[-+]\=\d\+\)\=\>"
+
+"string constants
+"we want the escaped quotes marked in red
+syn match autoitDoubledSingles +''+ contained
+syn match autoitDoubledDoubles +""+ contained
+"we want the continuation character marked in red
+"(also at the top level, not just contained)
+syn match autoitCont "_$"
+
+" send key list - must be defined before autoitStrings
+syn match autoitSend "{!}" contained
+syn match autoitSend "{#}" contained
+syn match autoitSend "{+}" contained
+syn match autoitSend "{^}" contained
+syn match autoitSend "{{}" contained
+syn match autoitSend "{}}" contained
+syn match autoitSend "{SPACE}" contained
+syn match autoitSend "{ENTER}" contained
+syn match autoitSend "{ALT}" contained
+syn match autoitSend "{BACKSPACE}" contained
+syn match autoitSend "{BS}" contained
+syn match autoitSend "{DELETE}" contained
+syn match autoitSend "{DEL}" contained
+syn match autoitSend "{UP}" contained
+syn match autoitSend "{DOWN}" contained
+syn match autoitSend "{LEFT}" contained
+syn match autoitSend "{RIGHT}" contained
+syn match autoitSend "{HOME}" contained
+syn match autoitSend "{END}" contained
+syn match autoitSend "{ESCAPE}" contained
+syn match autoitSend "{ESC}" contained
+syn match autoitSend "{INSERT}" contained
+syn match autoitSend "{INS}" contained
+syn match autoitSend "{PGUP}" contained
+syn match autoitSend "{PGDN}" contained
+syn match autoitSend "{F1}" contained
+syn match autoitSend "{F2}" contained
+syn match autoitSend "{F3}" contained
+syn match autoitSend "{F4}" contained
+syn match autoitSend "{F5}" contained
+syn match autoitSend "{F6}" contained
+syn match autoitSend "{F7}" contained
+syn match autoitSend "{F8}" contained
+syn match autoitSend "{F9}" contained
+syn match autoitSend "{F10}" contained
+syn match autoitSend "{F11}" contained
+syn match autoitSend "{F12}" contained
+syn match autoitSend "{TAB}" contained
+syn match autoitSend "{PRINTSCREEN}" contained
+syn match autoitSend "{LWIN}" contained
+syn match autoitSend "{RWIN}" contained
+syn match autoitSend "{NUMLOCK}" contained
+syn match autoitSend "{CTRLBREAK}" contained
+syn match autoitSend "{PAUSE}" contained
+syn match autoitSend "{CAPSLOCK}" contained
+syn match autoitSend "{NUMPAD0}" contained
+syn match autoitSend "{NUMPAD1}" contained
+syn match autoitSend "{NUMPAD2}" contained
+syn match autoitSend "{NUMPAD3}" contained
+syn match autoitSend "{NUMPAD4}" contained
+syn match autoitSend "{NUMPAD5}" contained
+syn match autoitSend "{NUMPAD6}" contained
+syn match autoitSend "{NUMPAD7}" contained
+syn match autoitSend "{NUMPAD8}" contained
+syn match autoitSend "{NUMPAD9}" contained
+syn match autoitSend "{NUMPADMULT}" contained
+syn match autoitSend "{NUMPADADD}" contained
+syn match autoitSend "{NUMPADSUB}" contained
+syn match autoitSend "{NUMPADDIV}" contained
+syn match autoitSend "{NUMPADDOT}" contained
+syn match autoitSend "{NUMPADENTER}" contained
+syn match autoitSend "{APPSKEY}" contained
+syn match autoitSend "{LALT}" contained
+syn match autoitSend "{RALT}" contained
+syn match autoitSend "{LCTRL}" contained
+syn match autoitSend "{RCTRL}" contained
+syn match autoitSend "{LSHIFT}" contained
+syn match autoitSend "{RSHIFT}" contained
+syn match autoitSend "{SLEEP}" contained
+syn match autoitSend "{ALTDOWN}" contained
+syn match autoitSend "{SHIFTDOWN}" contained
+syn match autoitSend "{CTRLDOWN}" contained
+syn match autoitSend "{LWINDOWN}" contained
+syn match autoitSend "{RWINDOWN}" contained
+syn match autoitSend "{ASC \d\d\d\d}" contained
+syn match autoitSend "{BROWSER_BACK}" contained
+syn match autoitSend "{BROWSER_FORWARD}" contained
+syn match autoitSend "{BROWSER_REFRESH}" contained
+syn match autoitSend "{BROWSER_STOP}" contained
+syn match autoitSend "{BROWSER_SEARCH}" contained
+syn match autoitSend "{BROWSER_FAVORITES}" contained
+syn match autoitSend "{BROWSER_HOME}" contained
+syn match autoitSend "{VOLUME_MUTE}" contained
+syn match autoitSend "{VOLUME_DOWN}" contained
+syn match autoitSend "{VOLUME_UP}" contained
+syn match autoitSend "{MEDIA_NEXT}" contained
+syn match autoitSend "{MEDIA_PREV}" contained
+syn match autoitSend "{MEDIA_STOP}" contained
+syn match autoitSend "{MEDIA_PLAY_PAUSE}" contained
+syn match autoitSend "{LAUNCH_MAIL}" contained
+syn match autoitSend "{LAUNCH_MEDIA}" contained
+syn match autoitSend "{LAUNCH_APP1}" contained
+syn match autoitSend "{LAUNCH_APP2}" contained
+
+"this was tricky!
+"we use an oneline region, instead of a match, in order to use skip=
+"matchgroup= so start and end quotes are not considered as au3Doubled
+"contained
+syn region autoitString oneline contains=autoitSend matchgroup=autoitQuote start=+"+
+       \ end=+"+ end=+_\n\{1}.*"+
+       \ contains=autoitCont,autoitDoubledDoubles skip=+""+
+syn region autoitString oneline matchgroup=autoitQuote start=+'+
+       \ end=+'+ end=+_\n\{1}.*'+
+       \ contains=autoitCont,autoitDoubledSingles skip=+''+
+
+syn match autoitVarSelector "\$"       contained display
+syn match autoitVariable "$\w\+" contains=autoitVarSelector
+
+" options - must be defined after autoitStrings
+syn match autoitOption "\([\"\']\)CaretCoordMode\1"
+syn match autoitOption "\([\"\']\)ColorMode\1"
+syn match autoitOption "\([\"\']\)ExpandEnvStrings\1"
+syn match autoitOption "\([\"\']\)ExpandVarStrings\1"
+syn match autoitOption "\([\"\']\)FtpBinaryMode\1"
+syn match autoitOption "\([\"\']\)GUICloseOnEsc\1"
+syn match autoitOption "\([\"\']\)GUICoordMode\1"
+syn match autoitOption "\([\"\']\)GUIDataSeparatorChar\1"
+syn match autoitOption "\([\"\']\)GUIOnEventMode\1"
+syn match autoitOption "\([\"\']\)GUIResizeMode\1"
+syn match autoitOption "\([\"\']\)GUIEventCompatibilityMode\1"
+syn match autoitOption "\([\"\']\)MouseClickDelay\1"
+syn match autoitOption "\([\"\']\)MouseClickDownDelay\1"
+syn match autoitOption "\([\"\']\)MouseClickDragDelay\1"
+syn match autoitOption "\([\"\']\)MouseCoordMode\1"
+syn match autoitOption "\([\"\']\)MustDeclareVars\1"
+syn match autoitOption "\([\"\']\)OnExitFunc\1"
+syn match autoitOption "\([\"\']\)PixelCoordMode\1"
+syn match autoitOption "\([\"\']\)RunErrorsFatal\1"
+syn match autoitOption "\([\"\']\)SendAttachMode\1"
+syn match autoitOption "\([\"\']\)SendCapslockMode\1"
+syn match autoitOption "\([\"\']\)SendKeyDelay\1"
+syn match autoitOption "\([\"\']\)SendKeyDownDelay\1"
+syn match autoitOption "\([\"\']\)TCPTimeout\1"
+syn match autoitOption "\([\"\']\)TrayAutoPause\1"
+syn match autoitOption "\([\"\']\)TrayIconDebug\1"
+syn match autoitOption "\([\"\']\)TrayIconHide\1"
+syn match autoitOption "\([\"\']\)TrayMenuMode\1"
+syn match autoitOption "\([\"\']\)TrayOnEventMode\1"
+syn match autoitOption "\([\"\']\)WinDetectHiddenText\1"
+syn match autoitOption "\([\"\']\)WinSearchChildren\1"
+syn match autoitOption "\([\"\']\)WinTextMatchMode\1"
+syn match autoitOption "\([\"\']\)WinTitleMatchMode\1"
+syn match autoitOption "\([\"\']\)WinWaitDelay\1"
+
+" styles - must be defined after autoitVariable
+" common
+syn match autoitStyle "\$WS_BORDER"
+syn match autoitStyle "\$WS_POPUP"
+syn match autoitStyle "\$WS_CAPTION"
+syn match autoitStyle "\$WS_CLIPCHILDREN"
+syn match autoitStyle "\$WS_CLIPSIBLINGS"
+syn match autoitStyle "\$WS_DISABLED"
+syn match autoitStyle "\$WS_DLGFRAME"
+syn match autoitStyle "\$WS_HSCROLL"
+syn match autoitStyle "\$WS_MAXIMIZE"
+syn match autoitStyle "\$WS_MAXIMIZEBOX"
+syn match autoitStyle "\$WS_MINIMIZE"
+syn match autoitStyle "\$WS_MINIMIZEBOX"
+syn match autoitStyle "\$WS_OVERLAPPED"
+syn match autoitStyle "\$WS_OVERLAPPEDWINDOW"
+syn match autoitStyle "\$WS_POPUPWINDOW"
+syn match autoitStyle "\$WS_SIZEBOX"
+syn match autoitStyle "\$WS_SYSMENU"
+syn match autoitStyle "\$WS_THICKFRAME"
+syn match autoitStyle "\$WS_VSCROLL"
+syn match autoitStyle "\$WS_VISIBLE"
+syn match autoitStyle "\$WS_CHILD"
+syn match autoitStyle "\$WS_GROUP"
+syn match autoitStyle "\$WS_TABSTOP"
+syn match autoitStyle "\$DS_MODALFRAME"
+syn match autoitStyle "\$DS_SETFOREGROUND"
+syn match autoitStyle "\$DS_CONTEXTHELP"
+" common extended
+syn match autoitStyle "\$WS_EX_ACCEPTFILES"
+syn match autoitStyle "\$WS_EX_APPWINDOW"
+syn match autoitStyle "\$WS_EX_CLIENTEDGE"
+syn match autoitStyle "\$WS_EX_CONTEXTHELP"
+syn match autoitStyle "\$WS_EX_DLGMODALFRAME"
+syn match autoitStyle "\$WS_EX_MDICHILD"
+syn match autoitStyle "\$WS_EX_OVERLAPPEDWINDOW"
+syn match autoitStyle "\$WS_EX_STATICEDGE"
+syn match autoitStyle "\$WS_EX_TOPMOST"
+syn match autoitStyle "\$WS_EX_TRANSPARENT"
+syn match autoitStyle "\$WS_EX_TOOLWINDOW"
+syn match autoitStyle "\$WS_EX_WINDOWEDGE"
+syn match autoitStyle "\$WS_EX_LAYERED"
+syn match autoitStyle "\$GUI_WS_EX_PARENTDRAG"
+" checkbox
+syn match autoitStyle "\$BS_3STATE"
+syn match autoitStyle "\$BS_AUTO3STATE"
+syn match autoitStyle "\$BS_AUTOCHECKBOX"
+syn match autoitStyle "\$BS_CHECKBOX"
+syn match autoitStyle "\$BS_LEFT"
+syn match autoitStyle "\$BS_PUSHLIKE"
+syn match autoitStyle "\$BS_RIGHT"
+syn match autoitStyle "\$BS_RIGHTBUTTON"
+syn match autoitStyle "\$BS_GROUPBOX"
+syn match autoitStyle "\$BS_AUTORADIOBUTTON"
+" push button
+syn match autoitStyle "\$BS_BOTTOM"
+syn match autoitStyle "\$BS_CENTER"
+syn match autoitStyle "\$BS_DEFPUSHBUTTON"
+syn match autoitStyle "\$BS_MULTILINE"
+syn match autoitStyle "\$BS_TOP"
+syn match autoitStyle "\$BS_VCENTER"
+syn match autoitStyle "\$BS_ICON"
+syn match autoitStyle "\$BS_BITMAP"
+syn match autoitStyle "\$BS_FLAT"
+" combo
+syn match autoitStyle "\$CBS_AUTOHSCROLL"
+syn match autoitStyle "\$CBS_DISABLENOSCROLL"
+syn match autoitStyle "\$CBS_DROPDOWN"
+syn match autoitStyle "\$CBS_DROPDOWNLIST"
+syn match autoitStyle "\$CBS_LOWERCASE"
+syn match autoitStyle "\$CBS_NOINTEGRALHEIGHT"
+syn match autoitStyle "\$CBS_OEMCONVERT"
+syn match autoitStyle "\$CBS_SIMPLE"
+syn match autoitStyle "\$CBS_SORT"
+syn match autoitStyle "\$CBS_UPPERCASE"
+" list
+syn match autoitStyle "\$LBS_DISABLENOSCROLL"
+syn match autoitStyle "\$LBS_NOINTEGRALHEIGHT"
+syn match autoitStyle "\$LBS_NOSEL"
+syn match autoitStyle "\$LBS_NOTIFY"
+syn match autoitStyle "\$LBS_SORT"
+syn match autoitStyle "\$LBS_STANDARD"
+syn match autoitStyle "\$LBS_USETABSTOPS"
+" edit/input
+syn match autoitStyle "\$ES_AUTOHSCROLL"
+syn match autoitStyle "\$ES_AUTOVSCROLL"
+syn match autoitStyle "\$ES_CENTER"
+syn match autoitStyle "\$ES_LOWERCASE"
+syn match autoitStyle "\$ES_NOHIDESEL"
+syn match autoitStyle "\$ES_NUMBER"
+syn match autoitStyle "\$ES_OEMCONVERT"
+syn match autoitStyle "\$ES_MULTILINE"
+syn match autoitStyle "\$ES_PASSWORD"
+syn match autoitStyle "\$ES_READONLY"
+syn match autoitStyle "\$ES_RIGHT"
+syn match autoitStyle "\$ES_UPPERCASE"
+syn match autoitStyle "\$ES_WANTRETURN"
+" progress bar
+syn match autoitStyle "\$PBS_SMOOTH"
+syn match autoitStyle "\$PBS_VERTICAL"
+" up-down
+syn match autoitStyle "\$UDS_ALIGNLEFT"
+syn match autoitStyle "\$UDS_ALIGNRIGHT"
+syn match autoitStyle "\$UDS_ARROWKEYS"
+syn match autoitStyle "\$UDS_HORZ"
+syn match autoitStyle "\$UDS_NOTHOUSANDS"
+syn match autoitStyle "\$UDS_WRAP"
+" label/static
+syn match autoitStyle "\$SS_BLACKFRAME"
+syn match autoitStyle "\$SS_BLACKRECT"
+syn match autoitStyle "\$SS_CENTER"
+syn match autoitStyle "\$SS_CENTERIMAGE"
+syn match autoitStyle "\$SS_ETCHEDFRAME"
+syn match autoitStyle "\$SS_ETCHEDHORZ"
+syn match autoitStyle "\$SS_ETCHEDVERT"
+syn match autoitStyle "\$SS_GRAYFRAME"
+syn match autoitStyle "\$SS_GRAYRECT"
+syn match autoitStyle "\$SS_LEFT"
+syn match autoitStyle "\$SS_LEFTNOWORDWRAP"
+syn match autoitStyle "\$SS_NOPREFIX"
+syn match autoitStyle "\$SS_NOTIFY"
+syn match autoitStyle "\$SS_RIGHT"
+syn match autoitStyle "\$SS_RIGHTJUST"
+syn match autoitStyle "\$SS_SIMPLE"
+syn match autoitStyle "\$SS_SUNKEN"
+syn match autoitStyle "\$SS_WHITEFRAME"
+syn match autoitStyle "\$SS_WHITERECT"
+" tab
+syn match autoitStyle "\$TCS_SCROLLOPPOSITE"
+syn match autoitStyle "\$TCS_BOTTOM"
+syn match autoitStyle "\$TCS_RIGHT"
+syn match autoitStyle "\$TCS_MULTISELECT"
+syn match autoitStyle "\$TCS_FLATBUTTONS"
+syn match autoitStyle "\$TCS_FORCEICONLEFT"
+syn match autoitStyle "\$TCS_FORCELABELLEFT"
+syn match autoitStyle "\$TCS_HOTTRACK"
+syn match autoitStyle "\$TCS_VERTICAL"
+syn match autoitStyle "\$TCS_TABS"
+syn match autoitStyle "\$TCS_BUTTONS"
+syn match autoitStyle "\$TCS_SINGLELINE"
+syn match autoitStyle "\$TCS_MULTILINE"
+syn match autoitStyle "\$TCS_RIGHTJUSTIFY"
+syn match autoitStyle "\$TCS_FIXEDWIDTH"
+syn match autoitStyle "\$TCS_RAGGEDRIGHT"
+syn match autoitStyle "\$TCS_FOCUSONBUTTONDOWN"
+syn match autoitStyle "\$TCS_OWNERDRAWFIXED"
+syn match autoitStyle "\$TCS_TOOLTIPS"
+syn match autoitStyle "\$TCS_FOCUSNEVER"
+" avi clip
+syn match autoitStyle "\$ACS_AUTOPLAY"
+syn match autoitStyle "\$ACS_CENTER"
+syn match autoitStyle "\$ACS_TRANSPARENT"
+syn match autoitStyle "\$ACS_NONTRANSPARENT"
+" date
+syn match autoitStyle "\$DTS_UPDOWN"
+syn match autoitStyle "\$DTS_SHOWNONE"
+syn match autoitStyle "\$DTS_LONGDATEFORMAT"
+syn match autoitStyle "\$DTS_TIMEFORMAT"
+syn match autoitStyle "\$DTS_RIGHTALIGN"
+syn match autoitStyle "\$DTS_SHORTDATEFORMAT"
+" monthcal
+syn match autoitStyle "\$MCS_NOTODAY"
+syn match autoitStyle "\$MCS_NOTODAYCIRCLE"
+syn match autoitStyle "\$MCS_WEEKNUMBERS"
+" treeview
+syn match autoitStyle "\$TVS_HASBUTTONS"
+syn match autoitStyle "\$TVS_HASLINES"
+syn match autoitStyle "\$TVS_LINESATROOT"
+syn match autoitStyle "\$TVS_DISABLEDRAGDROP"
+syn match autoitStyle "\$TVS_SHOWSELALWAYS"
+syn match autoitStyle "\$TVS_RTLREADING"
+syn match autoitStyle "\$TVS_NOTOOLTIPS"
+syn match autoitStyle "\$TVS_CHECKBOXES"
+syn match autoitStyle "\$TVS_TRACKSELECT"
+syn match autoitStyle "\$TVS_SINGLEEXPAND"
+syn match autoitStyle "\$TVS_FULLROWSELECT"
+syn match autoitStyle "\$TVS_NOSCROLL"
+syn match autoitStyle "\$TVS_NONEVENHEIGHT"
+" slider
+syn match autoitStyle "\$TBS_AUTOTICKS"
+syn match autoitStyle "\$TBS_BOTH"
+syn match autoitStyle "\$TBS_BOTTOM"
+syn match autoitStyle "\$TBS_HORZ"
+syn match autoitStyle "\$TBS_VERT"
+syn match autoitStyle "\$TBS_NOTHUMB"
+syn match autoitStyle "\$TBS_NOTICKS"
+syn match autoitStyle "\$TBS_LEFT"
+syn match autoitStyle "\$TBS_RIGHT"
+syn match autoitStyle "\$TBS_TOP"
+" listview
+syn match autoitStyle "\$LVS_ICON"
+syn match autoitStyle "\$LVS_REPORT"
+syn match autoitStyle "\$LVS_SMALLICON"
+syn match autoitStyle "\$LVS_LIST"
+syn match autoitStyle "\$LVS_EDITLABELS"
+syn match autoitStyle "\$LVS_NOCOLUMNHEADER"
+syn match autoitStyle "\$LVS_NOSORTHEADER"
+syn match autoitStyle "\$LVS_SINGLESEL"
+syn match autoitStyle "\$LVS_SHOWSELALWAYS"
+syn match autoitStyle "\$LVS_SORTASCENDING"
+syn match autoitStyle "\$LVS_SORTDESCENDING"
+" listview extended
+syn match autoitStyle "\$LVS_EX_FULLROWSELECT"
+syn match autoitStyle "\$LVS_EX_GRIDLINES"
+syn match autoitStyle "\$LVS_EX_HEADERDRAGDROP"
+syn match autoitStyle "\$LVS_EX_TRACKSELECT"
+syn match autoitStyle "\$LVS_EX_CHECKBOXES"
+syn match autoitStyle "\$LVS_EX_BORDERSELECT"
+syn match autoitStyle "\$LVS_EX_DOUBLEBUFFER"
+syn match autoitStyle "\$LVS_EX_FLATSB"
+syn match autoitStyle "\$LVS_EX_MULTIWORKAREAS"
+syn match autoitStyle "\$LVS_EX_SNAPTOGRID"
+syn match autoitStyle "\$LVS_EX_SUBITEMIMAGES"
+
+" constants - must be defined after autoitVariable - excludes styles
+" constants - autoit options
+syn match autoitConst "\$OPT_COORDSRELATIVE"
+syn match autoitConst "\$OPT_COORDSABSOLUTE"
+syn match autoitConst "\$OPT_COORDSCLIENT"
+syn match autoitConst "\$OPT_ERRORSILENT"
+syn match autoitConst "\$OPT_ERRORFATAL"
+syn match autoitConst "\$OPT_CAPSNOSTORE"
+syn match autoitConst "\$OPT_CAPSSTORE"
+syn match autoitConst "\$OPT_MATCHSTART"
+syn match autoitConst "\$OPT_MATCHANY"
+syn match autoitConst "\$OPT_MATCHEXACT"
+syn match autoitConst "\$OPT_MATCHADVANCED"
+" constants - file
+syn match autoitConst "\$FC_NOOVERWRITE"
+syn match autoitConst "\$FC_OVERWRITE"
+syn match autoitConst "\$FT_MODIFIED"
+syn match autoitConst "\$FT_CREATED"
+syn match autoitConst "\$FT_ACCESSED"
+syn match autoitConst "\$FO_READ"
+syn match autoitConst "\$FO_APPEND"
+syn match autoitConst "\$FO_OVERWRITE"
+syn match autoitConst "\$EOF"
+syn match autoitConst "\$FD_FILEMUSTEXIST"
+syn match autoitConst "\$FD_PATHMUSTEXIST"
+syn match autoitConst "\$FD_MULTISELECT"
+syn match autoitConst "\$FD_PROMPTCREATENEW"
+syn match autoitConst "\$FD_PROMPTOVERWRITE"
+" constants - keyboard
+syn match autoitConst "\$KB_SENDSPECIAL"
+syn match autoitConst "\$KB_SENDRAW"
+syn match autoitConst "\$KB_CAPSOFF"
+syn match autoitConst "\$KB_CAPSON"
+" constants - message box
+syn match autoitConst "\$MB_OK"
+syn match autoitConst "\$MB_OKCANCEL"
+syn match autoitConst "\$MB_ABORTRETRYIGNORE"
+syn match autoitConst "\$MB_YESNOCANCEL"
+syn match autoitConst "\$MB_YESNO"
+syn match autoitConst "\$MB_RETRYCANCEL"
+syn match autoitConst "\$MB_ICONHAND"
+syn match autoitConst "\$MB_ICONQUESTION"
+syn match autoitConst "\$MB_ICONEXCLAMATION"
+syn match autoitConst "\$MB_ICONASTERISK"
+syn match autoitConst "\$MB_DEFBUTTON1"
+syn match autoitConst "\$MB_DEFBUTTON2"
+syn match autoitConst "\$MB_DEFBUTTON3"
+syn match autoitConst "\$MB_APPLMODAL"
+syn match autoitConst "\$MB_SYSTEMMODAL"
+syn match autoitConst "\$MB_TASKMODAL"
+syn match autoitConst "\$MB_TOPMOST"
+syn match autoitConst "\$MB_RIGHTJUSTIFIED"
+syn match autoitConst "\$IDTIMEOUT"
+syn match autoitConst "\$IDOK"
+syn match autoitConst "\$IDCANCEL"
+syn match autoitConst "\$IDABORT"
+syn match autoitConst "\$IDRETRY"
+syn match autoitConst "\$IDIGNORE"
+syn match autoitConst "\$IDYES"
+syn match autoitConst "\$IDNO"
+syn match autoitConst "\$IDTRYAGAIN"
+syn match autoitConst "\$IDCONTINUE"
+" constants - progress and splash
+syn match autoitConst "\$DLG_NOTITLE"
+syn match autoitConst "\$DLG_NOTONTOP"
+syn match autoitConst "\$DLG_TEXTLEFT"
+syn match autoitConst "\$DLG_TEXTRIGHT"
+syn match autoitConst "\$DLG_MOVEABLE"
+syn match autoitConst "\$DLG_TEXTVCENTER"
+" constants - tray tip
+syn match autoitConst "\$TIP_ICONNONE"
+syn match autoitConst "\$TIP_ICONASTERISK"
+syn match autoitConst "\$TIP_ICONEXCLAMATION"
+syn match autoitConst "\$TIP_ICONHAND"
+syn match autoitConst "\$TIP_NOSOUND"
+" constants - mouse
+syn match autoitConst "\$IDC_UNKNOWN"
+syn match autoitConst "\$IDC_APPSTARTING"
+syn match autoitConst "\$IDC_ARROW"
+syn match autoitConst "\$IDC_CROSS"
+syn match autoitConst "\$IDC_HELP"
+syn match autoitConst "\$IDC_IBEAM"
+syn match autoitConst "\$IDC_ICON"
+syn match autoitConst "\$IDC_NO"
+syn match autoitConst "\$IDC_SIZE"
+syn match autoitConst "\$IDC_SIZEALL"
+syn match autoitConst "\$IDC_SIZENESW"
+syn match autoitConst "\$IDC_SIZENS"
+syn match autoitConst "\$IDC_SIZENWSE"
+syn match autoitConst "\$IDC_SIZEWE"
+syn match autoitConst "\$IDC_UPARROW"
+syn match autoitConst "\$IDC_WAIT"
+" constants - process
+syn match autoitConst "\$SD_LOGOFF"
+syn match autoitConst "\$SD_SHUTDOWN"
+syn match autoitConst "\$SD_REBOOT"
+syn match autoitConst "\$SD_FORCE"
+syn match autoitConst "\$SD_POWERDOWN"
+" constants - string
+syn match autoitConst "\$STR_NOCASESENSE"
+syn match autoitConst "\$STR_CASESENSE"
+syn match autoitConst "\STR_STRIPLEADING"
+syn match autoitConst "\$STR_STRIPTRAILING"
+syn match autoitConst "\$STR_STRIPSPACES"
+syn match autoitConst "\$STR_STRIPALL"
+" constants - tray
+syn match autoitConst "\$TRAY_ITEM_EXIT"
+syn match autoitConst "\$TRAY_ITEM_PAUSE"
+syn match autoitConst "\$TRAY_ITEM_FIRST"
+syn match autoitConst "\$TRAY_CHECKED"
+syn match autoitConst "\$TRAY_UNCHECKED"
+syn match autoitConst "\$TRAY_ENABLE"
+syn match autoitConst "\$TRAY_DISABLE"
+syn match autoitConst "\$TRAY_FOCUS"
+syn match autoitConst "\$TRAY_DEFAULT"
+syn match autoitConst "\$TRAY_EVENT_SHOWICON"
+syn match autoitConst "\$TRAY_EVENT_HIDEICON"
+syn match autoitConst "\$TRAY_EVENT_FLASHICON"
+syn match autoitConst "\$TRAY_EVENT_NOFLASHICON"
+syn match autoitConst "\$TRAY_EVENT_PRIMARYDOWN"
+syn match autoitConst "\$TRAY_EVENT_PRIMARYUP"
+syn match autoitConst "\$TRAY_EVENT_SECONDARYDOWN"
+syn match autoitConst "\$TRAY_EVENT_SECONDARYUP"
+syn match autoitConst "\$TRAY_EVENT_MOUSEOVER"
+syn match autoitConst "\$TRAY_EVENT_MOUSEOUT"
+syn match autoitConst "\$TRAY_EVENT_PRIMARYDOUBLE"
+syn match autoitConst "\$TRAY_EVENT_SECONDARYDOUBLE"
+" constants - stdio
+syn match autoitConst "\$STDIN_CHILD"
+syn match autoitConst "\$STDOUT_CHILD"
+syn match autoitConst "\$STDERR_CHILD"
+" constants - color
+syn match autoitConst "\$COLOR_BLACK"
+syn match autoitConst "\$COLOR_SILVER"
+syn match autoitConst "\$COLOR_GRAY"
+syn match autoitConst "\$COLOR_WHITE"
+syn match autoitConst "\$COLOR_MAROON"
+syn match autoitConst "\$COLOR_RED"
+syn match autoitConst "\$COLOR_PURPLE"
+syn match autoitConst "\$COLOR_FUCHSIA"
+syn match autoitConst "\$COLOR_GREEN"
+syn match autoitConst "\$COLOR_LIME"
+syn match autoitConst "\$COLOR_OLIVE"
+syn match autoitConst "\$COLOR_YELLOW"
+syn match autoitConst "\$COLOR_NAVY"
+syn match autoitConst "\$COLOR_BLUE"
+syn match autoitConst "\$COLOR_TEAL"
+syn match autoitConst "\$COLOR_AQUA"
+" constants - reg value type
+syn match autoitConst "\$REG_NONE"
+syn match autoitConst "\$REG_SZ"
+syn match autoitConst "\$REG_EXPAND_SZ"
+syn match autoitConst "\$REG_BINARY"
+syn match autoitConst "\$REG_DWORD"
+syn match autoitConst "\$REG_DWORD_BIG_ENDIAN"
+syn match autoitConst "\$REG_LINK"
+syn match autoitConst "\$REG_MULTI_SZ"
+syn match autoitConst "\$REG_RESOURCE_LIST"
+syn match autoitConst "\$REG_FULL_RESOURCE_DESCRIPTOR"
+syn match autoitConst "\$REG_RESOURCE_REQUIREMENTS_LIST"
+" guiconstants - events and messages
+syn match autoitConst "\$GUI_EVENT_CLOSE"
+syn match autoitConst "\$GUI_EVENT_MINIMIZE"
+syn match autoitConst "\$GUI_EVENT_RESTORE"
+syn match autoitConst "\$GUI_EVENT_MAXIMIZE"
+syn match autoitConst "\$GUI_EVENT_PRIMARYDOWN"
+syn match autoitConst "\$GUI_EVENT_PRIMARYUP"
+syn match autoitConst "\$GUI_EVENT_SECONDARYDOWN"
+syn match autoitConst "\$GUI_EVENT_SECONDARYUP"
+syn match autoitConst "\$GUI_EVENT_MOUSEMOVE"
+syn match autoitConst "\$GUI_EVENT_RESIZED"
+syn match autoitConst "\$GUI_EVENT_DROPPED"
+syn match autoitConst "\$GUI_RUNDEFMSG"
+" guiconstants - state
+syn match autoitConst "\$GUI_AVISTOP"
+syn match autoitConst "\$GUI_AVISTART"
+syn match autoitConst "\$GUI_AVICLOSE"
+syn match autoitConst "\$GUI_CHECKED"
+syn match autoitConst "\$GUI_INDETERMINATE"
+syn match autoitConst "\$GUI_UNCHECKED"
+syn match autoitConst "\$GUI_DROPACCEPTED"
+syn match autoitConst "\$GUI_DROPNOTACCEPTED"
+syn match autoitConst "\$GUI_ACCEPTFILES"
+syn match autoitConst "\$GUI_SHOW"
+syn match autoitConst "\$GUI_HIDE"
+syn match autoitConst "\$GUI_ENABLE"
+syn match autoitConst "\$GUI_DISABLE"
+syn match autoitConst "\$GUI_FOCUS"
+syn match autoitConst "\$GUI_NOFOCUS"
+syn match autoitConst "\$GUI_DEFBUTTON"
+syn match autoitConst "\$GUI_EXPAND"
+syn match autoitConst "\$GUI_ONTOP"
+" guiconstants - font
+syn match autoitConst "\$GUI_FONTITALIC"
+syn match autoitConst "\$GUI_FONTUNDER"
+syn match autoitConst "\$GUI_FONTSTRIKE"
+" guiconstants - resizing
+syn match autoitConst "\$GUI_DOCKAUTO"
+syn match autoitConst "\$GUI_DOCKLEFT"
+syn match autoitConst "\$GUI_DOCKRIGHT"
+syn match autoitConst "\$GUI_DOCKHCENTER"
+syn match autoitConst "\$GUI_DOCKTOP"
+syn match autoitConst "\$GUI_DOCKBOTTOM"
+syn match autoitConst "\$GUI_DOCKVCENTER"
+syn match autoitConst "\$GUI_DOCKWIDTH"
+syn match autoitConst "\$GUI_DOCKHEIGHT"
+syn match autoitConst "\$GUI_DOCKSIZE"
+syn match autoitConst "\$GUI_DOCKMENUBAR"
+syn match autoitConst "\$GUI_DOCKSTATEBAR"
+syn match autoitConst "\$GUI_DOCKALL"
+syn match autoitConst "\$GUI_DOCKBORDERS"
+" guiconstants - graphic
+syn match autoitConst "\$GUI_GR_CLOSE"
+syn match autoitConst "\$GUI_GR_LINE"
+syn match autoitConst "\$GUI_GR_BEZIER"
+syn match autoitConst "\$GUI_GR_MOVE"
+syn match autoitConst "\$GUI_GR_COLOR"
+syn match autoitConst "\$GUI_GR_RECT"
+syn match autoitConst "\$GUI_GR_ELLIPSE"
+syn match autoitConst "\$GUI_GR_PIE"
+syn match autoitConst "\$GUI_GR_DOT"
+syn match autoitConst "\$GUI_GR_PIXEL"
+syn match autoitConst "\$GUI_GR_HINT"
+syn match autoitConst "\$GUI_GR_REFRESH"
+syn match autoitConst "\$GUI_GR_PENSIZE"
+syn match autoitConst "\$GUI_GR_NOBKCOLOR"
+" guiconstants - control default styles
+syn match autoitConst "\$GUI_SS_DEFAULT_AVI"
+syn match autoitConst "\$GUI_SS_DEFAULT_BUTTON"
+syn match autoitConst "\$GUI_SS_DEFAULT_CHECKBOX"
+syn match autoitConst "\$GUI_SS_DEFAULT_COMBO"
+syn match autoitConst "\$GUI_SS_DEFAULT_DATE"
+syn match autoitConst "\$GUI_SS_DEFAULT_EDIT"
+syn match autoitConst "\$GUI_SS_DEFAULT_GRAPHIC"
+syn match autoitConst "\$GUI_SS_DEFAULT_GROUP"
+syn match autoitConst "\$GUI_SS_DEFAULT_ICON"
+syn match autoitConst "\$GUI_SS_DEFAULT_INPUT"
+syn match autoitConst "\$GUI_SS_DEFAULT_LABEL"
+syn match autoitConst "\$GUI_SS_DEFAULT_LIST"
+syn match autoitConst "\$GUI_SS_DEFAULT_LISTVIEW"
+syn match autoitConst "\$GUI_SS_DEFAULT_MONTHCAL"
+syn match autoitConst "\$GUI_SS_DEFAULT_PIC"
+syn match autoitConst "\$GUI_SS_DEFAULT_PROGRESS"
+syn match autoitConst "\$GUI_SS_DEFAULT_RADIO"
+syn match autoitConst "\$GUI_SS_DEFAULT_SLIDER"
+syn match autoitConst "\$GUI_SS_DEFAULT_TAB"
+syn match autoitConst "\$GUI_SS_DEFAULT_TREEVIEW"
+syn match autoitConst "\$GUI_SS_DEFAULT_UPDOWN"
+syn match autoitConst "\$GUI_SS_DEFAULT_GUI"
+" guiconstants - background color special flags
+syn match autoitConst "\$GUI_BKCOLOR_DEFAULT"
+syn match autoitConst "\$GUI_BKCOLOR_LV_ALTERNATE"
+syn match autoitConst "\$GUI_BKCOLOR_TRANSPARENT"
+
+" registry constants
+syn match autoitConst "\([\"\']\)REG_BINARY\1"
+syn match autoitConst "\([\"\']\)REG_SZ\1"
+syn match autoitConst "\([\"\']\)REG_MULTI_SZ\1"
+syn match autoitConst "\([\"\']\)REG_EXPAND_SZ\1"
+syn match autoitConst "\([\"\']\)REG_DWORD\1"
+
+" Define the default highlighting.
+" Unused colors: Underlined, Ignore, Error, Todo
+hi def link autoitFunction Statement  " yellow/yellow
+hi def link autoitKeyword Statement
+hi def link autoitOperator Operator
+hi def link autoitVarSelector Operator
+hi def link autoitComment      Comment  " cyan/blue
+hi def link autoitParen Comment
+hi def link autoitComma Comment
+hi def link autoitBracket Comment
+hi def link autoitNumber Constant " magenta/red
+hi def link autoitString Constant
+hi def link autoitQuote Constant
+hi def link autoitIncluded Constant
+hi def link autoitCont Special  " red/orange
+hi def link autoitDoubledSingles Special
+hi def link autoitDoubledDoubles Special
+hi def link autoitCommDelimiter PreProc  " blue/magenta
+hi def link autoitInclude PreProc
+hi def link autoitVariable Identifier  " cyan/cyan
+hi def link autoitBuiltin Type  " green/green
+hi def link autoitOption Type
+hi def link autoitStyle Type
+hi def link autoitConst Type
+hi def link autoitSend Type
+syn sync minlines=50
index d0877a5bd921a36674949368f4fe7849ca30324b..b2dd0f930372c6ad048fb473b97df6f5249f84af 100644 (file)
@@ -1,16 +1,10 @@
 " Vim syntax file
-" Language:    automake Makefile.am
-" Maintainer:   Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
-" Former Maintainer:   John Williams <jrw@pobox.com>
-" Last Change: $LastChangedDate: 2006-04-16 22:06:40 -0400 (dom, 16 apr 2006) $
+" Language: automake Makefile.am
+" Maintainer: Felipe Contreras <felipe.contreras@gmail.com>
+" Former Maintainer: John Williams <jrw@pobox.com>
+" Last Change: $LastChangedDate: 2006-04-16 22:06:40 -0400 (dom, 16 apr 2006) $
 " URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/automake.vim?op=file&rev=0&sc=0
 "
-" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
-"     it only because patches have been submitted for it by Debian users and the
-"     former maintainer was MIA (Missing In Action), taking over its
-"     maintenance was thus the only way to include those patches.
-"     If you care about this file, and have time to maintain it please do so!
-"
 " This script adds support for automake's Makefile.am format. It highlights
 " Makefile variables significant to automake as well as highlighting
 " autoconf-style @variable@ substitutions . Subsitutions are marked as errors
@@ -25,11 +19,18 @@ else
   runtime! syntax/make.vim
 endif
 
-syn match automakePrimary "^[A-Za-z0-9_]\+\(_PROGRAMS\|LIBRARIES\|_LIST\|_SCRIPTS\|_DATA\|_HEADERS\|_MANS\|_TEXINFOS\|_JAVA\|_LTLIBRARIES\)\s*="me=e-1
+syn match automakePrimary "^[A-Za-z0-9_]\+_\(PROGRAMS\|LIBRARIES\|LISP\|PYTHON\|JAVA\|SCRIPTS\|DATA\|HEADERS\|MANS\|TEXINFOS\|LTLIBRARIES\)\s*="me=e-1
+
+syn match automakeSecondary "^[A-Za-z0-9_]\+_\(SOURCES\|AR\|LIBADD\|LDADD\|LDFLAGS\|DEPENDENCIES\|LINK\|SHORTNAME\)\s*="me=e-1
+syn match automakeSecondary "^[A-Za-z0-9_]\+_\(CCASFLAGS\|CFLAGS\|CPPFLAGS\|CXXFLAGS\|FFLAGS\|GCJFLAGS\|LFLAGS\|OBJCFLAGS\|RFLAGS\|YFLAGS\)\s*="me=e-1
+
+syn match automakeExtra "^EXTRA_DIST\s*="me=e-1
+syn match automakeExtra "^EXTRA_PROGRAMS\s*="me=e-1
+syn match automakeExtra "^EXTRA_[A-Za-z0-9_]\+_SOURCES\s*="me=e-1
+
+" TODO: Check these:
 syn match automakePrimary "^TESTS\s*="me=e-1
-syn match automakeSecondary "^[A-Za-z0-9_]\+\(_SOURCES\|_LDADD\|_LIBADD\|_LDFLAGS\|_DEPENDENCIES\|_CPPFLAGS\)\s*="me=e-1
 syn match automakeSecondary "^OMIT_DEPENDENCIES\s*="me=e-1
-syn match automakeExtra "^EXTRA_[A-Za-z0-9_]\+\s*="me=e-1
 syn match automakeOptions "^\(AUTOMAKE_OPTIONS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*="me=e-1
 syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*="me=e-1
 syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*="me=e-1
index e97669175d1c15ebe83844faaac804d85a1200b7..7f6c4e880a23a18a2d698206f36fc13b24278f89 100644 (file)
@@ -137,6 +137,6 @@ if version >= 508 || !exists("did_b_syntax_inits")
   delcommand HiLink
 endif
 
-let current_syntax = "b"
+let b:current_syntax = "b"
 
 " vim: ts=8
diff --git a/runtime/syntax/bzr.vim b/runtime/syntax/bzr.vim
new file mode 100644 (file)
index 0000000..afbae1a
--- /dev/null
@@ -0,0 +1,51 @@
+" Vim syntax file
+" Language:     Bazaar (bzr) commit file
+" Maintainer:   Dmitry Vasiliev <dima at hlabs dot spb dot ru>
+" URL:          http://www.hlabs.spb.ru/vim/bzr.vim
+" Revision:     $Id$
+" Filenames:    bzr_log.*
+" Version:      1.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 region bzrRegion   start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=ALL
+syn match bzrRemoved   "^removed:$" contained
+syn match bzrAdded     "^added:$" contained
+syn match bzrRenamed   "^renamed:$" contained
+syn match bzrModified  "^modified:$" contained
+syn match bzrUnchanged "^unchanged:$" contained
+syn match bzrUnknown   "^unknown:$" contained
+
+" Synchronization.
+syn sync clear
+syn sync match bzrSync  grouphere bzrRegion "^-\{14} This line and the following will be ignored -\{14}$"me=s-1
+
+" 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_bzr_syn_inits")
+  if version <= 508
+    let did_bzr_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink bzrRegion     Comment
+  HiLink bzrRemoved    Constant
+  HiLink bzrAdded      Identifier
+  HiLink bzrModified   Special
+  HiLink bzrRenamed    Special
+  HiLink bzrUnchanged  Special
+  HiLink bzrUnknown    Special
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "bzr"
index a39fbd80e2d04830622e5093457332096d9bce6c..7164e14ed85fcb2df33ac01f2bfa73e6e4f85362 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    C
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 May 01
+" Last Change: 2007 Feb 13
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -64,6 +64,9 @@ if exists("c_space_errors")
   endif
 endif
 
+" This should be before cErrInParen to avoid problems with #define ({ xxx })
+syntax region  cBlock          start="{" end="}" transparent fold
+
 "catch errors caused by wrong parenthesis and brackets
 " also accept <% for {, %> for }, <: for [ and :> for ] (C99)
 " But avoid matching <::.
@@ -132,9 +135,11 @@ if exists("c_comment_strings")
   syntax region cComment2String        contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
   syntax region  cCommentL     start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell
   if exists("c_no_comment_fold")
-    syntax region cComment     matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell
+    " Use "extend" here to have preprocessor lines not terminate halfway a
+    " comment.
+    syntax region cComment     matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell extend
   else
-    syntax region cComment     matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold
+    syntax region cComment     matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold extend
   endif
 else
   syn region   cCommentL       start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell
@@ -148,8 +153,6 @@ endif
 syntax match   cCommentError   display "\*/"
 syntax match   cCommentStartError display "/\*"me=e-1 contained
 
-syntax region  cBlock          start="{" end="}" transparent fold
-
 syn keyword    cOperator       sizeof
 if exists("c_gnu")
   syn keyword  cStatement      __asm__
@@ -158,7 +161,7 @@ endif
 syn keyword    cType           int long short char void
 syn keyword    cType           signed unsigned float double
 if !exists("c_no_ansi") || exists("c_ansi_typedefs")
-  syn keyword   cType          size_t ssize_t wchar_t ptrdiff_t sig_atomic_t fpos_t
+  syn keyword   cType          size_t ssize_t off_t wchar_t ptrdiff_t sig_atomic_t fpos_t
   syn keyword   cType          clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
   syn keyword   cType          mbstate_t wctrans_t wint_t wctype_t
 endif
@@ -273,7 +276,7 @@ syn match   cIncluded       display contained "<[^>]*>"
 syn match      cInclude        display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
 "syn match cLineSkip   "\\$"
 syn cluster    cPreProcGroup   contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
-syn region     cDefine         start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup,@Spell
+syn region     cDefine         start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 keepend contains=ALLBUT,@cPreProcGroup,@Spell
 syn region     cPreProc        start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
 
 " Highlight User Labels
diff --git a/runtime/syntax/cmusrc.vim b/runtime/syntax/cmusrc.vim
new file mode 100644 (file)
index 0000000..3e84751
--- /dev/null
@@ -0,0 +1,309 @@
+" Vim syntax file
+" Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2006-07-22
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-
+
+syn keyword cmusrcTodo          contained TODO FIXME XXX NOTE
+
+syn match   cmusrcComment       contained display '^\s*#.*$'
+
+syn match   cmusrcBegin         display '^'
+                                \ nextgroup=cmusrcKeyword,cmusrcComment
+                                \ skipwhite
+
+syn keyword cmusrcKeyword       contained add
+                                \ nextgroup=cmusrcAddSwitches,cmusrcURI
+                                \ skipwhite
+
+syn match   cmusrcAddSwitches   contained display '-[lpqQ]'
+                                \ nextgroup=cmusrcURI
+                                \ skipwhite
+
+syn match   cmusrcURI           contained display '.\+'
+
+syn keyword cmusrcKeyword       contained bind
+                                \ nextgroup=cmusrcBindSwitches,
+                                \           cmusrcBindContext
+                                \ skipwhite
+
+syn match   cmusrcBindSwitches  contained display '-[f]'
+                                \ nextgroup=cmusrcBindContext
+                                \ skipwhite
+
+syn keyword cmusrcBindContext   contained common library playlist queue
+                                \ browser filters
+                                \ nextgroup=cmusrcBindKey
+                                \ skipwhite
+
+syn match   cmusrcBindKey       contained display '\S\+'
+                                \ nextgroup=cmusrcKeyword
+                                \ skipwhite
+
+syn keyword cmusrcKeyword       contained browser-up colorscheme echo factivate
+                                \ filter invert player-next player-pause
+                                \ player-play player-prev player-stop quit
+                                \ refresh run search-next search-prev shuffle
+                                \ unmark win-activate win-add-l win-add-p
+                                \ win-add-Q win-add-q win-bottom win-down
+                                \ win-mv-after win-mv-before win-next
+                                \ win-page-down win-page-up win-remove
+                                \ win-sel-cur win-toggle win-top win-up
+                                \ win-update
+
+syn keyword cmusrcKeyword       contained cd
+                                \ nextgroup=cmusrcDirectory
+                                \ skipwhite
+
+syn match   cmusrcDirectory     contained display '.\+'
+
+syn keyword cmusrcKeyword       contained clear
+                                \ nextgroup=cmusrcClearSwitches
+
+syn match   cmusrcClearSwitches contained display '-[lpq]'
+
+syn keyword cmusrcKeyword       contained fset
+                                \ nextgroup=cmusrcFSetName
+                                \ skipwhite
+
+syn match   cmusrcFSetName      contained display '[^=]\+'
+                                \ nextgroup=cmusrcFSetEq
+
+syn match   cmusrcFSetEq        contained display '='
+                                \ nextgroup=cmusrcFilterExpr
+
+syn match   cmusrcFilterExpr    contained display '.\+'
+
+syn keyword cmusrcKeyword       contained load
+                                \ nextgroup=cmusrcLoadSwitches,cmusrcURI
+                                \ skipwhite
+
+syn match   cmusrcLoadSwitches  contained display '-[lp]'
+                                \ nextgroup=cmusrcURI
+                                \ skipwhite
+
+syn keyword cmusrcKeyword       contained mark
+                                \ nextgroup=cmusrcFilterExpr
+
+syn keyword cmusrcKeyword       contained save
+                                \ nextgroup=cmusrcSaveSwitches,cmusrcFile
+                                \ skipwhite
+
+syn match   cmusrcSaveSwitches  contained display '-[lp]'
+                                \ nextgroup=cmusrcFile
+                                \ skipwhite
+
+syn match   cmusrcFile          contained display '.\+'
+
+syn keyword cmusrcKeyword       contained seek
+                                \ nextgroup=cmusrcSeekOffset
+                                \ skipwhite
+
+syn match   cmusrcSeekOffset    contained display
+      \ '[+-]\=\%(\d\+[mh]\=\|\%(\%(0\=\d\|[1-5]\d\):\)\=\%(0\=\d\|[1-5]\d\):\%(0\=\d\|[1-5]\d\)\)'
+
+syn keyword cmusrcKeyword       contained set
+                                \ nextgroup=cmusrcOption
+                                \ skipwhite
+
+syn keyword cmusrcOption        contained auto_reshuffle confirm_run
+                                \ continue play_library play_sorted repeat
+                                \ show_hidden show_remaining_time shuffle
+                                \ nextgroup=cmusrcSetTest,cmusrcOptEqBoolean
+
+syn match   cmusrcSetTest       contained display '?'
+
+syn match   cmusrcOptEqBoolean  contained display '='
+                                \ nextgroup=cmusrcOptBoolean
+
+syn keyword cmusrcOptBoolean    contained true false
+
+syn keyword cmusrcOption        contained aaa_mode
+                                \ nextgroup=cmusrcOptEqAAA
+
+syn match   cmusrcOptEqAAA      contained display '='
+                                \ nextgroup=cmusrcOptAAA
+
+syn keyword cmusrcOptAAA        contained all artist album
+
+syn keyword cmusrcOption        contained buffer_seconds
+                                \ nextgroup=cmusrcOptEqNumber
+
+syn match   cmusrcOptEqNumber   contained display '='
+                                \ nextgroup=cmusrcOptNumber
+
+syn match   cmusrcOptNumber     contained display '\d\+'
+
+syn keyword cmusrcOption        contained altformat_current altformat_playlist
+                                \ altformat_title altformat_trackwin
+                                \ format_current format_playlist format_title
+                                \ format_trackwin
+                                \ nextgroup=cmusrcOptEqFormat
+
+syn match   cmusrcOptEqFormat   contained display '='
+                                \ nextgroup=cmusrcOptFormat
+
+syn match   cmusrcOptFormat     contained display '.\+'
+                                \ contains=cmusrcFormatSpecial
+
+syn match   cmusrcFormatSpecial contained display '%[0-]*\d*[alDntgydfF=%]'
+
+syn keyword cmusrcOption        contained color_cmdline_bg color_cmdline_fg
+                                \ color_error color_info color_separator
+                                \ color_statusline_bg color_statusline_fg
+                                \ color_titleline_bg color_titleline_fg
+                                \ color_win_bg color_win_cur
+                                \ color_win_cur_sel_bg color_win_cur_sel_fg
+                                \ color_win_dir color_win_fg
+                                \ color_win_inactive_cur_sel_bg
+                                \ color_win_inactive_cur_sel_fg
+                                \ color_win_inactive_sel_bg
+                                \ color_win_inactive_sel_fg
+                                \ color_win_sel_bg color_win_sel_fg
+                                \ color_win_title_bg color_win_title_fg
+                                \ nextgroup=cmusrcOptEqColor
+
+syn match   cmusrcOptEqColor    contained display '='
+                                \ nextgroup=@cmusrcOptColor
+
+syn cluster cmusrcOptColor      contains=cmusrcOptColorName,cmusrcOptColorValue
+
+syn keyword cmusrcOptColorName  contained default black red green yellow blue
+                                \ magenta cyan gray darkgray lightred lightred
+                                \ lightgreen lightyellow lightblue lightmagenta
+                                \ lightcyan white
+
+syn match   cmusrcOptColorValue contained display
+                        \ '-1\|0*\%(\d\|[1-9]\d\|1\d\d\|2\%([0-4]\d\|5[0-5]\)\)'
+
+syn keyword cmusrcOption        contained id3_default_charset output_plugin
+                                \ status_display_program
+                                \ nextgroup=cmusrcOptEqString
+
+syn match   cmusrcOption        contained
+                    \ '\%(dsp\|mixer\)\.\%(alsa\|oss\|sun\)\.\%(channel\|device\)'
+                    \ nextgroup=cmusrcOptEqString
+
+syn match   cmusrcOption        contained
+                    \ 'dsp\.ao\.\%(buffer_size\|driver\|wav_counter\|wav_dir\)'
+                    \ nextgroup=cmusrcOptEqString
+
+syn match   cmusrcOptEqString   contained display '='
+                                \ nextgroup=cmusrcOptString
+
+syn match   cmusrcOptString     contained display '.\+'
+
+syn keyword cmusrcOption        contained lib_sort pl_sort
+                                \ nextgroup=cmusrcOptEqSortKeys
+
+syn match   cmusrcOptEqSortKeys contained display '='
+                                \ nextgroup=cmusrcOptSortKeys
+
+syn keyword cmusrcOptSortKeys   contained artist album title tracknumber
+                                \ discnumber date genre filename
+                                \ nextgroup=cmusrcOptSortKeys
+                                \ skipwhite
+
+syn keyword cmusrcKeyword       contained showbind
+                                \ nextgroup=cmusrcSBindContext
+                                \ skipwhite
+
+syn keyword cmusrcSBindContext  contained common library playlist queue
+                                \ browser filters
+                                \ nextgroup=cmusrcSBindKey
+                                \ skipwhite
+
+syn match   cmusrcSBindKey      contained display '\S\+'
+
+syn keyword cmusrcKeyword       contained toggle
+                                \ nextgroup=cmusrcTogglableOpt
+                                \ skipwhite
+
+syn keyword cmusrcTogglableOpt  contained auto_reshuffle aaa_mode
+                                \ confirm_run continue play_library play_sorted
+                                \ repeat show_hidden show_remaining_time shuffle
+
+syn keyword cmusrcKeyword       contained unbind
+                                \ nextgroup=cmusrcUnbindSwitches,
+                                \           cmusrcSBindContext
+                                \ skipwhite
+
+syn match   cmusrcUnbindSwitches  contained display '-[f]'
+                                  \ nextgroup=cmusrcSBindContext
+                                  \ skipwhite
+
+syn keyword cmusrcKeyword       contained view
+                                \ nextgroup=cmusrcView
+                                \ skipwhite
+
+syn keyword cmusrcView          contained library playlist queue browser filters
+syn match   cmusrcView          contained display '[1-6]'
+
+syn keyword cmusrcKeyword       contained vol
+                                \ nextgroup=cmusrcVolume1
+                                \ skipwhite
+
+syn match   cmusrcVolume1       contained display '[+-]\=\d\+%'
+                                \ nextgroup=cmusrcVolume2
+                                \ skipwhite
+
+syn match   cmusrcVolume2       contained display '[+-]\=\d\+%'
+
+hi def link cmusrcTodo            Todo
+hi def link cmusrcComment         Comment
+hi def link cmusrcKeyword         Keyword
+hi def link cmusrcSwitches        Special
+hi def link cmusrcAddSwitches     cmusrcSwitches
+hi def link cmusrcURI             Normal
+hi def link cmusrcBindSwitches    cmusrcSwitches
+hi def link cmusrcContext         Type
+hi def link cmusrcBindContext     cmusrcContext
+hi def link cmusrcKey             String
+hi def link cmusrcBindKey         cmusrcKey
+hi def link cmusrcDirectory       Normal
+hi def link cmusrcClearSwitches   cmusrcSwitches
+hi def link cmusrcFSetName        PreProc
+hi def link cmusrcEq              Normal
+hi def link cmusrcFSetEq          cmusrcEq
+hi def link cmusrcFilterExpr      Normal
+hi def link cmusrcLoadSwitches    cmusrcSwitches
+hi def link cmusrcSaveSwitches    cmusrcSwitches
+hi def link cmusrcFile            Normal
+hi def link cmusrcSeekOffset      Number
+hi def link cmusrcOption          PreProc
+hi def link cmusrcSetTest         Normal
+hi def link cmusrcOptBoolean      Boolean
+hi def link cmusrcOptEqAAA        cmusrcEq
+hi def link cmusrcOptAAA          Identifier
+hi def link cmusrcOptEqNumber     cmusrcEq
+hi def link cmusrcOptNumber       Number
+hi def link cmusrcOptEqFormat     cmusrcEq
+hi def link cmusrcOptFormat       String
+hi def link cmusrcFormatSpecial   SpecialChar
+hi def link cmusrcOptEqColor      cmusrcEq
+hi def link cmusrcOptColor        Normal
+hi def link cmusrcOptColorName    cmusrcOptColor
+hi def link cmusrcOptColorValue   cmusrcOptColor
+hi def link cmusrcOptEqString     cmusrcEq
+hi def link cmusrcOptString       Normal
+hi def link cmusrcOptEqSortKeys   cmusrcEq
+hi def link cmusrcOptSortKeys     Identifier
+hi def link cmusrcSBindContext    cmusrcContext
+hi def link cmusrcSBindKey        cmusrcKey
+hi def link cmusrcTogglableOpt    cmusrcOption
+hi def link cmusrcUnbindSwitches  cmusrcSwitches
+hi def link cmusrcView            Normal
+hi def link cmusrcVolume1         Number
+hi def link cmusrcVolume2         Number
+
+let b:current_syntax = "cmusrc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
index be8bfc2adb82558e5932076ba5944728f4944b5b..39603fa15848a2452d6e4794874b3500597570f7 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    C-shell (csh)
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Version:     9
-" Last Change: Sep 06, 2005
+" Version:     10
+" Last Change: Sep 11, 2006
 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 
 " For version 5.x: Clear all syntax items
@@ -35,12 +35,12 @@ syn match   cshNoEndlineDQ  contained "[^\"]\(\\\\\)*$"
 syn match   cshNoEndlineSQ     contained "[^\']\(\\\\\)*$"
 syn match   cshNoEndlineBQ     contained "[^\`]\(\\\\\)*$"
 
-syn region  cshDblQuote        start=+[^\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+     contains=cshSpecial,cshShellVariables,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,cshBckQuote
-syn region  cshSnglQuote       start=+[^\\]'+lc=1 skip=+\\\\\|\\'+ end=+'+     contains=cshNoEndlineSQ
-syn region  cshBckQuote        start=+[^\\]`+lc=1 skip=+\\\\\|\\`+ end=+`+     contains=cshNoEndlineBQ
-syn region  cshDblQuote        start=+^"+ skip=+\\\\\|\\"+ end=+"+             contains=cshSpecial,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ
-syn region  cshSnglQuote       start=+^'+ skip=+\\\\\|\\'+ end=+'+             contains=cshNoEndlineSQ
-syn region  cshBckQuote        start=+^`+ skip=+\\\\\|\\`+ end=+`+             contains=cshNoEndlineBQ
+syn region  cshDblQuote        start=+[^\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+     contains=cshSpecial,cshShellVariables,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,cshBckQuote,@Spell
+syn region  cshSnglQuote       start=+[^\\]'+lc=1 skip=+\\\\\|\\'+ end=+'+     contains=cshNoEndlineSQ,@Spell
+syn region  cshBckQuote        start=+[^\\]`+lc=1 skip=+\\\\\|\\`+ end=+`+     contains=cshNoEndlineBQ,@Spell
+syn region  cshDblQuote        start=+^"+ skip=+\\\\\|\\"+ end=+"+             contains=cshSpecial,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,@Spell
+syn region  cshSnglQuote       start=+^'+ skip=+\\\\\|\\'+ end=+'+             contains=cshNoEndlineSQ,@Spell
+syn region  cshBckQuote        start=+^`+ skip=+\\\\\|\\`+ end=+`+             contains=cshNoEndlineBQ,@Spell
 syn cluster cshCommentGroup    contains=cshTodo,@Spell
 syn match   cshComment "#.*$" contains=@cshCommentGroup
 
index 77515bc5fac037dd4f9445423d2f0a25796a025b..b051b08cf17427f5d226a70da06dd1b629e8a465 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    DCL (Digital Command Language - vms)
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Apr 12, 2006
-" Version:     5
+" Last Change: Sep 11, 2006
+" Version:     6
 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 
 " For version 5.x: Clear all syntax items
@@ -75,7 +75,7 @@ syn match   dclFilename       "\I\i*\.\(\I\i*\)\=\(;\d\+\)\=" contains=dclDirSep      conta
 syn match   dclDirSep  "[[\].;]"
 
 " Strings
-syn region  dclString  start='"'       skip='""'       end='"'
+syn region  dclString  start='"'       skip='""'       end='"' contains=@Spell
 
 " $ stuff and comments
 syn cluster dclCommentGroup    contains=dclStart,dclTodo,@Spell
index a454fb055e57a43876a01a56a186d77bc5755d68..ca47176ff7fa17908df5ab16a33941bb41cffca0 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    T2 / ROCK Linux .desc
 " Maintainer:  René Rebe <rene@exactcode.de>, Piotr Esden-Tempski <esden@rocklinux.org>
-" Last Change: 2006 Mar 30
+" Last Change: 2006 Aug 14
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -14,7 +14,7 @@ endif
 " syntax definitions
 
 setl iskeyword+=-
-syn keyword descFlag DIETLIBC KAFFE JAIL FPIC-QUIRK NO-LIBTOOL-QUIRK AUTOMAKE-QUIRK NO-AS-NEEDED NO-SSP contained
+syn keyword descFlag DIETLIBC KAFFE JAIL NOPARALLEL FPIC-QUIRK LIBTOOL-WUIRK NO-LIBTOOL-FIX AUTOMAKE-QUIRK NO-AS-NEEDED NO-SSP KERNEL INIT LIBC CC CXX F77 KCC contained
 syn keyword descLicense Unknown GPL LGPL FDL MIT BSD OpenSource Free-to-use Commercial contained
 
 " tags
index 05e8cb8e9e68d8848519484b8ab7d3e3059d07c1..0afa1694cfd1639fd610ed2c31fc53a5df48b8b3 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    Elm Filter rules
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Sep 06, 2005
-" Version:     4
+" Last Change: Sep 11, 2006
+" Version:     5
 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 
 " For version 5.x: Clear all syntax items
@@ -33,8 +33,8 @@ syn match     elmfiltNumber   contained       "\d\+"
 syn keyword    elmfiltOperKey  contained       and not                         skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,elmfiltString
 syn match      elmfiltOper     contained       "\~"                            skipnl skipwhite nextgroup=elmfiltMatch
 syn match      elmfiltOper     contained       "<=\|>=\|!=\|<\|<\|="           skipnl skipwhite nextgroup=elmfiltString,elmfiltCond,elmfiltOperKey
-syn region     elmfiltString   contained       start='"' skip='"\(\\\\\)*\\["%]' end='"'       contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey
-syn region     elmfiltString   contained       start="'" skip="'\(\\\\\)*\\['%]" end="'"       contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey
+syn region     elmfiltString   contained       start='"' skip='"\(\\\\\)*\\["%]' end='"'       contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,@Spell
+syn region     elmfiltString   contained       start="'" skip="'\(\\\\\)*\\['%]" end="'"       contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,@Spell
 syn match      elmfiltSpaceError       contained       "\s.*$"
 
 " Define the default highlighting.
index 971417c39b0d3881bcdc8d8935d22e847ec4ab5b..3aedc6cfd179ecfedc650187b2badc37c21c8457 100644 (file)
@@ -29,10 +29,10 @@ endif
 
 syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment
 
-syn region  erubyOneLiner   matchgroup=erubyDelimiter start="^%%\@!" end="$"  contains=@rubyTop               containedin=ALLBUT,@erubyRegions keepend oneline
-syn region  erubyBlock     matchgroup=erubyDelimiter start="<%%\@!" end="%>" contains=@rubyTop        containedin=ALLBUT,@erubyRegions
-syn region  erubyExpression matchgroup=erubyDelimiter start="<%="    end="%>" contains=@rubyTop               containedin=ALLBUT,@erubyRegions
-syn region  erubyComment    matchgroup=erubyDelimiter start="<%#"    end="%>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend
+syn region  erubyOneLiner   matchgroup=erubyDelimiter start="^%%\@!"    end="$"     contains=@rubyTop       containedin=ALLBUT,@erubyRegions keepend oneline
+syn region  erubyBlock     matchgroup=erubyDelimiter start="<%%\@!-\=" end="-\=%>" contains=@rubyTop        containedin=ALLBUT,@erubyRegions
+syn region  erubyExpression matchgroup=erubyDelimiter start="<%="       end="-\=%>" contains=@rubyTop       containedin=ALLBUT,@erubyRegions
+syn region  erubyComment    matchgroup=erubyDelimiter start="<%#"       end="-\=%>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
index 8fabd232549c939c28a560adcf4e8874f09e0dde..ca5d7e2f9d6d13876a0f412dd3018a2fbd663972 100644 (file)
@@ -1,16 +1,46 @@
 " Vim syntax file
-" Language:     FoxPro for DOS v2.x
-" Maintainer:   Powing Tse <powing@hkem.com>
-" Last Change:  06 September 2001
+" Filename:     foxpro.vim
+" Version:      1.0
+" Language:     FoxPro for DOS/UNIX v2.6
+" Maintainer:   Bill W. Smith, Jr. <donal@brewich.com>
+" Last Change:  15 May 2006
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
+"     This file replaces the FoxPro for DOS v2.x syntax file 
+" maintained by Powing Tse <powing@mcmug.org>
+" 
+" Change Log:  added support for FoxPro Codebook highlighting
+"              corrected highlighting of comments that do NOT start in col 1
+"              corrected highlighting of comments at end of line (&&)
+" 
+" 
 if version < 600
     syntax clear
 elseif exists("b:current_syntax")
     finish
 endif
 
+" FoxPro Codebook Naming Conventions
+syn match foxproCBConst "\<[c][A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBVar "\<[lgrt][acndlmf][A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBField "\<[a-z0-9]*\.[A-Za-z0-9_]*\>"
+" PROPER CodeBook field names start with the data type and do NOT have _
+syn match foxproCBField "\<[A-Za-z0-9]*\.[acndlm][A-Z][A-Za-z0-9]*\>"
+syn match foxproCBWin "\<w[rbcm][A-Z][A-Za-z0-9_]*\>"
+" CodeBook 2.0 defined objects as follows
+" This uses the hotkey from the screen builder as the second character
+syn match foxproCBObject "\<[lgr][bfthnkoli][A-Z][A-Za-z0-9_]*\>"
+" A later version added the following conventions for objects
+syn match foxproCBObject "\<box[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<fld[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<txt[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<phb[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<rdo[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<chk[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<pop[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<lst[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<inv[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<mnu[A-Z][A-Za-z0-9_]*\>"
+
 syntax case ignore
 
 " Highlight special characters
@@ -685,6 +715,11 @@ if version >= 508 || !exists("did_foxpro_syn_inits")
     HiLink foxproFloat    Float
     HiLink foxproComment  Comment
     HiLink foxproParenErr Error
+    HiLink foxproCBConst  PreProc
+    HiLink foxproCBField  Special
+    HiLink foxproCBVar    Identifier
+    HiLink foxproCBWin    Special
+    HiLink foxproCBObject Identifier
 
     delcommand HiLink
 endif
index ff1b78399bf8dce6d273b2e4b70acb962839939c..43b7abcfc553e40dd04552dde0147c85f3a9b210 100644 (file)
@@ -1,15 +1,15 @@
 " Vim syntax file
-" Language:    Fvwm{1,2} configuration file
-" Maintainer:  Haakon Riiser <hakonrk@fys.uio.no>
-" Last Change: 2002 Jun 2
+" Language:            Fvwm{1,2} configuration file
+" Maintainer:          Gautam Iyer <gi1242@users.sourceforge.net>
+" Previous Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
+" Last Change:         Sat 04 Nov 2006 11:28:37 PM PST
 "
 " Thanks to David Necas (Yeti) for adding Fvwm 2.4 support.
+"
+" 2006-05-09 gi1242: Rewrote fvwm2 syntax completely. Also since fvwm1 is now
+" mostly obsolete, made the syntax file pick fvwm2 syntax by default.
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-    syn clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
     finish
 endif
 
@@ -18,332 +18,600 @@ syn case ignore
 
 " Identifiers in Fvwm can contain most characters, so we only
 " include the most common ones here.
-if version >= 600
-    setlocal iskeyword=_,-,+,.,a-z,A-Z,48-57
-else
-    set iskeyword=_,-,+,.,a-z,A-Z,48-57
-endif
+setlocal iskeyword=_,-,+,.,a-z,A-Z,48-57
 
-" Read system colors from the color database (rgb.txt)
-if exists("rgb_file")
-    " We don't want any hit-return prompts, so we make sure that
-    " &shortmess is set to `O'
-    let __fvwm_oldshm = &shortmess
-    set shortmess=O
-
-    " And we set &report to a huge number, so that no hit-return prompts
-    " will be given
-    let __fvwm_oldreport = &report
-    set report=10000
-
-    " Append the color database to the fvwm configuration, and read the
-    " colors from this buffer
-    let __fvwm_i = line("$") + 1
-    exe "$r" rgb_file
-    let __fvwm_lastline = line("$")
-    while __fvwm_i <= __fvwm_lastline
-       let __fvwm_s = matchstr(getline(__fvwm_i), '^\s*\d\+\s\+\d\+\s\+\d\+\s\+\h.*$')
-       if __fvwm_s != ""
-           exe "syn keyword fvwmColors ".substitute(__fvwm_s, '^\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\h.*\)$', '\1', "")
-       endif
-       let __fvwm_i = __fvwm_i + 1
-    endwhile
-
-    " Remove the appended data
-    undo
-
-    " Goto first line again
-    1
-
-    " and restore the old values of the variables
-    let &shortmess = __fvwm_oldshm
-    let &report = __fvwm_oldreport
-    unlet __fvwm_i __fvwm_s __fvwm_lastline __fvwm_oldshm __fvwm_oldreport
-endif
-" done reading colors
-
-syn match   fvwmWhitespace     "\s\+" contained
+" Syntax items common to fvwm1 and fvwm2 config files
+syn cluster fvwmConstants      contains=fvwmEnvVar,fvwmNumber
 syn match   fvwmEnvVar         "\$\w\+"
-syn match   fvwmModConf                "^\s*\*\a\+" contains=fvwmWhitespace
-syn match   fvwmString         '".\{-}"'
+syn match   fvwmNumber         '\v<(\d+|0x[0-9a-f]+)>' 
+
+syn match   fvwmModConf                nextgroup=fvwmModArg    "\v^\s*\*\a+"
+syn region  fvwmModArg         contained contains=fvwmString,fvwmRGBValue
+                               \ start='.' skip='\\$' end='$'
+
+syn region  fvwmString         contains=fvwmBackslash start='"'
+                               \ matchgroup=fvwmBackslash skip='\v\\"' end='"'
+syn region  fvwmString         contains=fvwmBackslash start='`'
+                               \ matchgroup=fvwmBackslash skip='\v\\`' end='`'
+syn region  fvwmString         contains=fvwmBackslash start="'"
+                               \ matchgroup=fvwmBackslash skip="\v\\'" end="'"
+syn match   fvwmBackslash      contained '\\[^"'`]'
+
 syn match   fvwmRGBValue       "#\x\{3}"
 syn match   fvwmRGBValue       "#\x\{6}"
 syn match   fvwmRGBValue       "#\x\{9}"
 syn match   fvwmRGBValue       "#\x\{12}"
 syn match   fvwmRGBValue       "rgb:\x\{1,4}/\x\{1,4}/\x\{1,4}"
-syn match   fvwmPath           "\<IconPath\s.*$"lc=8 contains=fvwmEnvVar
-syn match   fvwmPath           "\<ModulePath\s.*$"lc=10 contains=fvwmEnvVar
-syn match   fvwmPath           "\<PixmapPath\s.*$"lc=10 contains=fvwmEnvVar
-syn match   fvwmModule         "\<Module\s\+\w\+"he=s+6
-syn match   fvwmKey            "\<Key\s\+\w\+"he=s+3
-syn keyword fvwmExec           Exec
-syn match   fvwmComment                "^#.*$"
-
-if (exists("b:fvwm_version") && b:fvwm_version == 1) || (exists("use_fvwm_1") && use_fvwm_1)
+
+syn region  fvwmComment                contains=@Spell start="^\s*#" skip='\\$' end='$'
+
+if (exists("b:fvwm_version") && b:fvwm_version == 1)
+           \ || (exists("use_fvwm_1") && use_fvwm_1)
+
+    "
+    " Syntax highlighting for Fvwm1 files.
+    "
+
+    " Moved from common syntax items
+    syn match   fvwmModule     "\<Module\s\+\w\+"he=s+6
+    syn keyword fvwmExec       Exec
+    syn match   fvwmPath       "\<IconPath\s.*$"lc=8 contains=fvwmEnvVar
+    syn match   fvwmPath       "\<ModulePath\s.*$"lc=10 contains=fvwmEnvVar
+    syn match   fvwmPath       "\<PixmapPath\s.*$"lc=10 contains=fvwmEnvVar
+    syn match   fvwmKey                "\<Key\s\+\w\+"he=s+3
+
+    " fvwm1 specific items
     syn match  fvwmEnvVar      "\$(\w\+)"
-    syn region fvwmStyle       matchgroup=fvwmFunction start="^\s*Style\>"hs=e-5 end="$" oneline keepend contains=fvwmString,fvwmKeyword,fvwmWhiteSpace
-
-    syn keyword fvwmFunction   AppsBackingStore AutoRaise BackingStore
-    syn keyword fvwmFunction   Beep BoundaryWidth ButtonStyle
-    syn keyword fvwmFunction   CenterOnCirculate CirculateDown
-    syn keyword fvwmFunction   CirculateHit CirculateSkip
-    syn keyword fvwmFunction   CirculateSkipIcons CirculateUp
-    syn keyword fvwmFunction   ClickTime ClickToFocus Close Cursor
-    syn keyword fvwmFunction   CursorMove DecorateTransients Delete
-    syn keyword fvwmFunction   Desk DeskTopScale DeskTopSize Destroy
-    syn keyword fvwmFunction   DontMoveOff EdgeResistance EdgeScroll
-    syn keyword fvwmFunction   EndFunction EndMenu EndPopup Focus
-    syn keyword fvwmFunction   Font Function GotoPage HiBackColor
-    syn keyword fvwmFunction   HiForeColor Icon IconBox IconFont
-    syn keyword fvwmFunction   Iconify IconPath Key Lenience Lower
-    syn keyword fvwmFunction   Maximize MenuBackColor MenuForeColor
-    syn keyword fvwmFunction   MenuStippleColor Module ModulePath Mouse
-    syn keyword fvwmFunction   Move MWMBorders MWMButtons MWMDecorHints
-    syn keyword fvwmFunction   MWMFunctionHints MWMHintOverride MWMMenus
-    syn keyword fvwmFunction   NoBorder NoBoundaryWidth Nop NoPPosition
-    syn keyword fvwmFunction   NoTitle OpaqueMove OpaqueResize Pager
-    syn keyword fvwmFunction   PagerBackColor PagerFont PagerForeColor
-    syn keyword fvwmFunction   PagingDefault PixmapPath Popup Quit Raise
-    syn keyword fvwmFunction   RaiseLower RandomPlacement Refresh Resize
-    syn keyword fvwmFunction   Restart SaveUnders Scroll SloppyFocus
-    syn keyword fvwmFunction   SmartPlacement StartsOnDesk StaysOnTop
-    syn keyword fvwmFunction   StdBackColor StdForeColor Stick Sticky
-    syn keyword fvwmFunction   StickyBackColor StickyForeColor
-    syn keyword fvwmFunction   StickyIcons StubbornIconPlacement
-    syn keyword fvwmFunction   StubbornIcons StubbornPlacement
-    syn keyword fvwmFunction   SuppressIcons Title TogglePage Wait Warp
-    syn keyword fvwmFunction   WindowFont WindowList WindowListSkip
-    syn keyword fvwmFunction   WindowsDesk WindowShade XORvalue
+    syn match  fvwmWhitespace  contained "\s\+"
+    syn region fvwmStyle       oneline keepend
+                               \ contains=fvwmString,fvwmKeyword,fvwmWhiteSpace
+                               \ matchgroup=fvwmFunction
+                               \ start="^\s*Style\>"hs=e-5 end="$"
+
+    syn keyword fvwmFunction   AppsBackingStore AutoRaise BackingStore Beep
+                               \ BoundaryWidth ButtonStyle CenterOnCirculate
+                               \ CirculateDown CirculateHit CirculateSkip
+                               \ CirculateSkipIcons CirculateUp ClickTime
+                               \ ClickToFocus Close Cursor CursorMove
+                               \ DecorateTransients Delete Desk DeskTopScale
+                               \ DeskTopSize Destroy DontMoveOff
+                               \ EdgeResistance EdgeScroll EndFunction
+                               \ EndMenu EndPopup Focus Font Function
+                               \ GotoPage HiBackColor HiForeColor Icon
+                               \ IconBox IconFont Iconify IconPath Key
+                               \ Lenience Lower Maximize MenuBackColor
+                               \ MenuForeColor MenuStippleColor Module
+                               \ ModulePath Mouse Move MWMBorders MWMButtons
+                               \ MWMDecorHints MWMFunctionHints
+                               \ MWMHintOverride MWMMenus NoBorder
+                               \ NoBoundaryWidth Nop NoPPosition NoTitle
+                               \ OpaqueMove OpaqueResize Pager PagerBackColor
+                               \ PagerFont PagerForeColor PagingDefault
+                               \ PixmapPath Popup Quit Raise RaiseLower
+                               \ RandomPlacement Refresh Resize Restart
+                               \ SaveUnders Scroll SloppyFocus SmartPlacement
+                               \ StartsOnDesk StaysOnTop StdBackColor
+                               \ StdForeColor Stick Sticky StickyBackColor
+                               \ StickyForeColor StickyIcons
+                               \ StubbornIconPlacement StubbornIcons
+                               \ StubbornPlacement SuppressIcons Title
+                               \ TogglePage Wait Warp WindowFont WindowList
+                               \ WindowListSkip WindowsDesk WindowShade
+                               \ XORvalue
 
     " These keywords are only used after the "Style" command.  To avoid
     " name collision with several commands, they are contained.
-    syn keyword fvwmKeyword    BackColor BorderWidth BoundaryWidth contained
-    syn keyword fvwmKeyword    Button CirculateHit CirculateSkip Color contained
-    syn keyword fvwmKeyword    DoubleClick ForeColor Handles HandleWidth contained
-    syn keyword fvwmKeyword    Icon IconTitle NoBorder NoBoundaryWidth contained
-    syn keyword fvwmKeyword    NoButton NoHandles NoIcon NoIconTitle contained
-    syn keyword fvwmKeyword    NoTitle Slippery StartIconic StartNormal contained
-    syn keyword fvwmKeyword    StartsAnyWhere StartsOnDesk StaysOnTop contained
-    syn keyword fvwmKeyword    StaysPut Sticky Title WindowListHit contained
-    syn keyword fvwmKeyword    WindowListSkip contained
-elseif (exists("b:fvwm_version") && b:fvwm_version == 2) || (exists("use_fvwm_2") && use_fvwm_2)
+    syn keyword fvwmKeyword    contained
+                               \ BackColor BorderWidth BoundaryWidth Button
+                               \ CirculateHit CirculateSkip Color DoubleClick
+                               \ ForeColor Handles HandleWidth Icon IconTitle
+                               \ NoBorder NoBoundaryWidth NoButton NoHandles
+                               \ NoIcon NoIconTitle NoTitle Slippery
+                               \ StartIconic StartNormal StartsAnyWhere
+                               \ StartsOnDesk StaysOnTop StaysPut Sticky
+                               \ Title WindowListHit WindowListSkip
+
+" elseif (exists("b:fvwm_version") && b:fvwm_version == 2)
+"          \ || (exists("use_fvwm_2") && use_fvwm_2)
+else
+
+    "
+    " Syntax highlighting for fvwm2 files.
+    "
     syn match   fvwmEnvVar     "\${\w\+}"
     syn match   fvwmEnvVar     "\$\[[^]]\+\]"
     syn match   fvwmEnvVar     "\$[$0-9*]"
-    syn match   fvwmDef                '^\s*+\s*".\{-}"' contains=fvwmMenuString,fvwmWhitespace
-    syn match   fvwmIcon       '%.\{-}%' contained
-    syn match   fvwmIcon       '\*.\{-}\*' contained
-    syn match   fvwmMenuString '".\{-}"' contains=fvwmIcon,fvwmShortcutKey contained
-    syn match   fvwmShortcutKey        "&." contained
-    syn match   fvwmModule     "\<KillModule\s\+\w\+"he=s+10 contains=fvwmModuleName
-    syn match   fvwmModule     "\<SendToModule\s\+\w\+"he=s+12 contains=fvwmModuleName
-    syn match   fvwmModule     "\<DestroyModuleConfig\s\+\w\+"he=s+19 contains=fvwmModuleName
-
-    syn keyword fvwmFunction   AddButtonStyle AddTitleStyle AddToDecor AddToFunc
-    syn keyword fvwmFunction   AddToMenu AnimatedMove Beep BorderStyle BugOpts
-    syn keyword fvwmFunction   BusyCursor ButtonState ButtonStyle ChangeDecor
-    syn keyword fvwmFunction   ChangeMenuStyle ClickTime Close ColorLimit
-    syn keyword fvwmFunction   ColormapFocus CopyMenuStyle Current CursorMove
-    syn keyword fvwmFunction   CursorStyle DefaultColors DefaultColorset
-    syn keyword fvwmFunction   DefaultFont DefaultIcon DefaultLayers Delete Desk
-    syn keyword fvwmFunction   DeskTopSize Destroy DestroyDecor DestroyFunc
-    syn keyword fvwmFunction   DestroyMenu DestroyMenuStyle Direction Echo
-    syn keyword fvwmFunction   EdgeResistance EdgeScroll EdgeThickness Emulate
-    syn keyword fvwmFunction   EscapeFunc Exec ExecUseShell ExitFunction
-    syn keyword fvwmFunction   FakeClick FlipFocus Focus Function GlobalOpts
-    syn keyword fvwmFunction   GnomeButton GotoDesk GotoDeskAndPage GotoPage
-    syn keyword fvwmFunction   HideGeometryWindow HilightColor HilightColorset
-    syn keyword fvwmFunction   IconFont IconPath Iconify IgnoreModifiers
-    syn keyword fvwmFunction   ImagePath Key Layer Lower Maximize Menu MenuStyle
-    syn keyword fvwmFunction   ModulePath ModuleSynchronous ModuleTimeout
-    syn keyword fvwmFunction   Mouse Move MoveThreshold MoveToDesk MoveToPage
-    syn keyword fvwmFunction   MoveToScreen Next None Nop OpaqueMoveSize
-    syn keyword fvwmFunction   PipeRead PixmapPath PlaceAgain PointerKey
-    syn keyword fvwmFunction   Popup Prev Quit QuitScreen QuitSession Raise
-    syn keyword fvwmFunction   RaiseLower Read Recapture RecaptureWindow
-    syn keyword fvwmFunction   Refresh RefreshWindow Resize ResizeMove
-    syn keyword fvwmFunction   Restart SaveQuitSession SaveSession Scroll
-    syn keyword fvwmFunction   SetAnimation SetEnv SetMenuDelay SetMenuStyle
-    syn keyword fvwmFunction   Silent SnapAttraction SnapGrid Stick Stroke
-    syn keyword fvwmFunction   StrokeFunc Style Title TitleStyle UnsetEnv
-    syn keyword fvwmFunction   UpdateDecor UpdateStyles Wait WarpToWindow
-    syn keyword fvwmFunction   WindowFont WindowId WindowList WindowShade
-    syn keyword fvwmFunction   WindowShadeAnimate WindowsDesk Xinerama
-    syn keyword fvwmFunction   XineramaPrimaryScreen XineramaSls XineramaSlsSize
-    syn keyword fvwmFunction   XorPixmap XorValue
-
-    syn keyword fvwmKeyword    Active ActiveColorset ActiveDown
-    syn keyword fvwmKeyword    ActiveFore ActiveForeOff ActivePlacement
-    syn keyword fvwmKeyword    ActivePlacementHonorsStartsOnPage
-    syn keyword fvwmKeyword    ActivePlacementIgnoresStartsOnPage ActiveUp All
-    syn keyword fvwmKeyword    AllowRestack Alphabetic Anim Animated Animation
-    syn keyword fvwmKeyword    AnimationOff AutomaticHotkeys AutomaticHotkeysOff
-    syn keyword fvwmKeyword    BGradient BackColor Background BackingStore
-    syn keyword fvwmKeyword    BackingStoreOff BorderColorset BorderWidth
-    syn keyword fvwmKeyword    Bottom Button Button0 Button1 Button2 Button3
-    syn keyword fvwmKeyword    Button4 Button5 Button6 Button7 Button8
-    syn keyword fvwmKeyword    Button9 CGradient CaptureHonorsStartsOnPage
-    syn keyword fvwmKeyword    CaptureIgnoresStartsOnPage CascadePlacement
-    syn keyword fvwmKeyword    Centered CirculateHit CirculateHitIcon
-    syn keyword fvwmKeyword    CirculateHitShaded CirculateSkip
-    syn keyword fvwmKeyword    CirculateSkipIcon CirculateSkipShaded Clear
-    syn keyword fvwmKeyword    ClickToFocus ClickToFocusDoesntPassClick
-    syn keyword fvwmKeyword    ClickToFocusDoesntRaise ClickToFocusPassesClick
-    syn keyword fvwmKeyword    ClickToFocusPassesClickOff ClickToFocusRaises
-    syn keyword fvwmKeyword    ClickToFocusRaisesOff Color Colorset Context
-    syn keyword fvwmKeyword    CurrentDesk CurrentPage CurrentPageAnyDesk
-    syn keyword fvwmKeyword    DGradient DecorateTransient Default
-    syn keyword fvwmKeyword    DepressableBorder Desk DontLowerTransient
-    syn keyword fvwmKeyword    DontRaiseTransient DontStackTransientParent
-    syn keyword fvwmKeyword    DoubleClickTime Down DumbPlacement DynamicMenu
-    syn keyword fvwmKeyword    DynamicPopDownAction DynamicPopUpAction
-    syn keyword fvwmKeyword    East Expect FVWM FirmBorder Fixed
-    syn keyword fvwmKeyword    FixedPosition Flat FlickeringMoveWorkaround
-    syn keyword fvwmKeyword    FlickeringQtDialogsWorkaround FocusFollowsMouse
-    syn keyword fvwmKeyword    FollowsFocus FollowsMouse Font ForeColor
-    syn keyword fvwmKeyword    Foreground Function Fvwm FvwmBorder
-    syn keyword fvwmKeyword    FvwmButtons GNOMEIgnoreHints GNOMEUseHints
-    syn keyword fvwmKeyword    GrabFocus GrabFocusOff GrabFocusTransient
-    syn keyword fvwmKeyword    GrabFocusTransientOff Greyed GreyedColorset
-    syn keyword fvwmKeyword    HGradient HandleWidth Handles Height
-    syn keyword fvwmKeyword    HiddenHandles Hilight3DOff Hilight3DThick
-    syn keyword fvwmKeyword    Hilight3DThickness Hilight3DThin HilightBack
-    syn keyword fvwmKeyword    HilightBackOff HilightBorderColorset
-    syn keyword fvwmKeyword    HilightColorset HilightFore HintOverride
-    syn keyword fvwmKeyword    HoldSubmenus Icon IconBox IconFill IconFont
-    syn keyword fvwmKeyword    IconGrid IconOverride IconTitle Iconic
-    syn keyword fvwmKeyword    IconifyWindowGroups IconifyWindowGroupsOff
-    syn keyword fvwmKeyword    Icons IgnoreRestack Inactive Interior Item
-    syn keyword fvwmKeyword    ItemFormat KeepWindowGroupsOnDesk Layer Left
-    syn keyword fvwmKeyword    LeftJustified Lenience LowerTransient MWM
-    syn keyword fvwmKeyword    MWMBorder MWMButtons MWMDecor MWMDecorMax
-    syn keyword fvwmKeyword    MWMDecorMenu MWMDecorMin MWMFunctions
-    syn keyword fvwmKeyword    ManualPlacement ManualPlacementHonorsStartsOnPage
-    syn keyword fvwmKeyword    ManualPlacementIgnoresStartsOnPage MaxWindowSize
-    syn keyword fvwmKeyword    Maximized Menu MenuColorset MenuFace
-    syn keyword fvwmKeyword    MinOverlapPercentPlacement MinOverlapPlacement
-    syn keyword fvwmKeyword    MiniIcon MixedVisualWorkaround ModalityIsEvil
-    syn keyword fvwmKeyword    ModuleSynchronous Mouse MouseFocus
-    syn keyword fvwmKeyword    MouseFocusClickDoesntRaise MouseFocusClickRaises
-    syn keyword fvwmKeyword    MouseFocusClickRaisesOff Move Mwm MwmBorder
-    syn keyword fvwmKeyword    MwmButtons MwmDecor MwmFunctions NakedTransient
-    syn keyword fvwmKeyword    Never NeverFocus NoActiveIconOverride NoButton
-    syn keyword fvwmKeyword    NoDecorHint NoDeskSort NoFuncHint NoGeometry
-    syn keyword fvwmKeyword    NoGeometryWithInfo NoHandles NoHotkeys NoIcon
-    syn keyword fvwmKeyword    NoIconOverride NoIconPosition NoIconTitle
-    syn keyword fvwmKeyword    NoIcons NoInset NoLenience NoNormal
-    syn keyword fvwmKeyword    NoOLDecor NoOnBottom NoOnTop NoOverride
-    syn keyword fvwmKeyword    NoPPosition NoResizeOverride NoSticky
-    syn keyword fvwmKeyword    NoStipledTitles NoTitle NoTransientPPosition
-    syn keyword fvwmKeyword    NoTransientUSPosition NoUSPosition
-    syn keyword fvwmKeyword    NoWarp Normal North Northeast Northwest
-    syn keyword fvwmKeyword    NotAlphabetic OLDecor OnBottom OnTop Once
-    syn keyword fvwmKeyword    OnlyIcons OnlyListSkip OnlyNormal OnlyOnBottom
-    syn keyword fvwmKeyword    OnlyOnTop OnlySticky Opacity ParentalRelativity
-    syn keyword fvwmKeyword    Pixmap PopdownDelayed PopdownDelay PopupDelay
-    syn keyword fvwmKeyword    PopupAsRootMenu PopupAsSubmenu PopdownImmediately
-    syn keyword fvwmKeyword    PopupDelayed PopupImmediately PopupOffset
-    syn keyword fvwmKeyword    Quiet RGradient RaiseOverNativeWindows
-    syn keyword fvwmKeyword    RaiseOverUnmanaged RaiseTransient
-    syn keyword fvwmKeyword    Raised Read RecaptureHonorsStartsOnPage
-    syn keyword fvwmKeyword    RecaptureIgnoresStartsOnPage Rectangle
-    syn keyword fvwmKeyword    RemoveSubmenus Reset Resize ResizeHintOverride
-    syn keyword fvwmKeyword    ResizeOpaque ResizeOutline ReverseOrder
-    syn keyword fvwmKeyword    Right RightJustified Root SGradient SameType
-    syn keyword fvwmKeyword    SaveUnder SaveUnderOff ScatterWindowGroups
-    syn keyword fvwmKeyword    Screen SelectInPlace SelectOnRelease
-    syn keyword fvwmKeyword    SelectWarp SeparatorsLong SeparatorsShort
-    syn keyword fvwmKeyword    ShowMapping SideColor SidePic Simple
-    syn keyword fvwmKeyword    SkipMapping Slippery SlipperyIcon SloppyFocus
-    syn keyword fvwmKeyword    SmartPlacement SmartPlacementIsNormal
-    syn keyword fvwmKeyword    SmartPlacementIsReallySmart Solid South
-    syn keyword fvwmKeyword    Southeast Southwest StackTransientParent
-    syn keyword fvwmKeyword    StartIconic StartNormal StartsAnyWhere
-    syn keyword fvwmKeyword    StartsLowered StartsOnDesk StartsOnPage
-    syn keyword fvwmKeyword    StartsOnPageIgnoresTransients
-    syn keyword fvwmKeyword    StartsOnPageIncludesTransients StartsOnScreen
-    syn keyword fvwmKeyword    StartsRaised StaysOnBottom StaysOnTop StaysPut
-    syn keyword fvwmKeyword    Sticky StickyIcon StipledTitles StippledTitle
-    syn keyword fvwmKeyword    StippledTitleOff SubmenusLeft SubmenusRight Sunk
-    syn keyword fvwmKeyword    This TileCascadePlacement TileManualPlacement
-    syn keyword fvwmKeyword    TiledPixmap Timeout Title TitleAtBottom
-    syn keyword fvwmKeyword    TitleAtTop TitleUnderlines0 TitleUnderlines1
-    syn keyword fvwmKeyword    TitleUnderlines2 TitleWarp TitleWarpOff Top
-    syn keyword fvwmKeyword    Transient TrianglesRelief TrianglesSolid
-    syn keyword fvwmKeyword    Up UseBorderStyle UseDecor UseIconName
-    syn keyword fvwmKeyword    UseIconPosition UseListSkip UsePPosition
-    syn keyword fvwmKeyword    UseStyle UseTitleStyle UseTransientPPosition
-    syn keyword fvwmKeyword    UseTransientUSPosition UseUSPosition VGradient
-    syn keyword fvwmKeyword    VariablePosition Vector VerticalItemSpacing
-    syn keyword fvwmKeyword    VerticalTitleSpacing WIN Wait Warp WarpTitle
-    syn keyword fvwmKeyword    West Win Window WindowListHit WindowListSkip
-    syn keyword fvwmKeyword    WindowShadeScrolls WindowShadeShrinks
-    syn keyword fvwmKeyword    WindowShadeSteps Windows XineramaRoot YGradient
-    syn keyword fvwmKeyword    bottomright default pointer prev quiet
-    syn keyword fvwmKeyword    True False Toggle
-
-    syn keyword fvwmConditionName      AcceptsFocus CurrentDesk CurrentGlobalPage
-    syn keyword fvwmConditionName      CurrentGlobalPageAnyDesk CurrentPage
-    syn keyword fvwmConditionName      CurrentPageAnyDesk CurrentScreen Iconic Layer
-    syn keyword fvwmConditionName      Maximized PlacedByButton3 PlacedByFvwm Raised
-    syn keyword fvwmConditionName      Shaded Sticky Transient Visible
-
-    syn keyword fvwmContextName        BOTTOM BOTTOM_EDGE BOTTOM_LEFT BOTTOM_RIGHT
-    syn keyword fvwmContextName        DEFAULT DESTROY LEFT LEFT_EDGE MENU MOVE
-    syn keyword fvwmContextName        RESIZE RIGHT RIGHT_EDGE ROOT SELECT STROKE SYS
-    syn keyword fvwmContextName        TITLE TOP TOP_EDGE TOP_LEFT TOP_RIGHT WAIT
-    syn keyword fvwmContextName        POSITION
-
-    syn keyword fvwmFunctionName       contained FvwmAnimate FvwmAudio FvwmAuto
-    syn keyword fvwmFunctionName       contained FvwmBacker FvwmBanner FvwmButtons
-    syn keyword fvwmFunctionName       contained FvwmCascade FvwmCommandS
-    syn keyword fvwmFunctionName       contained FvwmConsole FvwmConsoleC FvwmCpp
-    syn keyword fvwmFunctionName       contained FvwmDebug FvwmDragWell FvwmEvent
-    syn keyword fvwmFunctionName       contained FvwmForm FvwmGtk FvwmIconBox
-    syn keyword fvwmFunctionName       contained FvwmIconMan FvwmIdent FvwmM4
-    syn keyword fvwmFunctionName       contained FvwmPager FvwmRearrange FvwmSave
-    syn keyword fvwmFunctionName       contained FvwmSaveDesk FvwmScript FvwmScroll
-    syn keyword fvwmFunctionName       contained FvwmTalk FvwmTaskBar FvwmTheme
-    syn keyword fvwmFunctionName       contained FvwmTile FvwmWharf FvwmWinList
-
-    syn keyword fvwmFunctionName       StartFunction InitFunction RestartFunction
-    syn keyword fvwmFunctionName       ExitFunction SessionInitFunction
-    syn keyword fvwmFunctionName       SessionRestartFunction SessionExitFunction
-    syn keyword fvwmFunctionName       MissingSubmenuFunction
-endif
 
-if version >= 508 || !exists("did_fvwm_syntax_inits")
-    if version < 508
-       let did_fvwm_syntax_inits = 1
-       command -nargs=+ HiLink hi link <args>
-    else
-       command -nargs=+ HiLink hi def link <args>
-    endif
-
-    HiLink fvwmComment         Comment
-    HiLink fvwmEnvVar          Macro
-    HiLink fvwmExec            Function
-    HiLink fvwmFunction                Function
-    HiLink fvwmFunctionName    Special
-    HiLink fvwmContextName     Function
-    HiLink fvwmConditionName   Function
-    HiLink fvwmIcon            Comment
-    HiLink fvwmKey             Function
-    HiLink fvwmKeyword         Keyword
-    HiLink fvwmMenuString      String
-    HiLink fvwmModConf         Macro
-    HiLink fvwmModule          Function
-    HiLink fvwmModuleName      Special
-    HiLink fvwmRGBValue                Type
-    HiLink fvwmShortcutKey     SpecialChar
-    HiLink fvwmString          String
-
-    if exists("rgb_file")
-       HiLink fvwmColors       Type
-    endif
-
-    delcommand HiLink
+    syn match   fvwmDef                contains=fvwmMenuString,fvwmWhitespace
+                               \ '^\s*+\s*".\{-}"'
+    syn region  fvwmMenuString contains=fvwmIcon,fvwmShortcutKey
+                               \ start='^\s*+\s*\zs"' skip='\v\\\\|\\\"' end='"'
+    syn region fvwmIcon        contained start='\v\%\%@!' end='%'
+    syn match   fvwmShortcutKey        contained "&."
+
+    syn keyword fvwmModuleName FvwmAnimate FvwmAudio FvwmAuto FvwmBacker
+                               \ FvwmBanner FvwmButtons FvwmCommandS
+                               \ FvwmConsole FvwmCpp FvwmDebug FvwmDragWell
+                               \ FvwmEvent FvwmForm FvwmGtk FvwmIconBox
+                               \ FvwmIconMan FvwmIdent FvwmM4 FvwmPager
+                               \ FvwmSave FvwmSaveDesk FvwmScript FvwmScroll
+                               \ FvwmTaskBar FvwmWinList FvwmWharf
+    " Obsolete fvwmModuleName: FvwmTheme
+
+    syn keyword fvwmKeyword    AddToMenu ChangeMenuStyle CopyMenuStyle
+                               \ DestroyMenu DestroyMenuStyle Menu
+                               \ Popup TearMenuOff Title BugOpts BusyCursor
+                               \ ClickTime ColorLimit ColormapFocus
+                               \ DefaultColors DefaultColorset DefaultFont
+                               \ DefaultIcon DefaultLayers Deschedule Emulate
+                               \ EscapeFunc FakeClick FakeKeypress GlobalOpts
+                               \ HilightColor HilightColorset IconFont
+                               \ PrintInfo Repeat Schedule State WindowFont
+                               \ XSync XSynchronize AnimatedMove
+                               \ HideGeometryWindow Layer Lower Move
+                               \ MoveToDesk MoveThreshold MoveToPage
+                               \ MoveToScreen OpaqueMoveSize PlaceAgain Raise
+                               \ RaiseLower ResizeMaximize ResizeMove
+                               \ ResizeMoveMaximize RestackTransients
+                               \ SetAnimation SnapAttraction SnapGrid
+                               \ WindowsDesk XorPixmap XorValue CursorMove
+                               \ FlipFocus Focus WarpToWindow Close Delete
+                               \ Destroy Iconify Recapture RecaptureWindow
+                               \ Refresh RefreshWindow Stick StickAcrossPages
+                               \ StickAcrossDesks WindowShade
+                               \ WindowShadeAnimate IgnoreModifiers
+                               \ EdgeCommand EdgeLeaveCommand GnomeButton
+                               \ Stroke StrokeFunc FocusStyle DestroyStyle
+                               \ UpdateStyles AddToDecor BorderStyle
+                               \ ChangeDecor DestroyDecor UpdateDecor
+                               \ DesktopName DeskTopSize EdgeResistance
+                               \ EdgeScroll EdgeThickness EwmhBaseStruts
+                               \ EWMHNumberOfDesktops GotoDeskAndPage
+                               \ GotoPage Scroll Xinerama
+                               \ XineramaPrimaryScreen XineramaSls
+                               \ XineramaSlsSize XineramaSlsScreens AddToFunc
+                               \ Beep DestroyFunc Echo Exec ExecUseShell
+                               \ Function Nop PipeRead Read SetEnv Silent
+                               \ UnsetEnv Wait DestroyModuleConfig KillModule
+                               \ Module ModuleSynchronous ModuleTimeout
+                               \ SendToModule Quit QuitScreen QuitSession
+                               \ Restart SaveSession SaveQuitSession KeepRc
+                               \ NoWindow Break CleanupColorsets
+
+    " Conditional commands
+    syn keyword fvwmKeyword    nextgroup=fvwmCondition skipwhite
+                               \ All Any Current Next None Pick PointerWindow
+                               \ Prev ThisWindow
+    syn keyword fvwmKeyword    nextgroup=fvwmDirection skipwhite
+                               \ Direction
+    syn keyword fvwmDirection  contained nextgroup=fvwmDirection skipwhite
+                               \ FromPointer
+    syn keyword fvwmDirection  contained nextgroup=fvwmCondition skipwhite
+                               \ North Northeast East Southeast South
+                               \ Southwest West Northwest Center
+    syn region fvwmCondition   contained contains=fvwmCondNames,fvwmString
+                               \ matchgroup=fvwmKeyword start='(' skip=','
+                               \ end=')'
+    syn keyword fvwmCondNames  contained
+                               \ AcceptsFocus AnyScreen CirculateHit
+                               \ CirculateHitIcon CirculateHitShaded Closable
+                               \ CurrentDesk CurrentGlobalPage
+                               \ CurrentGlobalPageAnyDesk CurrentPage
+                               \ CurrentPageAnyDesk CurrentScreen FixedSize
+                               \ Focused HasHandles HasPointer Iconic
+                               \ Iconifiable Maximizable Maximized
+                               \ Overlapped PlacedByButton3 PlacedByFvwm Raised
+                               \ Shaded Sticky StickyAcrossDesks
+                               \ StickyAcrossPages Transient Visible
+    syn keyword fvwmCondNames  contained skipwhite nextgroup=@fvwmConstants
+                               \ State Layer
+
+    " Test
+    syn keyword fvwmKeyword    nextgroup=fvwmTCond skipwhite
+                               \ Test
+    syn region fvwmTCond       contained contains=fvwmTCNames,fvwmString
+                               \ matchgroup=fvwmKeyword start='(' end=')'
+    syn keyword        fvwmTCNames     contained
+                               \ Version EnvIsSet EnvMatch EdgeHasPointer
+                               \ EdgeIsActive Start Init Restart Exit Quit
+                               \ ToRestart True False F R W X I
+    
+    " TestRc
+    syn keyword fvwmKeyword    nextgroup=fvwmTRCond skipwhite
+                               \ TestRc
+    syn region fvwmTRCond      contained contains=fvwmTRNames,fvwmNumber
+                               \ matchgroup=fvwmKeyword start='(' end=')'
+    syn keyword        fvwmTRNames     contained NoMatch Match Error Break
+
+    " Colorsets
+    syn keyword fvwmKeyword    nextgroup=fvwmCSArgs    skipwhite
+                               \ ColorSet
+    syn region fvwmCSArgs      contained transparent contains=fvwmCSNames,@fvwmConstants,fvwmString,fvwmRGBValue,fvwmGradient
+               \ start='.' skip='\\$' end='$'
+    syn keyword        fvwmCSNames     contained
+                               \ fg Fore Foreground bg Back Background hi
+                               \ Hilite Hilight sh Shade Shadow fgsh Pixmap
+                               \ TiledPixmap AspectPixmap RootTransparent
+                               \ Shape TiledShape AspectShape Tint fgTint
+                               \ bgTint Alpha fgAlpha Dither IconTint
+                               \ IconAlpha NoShape Plain Translucent
+    syn match  fvwmCSNames     contained       '\v<Transparent>'
+    syn match  fvwmGradient    contained       '\v<[HVDBSCRY]Gradient>'
+
+    " Styles
+    syn keyword fvwmKeyword    nextgroup=fvwmStyleArgs skipwhite
+                               \ Style WindowStyle
+    syn region fvwmStyleArgs   contained transparent contains=fvwmStyleNames,@fvwmConstants,fvwmString,fvwmRGBValue
+                               \ start='.' skip='\\$' end='$'
+    syn keyword        fvwmStyleNames  contained
+                               \ BorderWidth HandleWidth NoIcon Icon MiniIcon
+                               \ IconBox IconGrid IconFill IconSize NoTitle
+                               \ Title TitleAtBottom TitleAtLeft TitleAtRight
+                               \ TitleAtTop LeftTitleRotatedCW
+                               \ LeftTitleRotatedCCW RightTitleRotatedCCW
+                               \ RightTitleRotatedCW TopTitleRotated
+                               \ TopTitleNotRotated BottomTitleRotated
+                               \ BottomTitleNotRotated UseTitleDecorRotation
+                               \ StippledTitle StippledTitleOff
+                               \ IndexedWindowName ExactWindowName
+                               \ IndexedIconName ExactIconName Borders
+                               \ NoHandles Handles WindowListSkip
+                               \ WindowListHit CirculateSkip CirculateHit
+                               \ CirculateSkipShaded CirculateHitShaded Layer
+                               \ StaysOnTop StaysOnBottom StaysPut Sticky
+                               \ Slippery StickyAcrossPages StickyAcrossDesks
+                               \ StartIconic StartNormal Color ForeColor
+                               \ BackColor Colorset HilightFore HilightBack
+                               \ HilightColorset BorderColorset
+                               \ HilightBorderColorset IconTitleColorset
+                               \ HilightIconTitleColorset
+                               \ IconBackgroundColorset IconTitleRelief
+                               \ IconBackgroundRelief IconBackgroundPadding
+                               \ Font IconFont StartsOnDesk StartsOnPage
+                               \ StartsAnyWhere StartsOnScreen
+                               \ ManualPlacementHonorsStartsOnPage
+                               \ ManualPlacementIgnoresStartsOnPage
+                               \ CaptureHonorsStartsOnPage
+                               \ CaptureIgnoresStartsOnPage
+                               \ RecaptureHonorsStartsOnPage
+                               \ RecaptureIgnoresStartsOnPage
+                               \ StartsOnPageIncludesTransients
+                               \ StartsOnPageIgnoresTransients IconTitle
+                               \ NoIconTitle MwmButtons FvwmButtons MwmBorder
+                               \ FvwmBorder MwmDecor NoDecorHint MwmFunctions
+                               \ NoFuncHint HintOverride NoOverride NoButton
+                               \ Button ResizeHintOverride NoResizeOverride
+                               \ OLDecor NoOLDecor GNOMEUseHints
+                               \ GNOMEIgnoreHints StickyIcon SlipperyIcon
+                               \ StickyAcrossPagesIcon StickyAcrossDesksIcon
+                               \ ManualPlacement CascadePlacement
+                               \ MinOverlapPlacement
+                               \ MinOverlapPercentPlacement
+                               \ TileManualPlacement TileCascadePlacement
+                               \ CenterPlacement MinOverlapPlacementPenalties
+                               \ MinOverlapPercentPlacementPenalties
+                               \ DecorateTransient NakedTransient
+                               \ DontRaiseTransient RaiseTransient
+                               \ DontLowerTransient LowerTransient
+                               \ DontStackTransientParent
+                               \ StackTransientParent SkipMapping ShowMapping
+                               \ ScatterWindowGroups KeepWindowGroupsOnDesk
+                               \ UseDecor UseStyle NoPPosition UsePPosition
+                               \ NoUSPosition UseUSPosition
+                               \ NoTransientPPosition UseTransientPPosition
+                               \ NoTransientUSPosition UseTransientUSPosition
+                               \ NoIconPosition UseIconPosition Lenience
+                               \ NoLenience ClickToFocus SloppyFocus
+                               \ MouseFocus FocusFollowsMouse NeverFocus
+                               \ ClickToFocusPassesClickOff
+                               \ ClickToFocusPassesClick
+                               \ ClickToFocusRaisesOff ClickToFocusRaises
+                               \ MouseFocusClickRaises
+                               \ MouseFocusClickRaisesOff GrabFocus
+                               \ GrabFocusOff GrabFocusTransientOff
+                               \ GrabFocusTransient FPFocusClickButtons
+                               \ FPFocusClickModifiers
+                               \ FPSortWindowlistByFocus FPClickRaisesFocused
+                               \ FPClickDecorRaisesFocused
+                               \ FPClickIconRaisesFocused
+                               \ FPClickRaisesUnfocused
+                               \ FPClickDecorRaisesUnfocused
+                               \ FPClickIconRaisesUnfocused FPClickToFocus
+                               \ FPClickDecorToFocus FPClickIconToFocus
+                               \ FPEnterToFocus FPLeaveToUnfocus
+                               \ FPFocusByProgram FPFocusByFunction
+                               \ FPFocusByFunctionWarpPointer FPLenient
+                               \ FPPassFocusClick FPPassRaiseClick
+                               \ FPIgnoreFocusClickMotion
+                               \ FPIgnoreRaiseClickMotion
+                               \ FPAllowFocusClickFunction
+                               \ FPAllowRaiseClickFunction FPGrabFocus
+                               \ FPGrabFocusTransient FPOverrideGrabFocus
+                               \ FPReleaseFocus FPReleaseFocusTransient
+                               \ FPOverrideReleaseFocus StartsLowered
+                               \ StartsRaised IgnoreRestack AllowRestack
+                               \ FixedPosition VariablePosition
+                               \ FixedUSPosition VariableUSPosition
+                               \ FixedPPosition VariablePPosition FixedSize
+                               \ VariableSize FixedUSSize VariableUSSize
+                               \ FixedPSize VariablePSize Closable
+                               \ Iconifiable Maximizable
+                               \ AllowMaximizeFixedSize IconOverride
+                               \ NoIconOverride NoActiveIconOverride
+                               \ DepressableBorder FirmBorder MaxWindowSize
+                               \ IconifyWindowGroups IconifyWindowGroupsOff
+                               \ ResizeOpaque ResizeOutline BackingStore
+                               \ BackingStoreOff BackingStoreWindowDefault
+                               \ Opacity ParentalRelativity SaveUnder
+                               \ SaveUnderOff WindowShadeShrinks
+                               \ WindowShadeScrolls WindowShadeSteps
+                               \ WindowShadeAlwaysLazy WindowShadeBusy
+                               \ WindowShadeLazy EWMHDonateIcon
+                               \ EWMHDontDonateIcon EWMHDonateMiniIcon
+                               \ EWMHDontDonateMiniIcon EWMHMiniIconOverride
+                               \ EWMHNoMiniIconOverride
+                               \ EWMHUseStackingOrderHints
+                               \ EWMHIgnoreStackingOrderHints
+                               \ EWMHIgnoreStateHints EWMHUseStateHints
+                               \ EWMHIgnoreStrutHints EWMHUseStrutHints
+                               \ EWMHMaximizeIgnoreWorkingArea
+                               \ EWMHMaximizeUseWorkingArea
+                               \ EWMHMaximizeUseDynamicWorkingArea
+                               \ EWMHPlacementIgnoreWorkingArea
+                               \ EWMHPlacementUseWorkingArea
+                               \ EWMHPlacementUseDynamicWorkingArea
+                               \ MoveByProgramMethod Unmanaged State
+
+    " Cursor styles
+    syn keyword fvwmKeyword    nextgroup=fvwmCursorStyle skipwhite
+                               \ CursorStyle
+    syn case match
+    syn keyword fvwmCursorStyle        contained
+                               \ POSITION TITLE DEFAULT SYS MOVE RESIZE WAIT
+                               \ MENU SELECT DESTROY TOP RIGHT BOTTOM LEFT
+                               \ TOP_LEFT TOP_RIGHT BOTTOM_LEFT BOTTOM_RIGHT
+                               \ TOP_EDGE RIGHT_EDGE BOTTOM_EDGE LEFT_EDGE
+                               \ ROOT STROKE
+    syn case ignore
+
+    " Menu style
+    syn keyword fvwmKeyword    nextgroup=fvwmMStyleArgs skipwhite
+                               \ MenuStyle
+    syn region fvwmMStyleArgs  contained transparent contains=fvwmMStyleNames,@fvwmConstants,fvwmString,fvwmGradient,fvwmRGBValue
+                               \ start='.' skip='\\$' end='$'
+    syn keyword        fvwmMStyleNames contained
+                               \ Fvwm Mwm Win BorderWidth Foreground
+                               \ Background Greyed HilightBack HilightBackOff
+                               \ ActiveFore ActiveForeOff MenuColorset
+                               \ ActiveColorset GreyedColorset Hilight3DThick
+                               \ Hilight3DThin Hilight3DOff
+                               \ Hilight3DThickness Animation AnimationOff
+                               \ Font MenuFace PopupDelay PopupOffset
+                               \ TitleWarp TitleWarpOff TitleUnderlines0
+                               \ TitleUnderlines1 TitleUnderlines2
+                               \ SeparatorsLong SeparatorsShort
+                               \ TrianglesSolid TrianglesRelief
+                               \ PopupImmediately PopupDelayed
+                               \ PopdownImmediately PopdownDelayed
+                               \ PopupActiveArea DoubleClickTime SidePic
+                               \ SideColor PopupAsRootMenu PopupAsSubmenu
+                               \ PopupIgnore PopupClose RemoveSubmenus
+                               \ HoldSubmenus SubmenusRight SubmenusLeft
+                               \ SelectOnRelease ItemFormat
+                               \ VerticalItemSpacing VerticalTitleSpacing
+                               \ AutomaticHotkeys AutomaticHotkeysOff
+
+    " Button style
+    syn keyword fvwmKeyword    nextgroup=fvwmBNum      skipwhite
+                               \ ButtonStyle AddButtonStyle
+    syn match  fvwmBNum        contained
+                               \ nextgroup=fvwmBState,fvwmBStyleArgs skipwhite 
+                               \ '\v<([0-9]|All|Left|Right|Reset)>'
+    syn keyword        fvwmBState      contained nextgroup=fvwmBStyleArgs skipwhite
+                               \ ActiveUp ActiveDown InactiveUp InactiveDown
+                               \ Active Inactive ToggledActiveUp
+                               \ ToggledActiveDown ToggledInactiveUp
+                               \ ToggledInactiveDown ToggledActive
+                               \ ToggledInactive AllNormal AllToggled
+                               \ AllActive AllInactive AllUp AllDown
+    syn region fvwmBStyleArgs  contained contains=fvwmBStyleFlags,fvwmBStyleNames,fvwmGradient,fvwmRGBValue,@fvwmConstants,fvwmString
+                               \ start='\S' skip='\\$' end='$'
+    syn keyword        fvwmBStyleNames contained
+                               \ Simple Default Solid Colorset Vector Pixmap
+                               \ AdjustedPixmap ShrunkPixmap StretchedPixmap
+                               \ TiledPixmap MiniIcon
+    syn keyword fvwmBStyleFlags        contained
+                               \ Raised Sunk Flat UseTitleStyle
+                               \ UseBorderStyle
+
+    " Border style
+    syn keyword fvwmKeyword    skipwhite nextgroup=fvwmBdState,fvwmBdStyleArgs
+                               \ BorderStyle
+    syn keyword        fvwmBdState     contained skipwhite nextgroup=fvwmBdStyleArgs
+                               \ Active Inactive
+    syn region fvwmBdStyleArgs contained contains=fvwmBdStyNames,fvwmBdStyFlags
+                               \ start='\S' skip='\\$' end='$'
+    syn keyword        fvwmBdStyNames  contained
+                               \ TiledPixmap Colorset
+    syn keyword        fvwmBdStyFlags  contained
+                               \ HiddenHandles NoInset Raised Sunk Flat
+
+    " Title styles
+    syn keyword        fvwmKeyword     skipwhite nextgroup=fvwmTState,fvwmTStyleArgs
+                               \ TitleStyle AddTitleStyle
+    syn keyword        fvwmTState      contained skipwhite nextgroup=fvwmTStyleArgs
+                               \ ActiveUp ActiveDown InactiveUp InactiveDown
+                               \ Active Inactive ToggledActiveUp
+                               \ ToggledActiveDown ToggledInactiveUp
+                               \ ToggledInactiveDown ToggledActive
+                               \ ToggledInactive AllNormal AllToggled
+                               \ AllActive AllInactive AllUp AllDown
+    syn region fvwmTStyleArgs  contained contains=fvwmBStyleNames,fvwmTStyleNames,fvwmMPmapNames,fvwmTStyleFlags,fvwmGradient,fvwmRGBValue,@fvwmConstants
+                               \ start='\S' skip='\\$' end='$'
+    syn keyword        fvwmTStyleNames contained
+                               \ MultiPixmap
+    syn keyword fvwmTStyleNames        contained
+                               \ LeftJustified Centered RightJustified Height
+                               \ MinHeight
+    syn keyword        fvwmMPmapNames  contained
+                               \ Main LeftMain RightMain UnderText LeftOfText
+                               \ RightOfText LeftEnd RightEnd Buttons
+                               \ LeftButtons RightButtons
+    syn keyword        fvwmTStyleFlags contained
+                               \ Raised Flat Sunk
+
+    " Button state
+    syn keyword fvwmKeyword    nextgroup=fvwmBStateArgs
+                               \ ButtonState
+    syn region fvwmBStateArgs  contained contains=fvwmBStateTF,fvwmBStateNames
+                               \ start='.' skip='\\$' end='$'
+    syn keyword        fvwmBStateNames contained ActiveDown Inactive InactiveDown
+    syn keyword fvwmBStateTF   contained True False
+
+    " Paths
+    syn keyword fvwmKeyword    nextgroup=fvwmPath      skipwhite
+                               \ IconPath ImagePath LocalePath PixmapPath
+                               \ ModulePath 
+    syn match  fvwmPath        contained contains=fvwmEnvVar '\v.+$'
+
+    " Window list command
+    syn keyword fvwmKeyword    nextgroup=fvwmWLArgs skipwhite
+                               \ WindowList
+    syn region fvwmWLArgs      contained
+               \ contains=fvwmCondition,@fvwmConstants,fvwmString,fvwmWLOpts
+               \ start='.' skip='\\$' end='$'
+    syn keyword fvwmWLOpts     contained
+                               \ Geometry NoGeometry NoGeometryWithInfo
+                               \ NoDeskNum NoNumInDeskTitle
+                               \ NoCurrentDeskTitle MaxLabelWidth width
+                               \ TitleForAllDesks Function funcname Desk
+                               \ desknum CurrentDesk NoIcons Icons OnlyIcons
+                               \ NoNormal Normal OnlyNormal NoSticky Sticky
+                               \ OnlySticky NoStickyAcrossPages
+                               \ StickyAcrossPages OnlyStickyAcrossPages
+                               \ NoStickyAcrossDesks StickyAcrossDesks
+                               \ OnlyStickyAcrossDesks NoOnTop OnTop
+                               \ OnlyOnTop NoOnBottom OnBottom OnlyOnBottom
+                               \ Layer UseListSkip OnlyListSkip NoDeskSort
+                               \ ReverseOrder CurrentAtEnd IconifiedAtEnd
+                               \ UseIconName Alphabetic NotAlphabetic
+                               \ SortByResource SortByClass NoHotkeys
+                               \ SelectOnRelease
+
+    syn keyword fvwmSpecialFn  StartFunction InitFunction RestartFunction
+                               \ ExitFunction SessionInitFunction
+                               \ SessionRestartFunction SessionExitFunction
+                               \ MissingSubmenuFunction WindowListFunc
+
+    syn keyword fvwmKeyword    skipwhite nextgroup=fvwmKeyWin,fvwmKeyName
+                               \ Key PointerKey
+    syn region fvwmKeyWin      contained skipwhite nextgroup=fvwmKeyName
+                               \ start='(' end=')'
+    syn case match
+    syn match  fvwmKeyName     contained skipwhite nextgroup=fvwmKeyContext
+                               \ '\v<([a-zA-Z0-9]|F\d+|KP_\d)>'
+    syn keyword fvwmKeyName    contained skipwhite nextgroup=fvwmKeyContext
+                               \ BackSpace Begin Break Cancel Clear Delete
+                               \ Down End Escape Execute Find Help Home
+                               \ Insert KP_Add KP_Begin KP_Decimal KP_Delete
+                               \ KP_Divide KP_Down KP_End KP_Enter KP_Equal
+                               \ KP_Home KP_Insert KP_Left KP_Multiply
+                               \ KP_Next KP_Page_Down KP_Page_Up KP_Prior
+                               \ KP_Right KP_Separator KP_Space KP_Subtract
+                               \ KP_Tab KP_Up Left Linefeed Menu Mode_switch
+                               \ Next Num_Lock Page_Down Page_Up Pause Print
+                               \ Prior Redo Return Right script_switch
+                               \ Scroll_Lock Select Sys_Req Tab Undo Up space
+                               \ exclam quotedbl numbersign dollar percent
+                               \ ampersand apostrophe quoteright parenleft
+                               \ parenright asterisk plus comma minus period
+                               \ slash colon semicolon less equal greater
+                               \ question at bracketleft backslash
+                               \ bracketright asciicircum underscore grave
+                               \ quoteleft braceleft bar braceright
+                               \ asciitilde
+
+    syn match  fvwmKeyContext  contained skipwhite nextgroup=fvwmKeyMods
+                               \ '\v<[][RWDTS_F<^>vI0-9AM-]+>'
+    syn match  fvwmKeyMods     contained '\v[NCSMLA1-5]+'
+    syn case ignore
+
+    syn keyword        fvwmKeyword     skipwhite nextgroup=fvwmMouseWin,fvwmMouseButton
+                               \ Mouse
+    syn region fvwmMouseWin    contained skipwhite nextgroup=fvwmMouseButton
+                               \ start='(' end=')'
+    syn match  fvwmMouseButton contained skipwhite nextgroup=fvwmKeyContext
+                               \ '[0-5]'
 endif
 
+" Define syntax highlighting groups
+
+"
+" Common highlighting groups
+"
+hi def link fvwmComment                Comment
+hi def link fvwmEnvVar         Macro
+hi def link fvwmNumber         Number
+hi def link fvwmKeyword                Keyword
+hi def link fvwmPath           Constant
+hi def link fvwmModConf                Macro
+hi def link fvwmRGBValue       Constant
+hi def link fvwmString         String
+hi def link fvwmBackslash      SpecialChar
+
+
+"
+" Highlighting groups for fvwm1 specific items
+"
+hi def link fvwmExec           fvwmKeyword
+hi def link fvwmKey            fvwmKeyword
+hi def link fvwmModule         fvwmKeyword
+hi def link fvwmFunction       Function
+
+"
+" Highlighting groups for fvwm2 specific items
+"
+hi def link fvwmSpecialFn      Type
+hi def link fvwmCursorStyle    fvwmStyleNames
+hi def link fvwmStyleNames     Identifier
+hi def link fvwmMStyleNames    fvwmStyleNames
+hi def link fvwmCSNames                fvwmStyleNames
+hi def link fvwmGradient       fvwmStyleNames
+hi def link fvwmCondNames      fvwmStyleNames
+hi def link fvwmTCNames                fvwmStyleNames
+hi def link fvwmTRNames                fvwmStyleNames
+hi def link fvwmWLOpts         fvwmStyleNames
+
+hi def link fvwmBNum           Number
+hi def link fvwmBState         Type
+hi def link fvwmBStyleNames    fvwmStyleNames
+hi def link fvwmBStyleFlags    Special
+
+hi def link fvwmBStateTF       Constant
+hi def link fvwmBStateNames    fvwmStyleNames
+
+hi def link fvwmBdState                fvwmBState
+hi def link fvwmBdStyNames     fvwmStyleNames
+hi def link fvwmBdStyFlags     fvwmBStyleFlags
+
+hi def link fvwmTState         fvwmBState
+hi def link fvwmTStyleNames    fvwmStyleNames
+hi def link fvwmMPmapNames     fvwmBStyleFlags
+hi def link fvwmTStyleFlags    fvwmBStyleFlags
+
+hi def link fvwmDirection      fvwmBStyleFlags
+
+hi def link fvwmKeyWin         Constant
+hi def link fvwmMouseWin       fvwmKeyWin
+hi def link fvwmKeyName                Special
+hi def link fvwmKeyContext     fvwmKeyName
+hi def link fvwmKeyMods                fvwmKeyName
+hi def link fvwmMouseButton    fvwmKeyName
+
+hi def link fvwmMenuString     String
+hi def link fvwmIcon           Type
+hi def link fvwmShortcutKey    SpecialChar
+
+hi def link fvwmModuleName     Function
+
 let b:current_syntax = "fvwm"
-" vim: sts=4 sw=4 ts=8
diff --git a/runtime/syntax/hamster.vim b/runtime/syntax/hamster.vim
new file mode 100644 (file)
index 0000000..bd52300
--- /dev/null
@@ -0,0 +1,382 @@
+" Vim syntax file
+" Language:    Hamster Scripting Language
+" Maintainer:  David Fishburn <fishburn@ianywhere.com>
+" Last Change: Sun Oct 24 2004 7:11:50 PM
+" Version:     2.0.6.0
+
+" Description: Hamster Classic
+" Hamster is a local server for news and mail. It's a windows-32-bit-program.
+" It allows the use of multiple news- and mailserver and combines them to one
+" mail- and newsserver for the news/mail-client. It load faster than a normal
+" newsreader because many threads can run simultaneous. It contains scorefile
+" for news and mail, a build-in script language, the GUI allows translation to
+" other languages, it can be used in a network and that's not all features...
+"
+" 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
+
+syn keyword hamsterSpecial abs
+syn keyword hamsterSpecial artaddheader
+syn keyword hamsterSpecial artalloc
+syn keyword hamsterSpecial artdelheader
+syn keyword hamsterSpecial artfree
+syn keyword hamsterSpecial artgetbody
+syn keyword hamsterSpecial artgetheader
+syn keyword hamsterSpecial artgetheaders
+syn keyword hamsterSpecial artgettext
+syn keyword hamsterSpecial artheaderexists
+syn keyword hamsterSpecial artload
+syn keyword hamsterSpecial artsave
+syn keyword hamsterSpecial artsetbody
+syn keyword hamsterSpecial artsetheader
+syn keyword hamsterSpecial artsetheaders
+syn keyword hamsterSpecial artsettext
+syn keyword hamsterSpecial assert
+syn keyword hamsterSpecial atadd
+syn keyword hamsterSpecial atclear
+syn keyword hamsterSpecial atcount
+syn keyword hamsterSpecial ateverymins
+syn keyword hamsterSpecial atexecute
+syn keyword hamsterSpecial atfrom
+syn keyword hamsterSpecial atondays
+syn keyword hamsterSpecial atsubfunction
+syn keyword hamsterSpecial atuntil
+syn keyword hamsterSpecial beep
+syn keyword hamsterSpecial break
+syn keyword hamsterSpecial chr
+syn keyword hamsterSpecial clearxcounter
+syn keyword hamsterSpecial clipread
+syn keyword hamsterSpecial clipwrite
+syn keyword hamsterSpecial const
+syn keyword hamsterSpecial constenum
+syn keyword hamsterSpecial continue
+syn keyword hamsterSpecial copy
+syn keyword hamsterSpecial debug
+syn keyword hamsterSpecial dec
+syn keyword hamsterSpecial decodebase64
+syn keyword hamsterSpecial decodeqp
+syn keyword hamsterSpecial decodetime
+syn keyword hamsterSpecial decxcounter
+syn keyword hamsterSpecial delete
+syn keyword hamsterSpecial deletehostsentry
+syn keyword hamsterSpecial digest
+syn keyword hamsterSpecial dirchange
+syn keyword hamsterSpecial dircurrent
+syn keyword hamsterSpecial direxists
+syn keyword hamsterSpecial dirmake
+syn keyword hamsterSpecial dirremove
+syn keyword hamsterSpecial dirsystem
+syn keyword hamsterSpecial dirwindows
+syn keyword hamsterSpecial diskfreekb
+syn keyword hamsterSpecial dllcall
+syn keyword hamsterSpecial dllfree
+syn keyword hamsterSpecial dlllasterror
+syn keyword hamsterSpecial dllload
+syn keyword hamsterSpecial dump
+syn keyword hamsterSpecial encodetime
+syn keyword hamsterSpecial entercontext
+syn keyword hamsterSpecial errcatch
+syn keyword hamsterSpecial errline
+syn keyword hamsterSpecial errlineno
+syn keyword hamsterSpecial errmodule
+syn keyword hamsterSpecial errmsg
+syn keyword hamsterSpecial errnum
+syn keyword hamsterSpecial error
+syn keyword hamsterSpecial errsender
+syn keyword hamsterSpecial eval
+syn keyword hamsterSpecial eventclose
+syn keyword hamsterSpecial eventcreate
+syn keyword hamsterSpecial eventmultiplewait
+syn keyword hamsterSpecial eventpulse
+syn keyword hamsterSpecial eventreset
+syn keyword hamsterSpecial eventset
+syn keyword hamsterSpecial eventwait
+syn keyword hamsterSpecial execute
+syn keyword hamsterSpecial false
+syn keyword hamsterSpecial filecopy
+syn keyword hamsterSpecial filedelete
+syn keyword hamsterSpecial fileexists
+syn keyword hamsterSpecial filemove
+syn keyword hamsterSpecial filerename
+syn keyword hamsterSpecial filesize
+syn keyword hamsterSpecial filetime
+syn keyword hamsterSpecial getenv
+syn keyword hamsterSpecial getprocessidentifier
+syn keyword hamsterSpecial getuptimedays
+syn keyword hamsterSpecial getuptimehours
+syn keyword hamsterSpecial getuptimemins
+syn keyword hamsterSpecial getuptimesecs
+syn keyword hamsterSpecial gosub
+syn keyword hamsterSpecial goto
+syn keyword hamsterSpecial hex
+syn keyword hamsterSpecial icase
+syn keyword hamsterSpecial iif
+syn keyword hamsterSpecial inc
+syn keyword hamsterSpecial incxcounter
+syn keyword hamsterSpecial inidelete
+syn keyword hamsterSpecial inierasesection
+syn keyword hamsterSpecial iniread
+syn keyword hamsterSpecial iniwrite
+syn keyword hamsterSpecial inputbox
+syn keyword hamsterSpecial inputpw
+syn keyword hamsterSpecial int
+syn keyword hamsterSpecial isint
+syn keyword hamsterSpecial isstr
+syn keyword hamsterSpecial leavecontext
+syn keyword hamsterSpecial len
+syn keyword hamsterSpecial listadd
+syn keyword hamsterSpecial listalloc
+syn keyword hamsterSpecial listappend
+syn keyword hamsterSpecial listbox
+syn keyword hamsterSpecial listclear
+syn keyword hamsterSpecial listcount
+syn keyword hamsterSpecial listdelete
+syn keyword hamsterSpecial listdirs
+syn keyword hamsterSpecial listexists
+syn keyword hamsterSpecial listfiles
+syn keyword hamsterSpecial listfiles
+syn keyword hamsterSpecial listfree
+syn keyword hamsterSpecial listget
+syn keyword hamsterSpecial listgetkey
+syn keyword hamsterSpecial listgettag
+syn keyword hamsterSpecial listgettext
+syn keyword hamsterSpecial listindexof
+syn keyword hamsterSpecial listinsert
+syn keyword hamsterSpecial listload
+syn keyword hamsterSpecial listrasentries
+syn keyword hamsterSpecial listsave
+syn keyword hamsterSpecial listset
+syn keyword hamsterSpecial listsetkey
+syn keyword hamsterSpecial listsettag
+syn keyword hamsterSpecial listsettext
+syn keyword hamsterSpecial listsort
+syn keyword hamsterSpecial localhostaddr
+syn keyword hamsterSpecial localhostname
+syn keyword hamsterSpecial lookuphostaddr
+syn keyword hamsterSpecial lookuphostname
+syn keyword hamsterSpecial lowercase
+syn keyword hamsterSpecial memalloc
+syn keyword hamsterSpecial memforget
+syn keyword hamsterSpecial memfree
+syn keyword hamsterSpecial memgetint
+syn keyword hamsterSpecial memgetstr
+syn keyword hamsterSpecial memsetint
+syn keyword hamsterSpecial memsetstr
+syn keyword hamsterSpecial memsize
+syn keyword hamsterSpecial memvarptr
+syn keyword hamsterSpecial msgbox
+syn keyword hamsterSpecial ord
+syn keyword hamsterSpecial paramcount
+syn keyword hamsterSpecial paramstr
+syn keyword hamsterSpecial popupbox
+syn keyword hamsterSpecial pos
+syn keyword hamsterSpecial print
+syn keyword hamsterSpecial quit
+syn keyword hamsterSpecial random
+syn keyword hamsterSpecial randomize
+syn keyword hamsterSpecial rasdial
+syn keyword hamsterSpecial rasgetconnection
+syn keyword hamsterSpecial rasgetip
+syn keyword hamsterSpecial rashangup
+syn keyword hamsterSpecial rasisconnected
+syn keyword hamsterSpecial re_extract
+syn keyword hamsterSpecial re_match
+syn keyword hamsterSpecial re_parse
+syn keyword hamsterSpecial re_split
+syn keyword hamsterSpecial replace
+syn keyword hamsterSpecial return
+syn keyword hamsterSpecial runscript
+syn keyword hamsterSpecial scriptpriority
+syn keyword hamsterSpecial set
+syn keyword hamsterSpecial sethostsentry_byaddr
+syn keyword hamsterSpecial sethostsentry_byname
+syn keyword hamsterSpecial setxcounter
+syn keyword hamsterSpecial sgn
+syn keyword hamsterSpecial shell
+syn keyword hamsterSpecial sleep
+syn keyword hamsterSpecial stopthread
+syn keyword hamsterSpecial str
+syn keyword hamsterSpecial syserrormessage
+syn keyword hamsterSpecial testmailfilterline
+syn keyword hamsterSpecial testnewsfilterline
+syn keyword hamsterSpecial ticks
+syn keyword hamsterSpecial time
+syn keyword hamsterSpecial timegmt
+syn keyword hamsterSpecial trace
+syn keyword hamsterSpecial trim
+syn keyword hamsterSpecial true
+syn keyword hamsterSpecial uppercase
+syn keyword hamsterSpecial utf7toucs16
+syn keyword hamsterSpecial utf8toucs32
+syn keyword hamsterSpecial var
+syn keyword hamsterSpecial varset
+syn keyword hamsterSpecial warning
+syn keyword hamsterSpecial xcounter
+
+" common functions
+syn keyword hamsterFunction addlog
+syn keyword hamsterFunction decodemimeheaderstring
+syn keyword hamsterFunction decodetolocalcharset
+syn keyword hamsterFunction gettasksactive
+syn keyword hamsterFunction gettasksrun
+syn keyword hamsterFunction gettaskswait
+syn keyword hamsterFunction hamaddgroup
+syn keyword hamsterFunction hamaddlog
+syn keyword hamsterFunction hamaddpull
+syn keyword hamsterFunction hamartcount
+syn keyword hamsterFunction hamartdeletemid
+syn keyword hamsterFunction hamartdeletemidingroup
+syn keyword hamsterFunction hamartdeletenringroup
+syn keyword hamsterFunction hamartimport
+syn keyword hamsterFunction hamartlocatemid
+syn keyword hamsterFunction hamartlocatemidingroup
+syn keyword hamsterFunction hamartnomax
+syn keyword hamsterFunction hamartnomin
+syn keyword hamsterFunction hamarttext
+syn keyword hamsterFunction hamarttextexport
+syn keyword hamsterFunction hamchangepassword
+syn keyword hamsterFunction hamcheckpurge
+syn keyword hamsterFunction hamdelgroup
+syn keyword hamsterFunction hamdelpull
+syn keyword hamsterFunction hamdialogaddpull
+syn keyword hamsterFunction hamdialogeditdirs
+syn keyword hamsterFunction hamdialogmailkillfilelog
+syn keyword hamsterFunction hamdialognewskillfilelog
+syn keyword hamsterFunction hamdialogscripts
+syn keyword hamsterFunction hamenvelopefrom
+syn keyword hamsterFunction hamexepath
+syn keyword hamsterFunction hamfetchmail
+syn keyword hamsterFunction hamflush
+syn keyword hamsterFunction hamgetstatus
+syn keyword hamsterFunction hamgroupclose
+syn keyword hamsterFunction hamgroupcount
+syn keyword hamsterFunction hamgroupindex
+syn keyword hamsterFunction hamgroupname
+syn keyword hamsterFunction hamgroupnamebyhandle
+syn keyword hamsterFunction hamgroupopen
+syn keyword hamsterFunction hamgroupspath
+syn keyword hamsterFunction hamhscpath
+syn keyword hamsterFunction hamhsmpath
+syn keyword hamsterFunction hamimapserver
+syn keyword hamsterFunction hamisidle
+syn keyword hamsterFunction hamlogspath
+syn keyword hamsterFunction hammailexchange
+syn keyword hamsterFunction hammailpath
+syn keyword hamsterFunction hammailsoutpath
+syn keyword hamsterFunction hammainfqdn
+syn keyword hamsterFunction hammainwindow
+syn keyword hamsterFunction hammessage
+syn keyword hamsterFunction hammidfqdn
+syn keyword hamsterFunction hamnewmail
+syn keyword hamsterFunction hamnewserrpath
+syn keyword hamsterFunction hamnewsjobsadd
+syn keyword hamsterFunction hamnewsjobscheckactive
+syn keyword hamsterFunction hamnewsjobsclear
+syn keyword hamsterFunction hamnewsjobsdelete
+syn keyword hamsterFunction hamnewsjobsfeed
+syn keyword hamsterFunction hamnewsjobsgetcounter
+syn keyword hamsterFunction hamnewsjobsgetparam
+syn keyword hamsterFunction hamnewsjobsgetpriority
+syn keyword hamsterFunction hamnewsjobsgetserver
+syn keyword hamsterFunction hamnewsjobsgettype
+syn keyword hamsterFunction hamnewsjobspost
+syn keyword hamsterFunction hamnewsjobspostdef
+syn keyword hamsterFunction hamnewsjobspull
+syn keyword hamsterFunction hamnewsjobspulldef
+syn keyword hamsterFunction hamnewsjobssetpriority
+syn keyword hamsterFunction hamnewsjobsstart
+syn keyword hamsterFunction hamnewsoutpath
+syn keyword hamsterFunction hamnewspost
+syn keyword hamsterFunction hamnewspull
+syn keyword hamsterFunction hamnntpserver
+syn keyword hamsterFunction hampassreload
+syn keyword hamsterFunction hampath
+syn keyword hamsterFunction hampop3server
+syn keyword hamsterFunction hampostmaster
+syn keyword hamsterFunction hampurge
+syn keyword hamsterFunction hamrasdial
+syn keyword hamsterFunction hamrashangup
+syn keyword hamsterFunction hamrcpath
+syn keyword hamsterFunction hamrebuildgloballists
+syn keyword hamsterFunction hamrebuildhistory
+syn keyword hamsterFunction hamrecoserver
+syn keyword hamsterFunction hamreloadconfig
+syn keyword hamsterFunction hamreloadipaccess
+syn keyword hamsterFunction hamresetcounters
+syn keyword hamsterFunction hamrotatelog
+syn keyword hamsterFunction hamscorelist
+syn keyword hamsterFunction hamscoretest
+syn keyword hamsterFunction hamsendmail
+syn keyword hamsterFunction hamsendmailauth
+syn keyword hamsterFunction hamserverpath
+syn keyword hamsterFunction hamsetlogin
+syn keyword hamsterFunction hamshutdown
+syn keyword hamsterFunction hamsmtpserver
+syn keyword hamsterFunction hamstopalltasks
+syn keyword hamsterFunction hamthreadcount
+syn keyword hamsterFunction hamtrayicon
+syn keyword hamsterFunction hamusenetacc
+syn keyword hamsterFunction hamversion
+syn keyword hamsterFunction hamwaitidle
+syn keyword hamsterFunction raslasterror
+syn keyword hamsterFunction rfctimezone
+syn keyword hamsterFunction settasklimiter
+
+syn keyword hamsterStatement if
+syn keyword hamsterStatement else
+syn keyword hamsterStatement elseif
+syn keyword hamsterStatement endif
+syn keyword hamsterStatement do
+syn keyword hamsterStatement loop
+syn keyword hamsterStatement while
+syn keyword hamsterStatement endwhile
+syn keyword hamsterStatement repeat
+syn keyword hamsterStatement until
+syn keyword hamsterStatement for
+syn keyword hamsterStatement endfor
+syn keyword hamsterStatement sub
+syn keyword hamsterStatement endsub
+syn keyword hamsterStatement label
+
+
+" Strings and characters:
+syn region hamsterString       start=+"+    end=+"+ contains=@Spell
+syn region hamsterString       start=+'+    end=+'+ contains=@Spell
+
+" Numbers:
+syn match hamsterNumber                "-\=\<\d*\.\=[0-9_]\>"
+
+" Comments:
+syn region hamsterHashComment  start=/#/ end=/$/ contains=@Spell
+syn cluster hamsterComment     contains=hamsterHashComment
+syn sync ccomment hamsterHashComment
+
+" 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_hamster_syn_inits")
+    if version < 508
+        let did_hamster_syn_inits = 1
+        command -nargs=+ HiLink hi link <args>
+    else
+        command -nargs=+ HiLink hi def link <args>
+    endif
+
+    HiLink hamsterHashComment  Comment
+    HiLink hamsterSpecial      Special
+    HiLink hamsterStatement    Statement
+    HiLink hamsterString       String
+    HiLink hamsterFunction     Function
+
+    delcommand HiLink
+endif
+
+let b:current_syntax = "hamster"
+
+" vim:sw=4
index d6292ce6314f0c62e8c1242e3a10d598fe6f2c0b..f0d510b945fd285232f2f4845b987872032ad22b 100644 (file)
@@ -4,7 +4,7 @@
 " URL:         http://www.geocities.com/pmalwankar (Home Page with link to my Vim page)
 "              http://www.geocities.com/pmalwankar/vim.htm (for VIM)
 " File Version: 0.7
-" Last Change:  2004 May 04
+" Last Change:  2006 Sep 08
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -309,4 +309,3 @@ endif
 let b:current_syntax = "ia64"
 
 " vim: ts=8 sw=2
-
diff --git a/runtime/syntax/ibasic.vim b/runtime/syntax/ibasic.vim
new file mode 100644 (file)
index 0000000..75e5941
--- /dev/null
@@ -0,0 +1,176 @@
+" Vim syntax file
+" Language:    ibasic
+" Maintainer:  Mark Manning <markem@airmail.net>
+" Originator:  Allan Kelly <Allan.Kelly@ed.ac.uk>
+" Created:     10/1/2006
+" Updated:     10/21/2006
+" Description:  A vim file to handle the IBasic file format.
+" Notes:
+"      Updated by Mark Manning <markem@airmail.net>
+"      Applied IBasic support to the already excellent support for standard
+"      basic syntax (like QB).
+"
+"      First version based on Micro$soft QBASIC circa 1989, as documented in
+"      'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
+"      This syntax file not a complete implementation yet.
+"      Send suggestions to the maintainer.
+"
+"      This version is based upon the commands found in IBasic (www.pyxia.com).
+"      MEM 10/6/2006
+"
+"      Quit when a (custom) syntax file was already loaded (Taken from c.vim)
+"
+if exists("b:current_syntax")
+  finish
+endif
+"
+"      Be sure to turn on the "case ignore" since current versions of basic
+"      support both upper as well as lowercase letters.
+"
+syn case ignore
+"
+" A bunch of useful BASIC keywords
+"
+syn keyword ibasicStatement    beep bload bsave call absolute chain chdir circle
+syn keyword ibasicStatement    clear close cls color com common const data
+syn keyword ibasicStatement    loop draw end environ erase error exit field
+syn keyword ibasicStatement    files function get gosub goto
+syn keyword ibasicStatement    input input# ioctl key kill let line locate
+syn keyword ibasicStatement    lock unlock lprint using lset mkdir name
+syn keyword ibasicStatement    on error open option base out paint palette pcopy
+syn keyword ibasicStatement    pen play pmap poke preset print print# using pset
+syn keyword ibasicStatement    put randomize read redim reset restore resume
+syn keyword ibasicStatement    return rmdir rset run seek screen
+syn keyword ibasicStatement    shared shell sleep sound static stop strig sub
+syn keyword ibasicStatement    swap system timer troff tron type unlock
+syn keyword ibasicStatement    view wait width window write
+syn keyword ibasicStatement    date$ mid$ time$
+"
+"      Do the basic variables names first.  This is because it
+"      is the most inclusive of the tests.  Later on we change
+"      this so the identifiers are split up into the various
+"      types of identifiers like functions, basic commands and
+"      such. MEM 9/9/2006
+"
+syn match      ibasicIdentifier                        "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match      ibasicGenericFunction   "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
+"
+"      Function list
+"
+syn keyword ibasicBuiltInFunction      abs asc atn cdbl cint clng cos csng csrlin cvd cvdmbf
+syn keyword ibasicBuiltInFunction      cvi cvl cvs cvsmbf eof erdev erl err exp fileattr
+syn keyword ibasicBuiltInFunction      fix fre freefile inp instr lbound len loc lof
+syn keyword ibasicBuiltInFunction      log lpos mod peek pen point pos rnd sadd screen seek
+syn keyword ibasicBuiltInFunction      setmem sgn sin spc sqr stick strig tab tan ubound
+syn keyword ibasicBuiltInFunction      val valptr valseg varptr varseg
+syn keyword ibasicBuiltInFunction      chr\$ command$ date$ environ$ erdev$ hex$ inkey$
+syn keyword ibasicBuiltInFunction      input$ ioctl$ lcases$ laft$ ltrim$ mid$ mkdmbf$ mkd$
+syn keyword ibasicBuiltInFunction      mki$ mkl$ mksmbf$ mks$ oct$ right$ rtrim$ space$
+syn keyword ibasicBuiltInFunction      str$ string$ time$ ucase$ varptr$
+syn keyword ibasicTodo contained       TODO
+syn cluster    ibasicFunctionCluster   contains=ibasicBuiltInFunction,ibasicGenericFunction
+
+syn keyword Conditional        if else then elseif endif select case endselect
+syn keyword Repeat     for do while next enddo endwhile wend
+
+syn keyword ibasicTypeSpecifier        single double defdbl defsng
+syn keyword ibasicTypeSpecifier        int integer uint uinteger int64 uint64 defint deflng
+syn keyword ibasicTypeSpecifier        byte char string istring defstr
+syn keyword ibasicDefine       dim def declare
+"
+"catch errors caused by wrong parenthesis
+"
+syn cluster    ibasicParenGroup        contains=ibasicParenError,ibasicIncluded,ibasicSpecial,ibasicTodo,ibasicUserCont,ibasicUserLabel,ibasicBitField
+syn region     ibasicParen             transparent start='(' end=')' contains=ALLBUT,@bParenGroup
+syn match      ibasicParenError        ")"
+syn match      ibasicInParen   contained "[{}]"
+"
+"integer number, or floating point number without a dot and with "f".
+"
+syn region     ibasicHex               start="&h" end="\W"
+syn region     ibasicHexError  start="&h\x*[g-zG-Z]" end="\W"
+syn match      ibasicInteger   "\<\d\+\(u\=l\=\|lu\|f\)\>"
+"
+"floating point number, with dot, optional exponent
+"
+syn match      ibasicFloat             "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"
+"floating point number, starting with a dot, optional exponent
+"
+syn match      ibasicFloat             "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"
+"floating point number, without dot, with exponent
+"
+syn match      ibasicFloat             "\<\d\+e[-+]\=\d\+[fl]\=\>"
+"
+"hex number
+"
+syn match      ibasicIdentifier        "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match      ibasicFunction  "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
+syn case match
+syn match      ibasicOctalError        "\<0\o*[89]"
+"
+" String and Character contstants
+"
+syn region     ibasicString            start='"' end='"' contains=ibasicSpecial,ibasicTodo
+syn region     ibasicString            start="'" end="'" contains=ibasicSpecial,ibasicTodo
+"
+"      Comments
+"
+syn match      ibasicSpecial   contained "\\."
+syn region  ibasicComment      start="^rem" end="$" contains=ibasicSpecial,ibasicTodo
+syn region  ibasicComment      start=":\s*rem" end="$" contains=ibasicSpecial,ibasicTodo
+syn region     ibasicComment   start="\s*'" end="$" contains=ibasicSpecial,ibasicTodo
+syn region     ibasicComment   start="^'" end="$" contains=ibasicSpecial,ibasicTodo
+"
+"      Now do the comments and labels
+"
+syn match      ibasicLabel             "^\d"
+syn region  ibasicLineNumber   start="^\d" end="\s"
+"
+"      Pre-compiler options : FreeBasic
+"
+syn region     ibasicPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ibasicString,ibasicCharacter,ibasicNumber,ibasicCommentError,ibasicSpaceError
+syn match      ibasicInclude   "^\s*#\s*include\s*"
+"
+"      Create the clusters
+"
+syn cluster ibasicNumber contains=ibasicHex,ibasicInteger,ibasicFloat
+syn cluster    ibasicError     contains=ibasicHexError
+"
+"      Used with OPEN statement
+"
+syn match   ibasicFilenumber  "#\d\+"
+"
+"syn sync ccomment ibasicComment
+"
+syn match      ibasicMathOperator      "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=ibasicParen
+"
+" The default methods for highlighting.  Can be overridden later
+"
+hi def link ibasicLabel                        Label
+hi def link ibasicConditional          Conditional
+hi def link ibasicRepeat               Repeat
+hi def link ibasicHex                  Number
+hi def link ibasicInteger              Number
+hi def link ibasicFloat                        Number
+hi def link ibasicError                        Error
+hi def link ibasicHexError             Error
+hi def link ibasicStatement            Statement
+hi def link ibasicString               String
+hi def link ibasicComment              Comment
+hi def link ibasicLineNumber           Comment
+hi def link ibasicSpecial              Special
+hi def link ibasicTodo                 Todo
+hi def link ibasicGenericFunction      Function
+hi def link ibasicBuiltInFunction      Function
+hi def link ibasicTypeSpecifier                Type
+hi def link ibasicDefine               Type
+hi def link ibasicInclude              Include
+hi def link ibasicIdentifier           Identifier
+hi def link ibasicFilenumber           ibasicTypeSpecifier
+hi def link ibasicMathOperator         Operator
+
+let b:current_syntax = "ibasic"
+
+" vim: ts=8
diff --git a/runtime/syntax/initng.vim b/runtime/syntax/initng.vim
new file mode 100644 (file)
index 0000000..2b7bc3b
--- /dev/null
@@ -0,0 +1,91 @@
+" Vim syntax file
+" Language:    initng .i files
+" Maintainer:  Elan Ruusamäe <glen@pld-linux.org>
+" URL:         http://glen.alkohol.ee/pld/initng/
+" License:     GPL v2
+" Version:     0.13
+" Last Change: $Date$
+"
+" Syntax highlighting for initng .i files. Inherits from sh.vim and adds
+" in the hiliting to start/stop {} blocks. Requires vim 6.3 or later.
+
+if &compatible || v:version < 603
+       finish
+endif
+
+if exists("b:current_syntax")
+       finish
+endif
+
+syn case match
+
+let is_bash = 1
+unlet! b:current_syntax
+syn include @shTop syntax/sh.vim
+
+syn region     initngService                   matchgroup=initngServiceHeader start="^\s*\(service\|virtual\|daemon\|class\|cron\)\s\+\(\(\w\|[-/*]\)\+\(\s\+:\s\+\(\w\|[-/*]\)\+\)\?\)\s\+{" end="}" contains=@initngServiceCluster
+syn cluster initngServiceCluster       contains=initngComment,initngAction,initngServiceOption,initngServiceHeader,initngDelim,initngVariable
+
+syn region     initngAction                    matchgroup=initngActionHeader start="^\s*\(script start\|script stop\|script run\)\s*=\s*{" end="}" contains=@initngActionCluster
+syn cluster initngActionCluster                contains=@shTop
+
+syn match      initngDelim                             /[{}]/  contained
+
+syn region     initngString                    start=/"/ end=/"/ skip=/\\"/
+
+" option = value
+syn match      initngServiceOption             /.\+\s*=.\+;/ contains=initngServiceKeywords,initngSubstMacro contained
+" option without value
+syn match      initngServiceOption             /\w\+;/ contains=initngServiceKeywords,initngSubstMacro contained
+
+" options with value
+syn keyword    initngServiceKeywords   also_stop need use nice setuid contained
+syn keyword    initngServiceKeywords   delay chdir suid sgid start_pause env_file env_parse pid_file pidfile contained
+syn keyword    initngServiceKeywords   pid_of up_when_pid_set stdout stderr syncron just_before contained
+syn keyword    initngServiceKeywords   provide lockfile daemon_stops_badly contained
+syn match      initngServiceKeywords   /\(script\|exec\(_args\)\?\) \(start\|stop\|daemon\)/ contained
+syn match      initngServiceKeywords   /env\s\+\w\+/ contained
+
+" rlimits
+syn keyword    initngServiceKeywords   rlimit_cpu_hard rlimit_core_soft contained
+
+" single options
+syn keyword    initngServiceKeywords   last respawn network_provider require_network require_file critical forks contained
+" cron options
+syn keyword    initngServiceKeywords   hourly contained
+syn match      initngVariable                  /\${\?\w\+\}\?/
+
+" Substituted @foo@ macros:
+" ==========
+syn match      initngSubstMacro                /@[^@]\+@/      contained
+syn cluster initngActionCluster                add=initngSubstMacro
+syn cluster shCommandSubList           add=initngSubstMacro
+
+" Comments:
+" ==========
+syn cluster    initngCommentGroup              contains=initngTodo,@Spell
+syn keyword    initngTodo                              TODO FIXME XXX contained
+syn match      initngComment                   /#.*$/ contains=@initngCommentGroup
+
+" install_service #macros
+" TODO: syntax check for ifd-endd pairs
+" ==========
+syn region     initngDefine                    start="^#\(endd\|elsed\|exec\|ifd\|endexec\|endd\)\>" skip="\\$" end="$" end="#"me=s-1
+syn cluster shCommentGroup                     add=initngDefine
+syn cluster initngCommentGroup         add=initngDefine
+
+hi def link    initngComment                   Comment
+hi def link initngTodo                         Todo
+
+hi def link    initngString                    String
+hi def link initngServiceKeywords      Define
+
+hi def link    initngServiceHeader             Keyword
+hi def link    initngActionHeader              Type
+hi def link initngDelim                                Delimiter
+
+hi def link    initngVariable                  PreProc
+hi def link    initngSubstMacro                Comment
+hi def link    initngDefine                    Macro
+
+let b:current_syntax = "initng"
index a1b9e157a334f3c6fdb29d7dd0413b8fa94fdd05..ba8975bc9c69734c229ffe2650aa1634dbfa91b6 100644 (file)
@@ -7,7 +7,7 @@
 "              (ss) repaired several quoting and grouping glitches
 "              (ss) fixed regex parsing issue with multiple qualifiers [gi]
 "              (ss) additional factoring of keywords, globals, and members
-" Last Change: 2006 Jan 15
+" Last Change: 2006 Jun 19
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -32,9 +32,9 @@ syn case ignore
 
 
 syn keyword javaScriptCommentTodo      TODO FIXME XXX TBD contained
-syn match   javaScriptLineComment      "\/\/.*" contains=javaScriptCommentTodo
+syn match   javaScriptLineComment      "\/\/.*" contains=@Spell,javaScriptCommentTodo
 syn match   javaScriptCommentSkip      "^[ \t]*\*\($\|[ \t]\+\)"
-syn region  javaScriptComment         start="/\*"  end="\*/" contains=javaScriptCommentTodo
+syn region  javaScriptComment         start="/\*"  end="\*/" contains=@Spell,javaScriptCommentTodo
 syn match   javaScriptSpecial         "\\\d\d\d\|\\."
 syn region  javaScriptStringD         start=+"+  skip=+\\\\\|\\"+  end=+"\|$+  contains=javaScriptSpecial,@htmlPreproc
 syn region  javaScriptStringS         start=+'+  skip=+\\\\\|\\'+  end=+'\|$+  contains=javaScriptSpecial,@htmlPreproc
index 7d72603bf2de7ec8f12faaf18a8329bd55e69d2a..c40c6285c2c4da4206ec977162dfffe57f6e5e87 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    Lua 4.0, Lua 5.0 and Lua 5.1
 " Maintainer:  Marcus Aurelius Farias <marcus.cf 'at' bol com br>
 " First Author:        Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
-" Last Change: 2006 Apr 21
+" Last Change: 2006 Aug 10
 " Options:     lua_version = 4 or 5
 "              lua_subversion = 0 (4.0, 5.0) or 1 (5.1)
 "              default 5.1
@@ -31,13 +31,13 @@ syn sync minlines=100
 
 " Comments
 syn keyword luaTodo             contained TODO FIXME XXX
-syn match   luaComment          "--.*$" contains=luaTodo
+syn match   luaComment          "--.*$" contains=luaTodo,@Spell
 if lua_version == 5 && lua_subversion == 0
-  syn region  luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
+  syn region  luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
   syn region  luaInnerComment   contained transparent start="\[\[" end="\]\]"
 elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
   " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
-  syn region  luaComment        matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]"
+  syn region  luaComment        matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
 endif
 
 " First line may start with #!
@@ -95,22 +95,27 @@ if lua_version < 5
   syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
 elseif lua_version == 5 && lua_subversion == 0
   syn match  luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
-  syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
+  syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
 elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
   syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
-  syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]"
+  syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
 endif
-syn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
-syn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
+syn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
+syn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
 
 " integer number
-syn match luaNumber "\<[0-9]\+\>"
+syn match luaNumber "\<\d\+\>"
 " floating point number, with dot, optional exponent
-syn match luaFloat  "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"
+syn match luaFloat  "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>"
 " floating point number, starting with a dot, optional exponent
-syn match luaFloat  "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"
+syn match luaFloat  "\.\d\+\%(e[-+]\=\d\+\)\=\>"
 " floating point number, without dot, with exponent
-syn match luaFloat  "\<[0-9]\+e[-+]\=[0-9]\+\>"
+syn match luaFloat  "\<\d\+e[-+]\=\d\+\>"
+
+" hex numbers
+if lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
+  syn match luaNumber "\<0x\x\+\>"
+endif
 
 " tables
 syn region  luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
index 471d708a0d0327627c6e50c325e5a0174a20bfdc..2e37ff64cf0fb1cecc225743fbb700fcc2625446 100644 (file)
@@ -1,25 +1,23 @@
-" Lynx syntax file
-" Filename:    lynx.vim
-" Language:    Lynx configuration file ( lynx.cfg )
-" Maintainer:  Doug Kearns <djkea2@gus.gscit.monash.edu.au>
+" Vim syntax file
+" Language:    Lynx configuration file (lynx.cfg)
+" Maintainer:  Doug Kearns <dougkearns@gmail.com>
 " URL:         http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/lynx.vim
-" Last Change: 2004 Nov 27
+" Last Change: 2007 Mar 20
 
-" TODO: more intelligent and complete argument highlighting
+" Lynx 2.8.5
 
-" 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")
+if exists("b:current_syntax")
   finish
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 syn match   lynxLeadingWS  "^\s*" transparent nextgroup=lynxOption
 
 syn match   lynxComment    "\(^\|\s\+\)#.*$" contains=lynxTodo
 
-syn keyword lynxTodo       TODO NOTE FIXME XXX contained
+syn keyword lynxTodo      TODO NOTE FIXME XXX contained
 
 syn match   lynxDelimiter  ":" contained nextgroup=lynxBoolean,lynxNumber
 
@@ -27,41 +25,50 @@ syn case ignore
 syn keyword lynxBoolean    TRUE FALSE contained
 syn case match
 
-syn match   lynxNumber     "-\=\<\d\+\>" contained
+syn match   lynxNumber    "-\=\<\d\+\>" contained
 
 syn case ignore
-syn keyword lynxOption ACCEPT_ALL_COOKIES ALERTSECS ALWAYS_RESUBMIT_POSTS ALWAYS_TRUSTED_EXEC ASSUME_CHARSET ASSUMED_COLOR  contained nextgroup=lynxDelimiter
-syn keyword lynxOption ASSUMED_DOC_CHARSET_CHOICE ASSUME_LOCAL_CHARSET ASSUME_UNREC_CHARSET AUTO_UNCACHE_DIRLISTS          contained nextgroup=lynxDelimiter
-syn keyword lynxOption BIBP_BIBHOST BIBP_GLOBAL_SERVER BLOCK_MULTI_BOOKMARKS BOLD_H1 BOLD_HEADERS BOLD_NAME_ANCHORS        contained nextgroup=lynxDelimiter
-syn keyword lynxOption CASE_SENSITIVE_ALWAYS_ON CHARACTER_SET CHARSETS_DIRECTORY CHARSET_SWITCH_RULES CHECKMAIL                    contained nextgroup=lynxDelimiter
-syn keyword lynxOption COLLAPSE_BR_TAGS COLOR CONNECT_TIMEOUT COOKIE_ACCEPT_DOMAINS COOKIE_FILE                                    contained nextgroup=lynxDelimiter
-syn keyword lynxOption COOKIE_LOOSE_INVALID_DOMAINS COOKIE_QUERY_INVALID_DOMAINS COOKIE_REJECT_DOMAINS COOKIE_SAVE_FILE     contained nextgroup=lynxDelimiter
-syn keyword lynxOption COOKIE_STRICT_INVALID_DOMAINS CSO_PROXY CSWING_PATH DEFAULT_BOOKMARK_FILE DEFAULT_CACHE_SIZE        contained nextgroup=lynxDelimiter
-syn keyword lynxOption DEFAULT_EDITOR DEFAULT_INDEX_FILE DEFAULT_KEYPAD_MODE DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS      contained nextgroup=lynxDelimiter
-syn keyword lynxOption DEFAULT_USER_MODE DEFAULT_VIRTUAL_MEMORY_SIZE DIRED_MENU DISPLAY_CHARSET_CHOICE DOWNLOADER          contained nextgroup=lynxDelimiter
-syn keyword lynxOption EMACS_KEYS_ALWAYS_ON ENABLE_LYNXRC ENABLE_SCROLLBACK EXTERNAL FINGER_PROXY FOCUS_WINDOW             contained nextgroup=lynxDelimiter
-syn keyword lynxOption FORCE_8BIT_TOUPPER FORCE_EMPTY_HREFLESS_A FORCE_SSL_COOKIES_SECURE FORMS_OPTIONS FTP_PASSIVE        contained nextgroup=lynxDelimiter
-syn keyword lynxOption FTP_PROXY GLOBAL_EXTENSION_MAP GLOBAL_MAILCAP GOPHER_PROXY GOTOBUFFER HELPFILE HIDDEN_LINK_MARKER    contained nextgroup=lynxDelimiter
-syn keyword lynxOption HISTORICAL_COMMENTS HTMLSRC_ATTRNAME_XFORM HTMLSRC_TAGNAME_XFORM HTTP_PROXY HTTPS_PROXY INCLUDE     contained nextgroup=lynxDelimiter
-syn keyword lynxOption INFOSECS JUMPBUFFER JUMPFILE JUMP_PROMPT JUSTIFY JUSTIFY_MAX_VOID_PERCENT KEYBOARD_LAYOUT KEYMAP     contained nextgroup=lynxDelimiter
-syn keyword lynxOption LEFTARROW_IN_TEXTFIELD_PROMPT LIST_FORMAT LIST_NEWS_DATES LIST_NEWS_NUMBERS LOCAL_DOMAIN                    contained nextgroup=lynxDelimiter
-syn keyword lynxOption LOCAL_EXECUTION_LINKS_ALWAYS_ON LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE LOCALHOST_ALIAS             contained nextgroup=lynxDelimiter
-syn keyword lynxOption LYNXCGI_DOCUMENT_ROOT LYNXCGI_ENVIRONMENT LYNX_HOST_NAME LYNX_SIG_FILE MAIL_ADRS                            contained nextgroup=lynxDelimiter
-syn keyword lynxOption MAIL_SYSTEM_ERROR_LOGGING MAKE_LINKS_FOR_ALL_IMAGES MAKE_PSEUDO_ALTS_FOR_INLINES MESSAGESECS        contained nextgroup=lynxDelimiter
-syn keyword lynxOption MINIMAL_COMMENTS MULTI_BOOKMARK_SUPPORT NCR_IN_BOOKMARKS NEWS_CHUNK_SIZE NEWS_MAX_CHUNK             contained nextgroup=lynxDelimiter
-syn keyword lynxOption NEWS_POSTING NEWSPOST_PROXY NEWS_PROXY NEWSREPLY_PROXY NNTP_PROXY NNTPSERVER NO_DOT_FILES           contained nextgroup=lynxDelimiter
-syn keyword lynxOption NO_FILE_REFERER NO_FORCED_CORE_DUMP NO_FROM_HEADER NO_ISMAP_IF_USEMAP NONRESTARTING_SIGWINCH        contained nextgroup=lynxDelimiter
-syn keyword lynxOption NO_PROXY NO_REFERER_HEADER NO_TABLE_CENTER OUTGOING_MAIL_CHARSET PARTIAL PARTIAL_THRES              contained nextgroup=lynxDelimiter
-syn keyword lynxOption PERSISTENT_COOKIES PERSONAL_EXTENSION_MAP PERSONAL_MAILCAP PREFERRED_CHARSET PREFERRED_LANGUAGE     contained nextgroup=lynxDelimiter
-syn keyword lynxOption PREPEND_BASE_TO_SOURCE PREPEND_CHARSET_TO_SOURCE PRETTYSRC PRETTYSRC_SPEC                           contained nextgroup=lynxDelimiter
-syn keyword lynxOption PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING PRINTER QUIT_DEFAULT_YES REFERER_WITH_QUERY REUSE_TEMPFILES      contained nextgroup=lynxDelimiter
-syn keyword lynxOption RULE RULESFILE SAVE_SPACE SCAN_FOR_BURIED_NEWS_REFS SCROLLBAR SCROLLBAR_ARROW SEEK_FRAG_AREA_IN_CUR  contained nextgroup=lynxDelimiter
-syn keyword lynxOption SEEK_FRAG_MAP_IN_CUR SET_COOKIES SHOW_CURSOR SHOW_KB_RATE SNEWSPOST_PROXY SNEWS_PROXY               contained nextgroup=lynxDelimiter
-syn keyword lynxOption SNEWSREPLY_PROXY SOFT_DQUOTES SOURCE_CACHE SOURCE_CACHE_FOR_ABORTED STARTFILE STRIP_DOTDOT_URLS     contained nextgroup=lynxDelimiter
-syn keyword lynxOption SUBSTITUTE_UNDERSCORES SUFFIX SUFFIX_ORDER SYSTEM_EDITOR SYSTEM_MAIL SYSTEM_MAIL_FLAGS TAGSOUP      contained nextgroup=lynxDelimiter
-syn keyword lynxOption TEXTFIELDS_NEED_ACTIVATION TIMEOUT TRIM_INPUT_FIELDS TRUSTED_EXEC TRUSTED_LYNXCGI UPLOADER          contained nextgroup=lynxDelimiter
-syn keyword lynxOption URL_DOMAIN_PREFIXES URL_DOMAIN_SUFFIXES USE_FIXED_RECORDS USE_MOUSE USE_SELECT_POPUPS VERBOSE_IMAGES contained nextgroup=lynxDelimiter
-syn keyword lynxOption VIEWER VI_KEYS_ALWAYS_ON WAIS_PROXY XLOADIMAGE_COMMAND                                              contained nextgroup=lynxDelimiter
+syn keyword lynxOption ACCEPT_ALL_COOKIES ALERTSECS ALWAYS_RESUBMIT_POSTS ALWAYS_TRUSTED_EXEC ASSUME_CHARSET
+                    \ ASSUMED_COLOR ASSUMED_DOC_CHARSET_CHOICE ASSUME_LOCAL_CHARSET ASSUME_UNREC_CHARSET AUTO_UNCACHE_DIRLISTS
+                    \ BIBP_BIBHOST BIBP_GLOBAL_SERVER BLOCK_MULTI_BOOKMARKS BOLD_H1 BOLD_HEADERS
+                    \ BOLD_NAME_ANCHORS CASE_SENSITIVE_ALWAYS_ON CHARACTER_SET CHARSETS_DIRECTORY CHARSET_SWITCH_RULES
+                    \ CHECKMAIL COLLAPSE_BR_TAGS COLOR CONNECT_TIMEOUT COOKIE_ACCEPT_DOMAINS
+                    \ COOKIE_FILE COOKIE_LOOSE_INVALID_DOMAINS COOKIE_QUERY_INVALID_DOMAINS COOKIE_REJECT_DOMAINS COOKIE_SAVE_FILE
+                    \ COOKIE_STRICT_INVALID_DOMAINS CSO_PROXY CSWING_PATH DEBUGSECS DEFAULT_BOOKMARK_FILE
+                    \ DEFAULT_CACHE_SIZE DEFAULT_EDITOR DEFAULT_INDEX_FILE DEFAULT_KEYPAD_MODE DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS
+                    \ DEFAULT_USER_MODE DEFAULT_VIRTUAL_MEMORY_SIZE DIRED_MENU DISPLAY_CHARSET_CHOICE DOWNLOADER
+                    \ EMACS_KEYS_ALWAYS_ON ENABLE_LYNXRC ENABLE_SCROLLBACK EXTERNAL FINGER_PROXY
+                    \ FOCUS_WINDOW FORCE_8BIT_TOUPPER FORCE_COOKIE_PROMPT FORCE_EMPTY_HREFLESS_A FORCE_SSL_COOKIES_SECURE
+                    \ FORCE_SSL_PROMPT FORMS_OPTIONS FTP_PASSIVE FTP_PROXY GLOBAL_EXTENSION_MAP
+                    \ GLOBAL_MAILCAP GOPHER_PROXY GOTOBUFFER HELPFILE HIDDEN_LINK_MARKER
+                    \ HISTORICAL_COMMENTS HTMLSRC_ATTRNAME_XFORM HTMLSRC_TAGNAME_XFORM HTTP_PROXY HTTPS_PROXY
+                    \ INCLUDE INFOSECS JUMPBUFFER JUMPFILE JUMP_PROMPT
+                    \ JUSTIFY JUSTIFY_MAX_VOID_PERCENT KEYBOARD_LAYOUT KEYMAP LEFTARROW_IN_TEXTFIELD_PROMPT
+                    \ LIST_FORMAT LIST_NEWS_DATES LIST_NEWS_NUMBERS LOCAL_DOMAIN LOCALE_CHARSET
+                    \ LOCAL_EXECUTION_LINKS_ALWAYS_ON LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE LOCALHOST_ALIAS LYNXCGI_DOCUMENT_ROOT LYNXCGI_ENVIRONMENT
+                    \ LYNX_HOST_NAME LYNX_SIG_FILE MAIL_ADRS MAIL_SYSTEM_ERROR_LOGGING MAKE_LINKS_FOR_ALL_IMAGES
+                    \ MAKE_PSEUDO_ALTS_FOR_INLINES MESSAGESECS MINIMAL_COMMENTS MULTI_BOOKMARK_SUPPORT NCR_IN_BOOKMARKS
+                    \ NEWS_CHUNK_SIZE NEWS_MAX_CHUNK NEWS_POSTING NEWSPOST_PROXY NEWS_PROXY
+                    \ NEWSREPLY_PROXY NNTP_PROXY NNTPSERVER NO_DOT_FILES NO_FILE_REFERER
+                    \ NO_FORCED_CORE_DUMP NO_FROM_HEADER NO_ISMAP_IF_USEMAP NONRESTARTING_SIGWINCH NO_PROXY
+                    \ NO_REFERER_HEADER NO_TABLE_CENTER NUMBER_FIELDS_ON_LEFT NUMBER_LINKS_ON_LEFT OUTGOING_MAIL_CHARSET
+                    \ PARTIAL PARTIAL_THRES PERSISTENT_COOKIES PERSONAL_EXTENSION_MAP PERSONAL_MAILCAP
+                    \ PREFERRED_CHARSET PREFERRED_LANGUAGE PREPEND_BASE_TO_SOURCE PREPEND_CHARSET_TO_SOURCE PRETTYSRC
+                    \ PRETTYSRC_SPEC PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING PRINTER QUIT_DEFAULT_YES REFERER_WITH_QUERY
+                    \ REPLAYSECS REUSE_TEMPFILES RULE RULESFILE SAVE_SPACE
+                    \ SCAN_FOR_BURIED_NEWS_REFS SCREEN_SIZE SCROLLBAR SCROLLBAR_ARROW SEEK_FRAG_AREA_IN_CUR
+                    \ SEEK_FRAG_MAP_IN_CUR SET_COOKIES SHOW_CURSOR SHOW_KB_NAME SHOW_KB_RATE
+                    \ SNEWSPOST_PROXY SNEWS_PROXY SNEWSREPLY_PROXY SOFT_DQUOTES SOURCE_CACHE
+                    \ SOURCE_CACHE_FOR_ABORTED STARTFILE STRIP_DOTDOT_URLS SUBSTITUTE_UNDERSCORES SUFFIX
+                    \ SUFFIX_ORDER SYSTEM_EDITOR SYSTEM_MAIL SYSTEM_MAIL_FLAGS TAGSOUP
+                    \ TEXTFIELDS_NEED_ACTIVATION TIMEOUT TRIM_INPUT_FIELDS TRUSTED_EXEC TRUSTED_LYNXCGI
+                    \ UNDERLINE_LINKS UPLOADER URL_DOMAIN_PREFIXES URL_DOMAIN_SUFFIXES USE_FIXED_RECORDS
+                    \ USE_MOUSE USE_SELECT_POPUPS VERBOSE_IMAGES VIEWER VI_KEYS_ALWAYS_ON
+                    \ WAIS_PROXY XLOADIMAGE_COMMAND contained nextgroup=lynxDelimiter
+syn keyword lynxOption BZIP2_PATH CHMOD_PATH COMPRESS_PATH COPY_PATH GZIP_PATH
+                    \ INSTALL_PATH MKDIR_PATH MV_PATH RLOGIN_PATH RMDIR_PATH
+                    \ RM_PATH TAR_PATH TELNET_PATH TN3270_PATH TOUCH_PATH
+                    \ UNCOMPRESS_PATH UNZIP_PATH UUDECODE_PATH ZCAT_PATH ZIP_PATH contained nextgroup=lynxDelimiter
 syn case match
 
 " NOTE: set this if you want the cfg2html.pl formatting directives to be highlighted
@@ -71,28 +78,17 @@ if exists("lynx_formatting_directives")
   syn match lynxFormatDir  "^\.fi$"
 endif
 
-" 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_lynx_syn_inits")
-  if version < 508
-    let did_lynx_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink lynxBoolean    Boolean
-  HiLink lynxComment    Comment
-  HiLink lynxDelimiter  Special
-  HiLink lynxFormatDir  Special
-  HiLink lynxNumber     Number
-  HiLink lynxOption     Identifier
-  HiLink lynxTodo       Todo
-
-  delcommand HiLink
-endif
+hi def link lynxBoolean                Boolean
+hi def link lynxComment                Comment
+hi def link lynxDelimiter      Special
+hi def link lynxFormatDir      Special
+hi def link lynxNumber         Number
+hi def link lynxOption         Identifier
+hi def link lynxTodo           Todo
 
 let b:current_syntax = "lynx"
 
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: ts=8
index 4d3b0df4546f1d533a0377f25e4818e36efd4612..5e72f4e69e97dd5dd9c9606eb665ca502c40bb05 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    Makefile
 " Maintainer:  Claudio Fleiner <claudio@fleiner.com>
 " URL:         http://www.fleiner.com/vim/syntax/make.vim
-" Last Change: 2006 Apr 5
+" Last Change: 2007 Apr 30
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -63,14 +63,14 @@ syn match makeCmdNextLine   "\\\n."he=e-1 contained
 
 
 " Statements / Functions (GNU make)
-syn match makeStatement contained "(\(subst\|addprefix\|addsuffix\|basename\|call\|dir\|error\|filter-out\|filter\|findstring\|firstword\|foreach\|if\|join\|notdir\|origin\|patsubst\|shell\|sort\|strip\|suffix\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
+syn match makeStatement contained "(\(subst\|addprefix\|addsuffix\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|foreach\|if\|join\|notdir\|origin\|patsubst\|shell\|sort\|strip\|suffix\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
 
 " Comment
 if exists("make_microsoft")
-   syn match  makeComment "#.*" contains=makeTodo
+   syn match  makeComment "#.*" contains=@Spell,makeTodo
 elseif !exists("make_no_comments")
-   syn region  makeComment     start="#" end="^$" end="[^\\]$" keepend contains=makeTodo
-   syn match   makeComment     "#$"
+   syn region  makeComment     start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo
+   syn match   makeComment     "#$" contains=@Spell
 endif
 syn keyword makeTodo TODO FIXME XXX contained
 
index e21dc125cdad830e15b75aa0a7b8a674472a0801..37abf16fad62ae91bbdcba64ce0582a6c311bff4 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    Maple V (based on release 4)
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Apr 12, 2006
-" Version:     8
+" Last Change: Sep 11, 2006
+" Version:     9
 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Package Function Selection: {{{1
@@ -115,14 +115,14 @@ syn keyword mvPackage     VectorCalculus  Worksheet       XMLTools
 " Language Support: {{{1
 syn keyword mvTodo     contained       COMBAK  FIXME   TODO    XXX
 if exists("g:mapleversion") && g:mapleversion < 9
- syn region  mvString  start=+`+ skip=+``+ end=+`+     keepend contains=mvTodo
- syn region  mvString  start=+"+ skip=+""+ end=+"+     keepend
+ syn region  mvString  start=+`+ skip=+``+ end=+`+     keepend contains=mvTodo,@Spell
+ syn region  mvString  start=+"+ skip=+""+ end=+"+     keepend contains=@Spell
  syn region  mvDelayEval       start=+'+ end=+'+       keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError,mvSemiError
  syn match   mvVarAssign       "[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:=" contains=mvAssign
  syn match   mvAssign  ":="    contained
 else
  syn region  mvName            start=+`+ skip=+``+ end=+`+     keepend contains=mvTodo
- syn region  mvString  start=+"+ skip=+""+ end=+"+     keepend
+ syn region  mvString  start=+"+ skip=+""+ end=+"+     keepend contains=@Spell
  syn region  mvDelayEval       start=+'+ end=+'+       keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError
  syn match   mvDelim           "[;:]"  display
  syn match   mvAssign  ":="
index e11a0293a8ac59a0dae82e17201b681c19ae90b0..d7c1e7ea142aaeac80c7aacbb675bc7a0b3f8b0f 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
-" Language:    Microsoft Assembler (80x86)
-" Maintainer:  Rob Brady <robb@datatone.com>
+" Language:    Microsoft Macro Assembler (80x86)
+" Orig Author: Rob Brady <robb@datatone.com>
+" Maintainer:  Wu Yongwei <wuyongwei@gmail.com>
 " Last Change: $Date$
-" URL: http://www.datatone.com/~robb/vim/syntax/masm.vim
 " $Revision$
 
 " For version 5.x: Clear all syntax items
@@ -16,86 +16,209 @@ endif
 syn case ignore
 
 
-" syn match masmType "\.word"
-
-syn match masmIdentifier       "[a-z_$][a-z0-9_$]*"
-syn match masmLabel            "^[A-Z_$][A-Z0-9_$]*:"he=e-1
-
-syn match masmDecimal          "\d*"
-syn match masmBinary           "[0-1]\+b"  "put this before hex or 0bfh dies!
-syn match masmHexadecimal      "[0-9]\x*h"
-syn match masmFloat            "[0-9]\x*r"
-
-syn match masmComment          ";.*"
-syn region masmString          start=+'+ end=+'+
-
-syn keyword masmOperator       AND BYTE PTR CODEPTR DATAPTR DUP DWORD EQ FAR
-syn keyword masmOperator       FWORD GE GT HIGH LARGE LE LOW LT MOD NE NEAR
-syn keyword masmOperator       NOT OFFSET OR PROC PWORD QWORD SEG SHORT TBYTE
-syn keyword masmOperator       TYPE WORD PARA
-syn keyword masmDirective      ALIGN ARG ASSUME CODESEG COMM
-syn keyword masmDirective      CONST DATASEG DB DD DF DISPLAY DOSSEG DP
-syn keyword masmDirective      DQ DT DW ELSE ELSEIF EMUL END ENDIF ENDM ENDP
-syn keyword masmDirective      ENDS ENUM EQU PROC PUBLIC PUBLICDLL RADIX
-syn keyword masmDirective      EXTRN FARDATA GLOBAL RECORD SEGMENT SMALLSTACK
-syn keyword masmDirective      GROUP IF IF1 IF2 IFB IFDEF IFDIF IFDIFI
-syn keyword masmDirective      IFE IFIDN IFIDNI IFNB IFNDEF INCLUDE INCLUDLIB
-syn keyword masmDirective      LABEL LARGESTACK STACK STRUC SUBTTL TITLE
-syn keyword masmDirective      MODEL NAME NOEMUL UNION USES VERSION
-syn keyword masmDirective      ORG FLAT
-syn match   masmDirective      "\.model"
-syn match   masmDirective      "\.186"
-syn match   masmDirective      "\.286"
-syn match   masmDirective      "\.286c"
-syn match   masmDirective      "\.286p"
-syn match   masmDirective      "\.287"
-syn match   masmDirective      "\.386"
-syn match   masmDirective      "\.386c"
-syn match   masmDirective      "\.386p"
-syn match   masmDirective      "\.387"
-syn match   masmDirective      "\.486"
-syn match   masmDirective      "\.486c"
-syn match   masmDirective      "\.486p"
-syn match   masmDirective      "\.8086"
-syn match   masmDirective      "\.8087"
-syn match   masmDirective      "\.ALPHA"
-syn match   masmDirective      "\.CODE"
-syn match   masmDirective      "\.DATA"
+syn match masmIdentifier       "[@a-z_$?][@a-z0-9_$?]*"
+syn match masmLabel            "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1
+
+syn match masmDecimal          "[-+]\?\d\+[dt]\?"
+syn match masmBinary           "[-+]\?[0-1]\+[by]"  "put this before hex or 0bfh dies!
+syn match masmOctal            "[-+]\?[0-7]\+[oq]"
+syn match masmHexadecimal      "[-+]\?[0-9]\x*h"
+syn match masmFloatRaw         "[-+]\?[0-9]\x*r"
+syn match masmFloat            "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?"
+
+syn match masmComment          ";.*" contains=@Spell
+syn region masmComment         start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell
+syn region masmString          start=+'+ end=+'+ oneline contains=@Spell
+syn region masmString          start=+"+ end=+"+ oneline contains=@Spell
+
+syn region masmTitleArea       start=+\<TITLE\s+lc=5 start=+\<SUBTITLE\s+lc=8 start=+\<SUBTTL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmTitle
+syn region masmTextArea                start=+\<NAME\s+lc=4 start=+\<INCLUDE\s+lc=7 start=+\<INCLUDELIB\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmText
+syn match masmTitle            "[^\t ;]\([^;]*[^\t ;]\)\?" contained
+syn match masmText             "[^\t ;]\([^;]*[^\t ;]\)\?" contained
+
+syn region masmOptionOpt       start=+\<OPTION\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption
+syn region masmModelOpt                start=+\.MODEL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmType
+syn region masmSegmentOpt      start=+\<SEGMENT\s+lc=7 end=+$+ end=+;+me=e-1 contains=masmOption,masmString
+syn region masmProcOpt         start=+\<PROC\s+lc=4 end=+$+ end=+;+me=e-1 contains=masmOption,masmType,masmRegister,masmIdentifier
+syn region masmExpression      start=+\.IF\s+lc=3 start=+\.WHILE\s+lc=6 start=+\.UNTIL\s+lc=6 start=+\<IF\s+lc=2 start=+\<IF2\s+lc=3 start=+\<ELSEIF\s+lc=6 start=+\<ELSEIF2\s+lc=7 start=+\<REPEAT\s+lc=6 start=+\<WHILE\s+lc=5 end=+$+ end=+;+me=e-1 contains=masmType,masmOperator,masmRegister,masmIdentifier,masmDecimal,masmBinary,masmHexadecimal,masmFloatRaw,masmString
+
+syn keyword masmOption         TINY SMALL COMPACT MEDIUM LARGE HUGE contained
+syn keyword masmOption         NEARSTACK FARSTACK contained
+syn keyword masmOption         PUBLIC PRIVATE STACK COMMON MEMORY AT contained
+syn keyword masmOption         BYTE WORD DWORD PARA PAGE contained
+syn keyword masmOption         USE16 USE32 FLAT contained
+syn keyword masmOption         INFO READ WRITE EXECUTE SHARED contained
+syn keyword masmOption         NOPAGE NOCACHE DISCARD contained
+syn keyword masmOption         READONLY USES FRAME contained
+syn keyword masmOption         CASEMAP DOTNAME NODOTNAME EMULATOR contained
+syn keyword masmOption         NOEMULATOR EPILOGUE EXPR16 EXPR32 contained
+syn keyword masmOption         LANGUAGE LJMP NOLJMP M510 NOM510 contained
+syn keyword masmOption         NOKEYWORD NOSIGNEXTEND OFFSET contained
+syn keyword masmOption         OLDMACROS NOOLDMACROS OLDSTRUCTS contained
+syn keyword masmOption         NOOLDSTRUCTS PROC PROLOGUE READONLY contained
+syn keyword masmOption         NOREADONLY SCOPED NOSCOPED SEGMENT contained
+syn keyword masmOption         SETIF2 contained
+syn keyword masmType           STDCALL SYSCALL C BASIC FORTRAN PASCAL
+syn keyword masmType           PTR NEAR FAR NEAR16 FAR16 NEAR32 FAR32
+syn keyword masmType           REAL4 REAL8 REAL10 BYTE SBYTE TBYTE
+syn keyword masmType           WORD DWORD QWORD FWORD SWORD SDWORD
+syn keyword masmOperator       AND NOT OR SHL SHR XOR MOD DUP
+syn keyword masmOperator       EQ GE GT LE LT NE
+syn keyword masmOperator       LROFFSET SEG LENGTH LENGTHOF SIZE SIZEOF
+syn keyword masmOperator       CODEPTR DATAPTR FAR NEAR SHORT THIS TYPE
+syn keyword masmOperator       HIGH HIGHWORD LOW LOWWORD OPATTR MASK WIDTH
+syn match   masmOperator       "OFFSET\(\sFLAT:\)\?"
+syn match   masmOperator       ".TYPE\>"
+syn match   masmOperator       "CARRY?"
+syn match   masmOperator       "OVERFLOW?"
+syn match   masmOperator       "PARITY?"
+syn match   masmOperator       "SIGN?"
+syn match   masmOperator       "ZERO?"
+syn keyword masmDirective      ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT
+syn keyword masmDirective      DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB
+syn keyword masmDirective      ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE
+syn keyword masmDirective      ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END
+syn keyword masmDirective      ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN
+syn keyword masmDirective      EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2
+syn keyword masmDirective      IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB
+syn keyword masmDirective      IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP
+syn keyword masmDirective      IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE
+syn keyword masmDirective      POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT
+syn keyword masmDirective      RECORD REPEAT REPT SEGMENT SIZESTR STRUC
+syn keyword masmDirective      STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE
+syn keyword masmDirective      TYPEDEF UNION WHILE
+syn match   masmDirective      "\.8086\>"
+syn match   masmDirective      "\.8087\>"
+syn match   masmDirective      "\.NO87\>"
+syn match   masmDirective      "\.186\>"
+syn match   masmDirective      "\.286\>"
+syn match   masmDirective      "\.286C\>"
+syn match   masmDirective      "\.286P\>"
+syn match   masmDirective      "\.287\>"
+syn match   masmDirective      "\.386\>"
+syn match   masmDirective      "\.386C\>"
+syn match   masmDirective      "\.386P\>"
+syn match   masmDirective      "\.387\>"
+syn match   masmDirective      "\.486\>"
+syn match   masmDirective      "\.486P\>"
+syn match   masmDirective      "\.586\>"
+syn match   masmDirective      "\.586P\>"
+syn match   masmDirective      "\.686\>"
+syn match   masmDirective      "\.686P\>"
+syn match   masmDirective      "\.K3D\>"
+syn match   masmDirective      "\.MMX\>"
+syn match   masmDirective      "\.XMM\>"
+syn match   masmDirective      "\.ALPHA\>"
+syn match   masmDirective      "\.DOSSEG\>"
+syn match   masmDirective      "\.SEQ\>"
+syn match   masmDirective      "\.CODE\>"
+syn match   masmDirective      "\.CONST\>"
+syn match   masmDirective      "\.DATA\>"
+syn match   masmDirective      "\.DATA?"
+syn match   masmDirective      "\.EXIT\>"
+syn match   masmDirective      "\.FARDATA\>"
+syn match   masmDirective      "\.FARDATA?"
+syn match   masmDirective      "\.MODEL\>"
+syn match   masmDirective      "\.STACK\>"
+syn match   masmDirective      "\.STARTUP\>"
+syn match   masmDirective      "\.IF\>"
+syn match   masmDirective      "\.ELSE\>"
+syn match   masmDirective      "\.ELSEIF\>"
+syn match   masmDirective      "\.ENDIF\>"
+syn match   masmDirective      "\.REPEAT\>"
+syn match   masmDirective      "\.UNTIL\>"
+syn match   masmDirective      "\.UNTILCXZ\>"
+syn match   masmDirective      "\.WHILE\>"
+syn match   masmDirective      "\.ENDW\>"
+syn match   masmDirective      "\.BREAK\>"
+syn match   masmDirective      "\.CONTINUE\>"
+syn match   masmDirective      "\.ERR\>"
+syn match   masmDirective      "\.ERR1\>"
+syn match   masmDirective      "\.ERR2\>"
+syn match   masmDirective      "\.ERRB\>"
+syn match   masmDirective      "\.ERRDEF\>"
+syn match   masmDirective      "\.ERRDIF\>"
+syn match   masmDirective      "\.ERRDIFI\>"
+syn match   masmDirective      "\.ERRE\>"
+syn match   masmDirective      "\.ERRIDN\>"
+syn match   masmDirective      "\.ERRIDNI\>"
+syn match   masmDirective      "\.ERRNB\>"
+syn match   masmDirective      "\.ERRNDEF\>"
+syn match   masmDirective      "\.ERRNZ\>"
+syn match   masmDirective      "\.LALL\>"
+syn match   masmDirective      "\.SALL\>"
+syn match   masmDirective      "\.XALL\>"
+syn match   masmDirective      "\.LFCOND\>"
+syn match   masmDirective      "\.SFCOND\>"
+syn match   masmDirective      "\.TFCOND\>"
+syn match   masmDirective      "\.CREF\>"
+syn match   masmDirective      "\.NOCREF\>"
+syn match   masmDirective      "\.XCREF\>"
+syn match   masmDirective      "\.LIST\>"
+syn match   masmDirective      "\.NOLIST\>"
+syn match   masmDirective      "\.XLIST\>"
+syn match   masmDirective      "\.LISTALL\>"
+syn match   masmDirective      "\.LISTIF\>"
+syn match   masmDirective      "\.NOLISTIF\>"
+syn match   masmDirective      "\.LISTMACRO\>"
+syn match   masmDirective      "\.NOLISTMACRO\>"
+syn match   masmDirective      "\.LISTMACROALL\>"
+syn match   masmDirective      "\.FPO\>"
+syn match   masmDirective      "\.RADIX\>"
+syn match   masmDirective      "\.SAFESEH\>"
+syn match   masmDirective      "%OUT\>"
+syn match   masmDirective      "ALIGN\>"
+syn match   masmOption         "ALIGN([0-9]\+)"
 
 syn keyword masmRegister       AX BX CX DX SI DI BP SP
-syn keyword masmRegister       ES DS SS CS
+syn keyword masmRegister       CS DS SS ES FS GS
 syn keyword masmRegister       AH BH CH DH AL BL CL DL
 syn keyword masmRegister       EAX EBX ECX EDX ESI EDI EBP ESP
+syn keyword masmRegister       CR0 CR2 CR3 CR4
+syn keyword masmRegister       DR0 DR1 DR2 DR3 DR6 DR7
+syn keyword masmRegister       TR3 TR4 TR5 TR6 TR7
+syn match   masmRegister       "ST([0-7])"
+
+
+" Instruction prefixes
+syn keyword masmOpcode         LOCK REP REPE REPNE REPNZ REPZ
+
+" 8086/8088 opcodes
+syn keyword masmOpcode         AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD
+syn keyword masmOpcode         CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC
+syn keyword masmOpcode         DIV ESC HLT IDIV IMUL IN INC INT INTO IRET
+syn keyword masmOpcode         JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW
+syn keyword masmOpcode         LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ
+syn keyword masmOpcode         LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB
+syn keyword masmOpcode         MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH
+syn keyword masmOpcode         PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL
+syn keyword masmOpcode         SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI
+syn keyword masmOpcode         STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB
+syn keyword masmOpcode         XOR
+syn match   masmOpcode       "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
+
+" 80186 opcodes
+syn keyword masmOpcode         BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB
+syn keyword masmOpcode         OUTSW POPA PUSHA PUSHW
+
+" 80286 opcodes
+syn keyword masmOpcode         ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW
 
+" 80286/80386 privileged opcodes
+syn keyword masmOpcode         CLTS LGDT LIDT LLDT LMSW LTR
 
-" these are current as of the 486 - don't have any pentium manuals handy
-syn keyword masmOpcode         AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF
-syn keyword masmOpcode         BSR BSWAP BT BTC BTR BTS BSWAP BT BTC BTR
-syn keyword masmOpcode         BTS CALL CBW CDQ CLC CLD CLI CLTS CMC CMP
-syn keyword masmOpcode         CMPS CMPSB CMPSW CMPSD CMPXCHG CWD CWDE DAA
-syn keyword masmOpcode         DAS DEC DIV ENTER HLT IDIV IMUL IN INC INS
-syn keyword masmOpcode         INSB INSW INSD INT INTO INVD INVLPG IRET
-syn keyword masmOpcode         IRETD JA JAE JB JBE JC JCXZ JECXZ JE JZ JG
-syn keyword masmOpcode         JGE JL JLE JNA JNAE JNB JNBE JNC JNE JNG JNGE
-syn keyword masmOpcode         JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ
-syn keyword masmOpcode         JMP LAHF LAR LEA LEAVE LGDT LIDT LGS LSS LFS
-syn keyword masmOpcode         LODS LODSB LODSW LODSD LOOP LOOPE LOOPZ LOONE
-syn keyword masmOpcode         LOOPNE RETF RETN
-syn keyword masmOpcode         LDS LES LLDT LMSW LOCK LSL LTR MOV MOVS MOVSB
-syn keyword masmOpcode         MOVSW MOVSD MOVSX MOVZX MUL NEG NOP NOT OR
-syn keyword masmOpcode         OUT OUTS OUTSB OUTSW OUTSD POP POPA POPD
-syn keyword masmOpcode         POPF POPFD PUSH PUSHA PUSHAD PUSHF PUSHFD
-syn keyword masmOpcode         RCL RCR ROL ROR REP REPE REPZ REPNE REPNZ
-syn keyword masmOpcode         RET SAHF SAL SAR SHL SHR SBB SCAS SCASB
-syn keyword masmOpcode         SCASW SCASD SETA SETAE SETB SETBE SETC SETE
-syn keyword masmOpcode         SETG SETGE SETL SETLE SETNA SETNAE SETNB
-syn keyword masmOpcode         SETNBE SETNC SETNE SETNG SETNGE SETNL SETNLE
-syn keyword masmOpcode         SETNO SETNP SETNS SETNZ SETO SETP SETPE SETPO
-syn keyword masmOpcode         SETS SETZ SGDT SIDT SHLD SHRD SLDT SMSW STC
-syn keyword masmOpcode         STD STI STOS STOSB STOSW STOSD STR SUB TEST
-syn keyword masmOpcode         VERR VERW WAIT WBINVD XADD XCHG XLAT XLATB XOR
-
-" floating point coprocessor as of 487
+" 80386 opcodes
+syn keyword masmOpcode         BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD
+syn keyword masmOpcode         IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD
+syn keyword masmOpcode         LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX
+syn keyword masmOpcode         MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD
+syn keyword masmOpcode         SCASD SHLD SHRD STOSD
+syn match   masmOpcode     "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
+
+" 80486 opcodes
+syn keyword masmOpcode         BSWAP CMPXCHG INVD INVLPG WBINVD XADD
+
+" Floating-point opcodes as of 487
 syn keyword masmOpFloat                F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX
 syn keyword masmOpFloat                FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI
 syn keyword masmOpFloat                FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI
@@ -103,13 +226,73 @@ syn keyword masmOpFloat           FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD
 syn keyword masmOpFloat                FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB
 syn keyword masmOpFloat                FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E
 syn keyword masmOpFloat                FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN
-syn keyword masmOpFloat                FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE
-syn keyword masmOpFloat                FNSAVE FSCALE FSETPM FSIN FSINCOS FSQRT FST
-syn keyword masmOpFloat                FSTCW FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW
-syn keyword masmOpFloat                FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP
-syn keyword masmOpFloat                FUCOMPP FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1
-syn match   masmOpFloat                "FSTSW[ \t]\+AX"
-syn match   masmOpFloat                "FNSTSW[ \t]\+AX"
+syn keyword masmOpFloat                FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE
+syn keyword masmOpFloat                FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW
+syn keyword masmOpFloat                FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB
+syn keyword masmOpFloat                FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP
+syn keyword masmOpFloat                FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1
+
+" Floating-point opcodes in Pentium and later processors
+syn keyword masmOpFloat                FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE
+syn keyword masmOpFloat                FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP
+syn keyword masmOpFloat                FXSAVE FXRSTOR
+
+" MMX opcodes (Pentium w/ MMX, Pentium II, and later)
+syn keyword masmOpcode         MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB
+syn keyword masmOpcode         PUNPCKHBW PUNPCKHWD PUNPCKHDQ
+syn keyword masmOpcode         PUNPCKLBW PUNPCKLWD PUNPCKLDQ
+syn keyword masmOpcode         PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW
+syn keyword masmOpcode         PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW
+syn keyword masmOpcode         PMULHW PMULLW PMADDWD
+syn keyword masmOpcode         PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD
+syn keyword masmOpcode         PAND PANDN POR PXOR
+syn keyword masmOpcode         PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD
+syn keyword masmOpcode         EMMS
+
+" SSE opcodes (Pentium III and later)
+syn keyword masmOpcode         MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS
+syn keyword masmOpcode         MOVMSKPS MOVSS
+syn keyword masmOpcode         ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS
+syn keyword masmOpcode         RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS
+syn keyword masmOpcode         MAXPS MAXSS MINPS MINSS
+syn keyword masmOpcode         CMPPS CMPSS COMISS UCOMISS
+syn keyword masmOpcode         ANDPS ANDNPS ORPS XORPS
+syn keyword masmOpcode         SHUFPS UNPCKHPS UNPCKLPS
+syn keyword masmOpcode         CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI
+syn keyword masmOpcode         CVTSS2SI CVTTSS2SI
+syn keyword masmOpcode         LDMXCSR STMXCSR
+syn keyword masmOpcode         PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW
+syn keyword masmOpcode         PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW
+syn keyword masmOpcode         MASKMOVQ MOVNTQ MOVNTPS SFENCE
+syn keyword masmOpcode         PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA
+
+" SSE2 opcodes (Pentium 4 and later)
+syn keyword masmOpcode         MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD
+syn keyword masmOpcode         ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD
+syn keyword masmOpcode         SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD
+syn keyword masmOpcode         ANDPD ANDNPD ORPD XORPD
+syn keyword masmOpcode         CMPPD CMPSD COMISD UCOMISD
+syn keyword masmOpcode         SHUFPD UNPCKHPD UNPCKLPD
+syn keyword masmOpcode         CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ
+syn keyword masmOpcode         CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS
+syn keyword masmOpcode         CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD
+syn keyword masmOpcode         CVTDQ2PS CVTPS2DQ CVTTPS2DQ
+syn keyword masmOpcode         MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ
+syn keyword masmOpcode         PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD
+syn keyword masmOpcode         PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ
+syn keyword masmOpcode         CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU
+syn keyword masmOpcode         MOVNTPD MOVNTDQ MOVNTI
+
+" SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later)
+syn keyword masmOpcode         FISTTP LDDQU ADDSUBPS ADDSUBPD
+syn keyword masmOpcode         HADDPS HSUBPS HADDPD HSUBPD
+syn keyword masmOpcode         MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT
+
+" Other opcodes in Pentium and later processors
+syn keyword masmOpcode         CMPXCHG8B CPUID UD2
+syn keyword masmOpcode         RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT
+syn match   masmOpcode    "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
+
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -123,19 +306,30 @@ if version >= 508 || !exists("did_masm_syntax_inits")
   endif
 
   " The default methods for highlighting.  Can be overridden later
-  HiLink masmLabel     Label
+  HiLink masmLabel     PreProc
   HiLink masmComment   Comment
   HiLink masmDirective Statement
-  HiLink masmOperator  Statement
+  HiLink masmType      Type
+  HiLink masmOperator  Type
+  HiLink masmOption    Special
+  HiLink masmRegister  Special
   HiLink masmString    String
+  HiLink masmText      String
+  HiLink masmTitle     Title
+  HiLink masmOpcode    Statement
+  HiLink masmOpFloat   Statement
 
   HiLink masmHexadecimal Number
   HiLink masmDecimal   Number
+  HiLink masmOctal     Number
   HiLink masmBinary    Number
+  HiLink masmFloatRaw  Number
   HiLink masmFloat     Number
 
   HiLink masmIdentifier Identifier
 
+  syntax sync minlines=50
+
   delcommand HiLink
 endif
 
index cc77711a3da45d7526fa1e08367065d7bce6ca0e..fb88f6afdfb3a959fbed8cf9b3373f42bc8d6c5c 100644 (file)
@@ -2,9 +2,9 @@
 " Language:    Mutt setup files
 " Original:    Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
 " Maintainer:  Kyle Wheeler <kyle-muttrc.vim@memoryhole.net>
-" Last Change: 22 Apr 2006
+" Last Change: 5 Mar 2007
 
-" This file covers mutt version 1.5.11
+" This file covers mutt version 1.5.14 (and most of CVS HEAD)
 " Included are also a few features from 1.4.2.1
 
 " For version 5.x: Clear all syntax items
@@ -22,17 +22,19 @@ else
   setlocal isk=@,48-57,_,-
 endif
 
-syn match muttrcComment                "^#.*$"
+syn match muttrcComment                "^# .*$" contains=@Spell
+syn match muttrcComment                "^#[^ ].*$"
+syn match muttrcComment                "^#$"
 syn match muttrcComment                "[^\\]#.*$"lc=1
 
 " Escape sequences (back-tick and pipe goes here too)
-syn match muttrcEscape         +\\[#tnr"'Cc]+
+syn match muttrcEscape         +\\[#tnr"'Cc ]+
 syn match muttrcEscape         +[`|]+
 
 " The variables takes the following arguments
 syn match  muttrcString                "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape
-syn region muttrcString                start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcMacro,muttrcCommand,muttrcAction
-syn region muttrcString                start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcMacro,muttrcCommand,muttrcAction
+syn region muttrcString                start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction
+syn region muttrcString                start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction
 
 syn region muttrcShellString   matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand,muttrcSet
 
@@ -41,8 +43,11 @@ syn match  muttrcRXChars     contained /[][|()][.*?+]*/
 syn match  muttrcRXChars       contained /'^/ms=s+1
 syn match  muttrcRXChars       contained /$'/me=e-1
 syn match  muttrcRXChars       contained /\\/
+" Why does muttrcRXString2 work with one \ when muttrcRXString requires two?
 syn region muttrcRXString      contained start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars
 syn region muttrcRXString      contained start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars
+syn region muttrcRXString2     contained start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars
+syn region muttrcRXString2     contained start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars
 
 syn region muttrcRXPat         contained start=+'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString nextgroup=muttrcRXPat
 syn region muttrcRXPat         contained start=+"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString nextgroup=muttrcRXPat
@@ -102,7 +107,7 @@ syn keyword muttrcVarBool   contained save_empty save_name score sig_dashes sig_on
 syn keyword muttrcVarBool      contained smart_wrap smime_ask_cert_label smime_decrypt_use_default_key
 syn keyword muttrcVarBool      contained smime_is_default sort_re ssl_force_tls ssl_use_sslv2
 syn keyword muttrcVarBool      contained ssl_use_sslv3 ssl_use_tlsv1 ssl_usesystemcerts status_on_top
-syn keyword muttrcVarBool      contained strict_threads suspend text_flowed thorough_search
+syn keyword muttrcVarBool      contained strict_mime strict_threads suspend text_flowed thorough_search
 syn keyword muttrcVarBool      contained thread_received tilde uncollapse_jump use_8bitmime
 syn keyword muttrcVarBool      contained use_domain use_envelope_from use_from use_idn use_ipv6
 syn keyword muttrcVarBool      contained user_agent wait_key weed wrap_search write_bcc
@@ -199,24 +204,26 @@ syn keyword muttrcVarQuad contained invpostpone invprint invquit invrecall invre
 
 syn keyword muttrcVarNum       contained connect_timeout history imap_keepalive mail_check menu_context net_inc
 syn keyword muttrcVarNum       contained pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc
-syn keyword muttrcVarNum       contained score_threshold_delete score_threshold_flag score_threshold_read
-syn keyword muttrcVarNum       contained sendmail_wait sleep_time smime_timeout ssl_min_dh_prime_bits timeout
-syn keyword muttrcVarNum       contained wrapmargin write_inc
+syn keyword muttrcVarNum       contained save_history score_threshold_delete score_threshold_flag
+syn keyword muttrcVarNum       contained score_threshold_read sendmail_wait sleep_time smime_timeout
+syn keyword muttrcVarNum       contained ssl_min_dh_prime_bits timeout wrap wrapmargin write_inc
 
-syn keyword muttrcVarStr       contained alias_file alias_format attach_format attach_sep attribution
+syn match muttrcVarStr         contained 'my_[a-zA-Z0-9_]\+'
+syn keyword muttrcVarStr       contained alias_file alias_format assumed_charset attach_format attach_sep attribution
 syn keyword muttrcVarStr       contained certificate_file charset compose_format config_charset content_type
 syn keyword muttrcVarStr       contained date_format default_hook display_filter dotlock_program dsn_notify
 syn keyword muttrcVarStr       contained dsn_return editor entropy_file envelope_from_address escape folder
 syn keyword muttrcVarStr       contained folder_format forw_format forward_format from gecos_mask hdr_format
-syn keyword muttrcVarStr       contained header_cache header_cache_pagesize hostname imap_authenticators
-syn keyword muttrcVarStr       contained imap_delim_chars imap_headers imap_home_namespace imap_login imap_pass
+syn keyword muttrcVarStr       contained header_cache header_cache_pagesize history_file hostname imap_authenticators
+syn keyword muttrcVarStr       contained imap_delim_chars imap_headers imap_home_namespace imap_idle imap_login imap_pass
 syn keyword muttrcVarStr       contained imap_user indent_str indent_string index_format ispell locale mailcap_path
-syn keyword muttrcVarStr       contained mask mbox mbox_type message_format mh_seq_flagged mh_seq_replied
+syn keyword muttrcVarStr       contained mask mbox mbox_type message_format message_cachedir mh_seq_flagged mh_seq_replied
 syn keyword muttrcVarStr       contained mh_seq_unseen mix_entry_format mixmaster msg_format pager pager_format
 syn keyword muttrcVarStr       contained pgp_clearsign_command pgp_decode_command pgp_decrypt_command
 syn keyword muttrcVarStr       contained pgp_encrypt_only_command pgp_encrypt_sign_command pgp_entry_format
 syn keyword muttrcVarStr       contained pgp_export_command pgp_getkeys_command pgp_good_sign pgp_import_command
-syn keyword muttrcVarStr       contained pgp_list_pubring_command pgp_list_secring_command pgp_sign_as
+syn keyword muttrcVarStr       contained pgp_list_pubring_command pgp_list_secring_command pgp_mime_signature_filename
+syn keyword muttrcVarStr       contained pgp_mime_signature_description pgp_sign_as
 syn keyword muttrcVarStr       contained pgp_sign_command pgp_sort_keys pgp_verify_command pgp_verify_key_command
 syn keyword muttrcVarStr       contained pipe_sep pop_authenticators pop_host pop_pass pop_user post_indent_str
 syn keyword muttrcVarStr       contained post_indent_string postponed preconnect print_cmd print_command
@@ -227,8 +234,8 @@ syn keyword muttrcVarStr    contained smime_encrypt_command smime_encrypt_with smim
 syn keyword muttrcVarStr       contained smime_get_cert_email_command smime_get_signer_cert_command
 syn keyword muttrcVarStr       contained smime_import_cert_command smime_keys smime_pk7out_command smime_sign_as
 syn keyword muttrcVarStr       contained smime_sign_command smime_sign_opaque_command smime_verify_command
-syn keyword muttrcVarStr       contained smime_verify_opaque_command sort sort_alias sort_aux sort_browser
-syn keyword muttrcVarStr       contained spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert
+syn keyword muttrcVarStr       contained smime_verify_opaque_command smtp_url smtp_authenticators sort sort_alias sort_aux
+syn keyword muttrcVarStr       contained sort_browser spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert
 syn keyword muttrcVarStr       contained status_chars status_format tmpdir to_chars tunnel visual
 
 " Present in 1.4.2.1 (pgp_create_traditional was a bool then)
@@ -243,10 +250,14 @@ syn match muttrcMenuCommas /,/ contained
 syn keyword muttrcCommand      auto_view alternative_order charset-hook exec unalternative_order
 syn keyword muttrcCommand      hdr_order iconv-hook ignore mailboxes my_hdr unmailboxes
 syn keyword muttrcCommand      pgp-hook push score source unauto_view unhdr_order
-syn keyword muttrcCommand      unhook unignore unmono unmy_hdr unscore
+syn keyword muttrcCommand      unignore unmono unmy_hdr unscore
 syn keyword muttrcCommand      mime_lookup unmime_lookup spam ungroup
 syn keyword muttrcCommand      nospam unalternative_order
 
+syn keyword muttrcHooks                contained account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook
+syn keyword muttrcUnhook       contained unhook
+syn region muttrcUnhookLine    keepend start=+^\s*unhook\s+ skip=+\\$+ end=+$+ contains=muttrcUnhook,muttrcHooks,muttrcUnHighlightSpace,muttrcComment
+
 syn match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType
 syn match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType
 syn match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag
@@ -286,12 +297,12 @@ syn match muttrcFunction  contained "\<previous-\%(line\|new\|page\|subthread\|un
 syn match muttrcFunction       contained "\<search\%(-\%(next\|opposite\|reverse\|toggle\)\)\?\>"
 syn match muttrcFunction       contained "\<show-\%(limit\|version\)\>"
 syn match muttrcFunction       contained "\<sort-\%(mailbox\|reverse\)\>"
-syn match muttrcFunction       contained "\<tag-\%(pattern\|prefix\)\>"
+syn match muttrcFunction       contained "\<tag-\%(pattern\|prefix\%(-cond\)\?\)\>"
 syn match muttrcFunction       contained "\<toggle-\%(mailboxes\|new\|quoted\|subscribed\|unlink\|write\)\>"
 syn match muttrcFunction       contained "\<undelete-\%(pattern\|subthread\)\>"
 syn match muttrcFunction       contained "\<collapse-\%(parts\|thread\|all\)\>"
 syn match muttrcFunction       contained "\<view-\%(attach\|attachments\|file\|mailcap\|name\|text\)\>"
-syn match muttrcFunction       contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|write-fcc\)\>"
+syn match muttrcFunction       contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>"
 syn match muttrcAction         contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName
 
 syn keyword muttrcSet          set     skipwhite nextgroup=muttrcVar.*
@@ -315,7 +326,15 @@ syn match muttrcBindMenuList       contained /\S\+/ skipwhite contains=muttrcMenu,mutt
 syn match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
 syn match muttrcBind           /^\s*bind\s\?/ skipwhite nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
 
-syn match muttrcMacroKey       contained /\S\+/ skipwhite contains=muttrcKey
+syn region muttrcMacroDescr    contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s
+syn region muttrcMacroDescr    contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s
+syn region muttrcMacroDescr    contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s
+syn match muttrcMacroDescrNL   contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn region muttrcMacroBody     contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn match muttrcMacroBodyNL    contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroBody,muttrcMacroBodyNL
+syn match muttrcMacroKey       contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcMacroBody,muttrcMacroBodyNL
 syn match muttrcMacroKeyNL     contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroKey,muttrcMacroKeyNL
 syn match muttrcMacroMenuList  contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcMacroKey,muttrcMacroKeyNL
 syn match muttrcMacroMenuListNL        contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
@@ -332,32 +351,36 @@ syn region muttrcGroupDef contained start="-group\s\+" skip="\\$" end="\s" skipw
 syn keyword muttrcGroupKeyword contained group ungroup
 syn region muttrcGroupLine     keepend start=+^\s*\%(un\)\?group\s+ skip=+\\$+ end=+$+ contains=muttrcGroupKeyword,muttrcGroupDef,muttrcAddrDef,muttrcRXDef,muttrcUnHighlightSpace,muttrcComment
 
-syn match muttrcAliasGroupName contained /\w\+/ skipwhite nextgroup=muttrcAliasGroupDef,muttrcAliasAbbr,muttrcAliasNL
+syn match muttrcAliasGroupName contained /\w\+/ skipwhite nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
 syn match muttrcAliasGroupDefNL        contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupName,muttrcAliasGroupDefNL
 syn match muttrcAliasGroupDef  contained /\s*-group/ skipwhite nextgroup=muttrcAliasGroupName,muttrcAliasGroupDefNL contains=muttrcGroupFlag
-syn match muttrcAliasEmail     contained /\S\+@\S\+/ contains=muttrcEmail nextgroup=muttrcAliasName,muttrcAliasNameNL
-syn match muttrcAliasEncEmail  contained /<[^>]\+>/ contains=muttrcEmail
+syn match muttrcAliasComma     contained /,/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syn match muttrcAliasEmail     contained /\S\+@\S\+/ contains=muttrcEmail nextgroup=muttrcAliasName,muttrcAliasNameNL skipwhite
+syn match muttrcAliasEncEmail  contained /<[^>]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma
 syn match muttrcAliasEncEmailNL        contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL
 syn match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL
 syn region muttrcAliasName     contained matchgroup=Type start=/(/ end=/)/ skipwhite
 syn match muttrcAliasNameNL    contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL
-syn match muttrcAliasENNL      contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasNameNoParens,muttrcAliasENNL
-syn match muttrcAliasAbbr      contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasNameNoParens,muttrcAliasENNL
-syn match muttrcAliasNL                contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasAbbr,muttrcAliasNL
-syn match muttrcAlias          /^\s*alias\s/ skipwhite nextgroup=muttrcAliasGroupDef,muttrcAliasAbbr,muttrcAliasNL
+syn match muttrcAliasENNL      contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syn match muttrcAliasKey       contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syn match muttrcAliasNL                contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+syn match muttrcAlias          /^\s*alias\s/ skipwhite nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
 
-syn match muttrcUnAliasAbbr    contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasAbbr,muttrcUnAliasNL
-syn match muttrcUnAliasNL      contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasAbbr,muttrcUnAliasNL
-syn match muttrcUnAlias                /^\s*unalias\s\?/ nextgroup=muttrcUnAliasAbbr,muttrcUnAliasNL
+syn match muttrcUnAliasKey     contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syn match muttrcUnAliasNL      contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syn match muttrcUnAlias                /^\s*unalias\s\?/ nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
 
 syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]"
 syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s\+\%([<>-][0-9]\+\|[0-9]\+[-][0-9]*\)"
-syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s\+[0-9]\{2}\%(/[0-9]\{2}\%(/[0-9]\{2}\%([0-9]\{2}\)\)\?\)\?"
+syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s\+\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\)"
 syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s\+" nextgroup=muttrcSimplePatRXContainer
-syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s\+" nextgroup=muttrcSimplePatGroup
+syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s\+" nextgroup=muttrcSimplePatString
+syn match muttrcSimplePat contained "!\?\^\?[=][bh]\s\+" nextgroup=muttrcSimplePatString
 "syn match muttrcSimplePat contained /"[^~=%][^"]*/ contains=muttrcRXPat
 "syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXPat
-syn match muttrcSimplePatGroup contained /[a-zA-Z0-9]\+/
+syn match muttrcSimplePatString contained /[a-zA-Z0-9]\+/
+syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+
+syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+
 syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXPat
 syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXPat
 syn match muttrcSimplePatRXContainer contained /\S\+/ contains=muttrcRXPat
@@ -372,32 +395,32 @@ syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\
 " Colour definitions takes object, foreground and background arguments (regexps excluded).
 syn match muttrcColorMatchCount        contained "[0-9]\+"
 syn match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
-syn region muttrcColorRXPat    contained start=+\s\+'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
-syn region muttrcColorRXPat    contained start=+\s\+"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syn region muttrcColorRXPat    contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syn region muttrcColorRXPat    contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
 syn keyword muttrcColorField   contained attachment body bold error hdrdefault header index indicator markers message normal quoted search signature status tilde tree underline
 syn match   muttrcColorField   contained "\<quoted\d\=\>"
 syn keyword muttrcColor        contained black blue cyan default green magenta red white yellow
 syn keyword muttrcColor        contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow
 syn match   muttrcColor        contained "\<\%(bright\)\=color\d\{1,2}\>"
 " Now for the structure of the color line
-syn match muttrcColorRXNL      contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL
-syn match muttrcColorBG        contained skipwhite /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
-syn match muttrcColorBGNL      contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL
-syn match muttrcColorFG        contained skipwhite /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
-syn match muttrcColorFGNL      contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL
-syn match muttrcColorContext   contained skipwhite /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL
-syn match muttrcColorNL        contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL
-syn match muttrcColorKeyword   contained skipwhite /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL
+syn match muttrcColorRXNL      contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syn match muttrcColorBG        contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syn match muttrcColorBGNL      contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL
+syn match muttrcColorFG        contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
+syn match muttrcColorFGNL      contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL
+syn match muttrcColorContext   contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL
+syn match muttrcColorNL        contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL
+syn match muttrcColorKeyword   contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL
 syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
 " Now for the structure of the color index line
-syn match muttrcPatternNL      contained skipwhite skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL
-syn match muttrcColorBGI       contained skipwhite /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL
-syn match muttrcColorBGNLI     contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI
-syn match muttrcColorFGI       contained skipwhite /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI
-syn match muttrcColorFGNLI     contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI
-syn match muttrcColorContextI  contained skipwhite /\s*index/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI
-syn match muttrcColorNLI       contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI
-syn match muttrcColorKeywordI  contained skipwhite /^\s*color\s\+/ nextgroup=muttrcColorContextI,muttrcColorNLI
+syn match muttrcPatternNL      contained skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL
+syn match muttrcColorBGI       contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL
+syn match muttrcColorBGNLI     contained skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI
+syn match muttrcColorFGI       contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI
+syn match muttrcColorFGNLI     contained skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI
+syn match muttrcColorContextI  contained /\s*index/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI
+syn match muttrcColorNLI       contained skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI
+syn match muttrcColorKeywordI  contained /^\s*color\s\+/ nextgroup=muttrcColorContextI,muttrcColorNLI
 syn region muttrcColorLine keepend start=/^\s*color\s\+index/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace
 " And now color's brother:
 syn region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
@@ -432,15 +455,17 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcRXChars         SpecialChar
   HiLink muttrcString          String
   HiLink muttrcRXString                String
+  HiLink muttrcRXString2       String
   HiLink muttrcSpecial         Special
+  HiLink muttrcHooks           Type
   HiLink muttrcGroupFlag       Type
   HiLink muttrcGroupDef                Macro
   HiLink muttrcAddrDef         muttrcGroupFlag
   HiLink muttrcRXDef           muttrcGroupFlag
   HiLink muttrcRXPat           String
   HiLink muttrcAliasGroupName  Macro
-  HiLink muttrcAliasAbbr       Identifier
-  HiLink muttrcUnAliasAbbr     Identifier
+  HiLink muttrcAliasKey        Identifier
+  HiLink muttrcUnAliasKey      Identifier
   HiLink muttrcAliasEncEmail   Identifier
   HiLink muttrcAliasParens     Type
   HiLink muttrcNumber          Number
@@ -463,8 +488,11 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcToggle          muttrcCommand
   HiLink muttrcBind            muttrcCommand
   HiLink muttrcMacro           muttrcCommand
+  HiLink muttrcMacroDescr      String
   HiLink muttrcAlias           muttrcCommand
   HiLink muttrcUnAlias         muttrcCommand
+  HiLink muttrcUnhook          muttrcCommand
+  HiLink muttrcUnhookLine      Error
   HiLink muttrcAction          Macro
   HiLink muttrcBadAction       Error
   HiLink muttrcBindFunction    Error
@@ -487,7 +515,7 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcColorKeyword    muttrcCommand
   HiLink muttrcColorKeywordI   muttrcColorKeyword
   HiLink muttrcColorField      Identifier
-  HiLink muttrcColor           String
+  HiLink muttrcColor           Type
   HiLink muttrcColorFG         Error
   HiLink muttrcColorFGI                Error
   HiLink muttrcColorBG         Error
@@ -495,7 +523,7 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcMonoAttrib      muttrcColor
   HiLink muttrcMono            muttrcCommand
   HiLink muttrcSimplePat       Identifier
-  HiLink muttrcSimplePatGroup  Macro
+  HiLink muttrcSimplePatString Macro
   HiLink muttrcSimplePatMetas  Special
   HiLink muttrcPattern         Type
   HiLink muttrcPatternInner    Error
@@ -508,6 +536,29 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcPatHooks                muttrcCommand
   HiLink muttrcPatHookNot      Type
 
+  HiLink muttrcBindFunctionNL  SpecialChar
+  HiLink muttrcBindKeyNL       SpecialChar
+  HiLink muttrcBindMenuListNL  SpecialChar
+  HiLink muttrcMacroDescrNL    SpecialChar
+  HiLink muttrcMacroBodyNL     SpecialChar
+  HiLink muttrcMacroKeyNL      SpecialChar
+  HiLink muttrcMacroMenuListNL SpecialChar
+  HiLink muttrcColorMatchCountNL SpecialChar
+  HiLink muttrcColorNL         SpecialChar
+  HiLink muttrcColorRXNL       SpecialChar
+  HiLink muttrcColorBGNL       SpecialChar
+  HiLink muttrcColorFGNL       SpecialChar
+  HiLink muttrcAliasNameNL     SpecialChar
+  HiLink muttrcAliasENNL       SpecialChar
+  HiLink muttrcAliasNL         SpecialChar
+  HiLink muttrcUnAliasNL       SpecialChar
+  HiLink muttrcAliasGroupDefNL SpecialChar
+  HiLink muttrcAliasEncEmailNL SpecialChar
+  HiLink muttrcPatternNL       SpecialChar
+  HiLink muttrcUnColorPatNL    SpecialChar
+  HiLink muttrcUnColorAPNL     SpecialChar
+  HiLink muttrcUnColorIndexNL  SpecialChar
+
   delcommand HiLink
 endif
 
index 6ba564a2986ed67cde80ac2ee638d86ad1cf7b59..faec5f68e5670943de63e85895255854d2dd7591 100644 (file)
@@ -1,17 +1,16 @@
 " Vim syntax file
-" Language:    BIND 8.x configuration file
-" Maintainer:  glory hump <rnd@web-drive.ru>
-" Last change: Mon May 21 04:51:01 SAMST 2001
-" Updated:     by Marcin Dalecki 2004-12-31
-" Filenames:   named.conf
-" URL: http://rnd.web-drive.ru/vim/syntax/named.vim [DEFUNCT]
-" $Id$
+" Language:    BIND configuration file
+" Maintainer:  Nick Hibma <nick@van-laarhoven.org>
+" Last change: 2007-01-30
+" Filenames:   named.conf, rndc.conf
+" Location:    http://www.van-laarhoven.org/vim/syntax/named.vim
+"
+" Previously maintained by glory hump <rnd@web-drive.ru> and updated by Marcin
+" Dalecki.
+"
+" This file could do with a lot of improvements, so comments are welcome.
+" Please submit the named.conf (segment) with any comments.
 "
-" NOTE
-"    it was not widely tested, i just tried it on my simple
-"    single-master-single-slave configuration. most syntax was borrowed
-"    directly from "BIND Configuration File Guide" without testing.
-
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
 if version < 600
@@ -28,6 +27,10 @@ else
   set iskeyword=.,-,48-58,A-Z,a-z,_
 endif
 
+if version >= 600
+  syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)"
+endif
+
 let s:save_cpo = &cpo
 set cpo-=C
 
@@ -79,6 +82,11 @@ syn keyword  namedIntKeyword contained unix nextgroup=namedString skipwhite
 syn keyword    namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite
 syn keyword    namedIntKeyword contained allow nextgroup=namedIntSection skipwhite
 
+" + these keywords are contained within `update-policy' section only
+syn keyword    namedIntKeyword contained grant nextgroup=namedString skipwhite
+syn keyword    namedIntKeyword contained name self subdomain wildcard nextgroup=namedString skipwhite
+syn keyword    namedIntKeyword TXT A PTR NS SOA A6 CNAME MX ANY skipwhite
+
 " --- options
 syn region     namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError
 
@@ -101,9 +109,10 @@ syn keyword        namedOption     contained notify recursion rfc2308-type1
 syn keyword    namedOption     contained use-id-pool treat-cr-as-space
 \              nextgroup=namedBool,namedNotBool skipwhite
 syn keyword    namedOption     contained also-notify forwarders
-\              nextgroup=namedIntSection skipwhite
+\              nextgroup=namedIPlist skipwhite
 syn keyword    namedOption     contained forward check-names
-syn keyword    namedOption     contained allow-query allow-transfer allow-recursion    nextgroup=namedAML skipwhite
+syn keyword    namedOption     contained allow-query allow-transfer allow-recursion
+\              nextgroup=namedAML skipwhite
 syn keyword    namedOption     contained blackhole listen-on
 \              nextgroup=namedIntSection skipwhite
 syn keyword    namedOption     contained lame-ttl max-transfer-time-in
@@ -159,8 +168,10 @@ syn keyword        namedZoneType   contained master slave stub forward hint
 syn keyword    namedZoneOpt    contained masters forwarders
 \              nextgroup=namedIPlist skipwhite
 syn region     namedIPlist     contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment
-syn match      namedZoneOpt    contained "\<allow-\(update\|query\|transfer\)"
+syn keyword    namedZoneOpt    contained allow-update allow-query allow-transfer
 \              nextgroup=namedAML skipwhite
+syn keyword    namedZoneOpt    contained update-policy
+\              nextgroup=namedIntSection skipwhite
 
 " --- boolean parameter
 syn match      namedNotBool    contained "[^   ;]\+"
@@ -171,7 +182,7 @@ syn match   namedNotNumber  contained "[^   0-9;]\+"
 syn match      namedNumber     contained "\d\+"
 
 " --- address match list
-syn region     namedAML        contained start=+{+ end=+};+ contains=namedParenError,namedComment
+syn region     namedAML        contained start=+{+ end=+};+ contains=namedParenError,namedComment,namedString
 
 " --- IPs & Domains
 syn match      namedIPaddr     contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1
@@ -215,6 +226,7 @@ if version >= 508 || !exists("did_named_syn_inits")
   HiLink namedQSKeywords       Type
   HiLink namedCNKeywords       Type
   HiLink namedLogCategory      Type
+  HiLink namedIPaddr   Number
   HiLink namedDomain   Identifier
   HiLink namedZoneOpt  namedKeyword
   HiLink namedZoneType Type
index 8dee303833c65628a15a6b293e04b36f5b2ed071..e2baac8887bb6ae1ff700017c079d4044d6c3df7 100644 (file)
@@ -1,7 +1,7 @@
 " Language   : Netrw Remote-Directory Listing Syntax
 " Maintainer : Charles E. Campbell, Jr.
-" Last change: Aug 29, 2005
-" Version    : 7
+" Last change: Nov 27, 2006
+" Version    : 9
 " ---------------------------------------------------------------------
 
 " Syntax Clearing: {{{1
@@ -19,10 +19,15 @@ syn match  netrwSpecial             "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrw
 syn match  netrwDir            "\.\{1,2}/"                     contains=netrwClassify
 syn match  netrwDir            "\%(\S\+ \)*\S\+/"              contains=netrwClassify
 syn match  netrwDir            "^\S*/"                         contains=netrwClassify
+syn match  netrwSizeDate       "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s"    contains=netrwDateSep skipwhite nextgroup=netrwTime
 syn match  netrwSymLink                "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)"  contains=netrwClassify
-syn match  netrwExe            "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify
+syn match  netrwExe            "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,netrwTreeIgnore
+syn match  netrwTreeIgnore contained "^\%(| \)*"
 
 syn match  netrwClassify       "[*=|@/]\ze\%(\s\{2,}\|$\)"     contained
+syn match  netrwDateSep                "/"                             contained
+syn match  netrwTime           "\d\{1,2}:\d\{2}:\d\{2}"        contained contains=netrwTimeSep
+syn match  netrwTimeSep                ":"
 
 syn match  netrwComment                '".*\%(\t\|$\)'                 contains=@NetrwGroup
 syn match  netrwHide           '^"\s*\(Hid\|Show\)ing:'        skipwhite nextgroup=netrwHidePat
@@ -53,7 +58,9 @@ if !exists("did_drchip_dbg_syntax")
  hi link netrwVersion  Identifier
  hi link netrwSymLink  Special
  hi link netrwExe      PreProc
+ hi link netrwDateSep  Delimiter
 
+ hi link netrwTimeSep  netrwDateSep
  hi link netrwComma    netrwComment
  hi link netrwHide     netrwComment
 endif
index 3aa1177b2b1a77f2b30d835115e06d74b653aed1..c575cf2ad702e17123e3300967884dd30d7ccfad 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:      Kazunobu Kuriyama <kazunobu.kuriyama@nifty.com>
 " Ex-maintainer:    Anthony Hodsdon <ahodsdon@fastmail.fm>
 " First Author:            Valentino Kyriakides <1kyriaki@informatik.uni-hamburg.de>
-" Last Change:     2006 Mar 4
+" Last Change:     2007 Feb 21
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -36,7 +36,7 @@ syn keyword objcConstant      nil Nil
 
 " Match the ObjC #import directive (like C's #include)
 syn region objcImported display contained start=+"+  skip=+\\\\\|\\"+  end=+"+
-syn match  objcImported display contained "<[_0-9a-zA-Z.\/]*>"
+syn match  objcImported display contained "<[-_0-9a-zA-Z.\/]*>"
 syn match  objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported
 
 " Match the important ObjC directives
index cdef8c38bf49c0388e21c92efea59c4ea777a1e7..27eb3907e4a1e12515cc2844e41226e33a59281d 100644 (file)
@@ -5,9 +5,9 @@
 "               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>
 "               Issac Trotts      <ijtrotts@ucdavis.edu>
 " URL:          http://www.ocaml.info/vim/syntax/ocaml.vim
-" Last Change:  2006 Apr 11 - Fixed an initialization bug (MM)
-"               2005 May 18 - Added 'NOTE' to highlighted comment words (MM)
-"               2005 Apr 14 - Fixed a small bug concerning 'include' (MM)
+" Last Change:  2007 Apr 13 - Added highlighting of nativeints (MM)
+"               2006 Oct 09 - More highlighting improvements to numbers (MM)
+"               2006 Sep 19 - Improved highlighting of numbers (Florent Monnier)
 
 " A minor patch was applied to the official version so that object/end
 " can be distinguished from begin/end, which is used for indentation,
@@ -30,6 +30,9 @@ syn match    ocamlComment   "^#!.*"
 " Scripting directives
 syn match    ocamlScript "^#\<\(quit\|labels\|warnings\|directory\|cd\|load\|use\|install_printer\|remove_printer\|require\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\)\>"
 
+" Script headers highlighted like comments
+syn match    ocamlComment      "^#!.*"
+
 " lowercase identifier - the standard way to match
 syn match    ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/
 
@@ -213,11 +216,11 @@ else
   syn match    ocamlOperator   "<-"
 endif
 
-syn match    ocamlNumber        "\<-\=\d\+[l|L]\?\>"
-syn match    ocamlNumber        "\<-\=0[x|X]\x\+[l|L]\?\>"
-syn match    ocamlNumber        "\<-\=0[o|O]\o\+[l|L]\?\>"
-syn match    ocamlNumber        "\<-\=0[b|B][01]\+[l|L]\?\>"
-syn match    ocamlFloat         "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
+syn match    ocamlNumber        "\<-\=\d\(_\|\d\)*[l|L|n]\?\>"
+syn match    ocamlNumber        "\<-\=0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
+syn match    ocamlNumber        "\<-\=0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
+syn match    ocamlNumber        "\<-\=0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
+syn match    ocamlFloat         "\<-\=\d\(_\|\d\)*\.\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
 
 " Labels
 syn match    ocamlLabel        "\~\(\l\|_\)\(\w\|'\)*"lc=1
@@ -294,6 +297,7 @@ if version >= 508 || !exists("did_ocaml_syntax_inits")
   HiLink ocamlModPreRHS    Keyword
   HiLink ocamlMPRestr2    Keyword
   HiLink ocamlKeyword     Keyword
+  HiLink ocamlMethod      Include
   HiLink ocamlFunDef      Keyword
   HiLink ocamlRefAssign    Keyword
   HiLink ocamlKeyChar     Keyword
index 46b547b4134010b0f7e70021c73ae4ce01e4d239..4bcff1341e74ae921c77860210f280b287657cf6 100644 (file)
@@ -1,46 +1,68 @@
 " Vim syntax file
-" Language:    php PHP 3/4/5
-" Maintainer:   Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
-" Former Maintainer:   Lutz Eymers <ixtab@polzin.com>
-" Last Change: $LastChangedDate: 2006-04-16 22:06:40 -0400 (dom, 16 apr 2006) $
-" URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/php.vim?op=file&rev=0&sc=0
+" Language: php PHP 3/4/5
+" Maintainer: Peter Hodge <toomuchphp-vim@yahoo.com>
+" Last Change:  June 9, 2006
+" URL: http://www.vim.org/scripts/script.php?script_id=1571
 "
-" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
-"     it only because patches have been submitted for it by Debian users and the
-"     former maintainer was MIA (Missing In Action), taking over its
-"     maintenance was thus the only way to include those patches.
-"     If you care about this file, and have time to maintain it please do so!
+" Former Maintainer:  Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Former URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/php.vim?op=file&rev=0&sc=0
 "
-" Options      php_sql_query = 1  for SQL syntax highlighting inside strings
-"              php_htmlInStrings = 1  for HTML syntax highlighting inside strings
-"              php_baselib = 1  for highlighting baselib functions
-"              php_asp_tags = 1  for highlighting ASP-style short tags
-"              php_parent_error_close = 1  for highlighting parent error ] or )
-"              php_parent_error_open = 1  for skipping an php end tag, if there exists an open ( or [ without a closing one
-"              php_oldStyle = 1  for using old colorstyle
-"              php_noShortTags = 1  don't sync <? ?> as php
-"              php_folding = 1  for folding classes and functions
-"              php_folding = 2  for folding all { } regions
-"              php_sync_method = x
-"                      x=-1 to sync by search ( default )
-"                      x>0 to sync at least x lines backwards
-"                      x=0 to sync from start
-
-" Note
+" Note: If you are using a colour terminal with dark background, you will probably find
+"       the 'elflord' colorscheme is much better for PHP's syntax than the default
+"       colourscheme, because elflord's colours will better highlight the break-points
+"       (Statements) in your code.
+"
+" Options:  php_sql_query = 1  for SQL syntax highlighting inside strings
+"           php_htmlInStrings = 1  for HTML syntax highlighting inside strings
+"           php_baselib = 1  for highlighting baselib functions
+"           php_asp_tags = 1  for highlighting ASP-style short tags
+"           php_parent_error_close = 1  for highlighting parent error ] or )
+"           php_parent_error_open = 1  for skipping an php end tag, if there exists an open ( or [ without a closing one
+"           php_oldStyle = 1  for using old colorstyle
+"           php_noShortTags = 1  don't sync <? ?> as php
+"           php_folding = 1  for folding classes and functions
+"           php_folding = 2  for folding all { } regions
+"           php_sync_method = x
+"                             x=-1 to sync by search ( default )
+"                             x>0 to sync at least x lines backwards
+"                             x=0 to sync from start
+"
+"       Added by Peter Hodge On June 9, 2006:
+"           php_special_functions = 1|0 to highlight functions with abnormal behaviour
+"           php_alt_comparisons = 1|0 to highlight comparison operators in an alternate colour
+"           php_alt_assignByReference = 1|0 to highlight '= &' in an alternate colour
+"
+"           Note: these all default to 1 (On), so you would set them to '0' to turn them off.
+"                 E.g., in your .vimrc or _vimrc file:
+"                   let php_special_functions = 0
+"                   let php_alt_comparisons = 0
+"                   let php_alt_assignByReference = 0
+"                 Unletting these variables will revert back to their default (On).
+"
+"
+" Note:
 " Setting php_folding=1 will match a closing } by comparing the indent
 " before the class or function keyword with the indent of a matching }.
 " Setting php_folding=2 will match all of pairs of {,} ( see known
 " bugs ii )
 
-" Known bugs
-" setting  php_parent_error_close  on  and  php_parent_error_open  off
-" has these two leaks:
-"  i) An closing ) or ] inside a string match to the last open ( or [
-"     before the string, when the the closing ) or ] is on the same line
-"     where the string started. In this case a following ) or ] after
-"     the string would be highlighted as an error, what is incorrect.
-" ii) Same problem if you are setting php_folding = 2 with a closing
-"     } inside an string on the first line of this string.
+" Known Bugs:
+"  - setting  php_parent_error_close  on  and  php_parent_error_open  off
+"    has these two leaks:
+"     i) A closing ) or ] inside a string match to the last open ( or [
+"        before the string, when the the closing ) or ] is on the same line
+"        where the string started. In this case a following ) or ] after
+"        the string would be highlighted as an error, what is incorrect.
+"    ii) Same problem if you are setting php_folding = 2 with a closing
+"        } inside an string on the first line of this string.
+"
+"  - A double-quoted string like this:
+"      "$foo->someVar->someOtherVar->bar"
+"    will highight '->someOtherVar->bar' as though they will be parsed
+"    as object member variables, but PHP only recognizes the first
+"    object member variable ($foo->someVar).
+"
+"
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -100,334 +122,438 @@ endif
 syn case match
 
 " Env Variables
-syn keyword    phpEnvVar       GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI     contained
+syn keyword phpEnvVar GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI contained
 
 " Internal Variables
-syn keyword    phpIntVar       GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION  contained
+syn keyword phpIntVar GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION  contained
 
 " Constants
-syn keyword    phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_ALL  contained
+syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_ALL  contained
 
 syn case ignore
 
-syn keyword    phpConstant      __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__    contained
+syn keyword phpConstant  __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__  contained
 
 
 " Function and Methods ripped from php_manual_de.tar.gz Jan 2003
-syn keyword    phpFunctions    apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual   contained
-syn keyword    phpFunctions    array_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_uassoc array_diff array_fill array_filter array_flip array_intersect_assoc array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_unique array_unshift array_values array_walk array arsort asort compact count current each end extract in_array key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort     contained
-syn keyword    phpFunctions    aspell_check aspell_new aspell_suggest  contained
-syn keyword    phpFunctions    bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub      contained
-syn keyword    phpFunctions    bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite  contained
-syn keyword    phpFunctions    cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd        contained
-syn keyword    phpFunctions    ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void     contained
-syn keyword    phpFunctions    call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained
-syn keyword    phpFunctions    com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set  contained
-syn keyword    phpFunctions    cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate    contained
-syn keyword    phpFunctions    crack_check crack_closedict crack_getlastmessage crack_opendict contained
-syn keyword    phpFunctions    ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit    contained
-syn keyword    phpFunctions    curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained
-syn keyword    phpFunctions    cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr   contained
-syn keyword    phpFunctions    cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind        contained
-syn keyword    phpFunctions    checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time       contained
-syn keyword    phpFunctions    dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync  contained
-syn keyword    phpFunctions    dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record    contained
-syn keyword    phpFunctions    dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace        contained
-syn keyword    phpFunctions    dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel   contained
-syn keyword    phpFunctions    dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort  contained
-syn keyword    phpFunctions    dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write    contained
-syn keyword    phpFunctions    chdir chroot dir closedir getcwd opendir readdir rewinddir scandir      contained
-syn keyword    phpFunctions    domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context       contained
-syn keyword    phpMethods      name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained
-syn keyword    phpFunctions    dotnet_load     contained
-syn keyword    phpFunctions    debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error        contained
-syn keyword    phpFunctions    escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system     contained
-syn keyword    phpFunctions    fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor   contained
-syn keyword    phpFunctions    fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings      contained
-syn keyword    phpFunctions    fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version  contained
-syn keyword    phpFunctions    filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro     contained
-syn keyword    phpFunctions    basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink    contained
-syn keyword    phpFunctions    fribidi_log2vis contained
-syn keyword    phpFunctions    ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype  contained
-syn keyword    phpFunctions    call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function   contained
-syn keyword    phpFunctions    bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain      contained
-syn keyword    phpFunctions    gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor      contained
-syn keyword    phpFunctions    header headers_list headers_sent setcookie      contained
-syn keyword    phpFunctions    hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object       contained
-syn keyword    phpMethods      key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist     contained
-syn keyword    phpFunctions    hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who   contained
-syn keyword    phpFunctions    ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event    contained
-syn keyword    phpFunctions    iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained
-syn keyword    phpFunctions    ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob    contained
-syn keyword    phpFunctions    exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data       contained
-syn keyword    phpFunctions    imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8      contained
-syn keyword    phpFunctions    assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained
-syn keyword    phpFunctions    ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback      contained
-syn keyword    phpFunctions    ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois      contained
-syn keyword    phpFunctions    java_last_exception_clear java_last_exception_get       contained
-syn keyword    phpFunctions    ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind    contained
-syn keyword    phpFunctions    lzf_compress lzf_decompress lzf_optimized_for   contained
-syn keyword    phpFunctions    ezmlm_hash mail contained
-syn keyword    phpFunctions    mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all   contained
-syn keyword    phpFunctions    abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh      contained
-syn keyword    phpFunctions    mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr        contained
-syn keyword    phpFunctions    mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained
-syn keyword    phpFunctions    mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic      contained
-syn keyword    phpFunctions    mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void        contained
-syn keyword    phpFunctions    mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash     contained
-syn keyword    phpFunctions    mime_content_type       contained
-syn keyword    phpFunctions    ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField   contained
-syn keyword    phpMethods      getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin     contained
-syn keyword    phpFunctions    connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained
-syn keyword    phpFunctions    udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param       contained
-syn keyword    phpFunctions    msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock  contained
-syn keyword    phpFunctions    msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql        contained
-syn keyword    phpFunctions    mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db        contained
-syn keyword    phpFunctions    muscat_close muscat_get muscat_give muscat_setup_net muscat_setup       contained
-syn keyword    phpFunctions    mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query        contained
-syn keyword    phpFunctions    mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count  contained
-syn keyword    phpFunctions    ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained
-syn keyword    phpFunctions    checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog     contained
-syn keyword    phpFunctions    yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained
-syn keyword    phpFunctions    notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version   contained
-syn keyword    phpFunctions    nsapi_request_headers nsapi_response_headers nsapi_virtual      contained
-syn keyword    phpFunctions    aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate  contained
-syn keyword    phpFunctions    ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob   contained
-syn keyword    phpFunctions    odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables        contained
-syn keyword    phpFunctions    openssl_csr_export_to_file openssl_csr_export openssl_csr_new openssl_csr_sign openssl_error_string openssl_free_key openssl_get_privatekey openssl_get_publickey openssl_open openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_seal openssl_sign openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_free openssl_x509_parse openssl_x509_read     contained
-syn keyword    phpFunctions    ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback    contained
-syn keyword    phpFunctions    flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars  contained
-syn keyword    phpFunctions    overload        contained
-syn keyword    phpFunctions    ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback  contained
-syn keyword    phpFunctions    pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig     contained
-syn keyword    phpFunctions    preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split    contained
-syn keyword    phpFunctions    pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate       contained
-syn keyword    phpFunctions    pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version  contained
-syn keyword    phpFunctions    pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update        contained
-syn keyword    phpFunctions    posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained
-syn keyword    phpFunctions    printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write   contained
-syn keyword    phpFunctions    pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest   contained
-syn keyword    phpFunctions    qdom_error qdom_tree    contained
-syn keyword    phpFunctions    readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline      contained
-syn keyword    phpFunctions    recode_file recode_string recode        contained
-syn keyword    phpFunctions    ereg_replace ereg eregi_replace eregi split spliti sql_regcase  contained
-syn keyword    phpFunctions    ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove        contained
-syn keyword    phpFunctions    sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained
-syn keyword    phpFunctions    session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close     contained
-syn keyword    phpFunctions    shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write   contained
-syn keyword    phpFunctions    snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid     contained
-syn keyword    phpFunctions    socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev       contained
-syn keyword    phpFunctions    sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query    contained
-syn keyword    phpFunctions    stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register       contained
-syn keyword    phpFunctions    addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt echo explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap      contained
-syn keyword    phpFunctions    swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport     contained
-syn keyword    phpFunctions    sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query   contained
-syn keyword    phpFunctions    tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count      contained
-syn keyword    phpMethods      attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node   contained
-syn keyword    phpFunctions    token_get_all token_name        contained
-syn keyword    phpFunctions    base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode      contained
-syn keyword    phpFunctions    doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained
-syn keyword    phpFunctions    vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota    contained
-syn keyword    phpFunctions    w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained
-syn keyword    phpFunctions    wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars       contained
-syn keyword    phpFunctions    utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained
-syn keyword    phpFunctions    xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type  contained
-syn keyword    phpFunctions    xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained
-syn keyword    phpFunctions    yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait       contained
-syn keyword    phpFunctions    zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read        contained
-syn keyword    phpFunctions    gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type  contained
+syn keyword phpFunctions  apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained
+syn keyword phpFunctions  array_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_uassoc array_diff array_fill array_filter array_flip array_intersect_assoc array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_unique array_unshift array_values array_walk array arsort asort compact count current each end extract in_array key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained
+syn keyword phpFunctions  aspell_check aspell_new aspell_suggest  contained
+syn keyword phpFunctions  bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub  contained
+syn keyword phpFunctions  bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite  contained
+syn keyword phpFunctions  cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd  contained
+syn keyword phpFunctions  ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void contained
+syn keyword phpFunctions  call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained
+syn keyword phpFunctions  com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set  contained
+syn keyword phpFunctions  cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate  contained
+syn keyword phpFunctions  crack_check crack_closedict crack_getlastmessage crack_opendict contained
+syn keyword phpFunctions  ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit  contained
+syn keyword phpFunctions  curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained
+syn keyword phpFunctions  cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained
+syn keyword phpFunctions  cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind  contained
+syn keyword phpFunctions  checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time contained
+syn keyword phpFunctions  dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync  contained
+syn keyword phpFunctions  dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record  contained
+syn keyword phpFunctions  dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace  contained
+syn keyword phpFunctions  dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel contained
+syn keyword phpFunctions  dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort  contained
+syn keyword phpFunctions  dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write  contained
+syn keyword phpFunctions  chdir chroot dir closedir getcwd opendir readdir rewinddir scandir  contained
+syn keyword phpFunctions  domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained
+syn keyword phpMethods  name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained
+syn keyword phpFunctions  dotnet_load contained
+syn keyword phpFunctions  debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error  contained
+syn keyword phpFunctions  escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained
+syn keyword phpFunctions  fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained
+syn keyword phpFunctions  fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings  contained
+syn keyword phpFunctions  fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version  contained
+syn keyword phpFunctions  filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained
+syn keyword phpFunctions  basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink  contained
+syn keyword phpFunctions  fribidi_log2vis contained
+syn keyword phpFunctions  ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype  contained
+syn keyword phpFunctions  call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained
+syn keyword phpFunctions  bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain  contained
+syn keyword phpFunctions  gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor  contained
+syn keyword phpFunctions  header headers_list headers_sent setcookie  contained
+syn keyword phpFunctions  hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained
+syn keyword phpMethods  key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained
+syn keyword phpFunctions  hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who contained
+syn keyword phpFunctions  ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event  contained
+syn keyword phpFunctions  iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained
+syn keyword phpFunctions  ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob  contained
+syn keyword phpFunctions  exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data contained
+syn keyword phpFunctions  imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8  contained
+syn keyword phpFunctions  assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained
+syn keyword phpFunctions  ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback  contained
+syn keyword phpFunctions  ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois  contained
+syn keyword phpFunctions  java_last_exception_clear java_last_exception_get contained
+syn keyword phpFunctions  ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind  contained
+syn keyword phpFunctions  lzf_compress lzf_decompress lzf_optimized_for contained
+syn keyword phpFunctions  ezmlm_hash mail contained
+syn keyword phpFunctions  mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained
+syn keyword phpFunctions  abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh  contained
+syn keyword phpFunctions  mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr  contained
+syn keyword phpFunctions  mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained
+syn keyword phpFunctions  mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic  contained
+syn keyword phpFunctions  mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void  contained
+syn keyword phpFunctions  mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained
+syn keyword phpFunctions  mime_content_type contained
+syn keyword phpFunctions  ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained
+syn keyword phpMethods  getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained
+syn keyword phpFunctions  connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained
+syn keyword phpFunctions  udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param contained
+syn keyword phpFunctions  msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock  contained
+syn keyword phpFunctions  msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql  contained
+syn keyword phpFunctions  mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db  contained
+syn keyword phpFunctions  muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained
+syn keyword phpFunctions  mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query  contained
+syn keyword phpFunctions  mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count  contained
+syn keyword phpFunctions  ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained
+syn keyword phpFunctions  checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained
+syn keyword phpFunctions  yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained
+syn keyword phpFunctions  notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version contained
+syn keyword phpFunctions  nsapi_request_headers nsapi_response_headers nsapi_virtual  contained
+syn keyword phpFunctions  aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate  contained
+syn keyword phpFunctions  ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained
+syn keyword phpFunctions  odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables  contained
+syn keyword phpFunctions  openssl_csr_export_to_file openssl_csr_export openssl_csr_new openssl_csr_sign openssl_error_string openssl_free_key openssl_get_privatekey openssl_get_publickey openssl_open openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_seal openssl_sign openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_free openssl_x509_parse openssl_x509_read contained
+syn keyword phpFunctions  ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback  contained
+syn keyword phpFunctions  flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars  contained
+syn keyword phpFunctions  overload  contained
+syn keyword phpFunctions  ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback  contained
+syn keyword phpFunctions  pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig contained
+syn keyword phpFunctions  preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split  contained
+syn keyword phpFunctions  pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained
+syn keyword phpFunctions  pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version  contained
+syn keyword phpFunctions  pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update  contained
+syn keyword phpFunctions  posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained
+syn keyword phpFunctions  printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained
+syn keyword phpFunctions  pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest contained
+syn keyword phpFunctions  qdom_error qdom_tree  contained
+syn keyword phpFunctions  readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline  contained
+syn keyword phpFunctions  recode_file recode_string recode  contained
+syn keyword phpFunctions  ereg_replace ereg eregi_replace eregi split spliti sql_regcase  contained
+syn keyword phpFunctions  ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove  contained
+syn keyword phpFunctions  sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained
+syn keyword phpFunctions  session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close contained
+syn keyword phpFunctions  shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained
+syn keyword phpFunctions  snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained
+syn keyword phpFunctions  socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev contained
+syn keyword phpFunctions  sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query  contained
+syn keyword phpFunctions  stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained
+syn keyword phpFunctions  addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained
+syn keyword phpFunctions  swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained
+syn keyword phpFunctions  sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained
+syn keyword phpFunctions  tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count  contained
+syn keyword phpMethods  attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained
+syn keyword phpFunctions  token_get_all token_name  contained
+syn keyword phpFunctions  base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode  contained
+syn keyword phpFunctions  doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained
+syn keyword phpFunctions  vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota  contained
+syn keyword phpFunctions  w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained
+syn keyword phpFunctions  wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained
+syn keyword phpFunctions  utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained
+syn keyword phpFunctions  xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type  contained
+syn keyword phpFunctions  xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained
+syn keyword phpFunctions  yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained
+syn keyword phpFunctions  zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read  contained
+syn keyword phpFunctions  gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type  contained
 
 if exists( "php_baselib" )
-  syn keyword  phpMethods      query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained
-  syn keyword  phpFunctions    page_open page_close sess_load sess_save        contained
+  syn keyword phpMethods  query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained
+  syn keyword phpFunctions  page_open page_close sess_load sess_save  contained
 endif
 
 " Conditional
-syn keyword    phpConditional  declare else enddeclare endswitch elseif endif if switch        contained
+syn keyword phpConditional  declare else enddeclare endswitch elseif endif if switch  contained
 
 " Repeat
-syn keyword    phpRepeat       as do endfor endforeach endwhile for foreach while      contained
+syn keyword phpRepeat as do endfor endforeach endwhile for foreach while  contained
 
 " Repeat
-syn keyword    phpLabel        case default switch     contained
+syn keyword phpLabel  case default switch contained
 
 " Statement
-syn keyword    phpStatement    return break continue exit      contained
+syn keyword phpStatement  return break continue exit  contained
 
 " Keyword
-syn keyword    phpKeyword      var const       contained
+syn keyword phpKeyword  var const contained
 
 " Type
-syn keyword    phpType bool[ean] int[eger] real double float string array object NULL  contained
+syn keyword phpType bool[ean] int[eger] real double float string array object NULL  contained
 
 " Structure
-syn keyword    phpStructure    extends implements instanceof parent self       contained
+syn keyword phpStructure  extends implements instanceof parent self contained
 
 " Operator
-syn match      phpOperator     "[-=+%^&|*!.~?:]"       contained display
-syn match      phpOperator     "[-+*/%^&|.]="  contained display
-syn match      phpOperator     "/[^*/]"me=e-1  contained display
-syn match      phpOperator     "\$"    contained display
-syn match      phpOperator     "&&\|\<and\>"   contained display
-syn match      phpOperator     "||\|\<x\=or\>" contained display
-syn match      phpRelation     "[!=<>]="       contained display
-syn match      phpRelation     "[<>]"  contained display
-syn match      phpMemberSelector       "->"    contained display
-syn match      phpVarSelector  "\$"    contained display
+syn match phpOperator "[-=+%^&|*!.~?:]" contained display
+syn match phpOperator "[-+*/%^&|.]="  contained display
+syn match phpOperator "/[^*/]"me=e-1  contained display
+syn match phpOperator "\$"  contained display
+syn match phpOperator "&&\|\<and\>" contained display
+syn match phpOperator "||\|\<x\=or\>" contained display
+syn match phpRelation "[!=<>]=" contained display
+syn match phpRelation "[<>]"  contained display
+syn match phpMemberSelector "->"  contained display
+syn match phpVarSelector  "\$"  contained display
 
 " Identifier
-syn match      phpIdentifier   "$\h\w*"        contained contains=phpEnvVar,phpIntVar,phpVarSelector display
-syn match      phpIdentifierSimply     "${\h\w*}"      contains=phpOperator,phpParent  contained display
-syn region     phpIdentifierComplex    matchgroup=phpParent start="{\$"rs=e-1 end="}"  contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP   contained extend
-syn region     phpIdentifierComplexP   matchgroup=phpParent start="\[" end="]" contains=@phpClInside   contained
+syn match phpIdentifier "$\h\w*"  contained contains=phpEnvVar,phpIntVar,phpVarSelector display
+syn match phpIdentifierSimply "${\h\w*}"  contains=phpOperator,phpParent  contained display
+syn region  phpIdentifierComplex  matchgroup=phpParent start="{\$"rs=e-1 end="}"  contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
+syn region  phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
 
 " Methoden
-syn match      phpMethodsVar   "->\h\w*"       contained contains=phpMethods,phpMemberSelector display
+syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display
 
 " Include
-syn keyword    phpInclude      include require include_once require_once       contained
+syn keyword phpInclude  include require include_once require_once contained
 
+" Peter Hodge - added 'clone' keyword
 " Define
-syn keyword    phpDefine       new     contained
+syn keyword phpDefine new clone contained
 
 " Boolean
-syn keyword    phpBoolean      true false      contained
+syn keyword phpBoolean  true false  contained
 
 " Number
-syn match phpNumber    "-\=\<\d\+\>"   contained display
-syn match phpNumber    "\<0x\x\{1,8}\>"        contained display
+syn match phpNumber "-\=\<\d\+\>" contained display
+syn match phpNumber "\<0x\x\{1,8}\>"  contained display
 
 " Float
-syn match phpFloat     "\(-\=\<\d+\|-\=\)\.\d\+\>"     contained display
+syn match phpFloat  "\(-\=\<\d+\|-\=\)\.\d\+\>" contained display
 
 " SpecialChar
-syn match phpSpecialChar       "\\[abcfnrtyv\\]"       contained display
-syn match phpSpecialChar       "\\\d\{3}"      contained contains=phpOctalError display
-syn match phpSpecialChar       "\\x\x\{2}"     contained display
+syn match phpSpecialChar  "\\[abcfnrtyv\\]" contained display
+syn match phpSpecialChar  "\\\d\{3}"  contained contains=phpOctalError display
+syn match phpSpecialChar  "\\x\x\{2}" contained display
 
 " Error
-syn match phpOctalError        "[89]"  contained display
+syn match phpOctalError "[89]"  contained display
 if exists("php_parent_error_close")
-  syn match phpParentError     "[)\]}]"        contained display
+  syn match phpParentError  "[)\]}]"  contained display
 endif
 
 " Todo
-syn keyword    phpTodo todo fixme xxx  contained
+syn keyword phpTodo todo fixme xxx  contained
 
 " Comment
 if exists("php_parent_error_open")
-  syn region   phpComment      start="/\*" end="\*/"   contained contains=phpTodo
+  syn region  phpComment  start="/\*" end="\*/" contained contains=phpTodo
 else
-  syn region   phpComment      start="/\*" end="\*/"   contained contains=phpTodo extend
+  syn region  phpComment  start="/\*" end="\*/" contained contains=phpTodo extend
 endif
 if version >= 600
-  syn match    phpComment      "#.\{-}\(?>\|$\)\@="    contained contains=phpTodo
-  syn match    phpComment      "//.\{-}\(?>\|$\)\@="   contained contains=phpTodo
+  syn match phpComment  "#.\{-}\(?>\|$\)\@="  contained contains=phpTodo
+  syn match phpComment  "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo
 else
-  syn match    phpComment      "#.\{-}$"       contained contains=phpTodo
-  syn match    phpComment      "#.\{-}?>"me=e-2        contained contains=phpTodo
-  syn match    phpComment      "//.\{-}$"      contained contains=phpTodo
-  syn match    phpComment      "//.\{-}?>"me=e-2       contained contains=phpTodo
+  syn match phpComment  "#.\{-}$" contained contains=phpTodo
+  syn match phpComment  "#.\{-}?>"me=e-2  contained contains=phpTodo
+  syn match phpComment  "//.\{-}$"  contained contains=phpTodo
+  syn match phpComment  "//.\{-}?>"me=e-2 contained contains=phpTodo
 endif
 
 " String
 if exists("php_parent_error_open")
-  syn region   phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+      contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex   contained keepend
-  syn region   phpBacktick     matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+      contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex   contained keepend
-  syn region   phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+      contains=@phpAddStrings contained keepend
+  syn region  phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained keepend
+  syn region  phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained keepend
+  syn region  phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+  contains=@phpAddStrings contained keepend
 else
-  syn region   phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+      contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
-  syn region   phpBacktick     matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+      contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
-  syn region   phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+      contains=@phpAddStrings contained keepend extend
+  syn region  phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
+  syn region  phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
+  syn region  phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+  contains=@phpAddStrings contained keepend extend
 endif
 
 " HereDoc
 if version >= 600
   syn case match
-  syn region   phpHereDoc      matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@="       contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
+  syn region  phpHereDoc  matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
 " including HTML,JavaScript,SQL even if not enabled via options
-  syn region   phpHereDoc      matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="        contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
-  syn region   phpHereDoc      matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
-  syn region   phpHereDoc      matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
+  syn region  phpHereDoc  matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
+  syn region  phpHereDoc  matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
+  syn region  phpHereDoc  matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
   syn case ignore
 endif
 
 " Parent
 if exists("php_parent_error_close") || exists("php_parent_error_open")
-  syn match    phpParent       "[{}]"  contained
-  syn region   phpParent       matchgroup=Delimiter start="(" end=")"  contained contains=@phpClInside transparent
-  syn region   phpParent       matchgroup=Delimiter start="\[" end="\]"        contained contains=@phpClInside transparent
+  syn match phpParent "[{}]"  contained
+  syn region  phpParent matchgroup=Delimiter start="(" end=")"  contained contains=@phpClInside transparent
+  syn region  phpParent matchgroup=Delimiter start="\[" end="\]"  contained contains=@phpClInside transparent
   if !exists("php_parent_error_close")
-    syn match phpParent        "[\])]" contained
+    syn match phpParent "[\])]" contained
   endif
 else
-  syn match phpParent  "[({[\]})]"     contained
+  syn match phpParent "[({[\]})]" contained
 endif
 
-syn cluster    phpClConst      contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException
-syn cluster    phpClInside     contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc
-syn cluster    phpClFunction   contains=@phpClInside,phpDefine,phpParentError,phpStorageClass
-syn cluster    phpClTop        contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch
+syn cluster phpClConst  contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException
+syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc
+syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass
+syn cluster phpClTop  contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch
 
 " Php Region
 if exists("php_parent_error_open")
   if exists("php_noShortTags")
-    syn region  phpRegion      matchgroup=Delimiter start="<?php" end="?>"     contains=@phpClTop
+    syn region   phpRegion  matchgroup=Delimiter start="<?php" end="?>" contains=@phpClTop
   else
-    syn region  phpRegion      matchgroup=Delimiter start="<?\(php\)\=" end="?>"       contains=@phpClTop
+    syn region   phpRegion  matchgroup=Delimiter start="<?\(php\)\=" end="?>" contains=@phpClTop
   endif
-  syn region    phpRegionSc    matchgroup=Delimiter start=+<script language="php">+ end=+</script>+    contains=@phpClTop
+  syn region   phpRegionSc  matchgroup=Delimiter start=+<script language="php">+ end=+</script>+  contains=@phpClTop
   if exists("php_asp_tags")
-    syn region  phpRegionAsp   matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop
+    syn region   phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop
   endif
 else
   if exists("php_noShortTags")
-    syn region  phpRegion      matchgroup=Delimiter start="<?php" end="?>"     contains=@phpClTop keepend
+    syn region   phpRegion  matchgroup=Delimiter start="<?php" end="?>" contains=@phpClTop keepend
   else
-    syn region  phpRegion      matchgroup=Delimiter start="<?\(php\)\=" end="?>"       contains=@phpClTop keepend
+    syn region   phpRegion  matchgroup=Delimiter start="<?\(php\)\=" end="?>" contains=@phpClTop keepend
   endif
-  syn region    phpRegionSc    matchgroup=Delimiter start=+<script language="php">+ end=+</script>+    contains=@phpClTop keepend
+  syn region   phpRegionSc  matchgroup=Delimiter start=+<script language="php">+ end=+</script>+  contains=@phpClTop keepend
   if exists("php_asp_tags")
-    syn region  phpRegionAsp   matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend
+    syn region   phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend
   endif
 endif
 
 " Fold
 if exists("php_folding") && php_folding==1
 " match one line constructs here and skip them at folding
-  syn keyword  phpSCKeyword    abstract final private protected public static  contained
-  syn keyword  phpFCKeyword    function        contained
-  syn keyword  phpStorageClass global  contained
-  syn match    phpDefine       "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@="    contained contains=phpSCKeyword
-  syn match    phpStructure    "\(\s\|^\)\(abstract\s\+\|final\s\+\)*class\(\s\+.*}\)\@="      contained
-  syn match    phpStructure    "\(\s\|^\)interface\(\s\+.*}\)\@="      contained
-  syn match    phpException    "\(\s\|^\)try\(\s\+.*}\)\@="    contained
-  syn match    phpException    "\(\s\|^\)catch\(\s\+.*}\)\@="  contained
+  syn keyword phpSCKeyword  abstract final private protected public static  contained
+  syn keyword phpFCKeyword  function  contained
+  syn keyword phpStorageClass global  contained
+  syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@="  contained contains=phpSCKeyword
+  syn match phpStructure  "\(\s\|^\)\(abstract\s\+\|final\s\+\)*class\(\s\+.*}\)\@="  contained
+  syn match phpStructure  "\(\s\|^\)interface\(\s\+.*}\)\@="  contained
+  syn match phpException  "\(\s\|^\)try\(\s\+.*}\)\@="  contained
+  syn match phpException  "\(\s\|^\)catch\(\s\+.*}\)\@="  contained
 
   set foldmethod=syntax
-  syn region   phpFoldHtmlInside       matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
-  syn region   phpFoldFunction matchgroup=Storageclass start="^\z(\s*\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\s\([^};]*$\)\@="rs=e-9 matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend
-  syn region   phpFoldFunction matchgroup=Define start="^function\s\([^};]*$\)\@=" matchgroup=Delimiter end="^}" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend
-  syn region   phpFoldClass    matchgroup=Structure start="^\z(\s*\)\(abstract\s\+\|final\s\+\)*class\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent fold extend
-  syn region   phpFoldInterface        matchgroup=Structure start="^\z(\s*\)interface\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
-  syn region   phpFoldCatch    matchgroup=Exception start="^\z(\s*\)catch\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
-  syn region   phpFoldTry      matchgroup=Exception start="^\z(\s*\)try\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+  syn region  phpFoldHtmlInside matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
+  syn region  phpFoldFunction matchgroup=Storageclass start="^\z(\s*\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\s\([^};]*$\)\@="rs=e-9 matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend
+  syn region  phpFoldFunction matchgroup=Define start="^function\s\([^};]*$\)\@=" matchgroup=Delimiter end="^}" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend
+  syn region  phpFoldClass  matchgroup=Structure start="^\z(\s*\)\(abstract\s\+\|final\s\+\)*class\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent fold extend
+  syn region  phpFoldInterface  matchgroup=Structure start="^\z(\s*\)interface\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+  syn region  phpFoldCatch  matchgroup=Exception start="^\z(\s*\)catch\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+  syn region  phpFoldTry  matchgroup=Exception start="^\z(\s*\)try\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
 elseif exists("php_folding") && php_folding==2
-  syn keyword  phpDefine       function        contained
-  syn keyword  phpStructure    abstract class interface        contained
-  syn keyword  phpException    catch throw try contained
-  syn keyword  phpStorageClass final global private protected public static    contained
+  syn keyword phpDefine function  contained
+  syn keyword phpStructure  abstract class interface  contained
+  syn keyword phpException  catch throw try contained
+  syn keyword phpStorageClass final global private protected public static  contained
 
   set foldmethod=syntax
-  syn region   phpFoldHtmlInside       matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
-  syn region   phpParent       matchgroup=Delimiter start="{" end="}"  contained contains=@phpClFunction,phpFoldHtmlInside transparent fold
+  syn region  phpFoldHtmlInside matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
+  syn region  phpParent matchgroup=Delimiter start="{" end="}"  contained contains=@phpClFunction,phpFoldHtmlInside transparent fold
 else
-  syn keyword  phpDefine       function        contained
-  syn keyword  phpStructure    abstract class interface        contained
-  syn keyword  phpException    catch throw try contained
-  syn keyword  phpStorageClass final global private protected public static    contained
+  syn keyword phpDefine function  contained
+  syn keyword phpStructure  abstract class interface  contained
+  syn keyword phpException  catch throw try contained
+  syn keyword phpStorageClass final global private protected public static  contained
+endif
+
+" ================================================================
+" Peter Hodge - June 9, 2006
+" Some of these changes (highlighting isset/unset/echo etc) are not so
+" critical, but they make things more colourful. :-)
+
+" corrected highlighting for an escaped '\$' inside a double-quoted string
+syn match phpSpecialChar  "\\\$"  contained display
+
+" highlight object variables inside strings
+syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display containedin=phpStringDouble
+
+" highlight constant E_STRICT
+syntax case match
+syntax keyword phpCoreConstant E_STRICT contained
+syntax case ignore
+
+" different syntax highlighting for 'echo', 'print', 'switch', 'die' and 'list' keywords
+" to better indicate what they are.
+syntax keyword phpDefine echo print contained
+syntax keyword phpStructure list contained
+syntax keyword phpConditional switch contained
+syntax keyword phpStatement die contained
+
+" Highlighting for PHP5's user-definable magic class methods
+syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier
+  \ __construct __destruct __call __toString __sleep __wakeup __set __get __unset __isset __clone __set_state
+" Highlighting for __autoload slightly different from line above
+syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+  \ __autoload
+highlight link phpSpecialFunction phpOperator
+
+" Highlighting for PHP5's built-in classes
+" - built-in classes harvested from get_declared_classes() in 5.1.4
+syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+  \ stdClass __PHP_Incomplete_Class php_user_filter Directory ArrayObject
+  \ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException
+  \ RecursiveIteratorIterator IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator
+  \ CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator EmptyIterator
+  \ ArrayIterator RecursiveArrayIterator DirectoryIterator RecursiveDirectoryIterator
+  \ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException
+  \ OverflowException RangeException UnderflowException UnexpectedValueException
+  \ PDO PDOException PDOStatement PDORow
+  \ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass
+  \ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException
+  \ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage
+  \ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator
+  \ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler
+  \ DOMImplementation DOMImplementationList DOMImplementationSource
+  \ DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap
+  \ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler
+  \ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity
+  \ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath
+highlight link phpClasses phpFunctions
+
+" Highlighting for PHP5's built-in interfaces
+" - built-in classes harvested from get_declared_interfaces() in 5.1.4
+syntax keyword phpInterfaces containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+  \ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator
+  \ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector
+highlight link phpInterfaces phpConstant
+
+" option defaults:
+if ! exists('php_special_functions')
+    let php_special_functions = 1
+endif
+if ! exists('php_alt_comparisons')
+    let php_alt_comparisons = 1
+endif
+if ! exists('php_alt_assignByReference')
+    let php_alt_assignByReference = 1
+endif
+
+if php_special_functions
+    " Highlighting for PHP built-in functions which exhibit special behaviours
+    " - isset()/unset()/empty() are not real functions.
+    " - compact()/extract() directly manipulate variables in the local scope where
+    "   regular functions would not be able to.
+    " - eval() is the token 'make_your_code_twice_as_complex()' function for PHP.
+    " - user_error()/trigger_error() can be overloaded by set_error_handler and also
+    "   have the capacity to terminate your script when type is E_USER_ERROR.
+    syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle
+  \ user_error trigger_error isset unset eval extract compact empty
+endif
+
+if php_alt_assignByReference
+    " special highlighting for '=&' operator
+    syntax match phpAssignByRef /=\s*&/ containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle
+    highlight link phpAssignByRef Type
+endif
+
+if php_alt_comparisons
+  " highlight comparison operators differently
+  syntax match phpComparison "\v[=!]\=\=?" contained containedin=phpRegion
+  syntax match phpComparison "\v[=<>-]@<![<>]\=?[<>]@!" contained containedin=phpRegion
+
+  " highlight the 'instanceof' operator as a comparison operator rather than a structure
+  syntax case ignore
+  syntax keyword phpComparison instanceof contained containedin=phpRegion
+
+  hi link phpComparison Statement
 endif
 
+" ================================================================
 
 " Sync
 if php_sync_method==-1
@@ -461,54 +587,54 @@ if version >= 508 || !exists("did_php_syn_inits")
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink        phpConstant    Constant
-  HiLink        phpCoreConstant        Constant
-  HiLink        phpComment     Comment
-  HiLink        phpException   Exception
-  HiLink        phpBoolean     Boolean
-  HiLink        phpStorageClass        StorageClass
-  HiLink        phpSCKeyword   StorageClass
-  HiLink        phpFCKeyword   Define
-  HiLink        phpStructure   Structure
-  HiLink        phpStringSingle        String
-  HiLink        phpStringDouble        String
-  HiLink        phpBacktick    String
-  HiLink        phpNumber      Number
-  HiLink        phpFloat       Float
-  HiLink        phpMethods     Function
-  HiLink        phpFunctions   Function
-  HiLink        phpBaselib     Function
-  HiLink        phpRepeat      Repeat
-  HiLink        phpConditional Conditional
-  HiLink        phpLabel       Label
-  HiLink        phpStatement   Statement
-  HiLink        phpKeyword     Statement
-  HiLink        phpType        Type
-  HiLink        phpInclude     Include
-  HiLink        phpDefine      Define
-  HiLink        phpSpecialChar SpecialChar
-  HiLink        phpParent      Delimiter
-  HiLink        phpIdentifierConst     Delimiter
-  HiLink        phpParentError Error
-  HiLink        phpOctalError  Error
-  HiLink        phpTodo        Todo
-  HiLink        phpMemberSelector      Structure
+  HiLink   phpConstant  Constant
+  HiLink   phpCoreConstant  Constant
+  HiLink   phpComment Comment
+  HiLink   phpException Exception
+  HiLink   phpBoolean Boolean
+  HiLink   phpStorageClass  StorageClass
+  HiLink   phpSCKeyword StorageClass
+  HiLink   phpFCKeyword Define
+  HiLink   phpStructure Structure
+  HiLink   phpStringSingle  String
+  HiLink   phpStringDouble  String
+  HiLink   phpBacktick  String
+  HiLink   phpNumber  Number
+  HiLink   phpFloat Float
+  HiLink   phpMethods Function
+  HiLink   phpFunctions Function
+  HiLink   phpBaselib Function
+  HiLink   phpRepeat  Repeat
+  HiLink   phpConditional Conditional
+  HiLink   phpLabel Label
+  HiLink   phpStatement Statement
+  HiLink   phpKeyword Statement
+  HiLink   phpType  Type
+  HiLink   phpInclude Include
+  HiLink   phpDefine  Define
+  HiLink   phpSpecialChar SpecialChar
+  HiLink   phpParent  Delimiter
+  HiLink   phpIdentifierConst Delimiter
+  HiLink   phpParentError Error
+  HiLink   phpOctalError  Error
+  HiLink   phpTodo  Todo
+  HiLink   phpMemberSelector  Structure
   if exists("php_oldStyle")
-       hi      phpIntVar guifg=Red ctermfg=DarkRed
-       hi      phpEnvVar guifg=Red ctermfg=DarkRed
-       hi      phpOperator guifg=SeaGreen ctermfg=DarkGreen
-       hi      phpVarSelector guifg=SeaGreen ctermfg=DarkGreen
-       hi      phpRelation guifg=SeaGreen ctermfg=DarkGreen
-       hi      phpIdentifier guifg=DarkGray ctermfg=Brown
-       hi      phpIdentifierSimply guifg=DarkGray ctermfg=Brown
+  hi  phpIntVar guifg=Red ctermfg=DarkRed
+  hi  phpEnvVar guifg=Red ctermfg=DarkRed
+  hi  phpOperator guifg=SeaGreen ctermfg=DarkGreen
+  hi  phpVarSelector guifg=SeaGreen ctermfg=DarkGreen
+  hi  phpRelation guifg=SeaGreen ctermfg=DarkGreen
+  hi  phpIdentifier guifg=DarkGray ctermfg=Brown
+  hi  phpIdentifierSimply guifg=DarkGray ctermfg=Brown
   else
-       HiLink  phpIntVar       Identifier
-       HiLink  phpEnvVar       Identifier
-       HiLink  phpOperator     Operator
-       HiLink  phpVarSelector  Operator
-       HiLink  phpRelation     Operator
-       HiLink  phpIdentifier   Identifier
-       HiLink  phpIdentifierSimply     Identifier
+  HiLink  phpIntVar Identifier
+  HiLink  phpEnvVar Identifier
+  HiLink  phpOperator Operator
+  HiLink  phpVarSelector  Operator
+  HiLink  phpRelation Operator
+  HiLink  phpIdentifier Identifier
+  HiLink  phpIdentifierSimply Identifier
   endif
 
   delcommand HiLink
@@ -520,4 +646,4 @@ if main_syntax == 'php'
   unlet main_syntax
 endif
 
-" vim: ts=8
+" vim: ts=8 sts=2 sw=2 expandtab
diff --git a/runtime/syntax/privoxy.vim b/runtime/syntax/privoxy.vim
new file mode 100644 (file)
index 0000000..9e6ff1d
--- /dev/null
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language:    Privoxy actions file
+" Maintainer:  Doug Kearns <dougkearns@gmail.com>
+" URL:         http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/privoxy.vim
+" Last Change: 2007 Mar 30
+
+" Privoxy 3.0.6
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-
+
+syn keyword privoxyTodo                 contained TODO FIXME XXX NOTE
+syn match   privoxyComment "#.*" contains=privoxyTodo,@Spell
+
+syn region privoxyActionLine matchgroup=privoxyActionLineDelimiter start="^\s*\zs{" end="}\ze\s*$"
+       \ contains=privoxyEnabledPrefix,privoxyDisabledPrefix
+
+syn match privoxyEnabledPrefix "\%(^\|\s\|{\)\@<=+\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained
+syn match privoxyDisabledPrefix "\%(^\|\s\|{\)\@<=-\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained
+
+syn match privoxyAction "\%(add-header\|block\|content-type-overwrite\|crunch-client-header\|crunch-if-none-match\)\>" contained
+syn match privoxyAction "\%(crunch-incoming-cookies\|crunch-outgoing-cookies\|crunch-server-header\|deanimate-gifs\)\>" contained
+syn match privoxyAction "\%(downgrade-http-version\|fast-redirects\|filter-client-headers\|filter-server-headers\)\>" contained
+syn match privoxyAction "\%(filter\|force-text-mode\|handle-as-empty-document\|handle-as-image\)\>" contained
+syn match privoxyAction "\%(hide-accept-language\|hide-content-disposition\|hide-forwarded-for-headers\)\>" contained
+syn match privoxyAction "\%(hide-from-header\|hide-if-modified-since\|hide-referrer\|hide-user-agent\|inspect-jpegs\)\>" contained
+syn match privoxyAction "\%(kill-popups\|limit-connect\|overwrite-last-modified\|prevent-compression\|redirect\)\>" contained
+syn match privoxyAction "\%(send-vanilla-wafer\|send-wafer\|session-cookies-only\|set-image-blocker\)\>" contained
+syn match privoxyAction "\%(treat-forbidden-connects-like-blocks\)\>"
+
+syn match privoxyFilterAction "filter{[^}]*}" contained contains=privoxyFilterArg,privoxyActionBraces
+syn match privoxyActionBraces "[{}]" contained
+syn keyword privoxyFilterArg js-annoyances js-events html-annoyances content-cookies refresh-tags unsolicited-popups all-popups
+       \ img-reorder banners-by-size banners-by-link webbugs tiny-textforms jumping-windows frameset-borders demoronizer
+       \ shockwave-flash quicktime-kioskmode fun crude-parental ie-exploits site-specifics no-ping google yahoo msn blogspot
+       \ x-httpd-php-to-html html-to-xml xml-to-html hide-tor-exit-notation contained
+
+" Alternative spellings
+syn match privoxyAction "\%(kill-popup\|hide-referer\|prevent-keeping-cookies\)\>" contained
+
+" Pre-3.0 compatibility
+syn match privoxyAction "\%(no-cookie-read\|no-cookie-set\|prevent-reading-cookies\|prevent-setting-cookies\)\>" contained
+syn match privoxyAction "\%(downgrade\|hide-forwarded\|hide-from\|image\|image-blocker\|no-compression\)\>" contained
+syn match privoxyAction "\%(no-cookies-keep\|no-cookies-read\|no-cookies-set\|no-popups\|vanilla-wafer\|wafer\)\>" contained
+
+syn match privoxySetting "\<for-privoxy-version\>"
+
+syn match privoxyHeader "^\s*\zs{{\%(alias\|settings\)}}\ze\s*$"
+
+hi def link privoxyAction              Identifier
+hi def link privoxyFilterAction                Identifier
+hi def link privoxyActionLineDelimiter Delimiter
+hi def link privoxyDisabledPrefix      SpecialChar
+hi def link privoxyEnabledPrefix       SpecialChar
+hi def link privoxyHeader              PreProc
+hi def link privoxySetting             Identifier
+hi def link privoxyFilterArg           Constant
+
+hi def link privoxyComment             Comment
+hi def link privoxyTodo                        Todo
+
+let b:current_syntax = "privoxy"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
index 55d583ec31071fc79cb163ace377d668c02e58c1..001868e1521cac3429429e5ced918429cedffd42 100644 (file)
@@ -1,12 +1,12 @@
 " Vim syntax file
 " Language:    Remind
-" Maintainer:  Davide Alberani <alberanid@bigfoot.com>
-" Last Change: 28 Apr 2001
-" Version:     0.2
-" URL:         http://digilander.iol.it/alberanid/vim/syntax/remind.vim
+" Maintainer:  Davide Alberani <alberanid@libero.it>
+" Last Change: 10 May 2006
+" Version:     0.3
+" URL:         http://erlug.linux.it/~da/vim/syntax/remind.vim
 "
-" remind is a sophisticated reminder service
-" you can download remind from http://www.roaringpenguin.com/remind.html
+" remind is a sophisticated reminder service; you can download remind from:
+" http://www.roaringpenguin.com/penguin/open_source_remind.php
 
 if version < 600
   syntax clear
@@ -32,6 +32,10 @@ syn keyword remindDebug              DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
 syn match remindVar            "\$[_a-zA-Z][_a-zA-Z0-9]*"
 syn match remindSubst          "%[^ ]"
 syn match remindAdvanceNumber  "\(\*\|+\|-\|++\|--\)[0-9]\+"
+" This will match trailing whitespaces that seem to break rem2ps.
+" Courtesy of Michael Dunn.
+syn match remindWarning                display excludenl "\S\s\+$"ms=s+1
+
 
 if version >= 508 || !exists("did_remind_syn_inits")
   if version < 508
@@ -55,6 +59,7 @@ if version >= 508 || !exists("did_remind_syn_inits")
   HiLink remindVar             Identifier
   HiLink remindSubst           Constant
   HiLink remindAdvanceNumber   Number
+  HiLink remindWarning         Error
 
   delcommand HiLink
 endif
index 94434aed38ab71068dc915b2f6bcd14efd40cb18..c45aae2a15d2501643a720c2769b75253efe4502 100644 (file)
@@ -32,13 +32,23 @@ if exists("ruby_space_errors")
   endif
 endif
 
+" Operators
+if exists("ruby_operators")
+  syn match  rubyOperator       "\%(\^\|\~\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|>\||\|-\|/\|\*\*\|\*\|&\|%\|+\)"
+  syn match  rubyPseudoOperator  "\%(-=\|/=\|\*\*=\|\*=\|&&\|&=\|&&=\|||\||=\|||=\|%=\|+=\|!\~\|!=\)"
+  syn region rubyBracketOperator matchgroup=rubyOperator start="\%([_[:lower:]]\w*[?!=]\=\|}\)\@<=\[\s*" end="\s*]"
+endif
+
 " Expression Substitution and Backslash Notation
-syn match rubyEscape           "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}"                                                          contained display
-syn match rubyEscape           "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)"        contained display
-syn match rubyInterpolation    "#{[^}]*}"                              contained
-syn match rubyInterpolation    "#\%(\$\|@@\=\)\w\+"                    contained display
-syn match rubyNoInterpolation  "\\#{[^}]*}"                            contained
-syn match rubyNoInterpolation  "\\#\%(\$\|@@\=\)\w\+"                  contained display
+syn match rubyEscape   "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}"                                                   contained display
+syn match rubyEscape   "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
+
+syn region rubyInterpolation         matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=TOP
+syn match  rubyInterpolation         "#\%(\$\|@@\=\)\w\+"    display contained  contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable
+syn match  rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained
+syn region rubyNoInterpolation       start="\\#{" end="}"    contained
+syn match  rubyNoInterpolation       "\\#{"                  display contained
+syn match  rubyNoInterpolation       "\\#\%(\$\|@@\=\)\w\+"  display contained
 
 syn match rubyDelimEscape      "\\[(<{\[)>}\]]" transparent display contained contains=NONE
 
@@ -63,7 +73,7 @@ syn match rubyFloat   "\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE
 syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
 syn match rubyBlockArgument        "&[_[:lower:]][_[:alnum:]]"          contains=NONE display transparent
 
-syn match  rubyConstant                        "\%(\%(\.\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\>\%(\s*(\)\@!"
+syn match  rubyConstant                        "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!"
 syn match  rubyClassVariable           "@@\h\w*" display
 syn match  rubyInstanceVariable                "@\h\w*"  display
 syn match  rubyGlobalVariable          "$\%(\h\w*\|-.\)"
@@ -71,7 +81,12 @@ syn match  rubySymbol                        ":\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|==\|=\~\|>>\|>=\|
 syn match  rubySymbol                  ":\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
 syn match  rubySymbol                  ":\@<!:\%(\$\|@@\=\)\=\h\w*[?!=]\="
 syn region rubySymbol                  start=":\@<!:\"" end="\"" skip="\\\\\|\\\""
-syn match  rubyBlockParameter          "\%(\%(\<do\>\|{\)\s*\)\@<=|\s*\zs[( ,a-zA-Z0-9_*)]\+\ze\s*|" display
+syn region rubySymbol                  start=":\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
+if exists("ruby_operators")
+  syn match  rubyBlockParameter                "\%(\%(\%(\<do\>\|{\)\s*\)|\s*\)\@<=[( ,a-zA-Z0-9_*)]\+\%(\s*|\)\@=" display
+else
+  syn match  rubyBlockParameter                "\%(\%(\<do\>\|{\)\s*\)\@<=|\s*\zs[( ,a-zA-Z0-9_*)]\+\ze\s*|" display
+endif
 
 syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]#
 syn match rubyPredefinedVariable "$_\>"                                                                                           display
@@ -86,20 +101,20 @@ syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(RUBY_VERSI
 "syn match rubyPredefinedConstant "\%(::\)\=\zs\%(NotImplementError\)\>"
 
 " Normal Regular Expression
-syn region rubyString matchgroup=rubyStringDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\)\|[;\~=!|&(,[>]\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial
-syn region rubyString matchgroup=rubyStringDelimiter start="\%(\<\%(split\|scan\|gsub\|sub\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial
+syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\)\|[;\~=!|&(,[>]\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial fold
+syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\<\%(split\|scan\|gsub\|sub\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial fold
 
 " Normal String and Shell Command Output
-syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
-syn region rubyString matchgroup=rubyStringDelimiter start="'" end="'"  skip="\\\\\|\\'"
-syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`"  skip="\\\\\|\\`"  contains=@rubyStringSpecial
+syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
+syn region rubyString matchgroup=rubyStringDelimiter start="'" end="'"  skip="\\\\\|\\'"                              fold
+syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`"  skip="\\\\\|\\`"  contains=@rubyStringSpecial fold
 
 " Generalized Regular Expression
-syn region rubyString matchgroup=rubyStringDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"        end="\z1[iomx]*" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
-syn region rubyString matchgroup=rubyStringDelimiter start="%r{"                               end="}[iomx]*"   skip="\\\\\|\\}"   contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold
-syn region rubyString matchgroup=rubyStringDelimiter start="%r<"                               end=">[iomx]*"   skip="\\\\\|\\>"   contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
-syn region rubyString matchgroup=rubyStringDelimiter start="%r\["                              end="\][iomx]*"  skip="\\\\\|\\\]"  contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold
-syn region rubyString matchgroup=rubyStringDelimiter start="%r("                               end=")[iomx]*"   skip="\\\\\|\\)"   contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold
+syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"        end="\z1[iomx]*" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
+syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{"                               end="}[iomx]*"   skip="\\\\\|\\}"   contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold
+syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<"                               end=">[iomx]*"   skip="\\\\\|\\>"   contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
+syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\["                              end="\][iomx]*"  skip="\\\\\|\\\]"  contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold
+syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r("                               end=")[iomx]*"   skip="\\\\\|\\)"   contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold
 
 " Generalized Single Quoted String, Symbol and Array of Strings
 syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
@@ -123,46 +138,58 @@ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*
 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs'\%([^']*\)'+ end=+$+ oneline contains=TOP
 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=TOP
 
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<\z(\h\w*\)\ze+hs=s+2    matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<"\z([^"]*\)"\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<'\z([^']*\)'\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart                   nextgroup=rubyFunction fold keepend
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<`\z([^`]*\)`\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<\z(\h\w*\)\ze+hs=s+2    matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<"\z([^"]*\)"\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<'\z([^']*\)'\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart                   fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<`\z([^`]*\)`\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
 
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\z(\h\w*\)\ze+hs=s+3    matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-'\z([^']*\)'\ze+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart                   nextgroup=rubyFunction fold keepend
-syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\z(\h\w*\)\ze+hs=s+3    matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-'\z([^']*\)'\ze+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart                   fold keepend
+syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
 
 if exists('main_syntax') && main_syntax == 'eruby'
   let b:ruby_no_expensive = 1
 end
 
+syn match  rubyAliasDeclaration    "[^[:space:];#.()]\+"  contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
+syn match  rubyAliasDeclaration2   "[^[:space:];#.()]\+"  contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
+syn match  rubyMethodDeclaration   "[^[:space:];#(]\+"   contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
+syn match  rubyClassDeclaration    "[^[:space:];#<]\+"   contained contains=rubyConstant
+syn match  rubyModuleDeclaration   "[^[:space:];#]\+"    contained contains=rubyConstant
+syn match  rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:].:?!=]\@!" contained containedin=rubyMethodDeclaration
+syn match  rubyFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
+syn match  rubyFunction "\%([[:space:].]\|^\)\@<=\%(\[\]=\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|==\|=\~\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
 " Expensive Mode - colorize *end* according to opening statement
 if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
-  syn region rubyFunction matchgroup=rubyDefine start="\<def\s\+"    end="\%(\s*\%(\s\|(\|;\|$\|#\)\)\@=" oneline
-  syn region rubyClass   matchgroup=rubyDefine start="\<class\s\+"  end="\%(\s*\%(\s\|<\|;\|$\|#\)\)\@=" oneline
-  syn match  rubyDefine   "\<class\ze<<"
-  syn region rubyModule   matchgroup=rubyDefine start="\<module\s\+" end="\%(\s*\%(\s\|;\|$\|#\)\)\@="   oneline
-
-  syn region rubyBlock start="\<def\>"   matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyFunction fold
-  syn region rubyBlock start="\<class\>"  matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyClass   fold
-  syn region rubyBlock start="\<module\>" matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyModule  fold
+  syn match  rubyDefine "\<alias\>"            nextgroup=rubyAliasDeclaration  skipwhite skipnl
+  syn match  rubyDefine "\<def\>"              nextgroup=rubyMethodDeclaration skipwhite skipnl
+  syn match  rubyClass "\<class\>"             nextgroup=rubyClassDeclaration  skipwhite skipnl
+  syn match  rubyModule "\<module\>"           nextgroup=rubyModuleDeclaration skipwhite skipnl
+  syn region rubyBlock start="\<def\>"         matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=TOP fold
+  syn region rubyBlock start="\<class\>"       matchgroup=rubyClass  end="\<end\>" contains=TOP fold
+  syn region rubyBlock start="\<module\>"      matchgroup=rubyModule end="\<end\>" contains=TOP fold
 
   " modifiers
-  syn match  rubyControl "\<\%(if\|unless\|while\|until\)\>" display
+  syn match  rubyConditional "\<\%(if\|unless\)\>"   display
+  syn match  rubyRepeat             "\<\%(while\|until\)\>" display
 
   " *do* requiring *end*
-  syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
+  syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=TOP fold
 
   " *{* requiring *}*
-  syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
+  syn region rubyCurlyBlock start="{" end="}" contains=TOP fold
 
   " statements without *do*
-  syn region rubyNoDoBlock matchgroup=rubyControl start="\<\%(case\|begin\)\>" start="\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\zs\%(if\|unless\)\>" end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
+  syn region rubyNoDoBlock       matchgroup=rubyControl     start="\<begin\>" end="\<end\>" contains=TOP fold
+  syn region rubyCaseBlock       matchgroup=rubyConditional start="\<case\>"  end="\<end\>" contains=TOP fold
+  syn region rubyConditionalBlock matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\%(if\|unless\)\>" end="\<end\>" contains=TOP fold
+  syn keyword rubyConditional then else when  contained containedin=rubyCaseBlock
+  syn keyword rubyConditional then else elsif contained containedin=rubyConditionalBlock
 
   " statement with optional *do*
-  syn region rubyOptDoLine matchgroup=rubyControl start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[?:,;=([<>~\*/%!&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" end="\%(\<do\>\|:\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo
-  syn region rubyOptDoBlock start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyControl end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyOptDoLine fold
+  syn region rubyOptDoLine matchgroup=rubyRepeat start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" end="\%(\<do\>\|:\)" end="\ze\%(;\|$\)" oneline contains=TOP
+  syn region rubyOptDoBlock start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=TOP nextgroup=rubyOptDoLine fold
 
   if !exists("ruby_minlines")
     let ruby_minlines = 50
@@ -170,19 +197,19 @@ if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
   exec "syn sync minlines=" . ruby_minlines
 
 else
-  syn region  rubyFunction matchgroup=rubyControl start="\<def\s\+"    end="\ze\%(\s\|(\|;\|$\)" oneline
-  syn region  rubyClass    matchgroup=rubyControl start="\<class\s\+"  end="\ze\%(\s\|<\|;\|$\)" oneline
-  syn match   rubyControl  "\<class\ze<<"
-  syn region  rubyModule   matchgroup=rubyControl start="\<module\s\+" end="\ze\%(\s\|;\|$\)"   oneline
-  syn keyword rubyControl case begin do for if unless while until end
+  syn match   rubyControl "\<def\>"    nextgroup=rubyMethodDeclaration skipwhite skipnl
+  syn match   rubyControl "\<class\>"  nextgroup=rubyClassDeclaration  skipwhite skipnl
+  syn match   rubyControl "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
+  syn keyword rubyControl case begin do for if unless while until else elsif then when end
+  syn keyword rubyKeyword alias
 endif
 
 " Keywords
 " Note: the following keywords have already been defined:
 " begin case class def do end for if module unless until while
-syn keyword rubyControl                and break else elsif ensure in next not or redo rescue retry return then when
+syn keyword rubyControl                and break ensure in next not or redo rescue retry return
 syn match   rubyOperator       "\<defined?" display
-syn keyword rubyKeyword                alias super undef yield
+syn keyword rubyKeyword                super undef yield
 syn keyword rubyBoolean                true false
 syn keyword rubyPseudoVariable nil self __FILE__ __LINE__
 syn keyword rubyBeginEnd       BEGIN END
@@ -202,7 +229,12 @@ endif
 syn match   rubySharpBang     "\%^#!.*" display
 syn keyword rubyTodo         FIXME NOTE TODO XXX contained
 syn match   rubyComment       "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
-syn region  rubyDocumentation start="^=begin" end="^=end.*$" contains=rubySpaceError,rubyTodo,@Spell fold
+if !exists("ruby_no_comment_fold")
+  syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
+  syn region rubyDocumentation   start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell fold
+else
+  syn region rubyDocumentation   start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
+endif
 
 " Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
 syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>"                 transparent contains=NONE
@@ -231,33 +263,36 @@ if version >= 508 || !exists("did_ruby_syntax_inits")
     command -nargs=+ HiLink hi def link <args>
   endif
 
+  HiLink rubyClass                     rubyDefine
+  HiLink rubyModule                    rubyDefine
   HiLink rubyDefine                    Define
   HiLink rubyFunction                  Function
+  HiLink rubyConditional               Conditional
+  HiLink rubyRepeat                    Repeat
   HiLink rubyControl                   Statement
   HiLink rubyInclude                   Include
   HiLink rubyInteger                   Number
-  HiLink rubyASCIICode                 rubyInteger
+  HiLink rubyASCIICode                 Character
   HiLink rubyFloat                     Float
-  HiLink rubyBoolean                   rubyPseudoVariable
+  HiLink rubyBoolean                   Boolean
   HiLink rubyException                 Exception
-  HiLink rubyClass                     Type
-  HiLink rubyModule                    Type
   if !exists("ruby_no_identifiers")
     HiLink rubyIdentifier              Identifier
   else
     HiLink rubyIdentifier              NONE
   endif
   HiLink rubyClassVariable             rubyIdentifier
-  HiLink rubyConstant                  rubyIdentifier
+  HiLink rubyConstant                  Type
   HiLink rubyGlobalVariable            rubyIdentifier
   HiLink rubyBlockParameter            rubyIdentifier
   HiLink rubyInstanceVariable          rubyIdentifier
   HiLink rubyPredefinedIdentifier      rubyIdentifier
   HiLink rubyPredefinedConstant                rubyPredefinedIdentifier
   HiLink rubyPredefinedVariable                rubyPredefinedIdentifier
-  HiLink rubySymbol                    rubyIdentifier
+  HiLink rubySymbol                    Constant
   HiLink rubyKeyword                   Keyword
   HiLink rubyOperator                  Operator
+  HiLink rubyPseudoOperator            rubyOperator
   HiLink rubyBeginEnd                  Statement
   HiLink rubyAccess                    Statement
   HiLink rubyAttribute                 Statement
@@ -269,10 +304,12 @@ if version >= 508 || !exists("did_ruby_syntax_inits")
   HiLink rubyDataDirective             Delimiter
   HiLink rubyDocumentation             Comment
   HiLink rubyEscape                    Special
-  HiLink rubyInterpolation             Special
+  HiLink rubyInterpolationDelimiter    Delimiter
   HiLink rubyNoInterpolation           rubyString
   HiLink rubySharpBang                 PreProc
+  HiLink rubyRegexpDelimiter           rubyStringDelimiter
   HiLink rubyStringDelimiter           Delimiter
+  HiLink rubyRegexp                    rubyString
   HiLink rubyString                    String
   HiLink rubyTodo                      Todo
 
@@ -284,4 +321,4 @@ endif
 
 let b:current_syntax = "ruby"
 
-" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
+" vim: nowrap sw=2 sts=2 ts=8 noet ff=unix:
diff --git a/runtime/syntax/sd.vim b/runtime/syntax/sd.vim
new file mode 100644 (file)
index 0000000..bb201ca
--- /dev/null
@@ -0,0 +1,75 @@
+" Language: streaming descriptor file
+" Maintainer: Puria Nafisi Azizi (pna) <pna@netstudent.polito.it>
+" License: This file can be redistribued and/or modified under the same terms
+"   as Vim itself.
+" URL: http://netstudent.polito.it/vim_syntax/
+" Last Change: 2006-09-27
+
+if version < 600
+        syntax clear
+elseif exists("b:current_syntax")
+        finish
+endif
+
+" Always ignore case
+syn case ignore
+
+" Comments
+syn match sdComment /\s*[#;].*$/
+
+" IP Adresses
+syn cluster sdIPCluster contains=sdIPError,sdIPSpecial
+syn match sdIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained
+syn match sdIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained
+syn match sdIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@sdIPCluster
+
+" Statements
+syn keyword sdStatement AGGREGATE AUDIO_CHANNELS 
+syn keyword sdStatement BYTE_PER_PCKT BIT_PER_SAMPLE BITRATE
+syn keyword sdStatement CLOCK_RATE CODING_TYPE CREATOR
+syn match sdStatement /^\s*CODING_TYPE\>/ nextgroup=sdCoding skipwhite
+syn match sdStatement /^\s*ENCODING_NAME\>/ nextgroup=sdEncoding skipwhite
+syn keyword sdStatement FILE_NAME FRAME_LEN FRAME_RATE FORCE_FRAME_RATE
+syn keyword sdStatement LICENSE 
+syn match sdStatement /^\s*MEDIA_SOURCE\>/ nextgroup=sdSource skipwhite
+syn match sdStatement /^\s*MULTICAST\>/ nextgroup=sdIP skipwhite
+syn keyword sdStatement PAYLOAD_TYPE PKT_LEN PRIORITY
+syn keyword sdStatement SAMPLE_RATE
+syn keyword sdStatement TITLE TWIN
+syn keyword sdStatement VERIFY
+
+" Known Options
+syn keyword sdEncoding H26L MPV MP2T MP4V-ES
+syn keyword sdCoding FRAME SAMPLE
+syn keyword sdSource STORED LIVE
+
+"Specials
+syn keyword sdSpecial TRUE FALSE NULL
+syn keyword sdDelimiter STREAM STREAM_END
+syn match sdError /^search .\{257,}/
+
+if version >= 508 || !exists("did_config_syntax_inits")
+        if version < 508
+                let did_config_syntax_inits = 1
+                command! -nargs=+ HiLink hi link <args>
+        else
+                command! -nargs=+ HiLink hi def link <args>
+        endif
+
+        HiLink sdIP Number
+                 HiLink sdHostname Type
+        HiLink sdEncoding Identifier
+        HiLink sdCoding Identifier
+        HiLink sdSource Identifier
+        HiLink sdComment Comment
+        HiLink sdIPError Error
+        HiLink sdError Error
+        HiLink sdStatement Statement
+        HiLink sdIPSpecial Special
+        HiLink sdSpecial Special
+                 HiLink sdDelimiter Delimiter
+
+        delcommand HiLink
+endif
+
+let b:current_syntax = "sd"
index 2c53f9fa45cab2c8a251bad6d971a77b8ab07606..4edff04619cde73a07f93ced20e5b5efbcdd04ac 100644 (file)
@@ -2,8 +2,8 @@
 " Language:            shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:          Dr. Charles E. Campbell, Jr.  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:         Apr 12, 2006
-" Version:             84
+" Last Change:         Sep 15, 2006
+" Version:             88
 " URL:         http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Using the following VIM variables: {{{1
@@ -70,25 +70,25 @@ syn case match
 
 " Clusters: contains=@... clusters {{{1
 "==================================
-syn cluster shCaseEsacList     contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shSpecial
-syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shSpecial
+syn cluster shCaseEsacList     contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq
+syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
 syn cluster shColonList        contains=@shCaseList
-syn cluster shCommandSubList   contains=shArithmetic,shDeref,shDerefSimple,shNumber,shOperator,shPosnParm,shSpecial,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest
+syn cluster shCommandSubList   contains=shArithmetic,shDeref,shDerefSimple,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq
 syn cluster shCurlyList        contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial
-syn cluster shDblQuoteList     contains=shCommandSub,shDeref,shDerefSimple,shSpecial,shPosnParm
+syn cluster shDblQuoteList     contains=shCommandSub,shDeref,shDerefSimple,shPosnParm,shExSingleQuote,shCtrlSeq
 syn cluster shDerefList        contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPPS
 syn cluster shDerefVarList     contains=shDerefOp,shDerefVarArray,shDerefOpError
-syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shSpecial
-syn cluster shExprList1        contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shSpecial,shExpr,shDblBrace,shDeref,shDerefSimple
+syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq
+syn cluster shExprList1        contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
 syn cluster shExprList2        contains=@shExprList1,@shCaseList,shTest
-syn cluster shFunctionList     contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shSpecial,shOperator,shFunctionStart
+syn cluster shFunctionList     contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shFunctionStart,shCtrlSeq
 syn cluster shHereBeginList    contains=@shCommandSubList
 syn cluster shHereList contains=shBeginHere,shHerePayload
 syn cluster shHereListDQ       contains=shBeginHere,@shDblQuoteList,shHerePayload
-syn cluster shIdList   contains=shCommandSub,shWrapLineOperator,shIdWhiteSpace,shDeref,shDerefSimple,shSpecial,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr
+syn cluster shIdList   contains=shCommandSub,shWrapLineOperator,shIdWhiteSpace,shDeref,shDerefSimple,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq
 syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest
 syn cluster shSubShList        contains=@shCaseList
-syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shSpecial,shTestOpr,shTest
+syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq
 
 
 " Echo: {{{1
@@ -98,7 +98,7 @@ syn region shEcho matchgroup=shStatement start="\<echo\>"  skip="\\$" matchgroup
 syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList
 
 " This must be after the strings, so that bla \" be correct
-syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shSpecial,shOperator,shDoubleQuote,shCharClass
+syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq
 
 " Alias: {{{1
 " =====
@@ -142,9 +142,14 @@ syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")"  contai
 " Tests: {{{1
 "=======
 "syn region  shExpr transparent matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
-syn region  shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
-syn region  shTest transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
-syn match   shTestOpr contained "<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!=<>]"
+syn region shExpr      matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
+syn region shTest      transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
+syn match  shTestOpr   contained       "<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"
+syn match  shTestOpr   contained       '=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern
+syn match  shTestPattern       contained       '\w\+'
+syn match  shTestDoubleQuote   contained       '"[^"]*"'
+syn match  shTestSingleQuote   contained       '\\.'
+syn match  shTestSingleQuote   contained       "'[^']*'"
 if exists("b:is_kornshell") || exists("b:is_bash")
  syn region  shDblBrace matchgroup=Delimiter start="\[\[" skip=+\\\\\|\\$+ end="\]\]"  contains=@shTestList
  syn region  shDblParen matchgroup=Delimiter start="((" skip=+\\\\\|\\$+ end="))"      contains=@shTestList
@@ -237,19 +242,18 @@ syn region  shColon       start="^\s*:" end="$\|" end="#"me=e-1 contains=@shColonList
 
 " String And Character Constants: {{{1
 "================================
-syn match   shNumber   "-\=\<\d\+\>"
+syn match   shNumber   "-\=\<\d\+\>#\="
+syn match   shCtrlSeq  "\\\d\d\d\|\\[abcfnrtv0]"               contained
 if exists("b:is_bash")
  syn match   shSpecial "\\\o\o\o\|\\x\x\x\|\\c.\|\\[abefnrtv]" contained
-else
- syn match   shSpecial "\\\d\d\d\|\\[abcfnrtv0]"       contained
 endif
 if exists("b:is_bash")
  syn region  shExSingleQuote   matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+      contains=shStringSpecial,shSpecial
 else
- syn region  shExSingleQuote   matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+   contains=shStringSpecial,shSpecial
+ syn region  shExSingleQuote   matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+   contains=shStringSpecial
 endif
-syn region  shSingleQuote      matchgroup=shOperator start=+'+ end=+'+         contains=shStringSpecial
-syn region  shDoubleQuote      matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+      contains=@shDblQuoteList,shStringSpecial
+syn region  shSingleQuote      matchgroup=shOperator start=+'+ end=+'+         contains=shStringSpecial,@Spell
+syn region  shDoubleQuote      matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+      contains=@shDblQuoteList,shStringSpecial,@Spell
 syn match   shStringSpecial    "[^[:print:]]"  contained
 syn match   shSpecial  "\\[\\\"\'`$()#]"
 
@@ -257,7 +261,8 @@ syn match   shSpecial       "\\[\\\"\'`$()#]"
 "==========
 syn cluster    shCommentGroup  contains=shTodo,@Spell
 syn keyword    shTodo  contained       COMBAK FIXME TODO XXX
-syn match      shComment       "#.*$" contains=@shCommentGroup
+syn match      shComment       "^#.*$" contains=@shCommentGroup
+syn match      shComment       "[^0-9]#.*$"    contains=@shCommentGroup
 
 " File Redirection Highlighted As Operators: {{{1
 "===========================================
@@ -277,7 +282,7 @@ if version < 600
  syn region shHereDoc matchgroup=shRedir start="<<-\s*\**\.\**"        matchgroup=shRedir      end="^\s*\.$"   contains=@shDblQuoteList
 
 elseif g:sh_fold_enabled
- syn region shHereDoc matchgroup=shRedir fold start="<<\s*\z(\S*\)"            matchgroup=shRedir end="^\z1\s*$"               contains=@shDblQuoteList
+ syn region shHereDoc matchgroup=shRedir fold start="<<\s*\z(\S*\)"            matchgroup=shRedir end="^\z1\s*$"       contains=@shDblQuoteList
  syn region shHereDoc matchgroup=shRedir fold start="<<\s*\"\z(\S*\)\""                matchgroup=shRedir end="^\z1\s*$"
  syn region shHereDoc matchgroup=shRedir fold start="<<\s*'\z(\S*\)'"          matchgroup=shRedir end="^\z1\s*$"
  syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\z(\S*\)"           matchgroup=shRedir end="^\s*\z1\s*$"    contains=@shDblQuoteList
@@ -289,6 +294,7 @@ elseif g:sh_fold_enabled
  syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\\\_$\_s*\z(\S*\)"          matchgroup=shRedir end="^\s*\z1\s*$"
  syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\\\_$\_s*\"\z(\S*\)\""      matchgroup=shRedir end="^\s*\z1\s*$"
  syn region shHereDoc matchgroup=shRedir fold start="<<\s*\\\_$\_s*'\z(\S*\)'"         matchgroup=shRedir end="^\z1\s*$"
+ syn region shHereDoc matchgroup=shRedir fold start="<<\\\z(\S*\)"             matchgroup=shRedir end="^\z1\s*$"
 
 else
  syn region shHereDoc matchgroup=shRedir start="<<\s*\\\=\z(\S*\)"     matchgroup=shRedir end="^\z1\s*$"    contains=@shDblQuoteList
@@ -303,6 +309,7 @@ else
  syn region shHereDoc matchgroup=shRedir start="<<\s*\\\_$\_s*'\z(\S*\)'"      matchgroup=shRedir end="^\z1\s*$"
  syn region shHereDoc matchgroup=shRedir start="<<\s*\\\_$\_s*\"\z(\S*\)\""    matchgroup=shRedir end="^\z1\s*$"
  syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\_$\_s*\"\z(\S*\)\""   matchgroup=shRedir end="^\s*\z1\s*$"
+ syn region shHereDoc matchgroup=shRedir start="<<\\\z(\S*\)"          matchgroup=shRedir end="^\z1\s*$"
 endif
 
 " Here Strings: {{{1
@@ -317,16 +324,16 @@ syn match  shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSe
 syn match  shIdWhiteSpace  contained   "\s"
 syn match  shSetIdentifier contained   "="     nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote
 if exists("b:is_bash")
-  syn region shSetList matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="#\|="me=e-1 contains=@shIdList
-  syn region shSetList matchgroup=shSet start="\<set\>[^/]"me=e-1 end="$" end="\\ze[|)]"                matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
-  syn match  shSet "\<\(declare\|typeset\|local\|export\|set\|unset\)$"
+  syn region shSetList matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$"  matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="#\|="me=e-1 contains=@shIdList
+  syn region shSetList matchgroup=shSet start="\<set\>[^/]"me=e-1 end="$" end="\\ze[|)]"               matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+  syn match  shSet "\<\(declare\|typeset\|local\|export\|set\|unset\)\>"
 elseif exists("b:is_kornshell")
-  syn region shSetList matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$"          matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
-  syn region shSetList matchgroup=shSet start="\<set\>\ze[^/]" end="$\|\ze[})]"                        matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
-  syn match  shSet "\<\(typeset\|set\|export\|unset\)$"
+  syn region shSetList matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$"          matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+  syn region shSetList matchgroup=shSet start="\<set\>\ze[^/]" end="$\|\ze[})]"                        matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+  syn match  shSet "\<\(typeset\|set\|export\|unset\)\>"
 else
-  syn region shSetList matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$\|\ze[|)]"     matchgroup=shOperator end="[;&]" matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
-  syn match  shStatement "\<\(set\|export\|unset\)$"
+  syn region shSetList matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$\|\ze[|)]"     matchgroup=shOperator end="\ze[|);&]" matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+  syn match  shStatement "\<\(set\|export\|unset\)\>"
 endif
 
 " Functions: {{{1
@@ -480,6 +487,9 @@ hi def link shSource        shOperator
 hi def link shStringSpecial    shSpecial
 hi def link shSubShRegion      shOperator
 hi def link shTestOpr  shConditional
+hi def link shTestPattern      shString
+hi def link shTestDoubleQuote  shString
+hi def link shTestSingleQuote  shString
 hi def link shVariable shSetList
 hi def link shWrapLineOperator shOperator
 
@@ -518,6 +528,7 @@ hi def link shSnglCase              Statement
 hi def link shCommandSub               Special
 hi def link shComment          Comment
 hi def link shConditional              Conditional
+hi def link shCtrlSeq          Special
 hi def link shExprRegion               Delimiter
 hi def link shFunctionKey              Function
 hi def link shFunctionName             Function
index 12411e89be3af41bba84af906951664a6bc6a906..83649a75158708c40f53d01d2f34f503632efe76 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:            C-shell (tcsh)
-" Maintainor:          Gautam Iyer <gautam@math.uchicago.edu>
-" Last Modified:       Sat 11 Mar 2006 11:16:47 AM CST
+" Maintainer:          Gautam Iyer <gi1242@users.sourceforge.net>
+" Last Modified:       Thu 16 Nov 2006 01:07:04 PM PST
 "
 " Description: We break up each statement into a "command" and an "end" part.
 " All groups are either a "command" or part of the "end" of a statement (ie
@@ -48,9 +48,10 @@ syn keyword tcshSetEnv       nextgroup=tcshEnvEnd setenv unsetenv
 syn region  tcshEnvEnd contained transparent matchgroup=tcshBuiltins start='' skip="\\$" end="$\|;" contains=tcshEnvVar,@tcshStatementEnds
 
 " alias and unalias (contains special aliases)
-syn keyword tcshAliases contained beemcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell
-syn keyword tcshAlias  nextgroup=tcshAliEnd alias unalias
-syn region  tcshAliEnd contained transparent matchgroup=tcshBuiltins start='' skip="\\$" end="$\|;" contains=tcshAliases,@tcshStatementEnds
+syn keyword tcshAliases contained beepcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell
+syn keyword tcshAlias  nextgroup=tcshAliCmd skipwhite alias unalias
+syn match   tcshAliCmd contained nextgroup=tcshAliEnd skipwhite '\v[\w-]+' contains=tcshAliases
+syn region  tcshAliEnd contained transparent matchgroup=tcshBuiltins start='' skip="\\$" end="$\|;" contains=@tcshStatementEnds
 
 " if statements (contains expressions / operators)
 syn keyword tcshIf     nextgroup=tcshIfEnd if
@@ -72,10 +73,10 @@ syn match tcshExprEnd       contained "\v.*$"hs=e+1 contains=tcshOperator,tcshNumber,@
 syn match tcshExprEnd  contained "\v.{-};"hs=e contains=tcshOperator,tcshNumber,@tcshVarList
 
 " ----- Comments: -----
-syn match tcshComment  "#.*" contains=tcshTodo,tcshCommentTi,tcshCommentSp,@Spell
-syn match tcshSharpBang "^#! .*$"
+syn match tcshComment  '#\s.*' contains=tcshTodo,tcshCommentTi,@Spell
+syn match tcshComment  '\v#($|\S.*)' contains=tcshTodo,tcshCommentTi
+syn match tcshSharpBang '^#! .*$'
 syn match tcshCommentTi contained '\v#\s*\u\w*(\s+\u\w*)*:'hs=s+1 contains=tcshTodo
-syn match tcshCommentSp contained '\v<\u{3,}>' contains=tcshTodo
 syn match tcshTodo     contained '\v\c<todo>'
 
 " ----- Strings -----
@@ -152,6 +153,7 @@ hi def link tcshBuiltins    statement
 hi def link tcshShellVar       preproc
 hi def link tcshEnvVar         tcshShellVar
 hi def link tcshAliases                tcshShellVar
+hi def link tcshAliCmd         identifier
 hi def link tcshCommands       identifier
 hi def link tcshSet            tcshBuiltins
 hi def link tcshSetEnv         tcshBuiltins
@@ -165,7 +167,6 @@ hi def link tcshExprOp              tcshOperator
 hi def link tcshExprEnd                tcshOperator
 hi def link tcshComment                comment
 hi def link tcshCommentTi      preproc
-hi def link tcshCommentSp      tcshCommentTi
 hi def link tcshSharpBang      tcshCommentTi
 hi def link tcshTodo           todo
 hi def link tcshSQuote         constant
index 6452e725ebd9ed271de0b2885d7f93a32dc1cb4f..442cdf232e58a04d58ac055c95b863e9eb718a12 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    TeX
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
-" Last Change: Apr 18, 2006
-" Version:     35
+" Last Change: Feb 27, 2007
+" Version:     37
 " URL:         http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Notes: {{{1
@@ -261,25 +261,25 @@ syn match texSpaceCodeChar    "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)"    contained
 
 " Sections, subsections, etc: {{{1
 if g:tex_fold_enabled && has("folding")
- syn region texDocZone                 matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold keepend contains=@texFoldGroup,@texDocGroup,@Spell
- syn region texPartZone                        matchgroup=texSection start='\\part\>'                   end='\n\ze\s*\\part\>'         fold keepend contains=@texFoldGroup,@texPartGroup,@Spell
- syn region texChapterZone             matchgroup=texSection start='\\chapter\>'                end='\n\ze\s*\\chapter\>'      fold keepend contains=@texFoldGroup,@texChapterGroup,@Spell
- syn region texSectionZone             matchgroup=texSection start='\\section\>'                end='\n\ze\s*\\section\>'      fold keepend contains=@texFoldGroup,@texSectionGroup,@Spell
- syn region texSubSectionZone          matchgroup=texSection start='\\subsection\>'             end='\n\ze\s*\\subsection\>'   fold keepend contains=@texFoldGroup,@texSubSectionGroup,@Spell
- syn region texSubSubSectionZone       matchgroup=texSection start='\\subsubsection\>'         end='\n\ze\s*\\subsubsection\>' fold keepend contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
- syn region texParaZone                        matchgroup=texSection start='\\paragraph\>'              end='\n\ze\s*\\paragraph\>'    fold keepend contains=@texFoldGroup,@texParaGroup,@Spell
- syn region texSubParaZone             matchgroup=texSection start='\\subparagraph\>'           end='\n\ze\s*\\subparagraph\>' fold keepend contains=@texFoldGroup,@Spell
+ syn region texDocZone                 matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell
+ syn region texPartZone                        matchgroup=texSection start='\\part\>'                   end='\n\ze\s*\\part\>'         fold contains=@texFoldGroup,@texPartGroup,@Spell
+ syn region texChapterZone             matchgroup=texSection start='\\chapter\>'                end='\n\ze\s*\\chapter\>'      fold contains=@texFoldGroup,@texChapterGroup,@Spell
+ syn region texSectionZone             matchgroup=texSection start='\\section\>'                end='\n\ze\s*\\section\>'      fold contains=@texFoldGroup,@texSectionGroup,@Spell
+ syn region texSubSectionZone          matchgroup=texSection start='\\subsection\>'             end='\n\ze\s*\\subsection\>'   fold contains=@texFoldGroup,@texSubSectionGroup,@Spell
+ syn region texSubSubSectionZone       matchgroup=texSection start='\\subsubsection\>'         end='\n\ze\s*\\subsubsection\>' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
+ syn region texParaZone                        matchgroup=texSection start='\\paragraph\>'              end='\n\ze\s*\\paragraph\>'    fold contains=@texFoldGroup,@texParaGroup,@Spell
+ syn region texSubParaZone             matchgroup=texSection start='\\subparagraph\>'           end='\n\ze\s*\\subparagraph\>' fold contains=@texFoldGroup,@Spell
  syn region texTitle                   matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                fold contains=@texFoldGroup,@Spell
  syn region texAbstract                        matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell
 else
- syn region texDocZone                 matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' keepend contains=@texFoldGroup,@texDocGroup,@Spell
- syn region texPartZone                        matchgroup=texSection start='\\part\>'                   end='\n\ze\s*\\part\>'         keepend contains=@texFoldGroup,@texPartGroup,@Spell
- syn region texChapterZone             matchgroup=texSection start='\\chapter\>'                end='\n\ze\s*\\chapter\>'      keepend contains=@texFoldGroup,@texChapterGroup,@Spell
- syn region texSectionZone             matchgroup=texSection start='\\section\>'                end='\n\ze\s*\\section\>'      keepend contains=@texFoldGroup,@texSectionGroup,@Spell
- syn region texSubSectionZone          matchgroup=texSection start='\\subsection\>'             end='\n\ze\s*\\subsection\>'   keepend contains=@texFoldGroup,@texSubSectionGroup,@Spell
- syn region texSubSubSectionZone       matchgroup=texSection start='\\subsubsection\>'         end='\n\ze\s*\\subsubsection\>' keepend contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
- syn region texParaZone                        matchgroup=texSection start='\\paragraph\>'              end='\n\ze\s*\\paragraph\>'    keepend contains=@texFoldGroup,@texParaGroup,@Spell
- syn region texSubParaZone             matchgroup=texSection start='\\subparagraph\>'           end='\n\ze\s*\\subparagraph\>' keepend contains=@texFoldGroup,@Spell
+ syn region texDocZone                 matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
+ syn region texPartZone                        matchgroup=texSection start='\\part\>'                   end='\n\ze\s*\\part\>'         contains=@texFoldGroup,@texPartGroup,@Spell
+ syn region texChapterZone             matchgroup=texSection start='\\chapter\>'                end='\n\ze\s*\\chapter\>'      contains=@texFoldGroup,@texChapterGroup,@Spell
+ syn region texSectionZone             matchgroup=texSection start='\\section\>'                end='\n\ze\s*\\section\>'      contains=@texFoldGroup,@texSectionGroup,@Spell
+ syn region texSubSectionZone          matchgroup=texSection start='\\subsection\>'             end='\n\ze\s*\\subsection\>'   contains=@texFoldGroup,@texSubSectionGroup,@Spell
+ syn region texSubSubSectionZone       matchgroup=texSection start='\\subsubsection\>'         end='\n\ze\s*\\subsubsection\>' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
+ syn region texParaZone                        matchgroup=texSection start='\\paragraph\>'              end='\n\ze\s*\\paragraph\>'    contains=@texFoldGroup,@texParaGroup,@Spell
+ syn region texSubParaZone             matchgroup=texSection start='\\subparagraph\>'           end='\n\ze\s*\\subparagraph\>' contains=@texFoldGroup,@Spell
  syn region texTitle                   matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                        contains=@texFoldGroup,@Spell
  syn region texAbstract                        matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
 endif
@@ -442,7 +442,7 @@ syn match texDefParms  contained            "#[^{]*"        contains=texDefParm     nextgroup=texCmdB
 syn match  texDefParm  contained               "#\d\+"
 
 " TeX Lengths: {{{1
-syn match  texLength           "\<\d\+\(\.\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"
+syn match  texLength           "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"
 
 " TeX String Delimiters: {{{1
 syn match texString            "\(``\|''\|,,\)"
index 244e0b73e8a4a6ec62791d38f27388b9142b7fc3..d5694dae6ac3ac8bd4fd0384b143841cfc7e37ef 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    Vim 7.0 script
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: May 02, 2006
-" Version:     7.0-50
+" Last Change: April 25, 2007
+" Version:     7.0-62
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -16,20 +16,20 @@ syn keyword vimTodo contained       COMBAK  FIXME   TODO    XXX
 syn cluster vimCommentGroup    contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained       ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] caddb[uffer] cad[dexpr] caddf[ile] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cex[pr] cf[ile] cfir[st] cgetb[uffer] cgete[xpr] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis diffu[pdate] dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] earlier echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] Explore exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] Hexplore hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] laddb[uffer] lad[dexpr] laddf[ile] lan[guage] la[st] later lb[uffer] lc[d] lch[dir] lcl[ose] le[ft] lefta[bove] lex[pr] lf[ile] lfir[st] lgetb[uffer] lgete[xpr] lg[etfile] lgr[ep] lgrepa[dd] lh[elpgrep] l[ist] ll lla[st] lli[st] lmak[e] lm[ap] lmapc[lear] lnew[er] lne[xt] lN[ext] lnf[ile] lNf[ile] ln[oremap] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lpf[ile] lp[revious] lr[ewind] ls lt[ag] lu[nmap] lv[imgrep] lvimgrepa[dd] lw[indow] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mksp[ell] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey NetrwSettings new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] profd[el] prof[ile] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] san[dbox] sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] Sexplore sf[ind] sfir[st] sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sm[ap] smapc[lear] sme smenu sn[ext] sN[ext] sni[ff] sno[magic] snor[emap] snoreme snoremenu sor[t] so[urce] spelld[ump] spe[llgood] spelli[nfo] spellr[epall] spellu[ndo] spellw[rong] sp[lit] spr[evious] sre[wind] sta[g] startg[replace] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sunm[ap] sus[pend] sv[iew] syncbind t tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabl[ast] tabmove tabnew tabn[ext] tabN[ext] tabo[nly] tabp[revious] tabr[ewind] tabs ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] Vexplore vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] xm[ap] xmapc[lear] xme xmenu XMLent XMLns xn[oremap] xnoreme xnoremenu xu[nmap] y[ank] 
+syn keyword vimCommand contained       ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] caddb[uffer] cad[dexpr] caddf[ile] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cex[pr] cf[ile] cfir[st] cgetb[uffer] cgete[xpr] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis diffu[pdate] dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] earlier echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] Explore exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] Hexplore hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] laddb[uffer] lad[dexpr] laddf[ile] lan[guage] la[st] later lb[uffer] lc[d] lch[dir] lcl[ose] le[ft] lefta[bove] lex[pr] lf[ile] lfir[st] lgetb[uffer] lgete[xpr] lg[etfile] lgr[ep] lgrepa[dd] lh[elpgrep] l[ist] ll lla[st] lli[st] lmak[e] lm[ap] lmapc[lear] lnew[er] lne[xt] lN[ext] lnf[ile] lNf[ile] ln[oremap] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lpf[ile] lp[revious] lr[ewind] ls lt[ag] lu[nmap] lv[imgrep] lvimgrepa[dd] lw[indow] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mksp[ell] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey NetrwSettings new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] profd[el] prof[ile] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] san[dbox] sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] Sexplore sf[ind] sfir[st] sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sm[ap] smapc[lear] sme smenu sn[ext] sN[ext] sni[ff] sno[magic] snor[emap] snoreme snoremenu sor[t] so[urce] spelld[ump] spe[llgood] spelli[nfo] spellr[epall] spellu[ndo] spellw[rong] sp[lit] spr[evious] sre[wind] sta[g] startg[replace] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sunm[ap] sus[pend] sv[iew] syncbind t tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabl[ast] tabm[ove] tabnew tabn[ext] tabN[ext] tabo[nly] tabp[revious] tabr[ewind] tabs ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] Vexplore vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] xm[ap] xmapc[lear] xme xmenu XMLent XMLns xn[oremap] xnoreme xnoremenu xu[nmap] y[ank] 
 syn match   vimCommand contained       "\<z[-+^.=]"
 
 " vimOptions are caught only when contained in a vimSet {{{2
-syn keyword vimOption contained        acd ai akm al aleph allowrevins altkeymap ambiwidth ambw anti antialias ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval balloonexpr bdir bdlay beval bex bexpr bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf cfu ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete completefunc completeopt confirm consk conskey copyindent cot cp cpo cpoptions cpt cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cuc cul cursorcolumn cursorline cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs fex ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap flp fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatexpr formatlistpat formatoptions formatprg fp fs fsync ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg gtl gtt guicursor guifont guifontset guifontwide guiheadroom guioptions guipty guitablabel guitabtooltip helpfile helpheight helplang hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hlg hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma macatsui magic makeef makeprg mat matchpairs matchtime maxcombine maxfuncdepth maxmapdepth maxmem maxmempattern maxmemtot mco mef menuitems mfd mh mis mkspellmem ml mls mm mmd mmp mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps msm mzq mzquantum nf nrformats nu number numberwidth nuw oft ofu omnifunc operatorfunc opfunc osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn ph pheader pi pm pmbcs pmbfn popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printmbcharset printmbfont printoptions prompt pt pumheight pvh pvw qe quoteescape readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltemp shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode showtabline shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smc smd sn so softtabstop sol sp spc spell spellcapcheck spellfile spelllang spellsuggest spf spl splitbelow splitright spr sps sr srr ss ssl ssop st sta stal startofline statusline stl stmp sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn synmaxcol syntax ta tabline tabpagemax tabstop tag tagbsearch taglength tagrelative tags tagstack tal tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tpm tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose verbosefile vfile vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wfw wh whichwrap wi wig wildchar wildcharm wildignore wildmenu wildmode wildoptions wim winaltkeys window winfixheight winfixwidth winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wop wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww 
+syn keyword vimOption contained        acd ai akm al aleph allowrevins altkeymap ambiwidth ambw anti antialias ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval balloonexpr bdir bdlay beval bex bexpr bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf cfu ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete completefunc completeopt confirm consk conskey copyindent cot cp cpo cpoptions cpt cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cuc cul cursorcolumn cursorline cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs fex ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap flp fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatexpr formatlistpat formatoptions formatprg fp fs fsync ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg gtl gtt guicursor guifont guifontset guifontwide guiheadroom guioptions guipty guitablabel guitabtooltip helpfile helpheight helplang hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hlg hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma macatsui magic makeef makeprg mat matchpairs matchtime maxcombine maxfuncdepth maxmapdepth maxmem maxmempattern maxmemtot mco mef menuitems mfd mh mis mkspellmem ml mls mm mmd mmp mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps msm mzq mzquantum nf nrformats nu number numberwidth nuw odev oft ofu omnifunc opendevice operatorfunc opfunc osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn ph pheader pi pm pmbcs pmbfn popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printmbcharset printmbfont printoptions prompt pt pumheight pvh pvw qe quoteescape readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltemp shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode showtabline shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smc smd sn so softtabstop sol sp spc spell spellcapcheck spellfile spelllang spellsuggest spf spl splitbelow splitright spr sps sr srr ss ssl ssop st sta stal startofline statusline stl stmp sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn synmaxcol syntax ta tabline tabpagemax tabstop tag tagbsearch taglength tagrelative tags tagstack tal tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tpm tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose verbosefile vfile vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wfw wh whichwrap wi wig wildchar wildcharm wildignore wildmenu wildmode wildoptions wim winaltkeys window winfixheight winfixwidth winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wop wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww 
 
 " vimOptions: These are the turn-off setting variants {{{2
-syn keyword vimOption contained        noacd noai noakm noallowrevins noaltkeymap noanti noantialias noar noarab noarabic noarabicshape noari noarshape noautochdir noautoindent noautoread noautowrite noautowriteall noaw noawa nobackup noballooneval nobeval nobin nobinary nobiosk nobioskey nobk nobl nobomb nobuflisted nocf noci nocin nocindent nocompatible noconfirm noconsk noconskey nocopyindent nocp nocscopetag nocscopeverbose nocst nocsverb nocuc nocul nocursorcolumn nocursorline nodeco nodelcombine nodg nodiff nodigraph nodisable noea noeb noed noedcompatible noek noendofline noeol noequalalways noerrorbells noesckeys noet noex noexpandtab noexrc nofen nofk nofkmap nofoldenable nogd nogdefault noguipty nohid nohidden nohk nohkmap nohkmapp nohkp nohls nohlsearch noic noicon noignorecase noim noimc noimcmdline noimd noincsearch noinf noinfercase noinsertmode nois nojoinspaces nojs nolazyredraw nolbr nolinebreak nolisp nolist noloadplugins nolpl nolz noma nomacatsui nomagic nomh noml nomod nomodeline nomodifiable nomodified nomore nomousef nomousefocus nomousehide nonu nonumber nopaste nopi nopreserveindent nopreviewwindow noprompt nopvw noreadonly noremap norestorescreen norevins nori norightleft norightleftcmd norl norlc noro nors noru noruler nosb nosc noscb noscrollbind noscs nosecure nosft noshellslash noshelltemp noshiftround noshortname noshowcmd noshowfulltag noshowmatch noshowmode nosi nosm nosmartcase nosmartindent nosmarttab nosmd nosn nosol nospell nosplitbelow nosplitright nospr nosr nossl nosta nostartofline nostmp noswapfile noswf nota notagbsearch notagrelative notagstack notbi notbidi notbs notermbidi noterse notextauto notextmode notf notgst notildeop notimeout notitle noto notop notr nottimeout nottybuiltin nottyfast notx novb novisualbell nowa nowarn nowb noweirdinvert nowfh nowfw nowildmenu nowinfixheight nowinfixwidth nowiv nowmnu nowrap nowrapscan nowrite nowriteany nowritebackup nows 
+syn keyword vimOption contained        noacd noai noakm noallowrevins noaltkeymap noanti noantialias noar noarab noarabic noarabicshape noari noarshape noautochdir noautoindent noautoread noautowrite noautowriteall noaw noawa nobackup noballooneval nobeval nobin nobinary nobiosk nobioskey nobk nobl nobomb nobuflisted nocf noci nocin nocindent nocompatible noconfirm noconsk noconskey nocopyindent nocp nocscopetag nocscopeverbose nocst nocsverb nocuc nocul nocursorcolumn nocursorline nodeco nodelcombine nodg nodiff nodigraph nodisable noea noeb noed noedcompatible noek noendofline noeol noequalalways noerrorbells noesckeys noet noex noexpandtab noexrc nofen nofk nofkmap nofoldenable nogd nogdefault noguipty nohid nohidden nohk nohkmap nohkmapp nohkp nohls nohlsearch noic noicon noignorecase noim noimc noimcmdline noimd noincsearch noinf noinfercase noinsertmode nois nojoinspaces nojs nolazyredraw nolbr nolinebreak nolisp nolist noloadplugins nolpl nolz noma nomacatsui nomagic nomh noml nomod nomodeline nomodifiable nomodified nomore nomousef nomousefocus nomousehide nonu nonumber noopendevice* * nopaste nopi nopreserveindent nopreviewwindow noprompt nopvw noreadonly noremap norestorescreen norevins nori norightleft norightleftcmd norl norlc noro nors noru noruler nosb nosc noscb noscrollbind noscs nosecure nosft noshellslash noshelltemp noshiftround noshortname noshowcmd noshowfulltag noshowmatch noshowmode nosi nosm nosmartcase nosmartindent nosmarttab nosmd nosn nosol nospell nosplitbelow nosplitright nospr nosr nossl nosta nostartofline nostmp noswapfile noswf nota notagbsearch notagrelative notagstack notbi notbidi notbs notermbidi noterse notextauto notextmode notf notgst notildeop notimeout notitle noto notop notr nottimeout nottybuiltin nottyfast notx novb novisualbell nowa nowarn nowb noweirdinvert nowfh nowfw nowildmenu nowinfixheight nowinfixwidth nowiv nowmnu nowrap nowrapscan nowrite nowriteany nowritebackup nows 
 
 " vimOptions: These are the invertible variants {{{2
-syn keyword vimOption contained        invacd invai invakm invallowrevins invaltkeymap invanti invantialias invar invarab invarabic invarabicshape invari invarshape invautochdir invautoindent invautoread invautowrite invautowriteall invaw invawa invbackup invballooneval invbeval invbin invbinary invbiosk invbioskey invbk invbl invbomb invbuflisted invcf invci invcin invcindent invcompatible invconfirm invconsk invconskey invcopyindent invcp invcscopetag invcscopeverbose invcst invcsverb invcuc invcul invcursorcolumn invcursorline invdeco invdelcombine invdg invdiff invdigraph invdisable invea inveb inved invedcompatible invek invendofline inveol invequalalways inverrorbells invesckeys invet invex invexpandtab invexrc invfen invfk invfkmap invfoldenable invgd invgdefault invguipty invhid invhidden invhk invhkmap invhkmapp invhkp invhls invhlsearch invic invicon invignorecase invim invimc invimcmdline invimd invincsearch invinf invinfercase invinsertmode invis invjoinspaces invjs invlazyredraw invlbr invlinebreak invlisp invlist invloadplugins invlpl invlz invma invmacatsui invmagic invmh invml invmod invmodeline invmodifiable invmodified invmore invmousef invmousefocus invmousehide invnu invnumber invpaste invpi invpreserveindent invpreviewwindow invprompt invpvw invreadonly invremap invrestorescreen invrevins invri invrightleft invrightleftcmd invrl invrlc invro invrs invru invruler invsb invsc invscb invscrollbind invscs invsecure invsft invshellslash invshelltemp invshiftround invshortname invshowcmd invshowfulltag invshowmatch invshowmode invsi invsm invsmartcase invsmartindent invsmarttab invsmd invsn invsol invspell invsplitbelow invsplitright invspr invsr invssl invsta invstartofline invstmp invswapfile invswf invta invtagbsearch invtagrelative invtagstack invtbi invtbidi invtbs invtermbidi invterse invtextauto invtextmode invtf invtgst invtildeop invtimeout invtitle invto invtop invtr invttimeout invttybuiltin invttyfast invtx invvb invvisualbell invwa invwarn invwb invweirdinvert invwfh invwfw invwildmenu invwinfixheight invwinfixwidth invwiv invwmnu invwrap invwrapscan invwrite invwriteany invwritebackup invws 
+syn keyword vimOption contained        invacd invai invakm invallowrevins invaltkeymap invanti invantialias invar invarab invarabic invarabicshape invari invarshape invautochdir invautoindent invautoread invautowrite invautowriteall invaw invawa invbackup invballooneval invbeval invbin invbinary invbiosk invbioskey invbk invbl invbomb invbuflisted invcf invci invcin invcindent invcompatible invconfirm invconsk invconskey invcopyindent invcp invcscopetag invcscopeverbose invcst invcsverb invcuc invcul invcursorcolumn invcursorline invdeco invdelcombine invdg invdiff invdigraph invdisable invea inveb inved invedcompatible invek invendofline inveol invequalalways inverrorbells invesckeys invet invex invexpandtab invexrc invfen invfk invfkmap invfoldenable invgd invgdefault invguipty invhid invhidden invhk invhkmap invhkmapp invhkp invhls invhlsearch invic invicon invignorecase invim invimc invimcmdline invimd invincsearch invinf invinfercase invinsertmode invis invjoinspaces invjs invlazyredraw invlbr invlinebreak invlisp invlist invloadplugins invlpl invlz invma invmacatsui invmagic invmh invml invmod invmodeline invmodifiable invmodified invmore invmousef invmousefocus invmousehide invnu invnumber invopendevice* * invpaste invpi invpreserveindent invpreviewwindow invprompt invpvw invreadonly invremap invrestorescreen invrevins invri invrightleft invrightleftcmd invrl invrlc invro invrs invru invruler invsb invsc invscb invscrollbind invscs invsecure invsft invshellslash invshelltemp invshiftround invshortname invshowcmd invshowfulltag invshowmatch invshowmode invsi invsm invsmartcase invsmartindent invsmarttab invsmd invsn invsol invspell invsplitbelow invsplitright invspr invsr invssl invsta invstartofline invstmp invswapfile invswf invta invtagbsearch invtagrelative invtagstack invtbi invtbidi invtbs invtermbidi invterse invtextauto invtextmode invtf invtgst invtildeop invtimeout invtitle invto invtop invtr invttimeout invttybuiltin invttyfast invtx invvb invvisualbell invwa invwarn invwb invweirdinvert invwfh invwfw invwildmenu invwinfixheight invwinfixwidth invwiv invwmnu invwrap invwrapscan invwrite invwriteany invwritebackup invws 
 
 " termcap codes (which can also be set) {{{2
-syn keyword vimOption contained        t_AB t_AF t_al t_AL t_bc t_cd t_ce t_Ce t_cl t_cm t_Co t_cs t_Cs t_CS t_CV t_da t_db t_dl t_DL t_EI    end insert mode (block cursor shape)            *t_EI* *'t_EI'* t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_SI    start insert mode (bar cursor shape)            *t_SI* *'t_SI'* t_so t_sr t_te t_ti t_ts t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR 
+syn keyword vimOption contained        t_AB t_AF t_al t_AL t_bc t_cd t_ce t_Ce t_cl t_cm t_Co t_cs t_Cs t_CS t_CV t_da t_db t_dl t_DL t_EI t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_te t_ti t_ts t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR 
 syn match   vimOption contained        "t_%1"
 syn match   vimOption contained        "t_#2"
 syn match   vimOption contained        "t_#4"
@@ -44,7 +44,7 @@ syn keyword vimErrSetting contained   hardtabs ht w1200 w300 w9600
 
 " AutoCmd Events {{{2
 syn case ignore
-syn keyword vimAutoEvent contained     BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre Cmd-event CmdwinEnter CmdwinLeave ColorScheme CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter InsertChange InsertEnter InsertLeave MenuPopup QuickFixCmdPost QuickFixCmdPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse User UserGettingBored VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave 
+syn keyword vimAutoEvent contained     BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre Cmd-event CmdwinEnter CmdwinLeave ColorScheme CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter InsertChange InsertEnter InsertLeave MenuPopup QuickFixCmdPost QuickFixCmdPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse User UserGettingBored VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave 
 
 " Highlight commonly used Groupnames {{{2
 syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo 
@@ -55,7 +55,7 @@ syn match vimHLGroup contained        "Conceal"
 syn case match
 
 " Function Names {{{2
-syn keyword vimFuncName contained      add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call changenr char2nr cindent col complete complete_add complete_check confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty escape eval eventhandler executable exists expand expr8 extend feedkeys filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function garbagecollect get getbufline getbufvar getchar getcharmod getcmdline getcmdpos getcmdtype getcwd getfontname getfperm getfsize getftime getftype getline getloclist getpos getqflist getreg getregtype gettabwinvar getwinposx getwinposy getwinvar glob globpath has has_key hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputlist inputrestore inputsave inputsecret insert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matcharg matchend matchlist matchstr max min mkdir mode nextnonblank nr2char pathshorten prevnonblank printf pumvisible range readfile reltime reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchdecl searchpair searchpairpos searchpos server2client serverlist setbufvar setcmdpos setline setloclist setpos setqflist setreg settabwinvar setwinvar simplify sort soundfold spellbadword spellsuggest split str2nr strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tempname tolower toupper tr type values virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winrestview winsaveview winwidth writefile 
+syn keyword vimFuncName contained      add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call changenr char2nr cindent col complete complete_add complete_check confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty escape eval eventhandler executable exists expand expr8 extend feedkeys filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function garbagecollect get getbufline getbufvar getchar getcharmod getcmdline getcmdpos getcmdtype getcwd getfontname getfperm getfsize getftime getftype getline getloclist getpos getqflist getreg getregtype gettabwinvar getwinposx getwinposy getwinvar glob globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputlist inputrestore inputsave inputsecret insert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matcharg matchend matchlist matchstr max min mkdir mode nextnonblank nr2char pathshorten prevnonblank printf pumvisible range readfile reltime reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchdecl searchpair searchpairpos searchpos server2client serverlist setbufvar setcmdpos setline setloclist setpos setqflist setreg settabwinvar setwinvar shellescape simplify sort soundfold spellbadword spellsuggest split str2nr strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tempname tolower toupper tr type values virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winrestview winsaveview winwidth writefile 
 
 "--- syntax above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1
@@ -114,7 +114,7 @@ syn cluster vimFuncBodyList contains=vimIsCommand,vimFunction,vimFunctionError,v
 if !exists("g:vimsyntax_noerror")
  syn match   vimFunctionError  "\<fu\%[nction]!\=\s\+\zs\U\i\{-}\ze\s*("                       contains=vimFuncKey,vimFuncBlank nextgroup=vimFuncBody
 endif
-syn match   vimFunction        "\<fu\%[nction]!\=\s\+\(<[sS][iI][dD]>\|[Ss]:\|\u\)\i*\ze\s*("  contains=@vimFuncList nextgroup=vimFuncBody
+syn match   vimFunction        "\<fu\%[nction]!\=\s\+\(\(<[sS][iI][dD]>\|[Ss]:\|\u\)\i*\|g:\(\I\i*\.\)\+\I\i*\)\ze\s*("        contains=@vimFuncList nextgroup=vimFuncBody
 syn region  vimFuncBody  contained     start=")"       end="\<endf\%[unction]"         contains=@vimFuncBodyList
 syn match   vimFuncVar   contained     "a:\(\I\i*\|\d\+\)"
 syn match   vimFuncSID   contained     "\c<sid>\|\<s:"
@@ -163,7 +163,7 @@ syn case ignore
 syn keyword vimUserAttrbKey   contained        bar     ban[g]  cou[nt] ra[nge] com[plete]      n[args] re[gister]
 syn keyword vimUserAttrbCmplt contained        augroup buffer command dir environment event expression file function help highlight mapping menu option something tag tag_listfiles var
 syn keyword vimUserAttrbCmplt contained        custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
-syn match   vimUserAttrbCmpltFunc contained    ",\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
+syn match   vimUserAttrbCmpltFunc contained    ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
 
 syn case match
 syn match   vimUserAttrbCmplt contained        "custom,\u\w*"
@@ -195,7 +195,7 @@ syn match  vimPatSep        contained       "\\|"
 syn region vimPatSepZone       oneline   contained   matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]"   contains=@vimStringGroup
 syn region vimPatRegion        contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
 syn match  vimNotPatSep        contained       "\\\\"
-syn cluster vimStringGroup     contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone
+syn cluster vimStringGroup     contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
 syn region vimString   oneline keepend start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+   contains=@vimStringGroup
 syn region vimString   oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
 syn region vimString   oneline start=+=!+lc=1  skip=+\\\\\|\\!+ end=+!+        contains=@vimStringGroup
@@ -235,7 +235,7 @@ syn match  vimMark  "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumb
 syn match  vimMarkNumber       "[-+]\d\+"              nextgroup=vimSubst contained contains=vimOper
 syn match  vimPlainMark contained      "'[a-zA-Z0-9]"
 
-syn match  vimRegister '[^,;]\zs"[a-zA-Z0-9.%#:_\-/][^a-zA-Z_"]\ze'
+syn match  vimRegister '[^,;]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
 syn match  vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
 syn match  vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
 syn match  vimRegister '@"'
@@ -281,7 +281,7 @@ syn case match
 " Maps {{{2
 " ====
 syn match   vimMap     "\<map!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
-syn keyword vimMap     cm[ap] cno[remap] im[ap] ino[remap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] vm[ap] vn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn keyword vimMap     cm[ap] cno[remap] im[ap] ino[remap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] snor[emap] vm[ap] vn[oremap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
 syn match   vimMapLhs    contained     "\S\+"  contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
 syn match   vimMapBang   contained     "!"     skipwhite nextgroup=vimMapMod,vimMapLhs
 syn match   vimMapMod    contained     "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
@@ -306,7 +306,7 @@ syn match   vimMenuBang     "!"     contained skipwhite nextgroup=@vimMenuList
 " Angle-Bracket Notation (tnx to Michael Geddes) {{{2
 " ======================
 syn case ignore
-syn match vimNotation  "\(\\\|<lt>\)\=<\([scam]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
+syn match vimNotation  "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
 syn match vimNotation  "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"     contains=vimBracket
 syn match vimNotation  "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"               contains=vimBracket
 syn match vimNotation  '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1                     contains=vimBracket
@@ -317,9 +317,9 @@ syn case match
 
 " User Function Highlighting (following Gautam Iyer's suggestion) {{{2
 " ==========================
-syn match vimFunc              "\%([sS]:\|<[sS][iI][dD]>\)\=\I\i*\ze\s*("      contains=vimFuncName,vimUserFunc,vimCommand,vimNotFunc,vimExecute
-syn match vimUserFunc contained        "\%([sS]:\|<[sS][iI][dD]>\)\i\+\|\<\u\i*\>\|\<if\>"     contains=vimNotation,vimCommand
-syn match vimNotFunc  contained        "\<[aiAIrR]("
+syn match vimFunc              "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9.]\+\.\)*\I[a-zA-Z0-9.]*\)\ze\s*("               contains=vimFuncName,vimUserFunc,vimExecute
+syn match vimUserFunc contained        "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9.]\+\.\)*\I[a-zA-Z0-9.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
+syn match vimNotFunc   "\<if\>\|\<el\%[seif]\>"
 
 " Norm
 " ====
@@ -470,7 +470,7 @@ syn match vimCtrlChar       "[\ 1-\b\v\ f-\1f]"
 " Beginners - Patterns that involve ^ {{{2
 " =========
 syn match  vimLineComment      +^[ \t:]*".*$+  contains=@vimCommentGroup,vimCommentString,vimCommentTitle
-syn match  vimCommentTitle     '"\s*\u\w*\(\s\+\u\w*\)*:'hs=s+1        contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
+syn match  vimCommentTitle     '"\s*\%([sS]:\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1    contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
 syn match  vimContinue "^\s*\\"
 syn region vimString   start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
 syn match  vimCommentTitleLeader       '"\s\+'ms=s+1   contained
@@ -517,12 +517,21 @@ if (has("python") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/p
 endif
 
 " [-- tcl --] {{{3
-if (has("tcl") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
- unlet! b:current_syntax
- syn include @vimTclScript <sfile>:p:h/tcl.vim
- syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
- syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+if has("win32") || has("win95") || has("win64") || has("win16")
+ " apparently has("tcl") has been hanging vim on some windows systems with cygwin
+ let trytcl= (&shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') || g:vimembedscript
+else
+ let trytcl= 1
+endif
+if trytcl
+ if (has("tcl") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
+  unlet! b:current_syntax
+  syn include @vimTclScript <sfile>:p:h/tcl.vim
+  syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
+  syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+ endif
 endif
+unlet trytcl
 
 " [-- mzscheme --] {{{3
 if (has("mzscheme") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
@@ -610,7 +619,6 @@ hi def link vimMenuMod      vimMapMod
 hi def link vimMenuNameMore    vimMenuName
 hi def link vimMtchComment     vimComment
 hi def link vimNorm    vimCommand
-hi def link vimNotFunc vimCommand
 hi def link vimNotPatSep       vimString
 hi def link vimPatSepR vimPatSep
 hi def link vimPatSepZ vimPatSep
@@ -670,6 +678,7 @@ hi def link vimKeyword      Statement
 hi def link vimMark    Number
 hi def link vimMenuName        PreProc
 hi def link vimNotation        Special
+hi def link vimNotFunc vimCommand
 hi def link vimNumber  Number
 hi def link vimOper    Operator
 hi def link vimOption  PreProc
index 64d3b6953a01a19921d3400713064be594355565..cd3fed4a618c98302e6f9d7fb03df499ab7c6f0f 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:  Johannes Zellner <johannes@zellner.org>
 "              Author and previous maintainer:
 "              Gautam H. Mudunuri <gmudunur@informatica.com>
-" Last Change: Tue, 27 Apr 2004 14:54:59 CEST
+" Last Change: Di, 09 Mai 2006 23:10:23 CEST
 " $Id$
 "
 " REFERENCES:
@@ -48,7 +48,7 @@ syn match   xdefaultsLineEnd  contained +\\n$+
 " COMMENTS
 
 " note, that the '!' must be at the very first position of the line
-syn match   xdefaultsComment "^!.*$"                     contains=xdefaultsTodo
+syn match   xdefaultsComment "^!.*$"                     contains=xdefaultsTodo,@Spell
 
 " lines starting with a '#' mark and which are not preprocessor
 " lines are skipped.  This is not part of the xrdb documentation.
@@ -56,7 +56,7 @@ syn match   xdefaultsComment "^!.*$"                     contains=xdefaultsTodo
 " having a look at xrdb.c:GetEntries()
 syn match   xdefaultsCommentH          "^#.*$"
 "syn region  xdefaultsComment start="^#"  end="$" keepend contains=ALL
-syn region  xdefaultsComment start="/\*" end="\*/"       contains=xdefaultsTodo
+syn region  xdefaultsComment start="/\*" end="\*/"       contains=xdefaultsTodo,@Spell
 
 syntax match xdefaultsCommentError     "\*/"
 
diff --git a/runtime/tutor/tutor.cs b/runtime/tutor/tutor.cs
new file mode 100644 (file)
index 0000000..baaef66
--- /dev/null
@@ -0,0 +1,812 @@
+===============================================================================
+=    V í t e j t e   v  t u t o r i a l u   V I M       -    Verze 1.5        =
+===============================================================================
+
+     Vim je velmi výkonný editor, který má pøíli¹ mnoho pøíkazù na to, aby
+     mohly být v¹echny vysvìtlené ve výuce jako tato. Tato výuka obsahuje
+     dostateèné mno¾ství pøíkazù na to, aby bylo mo¾né pou¾ívat Vim jako
+     víceúèelový editor.
+
+     Pøibli¾ný èas potøebný ke zvládnutí této výuky je 25-30 minut, zále¾í
+     na tom, kolik èasu strávíte pøezku¹ováním.
+
+     Pøíkazy v lekcích upravují text. Vytvoø kopii tohoto souboru pro
+     procvièování (pøi startu "vimtutor" je ji¾ toto kopie).
+
+     Je dùle¾ité pamatovat, ¾e tato výuka je vytvoøena pro výuku pou¾íváním.
+     To znamená, ¾e je potøeba si pøíkazy vyzkou¹et pro jejich správné
+     nauèení. Pokud si jen ète¹ text, pøíkazy zapomene¹!
+
+     Nyní se pøesvìdète, ¾e Shift-Lock NENÍ stlaèený a nìkolikrát stisknìte
+     klávesu  j   aby se kurzor posunul natolik, ¾e lekce 1.1 zaplní celou
+     obrazovku.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 1.1:  POHYB KURZORU
+
+
+   ** Pro pohyb kurzoru pou¾ívej klávesy h,j,k,l jak je znázornìno ní¾e. **
+            ^
+            k             Funkce: Klávesa h je vlevo a vykoná pohyb vlevo.
+       < h      l >               Klávesa l je vpravo a vykoná pohyb vpravo.
+            j                     Klávesa j vypadá na ¹ipku dolu.
+            v
+  1. Pohybuj kurzorem po obrazovce dokud si na to nezvykne¹.
+
+  2. Dr¾ klávesu pro pohyb dolu (j), dokud se její funkce nezopakuje.
+---> Teï ví¹ jak se pøesunout na následující lekci.
+
+  3. Pou¾itím klávesy dolu pøejdi na lekci 1.2.
+
+Poznámka: Pokud si nìkdy nejsi jist nìèím, co jsi napsal, stlaè <ESC> pro
+          pøechod do Normálního módu. Poté pøepi¹ po¾adovaný pøíkaz.
+
+Poznámka: Kurzorové klávesy také fungují, av¹ak pou¾ívání hjkl je rychlej¹í
+          jakmile si na nìj zvykne¹.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.2: SPU©TÌNÍ A UKONÈENÍ VIM
+
+
+  !! POZNÁMKA: Pøed vykonáním tìchto krokù si pøeèti celou lekci!!
+
+  1. Stlaè <ESC> (pro uji¹tìní, ¾e se nachází¹ v Normálním módu).
+
+  2. Napi¹:                    :q! <ENTER>.
+
+---> Tímto ukonèí¹ editor BEZ ulo¾ení zmìn, které si vykonal.
+     Pokud chce¹ ulo¾it zmìny a ukonèit editor napi¹:
+                               :wq  <ENTER>
+
+  3. A¾ se dostane¹ na pøíkazový øádek, napi¹ pøíkaz, kterým se dostane¹ zpìt
+     do této výuky. To mù¾e být: vimtutor <ENTER>
+     Bì¾nì se pou¾ívá:          vim tutor <ENTER>
+
+---> 'vim' znamená spu¹tìní editoru, 'tutor' je soubor k editaci.
+
+  4. Pokud si tyto kroky spolehlivì pamatuje¹, vykonej kroky 1 a¾ 3, èím¾
+     ukonèí¹ a znovu spustí¹ editor. Potom pøesuò kurzor dolu na lekci 1.3.
+     
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.3: ÚPRAVA TEXTU - MAZÁNÍ
+
+
+  ** Stisknutím klávesy  x  v Normálním módu sma¾e¹ znak na místì kurzoru. **
+
+  1. Pøesuò kurzor ní¾e na øádek oznaèený --->.
+
+  2. K odstranìní chyb pøejdi kurzorem na znak, který chce¹ smazat.
+
+  3. Stlaè klávesu  x  k odstranìní nechtìných znakù.
+
+  4. Opakuj kroky 2 a¾ 4 dokud není vìta správnì.
+
+---> Krááva skoèèilla pøess mìssíc.
+
+  5. Pokud je vìta správnì, pøejdi na lekci 1.4.
+
+POZNÁMKA: Nesna¾ se pouze zapamatovat pøedvádìné pøíkazy, uè se je pou¾íváním.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ
+
+
+      ** Stlaèení klávesy  i  v Normálním módu umo¾òuje vkládání textu. **
+
+  1. Pøesuò kurzor na první øádek oznaèený --->.
+
+  2. Pro upravení prvního øádku do podoby øádku druhého, pøesuò kurzor na
+     první znak za místo, kde má být text vlo¾ený.
+
+  3. Stlaè  i  a napi¹ potøebný dodatek.
+
+  4. Po opravení ka¾dé chyby stlaè <ESC> pro návrat do Normálního módu.
+     Opakuj kroky 2 a¾ 4 dokud není vìta správnì.
+
+---> Nìjaký txt na této .
+---> Nìjaký text chybí na této øádce.
+
+  5. Pokud ji¾ ovládá¹ vkládání textu, pøejdi na následující shrnutí.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 1
+
+
+  1. Kurzorem se pohybuje pomocí ¹ipek nebo klávesami hjkl.
+       h (vlevo)       j (dolu)        k (nahoru)      l (vpravo)
+
+  2. Pro spu¹tìní Vimu (z pøíkazového øádku) napi¹: vim SOUBOR <ENTER>
+
+  3. Pro ukonèení Vimu napi¹: <ESC>  :q!  <ENTER>  bez ulo¾ení zmìn.
+                      anebo: <ESC>  :wq  <ENTER>  pro ulo¾ení zmìn.
+
+  4. Pro smazání znaku pod kurzorem napi¹ v Normálním módu:  x
+
+  5. Pro vkládání textu od místa kurzoru napi¹ v Normálním módu:
+        i     vkládaný text    <ESC>
+
+POZNÁMKA: Stlaèení <ESC> tì pøemístí do Normálního módu nebo zru¹í nechtìný
+      a èásteènì dokonèený pøíkaz.
+
+Nyní pokraèuj Lekcí 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 2.1: PØÍKAZY MAZÁNÍ
+
+
+              ** Pøíkaz  dw  sma¾e znaky do konce slova. **
+
+  1. Stlaè  <ESC>  k ubezpeèení, ¾e jsi v Normálním módu.
+
+  2. Pøesuò kurzor ní¾e na øádek oznaèený --->.
+
+  3. Pøesuò kurzor na zaèátek slova, které je potøeba smazat.
+
+  4. Napi¹   dw         , aby slovo zmizelo.
+
+POZNÁMKA: Písmena dw se zobrazí na posledním øádku obrazovky jakmile je
+         napí¹e¹. Kdy¾ napí¹e¹ nìco ¹patnì, stlaè  <ESC>  a zaèni znova.
+
+---> Jsou tu nìjaká slova zábava, která nepatøí list do této vìty.
+
+  5. Opakuj kroky 3 a¾ 4 dokud není vìta správnì a pøejdi na lekci 2.2.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 2.2: VÍCE PØÍKAZÙ MAZÁNÍ
+
+
+          ** Napsání pøíkazu  d$  sma¾e v¹e a¾ do konce øádky. **
+
+  1. Stlaè  <ESC>  k ubezpeèení, ¾e jsi v Normálním módu.
+
+  2. Pøesuò kurzor ní¾e na øádek oznaèený --->.
+
+  3. Pøesuò kurzor na konec správné vìty (ZA první teèku).
+
+  4. Napi¹  d$  ,aby jsi smazal znaky a¾ do konce øádku.
+
+---> Nìkdo napsal konec této vìty dvakrát. konec této vìty dvakrát.
+
+
+  5. Pøejdi na lekci 2.3 pro pochopení toho, co se stalo.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Lekce 2.3: ROZ©IØOVACÍ PØÍKAZY A OBJEKTY
+
+
+  Formát mazacího pøíkazu  d  je následující:
+
+        [èíslo]   d   objekt     NEBO     d   [èíslo]   objekt
+  Kde:
+    èíslo - udává kolikrát se pøíkaz vykoná (volitelné, výchozí=1).
+    d - je pøíkaz mazání.
+    objekt - udává na èem se pøíkaz vykonává (vypsané ní¾e).
+
+  Krátký výpis objektù:
+    w - od kurzoru do konce slova, vèetnì mezer.
+    e - od kurzoru do konce slova, BEZ mezer.
+    $ - od kurzoru do konce øádku.
+
+POZNÁMKA:  Stlaèením klávesy objektu v Normálním módu se kurzor pøesune na
+           místo upøesnìné ve výpisu objektù.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 2.4: VÝJIMKA Z 'PØÍKAZ-OBJEKT'
+
+
+                 ** Napsáním   dd   sma¾e¹ celý øádek. **
+
+  Vzhledem k èastosti mazání celého øádku se autoøi Vimu rozhodli, ¾e bude
+  jednodu¹í napsat prostì dvì d k smazání celého øádku.
+
+  1. Pøesuò kurzor na druhý øádek spodního textu.
+  2. Napi¹  dd  pro smazání øádku.
+  3. Pøejdi na ètvrtý øádek.
+  4. Napi¹   2dd   (vzpomeò si  èíslo-pøíkaz-objekt) pro smazání dvou øádkù.
+
+      1)  Rù¾e jsou èervené,
+      2)  Bláto je zábavné,
+      3)  Fialky jsou modré,
+      4)  Mám auto,
+      5)  Hodinky ukazují èas,
+      6)  Cukr je sladký,
+      7)  A to jsi i ty.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Lekce 2.5: PØÍKAZ UNDO
+
+
+   ** Stlaè  u pro vrácení posledního pøíkazu,  U  pro celou øádku. **
+
+  1. Pøesuò kurzor ní¾e na øádek oznaèený ---> a pøemísti ho na první chybu.
+  2. Napi¹  x  pro smazání prvního nechtìného znaku.
+  3. Teï napi¹  u  èím¾ vrátí¹ zpìt poslední vykonaný pøíkaz.
+  4. Nyní oprav v¹echny chyby na øádku pomocí pøíkazu  x  .
+  5. Napi¹ velké  U  èím¾ vrátí¹ øádek do pùvodního stavu.
+  6. Teï napi¹  u  nìkolikrát, èím¾ vrátí¹ zpìt pøíkaz  U  .
+  7. Stlaè CTRL-R (klávesu CTRL dr¾ stlaèenou a stiskni R) nìkolikrát,
+     èím¾ vrátí¹ zpìt pøedtím vrácené pøíkazy (redo).
+
+---> Opprav chybby nna toomto øádku a nahraï je pommocí undo.
+
+  8. Toto jsou velmi u¾iteèné pøíkazy. Nyní pøejdi na souhrn Lekce 2.
+
+  
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 2
+
+
+  1. Pro smazání znakù od kurzoru do konce slova napi¹:    dw
+
+  2. Pro smazání znakù od kurzoru do konce øádku napi¹:    d$
+
+  3. Pro smazání celého øádku napi¹:    dd
+
+  4. Formát pøíkazu v Normálním módu je:
+
+       [èíslo]   pøíkaz   objekt    NEBO    pøíkaz     [èíslo]   objekt
+     kde:
+       èíslo - udává poèet opakování pøíkazu
+       pøíkaz - udává co je tøeba vykonat, napøíklad  d  ma¾e
+       objekt - udává rozsah pøíkazu, napøíklad  w  (slovo),
+               $ (do konce øádku), atd.
+
+  5. Pro vrácení pøede¹lé èinnosti, napi¹:     u (malé u)
+     Pro vrácení v¹ech úprav na øádku napi¹:   U (velké U)
+     Pro vrácení vrácených úprav (redo) napi¹: CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Lekce 3.1: PØÍKAZ VLO®IT
+
+
+       ** Pøíka  p  vlo¾í poslední vymazaný text za kurzor. **
+
+  1. Pøesuò kurzor ní¾e na poslední øádek textu.
+
+  2. Napi¹  dd  pro smazání øádku a jeho ulo¾ení do bufferu.
+
+  3. Pøesuò kurzor VÝ©E tam, kam smazaný øádek patøí.
+
+  4. V Normálním módu napi¹  p  pro opìtné vlo¾ení øádku.
+
+  5. Opakuj kroky 2 a¾ 4 dokud øádky nebudou ve správném poøadí.
+
+     d) Také se doká¾e¹ vzdìlávat?
+     b) Fialky jsou modré,
+     c) Inteligence se uèí,
+     a) Rù¾e jsou èervené,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Lekce 3.2: PØÍKAZ NAHRAZENÍ
+
+
+          ** Napsáním  r  a znaku se nahradí znak pod kurzorem. **
+
+  1. Pøesuò kurzor ní¾e na první øádek oznaèený --->.
+
+  2. Pøesuò kurzor na zaèátek první chyby.
+
+  3. Napi¹  r  a potom znak, který nahradí chybu.
+
+  4. Opakuj kroky 2 a¾ 3 dokud není první øádka správnì.
+
+--->  Kdi¾ byl pzán tento øádeg, nìkdu stla¾il ¹paqné klávesy!
+--->  Kdy¾ byl psán tento øádek, nìkdo stlaèíl ¹patné klávesy!
+
+  5. Nyní pøejdi na Lekci 3.2.
+
+POZNÁMKA: Zapamatuj si, ¾e by ses mìl uèit pou¾íváním, ne zapamatováním.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Lekce 3.3: PØÍKAZ ÚPRAVY
+
+
+         ** Pokud chce¹ zmìnit èást nebo celé slovo, napi¹  cw . **
+
+  1. Pøesuò kurzor ní¾e na první øádek oznaèený --->.
+
+  2. Umísti kurzor na písmeno i v slovì øi»ok.
+
+  3. Napi¹  cw  a oprav slovo (v tomto pøípadì napi¹ 'ádek'.)
+
+  4. Stlaè <ESC> a pøejdi na dal¹í chybu (první znak, který tøeba zmìnit.)
+
+  5. Opakuj kroky 3 a¾ 4 dokud není první vìta stejná jako ta druhá.
+
+---> Tento øi»ok má nìkolik skic, které psadoinsa zmìnit pasdgf pøíkazu.
+---> Tento øádek má nìkolik slov, které potøebují zmìnit pomocí pøíkazu.
+
+V¹imni si, ¾e  cw  nejen nahrazuje slovo, ale také pøemístí do vkládání.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Lekce 3.4: VÍCE ZMÌN POU®ITÍM c
+
+
+   ** Pøíkaz pro úpravu se dru¾í se stejnými objekty jako ten pro mazání. **
+
+  1. Pøíkaz pro úpravu pracuje stejnì jako pro mazání. Formát je:
+
+       [èíslo]   c   objekt     NEBO      c    [èíslo]   objekt
+
+  2. Objekty jsou také shodné, jako napø.: w (slovo), $ (konec øádku), atd.
+
+  3. Pøejdi ní¾e na první øádek oznaèený --->.
+
+  4. Pøesuò kurzor na první rozdíl.
+
+  5. Napi¹  c$  pro upravení zbytku øádku podle toho druhého a stlaè <ESC>.
+
+---> Konec tohoto øádku potøebuje pomoc, aby byl jako ten druhý.
+---> Konec tohoto øádku potøebuje opravit pou¾itím pøíkazu  c$  .
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 3
+
+
+  1. Pro vlo¾ení textu, který byl smazán, napi¹  p  . To vlo¾í smazaný text
+     ZA kurzor (pokud byl øádek smazaný, pøejde na øádek pod kurzorem).
+
+  2. Pro nahrazení znaku pod kurzorem, napi¹  r  a potom znak, kterým
+     chce¹ pùvodní znak nahradit.
+
+  3. Pøíkaz na upravování umo¾òuje zmìnit specifikovaný objekt od kurzoru
+     do konce objektu. Napøíklad: Napi¹  cw  ,èím¾ zmìní¹ text od pozice
+     kurzoru do konce slova,  c$  zmìní text do konce øádku.
+
+  4. Formát pro nahrazování je:
+
+        [èíslo]   c   objekt      NEBO     c   [èíslo]   objekt
+
+Nyní pøejdi na následující lekci.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 4.1: POZICE A STATUS SOUBORU
+
+
+  ** Stlaè CTRL-g pro zobrazení své pozice v souboru a statusu souboru.
+     Stlaè SHIFT-G pro pøechod na øádek v souboru. **
+
+  Poznámka: Pøeèti si celou lekci ne¾ zaène¹ vykonávat kroky!!
+
+  1. Dr¾ klávesu Ctrl stlaèenou a stiskni  g  . Vespod obrazovky se zobrazí
+     stavový øádek s názvem souboru a øádkou na které se nachází¹. Zapamatuj
+     si èíslo øádku pro krok 3.
+
+  2. Stlaè shift-G pro pøesun na konec souboru.
+
+  3. Napi¹ èíslo øádku na kterém si se nacházel a stlaè shift-G. To tì
+     vrátí na øádek, na kterém jsi døíve stiskl Ctrl-g.
+     (Kdy¾ pí¹e¹ èísla, tak se NEZOBRAZUJÍ na obrazovce.)
+
+  4. Pokud se cítí¹ schopný vykonat tyto kroky, vykonej je.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 4.2: PØÍKAZ VYHLEDÁVÁNÍ
+
+
+     ** Napi¹  /  následované øetìzcem pro vyhledání onoho øetìzce. **
+
+  1. Stiskni / v Normálním módu.  V¹imni si, ¾e tento znak se spolu s
+     kurzorem zobrazí v dolní èásti obrazovky jako pøíkaz  :  .
+
+  2. Nyní napi¹ 'chhybba' <ENTER>.  To je slovo, které chce¹ vyhledat.
+
+  3. Pro vyhledání dal¹ího výsledku stejného øetìzce, jednodu¹e stlaè  n  .
+     Pro vyhledání dal¹ího výsledku stejného øetìzce opaèným smìrem, stiskni
+     Shift-N.
+
+  4. Pokud chce¹ vyhledat øetìzec v opaèném smìru, pou¾ij pøíkaz  ?  místo
+     pøíkazu  /  .
+
+---> "chhybba" není zpùsob, jak hláskovat chyba; chhybba je chyba.
+
+Poznámka: Kdy¾ vyhledávání dosáhne konce souboru, bude pokraèovat na jeho
+          zaèátku.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Lekce 4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY
+
+
+             ** Napi¹  %  pro nalezení párové ),], nebo } . **
+
+  1. Pøemísti kurzor na kteroukoli (, [, nebo { v øádku oznaèeném --->.
+
+  2. Nyní napi¹ znak  %  .
+
+  3. Kurzor se pøemístí na odpovídající závorku.
+
+  4. Stlaè  %  pro pøesun kurzoru zpìt na otvírající závorku.
+
+---> Toto ( je testovací øádek ('s, ['s ] a {'s } v nìm. ))
+
+Poznámka: Toto je velmi u¾iteèné pøí ladìní programu s chybìjícími
+          uzavíracími závorkami.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 4.4: ZPÙSOB JAK ZMÌNIT CHYBY
+                     
+
+   ** Napi¹  :s/staré/nové/g  pro nahrazení slova 'nové' za 'staré'. **
+
+  1. Pøesuò kurzor na øádek oznaèený --->.
+
+  2. Napi¹  :s/dobréé/dobré <ENTER> .  V¹imni si, ¾e tento pøíkaz zmìní pouze
+     první výskyt v øádku.
+
+  3. Nyní napi¹         :s/dobréé/dobré/g  co¾ znamená celkové nahrazení v øádku.
+     Toto nahradí v¹echny výskyty v øádku.
+
+---> dobréé suroviny a dobréé náèiní jsou základem dobréé kuchynì.
+
+  4. Pro zmìnu v¹ech výskytù øetìzce mezi dvìma øádky,
+     Napi¹   :#,#s/staré/nové/g  kde #,# jsou èísla onìch øádek.
+     Napi¹   :%s/staré/nové/g    pro zmìnu v¹ech výskytù v celém souboru.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 4
+
+
+  1. Ctrl-g  vypí¹e tvou pozici v souboru a status souboru.
+     Shift-G  tì pøemístí na konec souboru.  Èíslo následované
+     Shift-G  tì pøesune na dané èíslo øádku.
+
+  2. Napsání  /  následované øetìzcem vyhledá øetìzec smìrem DOPØEDU.
+     Napsání  ?  následované øetìzcem vyhledá øetìzec smìrem DOZADU.
+     Napsání  n  po vyhledávání najde následující výskyt øetìzce ve stejném
+     smìru, Shift-N ve smìru opaèném.
+
+  3. Stisknutí  %  kdy¾ je kurzor na (,),[,],{, nebo } najde odpovídající
+     párovou závorku.
+
+  4. Pro nahrazení nového za první starý v øádku napi¹     :s/staré/nové
+     Pro nahrazení nového za v¹echny staré v øádku napi¹   :s/staré/nové/g
+     Pro nahrazení øetìzcù mezi dvìmi øádkami # napi¹      :#,#s/staré/nové/g
+     Pro nahrazení v¹ech výskytù v souboru napi¹          :%s/staré/nové/g
+     Pro potvrzení ka¾dého nahrazení pøidej 'c'                   :%s/staré/nové/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Lekce 5.1: JAK VYKONAT VNÌJ©Í PØÍKAZ
+
+
+   ** Napi¹  :!  následované vnìj¹ím pøíkazem pro spu¹tìní pøíkazu. **
+
+  1. Napi¹ obvyklý pøíkaz  :  , který umístí kurzor na spodek obrazovky
+     To umo¾ní napsat pøíkaz.
+
+  2. Nyní stiskni  !  (vykøièník). To umo¾ní vykonat jakýkoliv vnìj¹í
+     pøíkaz z pøíkazového øádku.
+
+  3. Napøíklad napi¹  ls  za ! a stiskni <ENTER>.  Tento pøíkaz zobrazí
+     obsah tvého adresáøe jako v pøíkazovém øádku.
+     Vyzkou¹ej  :!dir  pokud ls nefunguje.
+
+Poznámka:  Takto je mo¾né vykonat jakýkoliv pøíkaz.
+
+Poznámka:  V¹echny pøíkazy  :  musí být dokonèené stisknutím <ENTER>
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 5.2: VÍCE O UKLÁDÁNÍ SOUBORÙ
+
+
+           ** Pro ulo¾ení zmìn v souboru napi¹  :w SOUBOR. **
+
+  1. Napi¹  :!dir  nebo  :!ls  pro výpis aktuálního adresáøe.
+     U¾ ví¹, ¾e za tímto musí¹ stisknout <ENTER>.
+
+  2. Vyber si název souboru, který je¹tì neexistuje, napøíklad TEST.
+
+  3. Nyní napi¹:  :w TEST  (kde TEST je vybraný název souboru.)
+
+  4. To ulo¾í celý soubor  (Výuka Vimu)  pod názvem TEST.
+     Pro ovìøení napi¹ znovu :!dir  , èím¾ zobrazí¹ obsah adresáøe.
+
+Poznámka: Jakmile ukonèí¹ Vim a znovu ho spustí¹ s názvem souboru TEST,
+          soubor bude pøesná kopie výuky, kdy¾ si ji ukládal.
+
+  5. Nyní odstraò soubor napsáním (MS-DOS):    :!del TEST
+                            nebo (Unix):      :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 5.3: VÝBÌROVÝ PØÍKAZ ULO®ENÍ
+
+
+           ** Pro ulo¾ení èásti souboru napi¹  :#,# w SOUBOR **
+
+  1. Je¹tì jednou napi¹  :!dir  nebo  :!ls  pro výpis aktuálního adresáøe
+     a vyber vhodný název souboru jako napø. TEST.
+
+  2. Pøesuò kurzor na vrch této stránky a stiskni  Ctrl-g  pro zobrazení
+     èísla øádku.  ZAPAMATUJ SI TOTO ÈÍSLO!
+
+  3. Nyní se pøesuò na spodek této stránky a opìt stiskni Ctrl-g.
+     ZAPAMATUJ SI I ÈÍSLO TOHOTO ØÁDKU!
+
+  4. Pro ulo¾ení POUZE èásti souboru, napi¹  :#,# w TEST  kde #,# jsou
+     èísla dvou zapamatovaných øádkù (vrch, spodek) a TEST je název souboru.
+
+  5. Znova se ujisti, ¾e tam ten soubor je pomocí  :!dir  ale NEODSTRAÒUJ ho.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 5.4: SLUÈOVÁNÍ SOUBORÙ
+
+
+          ** K vlo¾ení obsahu souboru napi¹  :r NÁZEV_SOUBORU **
+
+  1. Napi¹  :!dir  pro uji¹tìní, ¾e soubor TEST stále existuje.
+
+  2. Pøesuò kurzor na vrch této stránky.
+
+POZNÁMKA: Po vykonání kroku 3 uvidí¹ lekci 5.3.        Potom se opìt pøesuò dolù
+          na tuto lekci.
+
+  3. Nyní vlo¾ soubor TEST pou¾itím pøíkazu  :r TEST  kde TEST je název
+     souboru.
+
+POZNÁMKA: Soubor, který vkládá¹ se vlo¾í od místa, kde se nachází kurzor.
+
+  4. Pro potvrzení vlo¾ení souboru, pøesuò kurzor zpìt a v¹imni si, ¾e teï
+     má¹ dvì kopie lekce 5.3, originál a souborovou verzi.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 5
+
+
+  1.  :!pøíkaz  vykoná vnìj¹í pøíkaz.
+
+      Nìkteré u¾iteèné pøíklady jsou:
+        (MS-DOS)         (Unix)
+         :!dir            :!ls            -  zobrazí obsah souboru.
+         :!del SOUBOR     :!rm SOUBOR     -  odstraní SOUBOR.
+
+  2.  :w SOUBOR  ulo¾í aktuální text jako SOUBOR na disk.
+
+  3.  :#,#w SOUBOR  ulo¾í øádky od # do # do SOUBORU.
+
+  4.  :r SOUBOR  vybere z disku SOUBOR a vlo¾í ho do editovaného souboru
+      za pozici kurzoru.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Lekce 6.1: PØÍKAZ OTEVØÍT
+
+
+  ** Napi¹  o  pro vlo¾ení øádku pod kurzor a pøepnutí do Vkládacího módu. **
+
+  1. Pøemísti kurzor ní¾e na øádek oznaèený --->.
+
+  2. Napi¹  o (malé) pro vlo¾ení øádku POD kurzor a pøepnutí do
+     Vkládacího módu.
+
+  3. Nyní zkopíruj øádek oznaèený ---> a stiskni <ESC> pro ukonèení
+     Vkládacího módu.
+  
+---> Po stisknutí  o  se kurzor pøemístí na vlo¾ený øádek do Vkládacího
+     módu.
+
+  4. Pro otevøení øádku NAD kurzorem jednodu¹e napi¹ velké  O  , místo
+     malého o. Vyzkou¹ej si to na následujícím øádku.
+Vlo¾ øádek nad tímto napsáním Shift-O po umístìní kurzoru na tento øádek.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Lekce 6.2: PØÍKAZ PØIDAT
+
+
+            ** Stiskni  a  pro vlo¾ení textu ZA kurzor. **
+
+  1. Pøesuò kurzor na ní¾e na konec øádky oznaèené --->
+     stisknutím $ v Normálním módu.
+
+  2. Stiskni  a  (malé) pro pøidání textu ZA znak, který je pod kurzorem.
+     (Velké  A  pøidá na konec øádku.)
+
+Poznámka: Tímto se vyhne¹ stisknutí  i  , posledního znaku, textu na vlo¾ení,
+          <ESC>, kurzor doprava, a nakonec  x  na pøidávání na konec øádku!
+
+  3. Nyní dokonèí první øádek. V¹imni si, ¾e pøidávání je vlastnì stejné jako
+     Vkládací mód, kromì místa, kam se text vkládá.
+
+---> Tento øádek ti umo¾òuje nacvièit
+---> Tento øádek ti umo¾òuje nacvièit pøidávání textu na konec øádky.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 6.3: JINÝ ZPÙSOB NAHRAZOVÁNÍ
+
+
+         ** Napi¹ velké  R  pro nahrazení víc ne¾ jednoho znaku. **
+
+  1. Pøesuò kurzor na první øádek oznaèený --->.
+
+  2. Umísti kurzor na zaèátek prvního slova, které je odli¹né od druhého
+     øádku oznaèeného ---> (slovo 'poslední').
+
+  3. Nyní stiskni  R  a nahraï zbytek textu na prvním øádku pøepsáním
+     starého textu tak, aby byl první øádek stejný jako ten druhý.
+
+---> Pro upravení prvního øádku do tvaru toho poslední na stranì pou¾ij kl.
+---> Pro upravení prvního øádku do tvaru toho druhého, napi¹ R a nový text.
+
+  4. V¹imni si, ¾e jakmile stiskne¹ <ESC> v¹echen nezmìnìný text zùstává.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Lekce 6.4: NASTAVENÍ MO®NOSTÍ
+
+  ** Nastav mo¾nost, ¾e vyhledávání anebo nahrazování nedbá velikosti písmen **
+
+  1. Vyhledej øetìzec 'ignore' napsáním:
+     /ignore
+     Zopakuj nìkolikrát stisknutí klávesy n.
+
+  2. Nastav mo¾nost 'ic' (Ignore case) napsáním pøíkazu:
+     :set ic
+
+  3. Nyní znovu vyhledej 'ignore' stisknutím: n
+     Nìkolikrát hledání zopakuj stisknutím klávesy n.
+
+  4. Nastav mo¾nosti 'hlsearch' a 'incsearch':
+     :set hls is
+
+  5. Nyní znovu vykonej vyhledávací pøíkaz a sleduj, co se stane:
+     /ignore
+
+  6. Pro vypnutí zvýrazòování výsledkù napi¹:
+     :nohlsearch
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRHNUTÍ LEKCE 6
+
+
+  1. Stisknutí  o  otevøe nový øádek POD kurzorem a umístí kurzor na vlo¾ený
+     øádek do Vkládacího módu.
+     Napsání velkého  O  otevøe øádek NAD øádkem, na kterém je kurzor.
+
+  2. Stiskni  a  pro vlo¾ení textu ZA znak na pozici kurzoru.
+     Napsání velkého  A  automaticky pøidá text na konec øádku.
+
+  3. Stisknutí velkého  R  pøepne do Nahrazovacího módu, dokud
+     nestiskne¹ <ESC> pro jeho ukonèení.
+
+  4. Napsání ":set xxx" nastaví mo¾nosti "xxx".
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     LEKCE 7: PØÍKAZY ON-LINE NÁPOVÌDY
+
+
+                  ** Pou¾ívej on-line systém nápovìdy **
+
+  Vim má obsáhlý on-line systém nápovìdy. Pro zaèátek vyzkou¹ej jeden z
+  následujících:
+       - stiskni klávesu <HELP> (pokud ji má¹)
+       - stiskni klávesu <F1>  (pokud ji má¹)
+       - napi¹  :help <ENTER>
+
+  Napi¹  :q <ENTER>  pro uzavøení okna nápovìdy.
+
+  Mù¾e¹ najít nápovìdu k jakémukoliv tématu pøidáním argumentu k
+  pøíkazu ":help". Zkus tyto (nezapomeò stisknout <ENTER>):
+
+       :help w
+       :help c_<T
+       :help insert-index
+       :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 LEKCE 8: VYTVOØENÍ INICIALIZAÈNÍHO SKRIPTU
+
+                       ** Zapni funkce editoru Vim **
+
+  Vim má daleko více funkcí ne¾ Vi, ale vìt¹ina z nich je vypnuta ve výchozím
+  nastavení. Pro zapnutí nìkterých vytvoø soubor "vimrc".
+
+  1. Zaèni upravovat soubor "vimrc". Toto závisí na pou¾itém systému:
+       :edit ~/.vimrc                  pro Unix
+       :edit $VIM/_vimrc               pro MS-Windows
+
+  2. Nyní èti ukázkový "vimrc" soubor:
+
+       :read $VIMRUNTIME/vimrc_example.vim
+
+  3. Ulo¾ soubor pomocí:
+
+       :write
+
+  Po pøí¹tím startu Vim se zapne zvýrazòování syntaxe.
+  Do souboru "vimrc" mù¾e¹ pøidat v¹echny svoje upøednostòované nastavení.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Toto ukonèuje výuku Vim, která byla my¹lená jako struèný pøehled
+  editoru Vim, tak akorát postaèující pro lehké a obstojné pou¾ívání editoru.
+  Tato výuka má daleko od úplnosti, proto¾e Vim obsahuje podstatnì více
+  pøíkazù. Dále si pøeèti u¾ivatelský manuál: ":help user-manual".
+
+  Pro dal¹í studium je doporuèená kniha:
+       Vim - Vi Improved - od Steve Oualline
+       Nakladatel: New Riders
+  První kniha urèená pro Vim. Obzvlá¹tì vhodná pro zaèáteèníky.
+  Obsahuje mno¾ství pøíkladù a obrázkù.
+  viz http://iccf-holland.org/click5.html
+
+  Tato kniha je star¹í a více vìnovaná Vi ne¾ Vim, ale také doporuèená:
+       Learning the Vi Editor - od Linda Lamb
+       Nakladatel: O'Reilly & Associates Inc.
+  Je to dobrá kniha pro získání vìdomostí témìø o v¹em, co mù¾ete s Vi dìlat.
+  ©esté vydání obsahuje té¾ informace o Vim.
+
+  Tato výuka byla napsaná autory Michael C. Pierce a Robert K. Ware,
+  Colorado School of Mines s pou¾itím my¹lenek od: Charles Smith,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Upravil pro Vim: Bram Moolenaar.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Pøeklad do èe¹tiny: Lubo¹ Turek
+  E-Mail: lubos.turek@gmail.com
+  2007 Feb 28 
diff --git a/runtime/tutor/tutor.cs.cp1250 b/runtime/tutor/tutor.cs.cp1250
new file mode 100644 (file)
index 0000000..93fd7b7
--- /dev/null
@@ -0,0 +1,812 @@
+===============================================================================
+=    V í t e j t e   v  t u t o r i a l u   V I M       -    Verze 1.5        =
+===============================================================================
+
+     Vim je velmi výkonný editor, který má pøíli\9a mnoho pøíkazù na to, aby
+     mohly být v\9aechny vysvìtlené ve výuce jako tato. Tato výuka obsahuje
+     dostateèné mno\9eství pøíkazù na to, aby bylo mo\9ené pou\9eívat Vim jako
+     víceúèelový editor.
+
+     Pøibli\9ený èas potøebný ke zvládnutí této výuky je 25-30 minut, zále\9eí
+     na tom, kolik èasu strávíte pøezku\9aováním.
+
+     Pøíkazy v lekcích upravují text. Vytvoø kopii tohoto souboru pro
+     procvièování (pøi startu "vimtutor" je ji\9e toto kopie).
+
+     Je dùle\9eité pamatovat, \9ee tato výuka je vytvoøena pro výuku pou\9eíváním.
+     To znamená, \9ee je potøeba si pøíkazy vyzkou\9aet pro jejich správné
+     nauèení. Pokud si jen ète\9a text, pøíkazy zapomene\9a!
+
+     Nyní se pøesvìdète, \9ee Shift-Lock NENÍ stlaèený a nìkolikrát stisknìte
+     klávesu  j   aby se kurzor posunul natolik, \9ee lekce 1.1 zaplní celou
+     obrazovku.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 1.1:  POHYB KURZORU
+
+
+   ** Pro pohyb kurzoru pou\9eívej klávesy h,j,k,l jak je znázornìno ní\9ee. **
+            ^
+            k             Funkce: Klávesa h je vlevo a vykoná pohyb vlevo.
+       < h      l >               Klávesa l je vpravo a vykoná pohyb vpravo.
+            j                     Klávesa j vypadá na \9aipku dolu.
+            v
+  1. Pohybuj kurzorem po obrazovce dokud si na to nezvykne\9a.
+
+  2. Dr\9e klávesu pro pohyb dolu (j), dokud se její funkce nezopakuje.
+---> Teï ví\9a jak se pøesunout na následující lekci.
+
+  3. Pou\9eitím klávesy dolu pøejdi na lekci 1.2.
+
+Poznámka: Pokud si nìkdy nejsi jist nìèím, co jsi napsal, stlaè <ESC> pro
+          pøechod do Normálního módu. Poté pøepi\9a po\9eadovaný pøíkaz.
+
+Poznámka: Kurzorové klávesy také fungují, av\9aak pou\9eívání hjkl je rychlej\9aí
+          jakmile si na nìj zvykne\9a.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.2: SPU\8aTÌNÍ A UKONÈENÍ VIM
+
+
+  !! POZNÁMKA: Pøed vykonáním tìchto krokù si pøeèti celou lekci!!
+
+  1. Stlaè <ESC> (pro uji\9atìní, \9ee se nachází\9a v Normálním módu).
+
+  2. Napi\9a:                    :q! <ENTER>.
+
+---> Tímto ukonèí\9a editor BEZ ulo\9eení zmìn, které si vykonal.
+     Pokud chce\9a ulo\9eit zmìny a ukonèit editor napi\9a:
+                               :wq  <ENTER>
+
+  3. A\9e se dostane\9a na pøíkazový øádek, napi\9a pøíkaz, kterým se dostane\9a zpìt
+     do této výuky. To mù\9ee být: vimtutor <ENTER>
+     Bì\9enì se pou\9eívá:          vim tutor <ENTER>
+
+---> 'vim' znamená spu\9atìní editoru, 'tutor' je soubor k editaci.
+
+  4. Pokud si tyto kroky spolehlivì pamatuje\9a, vykonej kroky 1 a\9e 3, èím\9e
+     ukonèí\9a a znovu spustí\9a editor. Potom pøesuò kurzor dolu na lekci 1.3.
+     
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.3: ÚPRAVA TEXTU - MAZÁNÍ
+
+
+  ** Stisknutím klávesy  x  v Normálním módu sma\9ee\9a znak na místì kurzoru. **
+
+  1. Pøesuò kurzor ní\9ee na øádek oznaèený --->.
+
+  2. K odstranìní chyb pøejdi kurzorem na znak, který chce\9a smazat.
+
+  3. Stlaè klávesu  x  k odstranìní nechtìných znakù.
+
+  4. Opakuj kroky 2 a\9e 4 dokud není vìta správnì.
+
+---> Krááva skoèèilla pøess mìssíc.
+
+  5. Pokud je vìta správnì, pøejdi na lekci 1.4.
+
+POZNÁMKA: Nesna\9e se pouze zapamatovat pøedvádìné pøíkazy, uè se je pou\9eíváním.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ
+
+
+      ** Stlaèení klávesy  i  v Normálním módu umo\9eòuje vkládání textu. **
+
+  1. Pøesuò kurzor na první øádek oznaèený --->.
+
+  2. Pro upravení prvního øádku do podoby øádku druhého, pøesuò kurzor na
+     první znak za místo, kde má být text vlo\9eený.
+
+  3. Stlaè  i  a napi\9a potøebný dodatek.
+
+  4. Po opravení ka\9edé chyby stlaè <ESC> pro návrat do Normálního módu.
+     Opakuj kroky 2 a\9e 4 dokud není vìta správnì.
+
+---> Nìjaký txt na této .
+---> Nìjaký text chybí na této øádce.
+
+  5. Pokud ji\9e ovládá\9a vkládání textu, pøejdi na následující shrnutí.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 1
+
+
+  1. Kurzorem se pohybuje pomocí \9aipek nebo klávesami hjkl.
+       h (vlevo)       j (dolu)        k (nahoru)      l (vpravo)
+
+  2. Pro spu\9atìní Vimu (z pøíkazového øádku) napi\9a: vim SOUBOR <ENTER>
+
+  3. Pro ukonèení Vimu napi\9a: <ESC>  :q!  <ENTER>  bez ulo\9eení zmìn.
+                      anebo: <ESC>  :wq  <ENTER>  pro ulo\9eení zmìn.
+
+  4. Pro smazání znaku pod kurzorem napi\9a v Normálním módu:  x
+
+  5. Pro vkládání textu od místa kurzoru napi\9a v Normálním módu:
+        i     vkládaný text    <ESC>
+
+POZNÁMKA: Stlaèení <ESC> tì pøemístí do Normálního módu nebo zru\9aí nechtìný
+      a èásteènì dokonèený pøíkaz.
+
+Nyní pokraèuj Lekcí 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 2.1: PØÍKAZY MAZÁNÍ
+
+
+              ** Pøíkaz  dw  sma\9ee znaky do konce slova. **
+
+  1. Stlaè  <ESC>  k ubezpeèení, \9ee jsi v Normálním módu.
+
+  2. Pøesuò kurzor ní\9ee na øádek oznaèený --->.
+
+  3. Pøesuò kurzor na zaèátek slova, které je potøeba smazat.
+
+  4. Napi\9a   dw         , aby slovo zmizelo.
+
+POZNÁMKA: Písmena dw se zobrazí na posledním øádku obrazovky jakmile je
+         napí\9ae\9a. Kdy\9e napí\9ae\9a nìco \9apatnì, stlaè  <ESC>  a zaèni znova.
+
+---> Jsou tu nìjaká slova zábava, která nepatøí list do této vìty.
+
+  5. Opakuj kroky 3 a\9e 4 dokud není vìta správnì a pøejdi na lekci 2.2.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 2.2: VÍCE PØÍKAZÙ MAZÁNÍ
+
+
+          ** Napsání pøíkazu  d$  sma\9ee v\9ae a\9e do konce øádky. **
+
+  1. Stlaè  <ESC>  k ubezpeèení, \9ee jsi v Normálním módu.
+
+  2. Pøesuò kurzor ní\9ee na øádek oznaèený --->.
+
+  3. Pøesuò kurzor na konec správné vìty (ZA první teèku).
+
+  4. Napi\9a  d$  ,aby jsi smazal znaky a\9e do konce øádku.
+
+---> Nìkdo napsal konec této vìty dvakrát. konec této vìty dvakrát.
+
+
+  5. Pøejdi na lekci 2.3 pro pochopení toho, co se stalo.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Lekce 2.3: ROZ\8aIØOVACÍ PØÍKAZY A OBJEKTY
+
+
+  Formát mazacího pøíkazu  d  je následující:
+
+        [èíslo]   d   objekt     NEBO     d   [èíslo]   objekt
+  Kde:
+    èíslo - udává kolikrát se pøíkaz vykoná (volitelné, výchozí=1).
+    d - je pøíkaz mazání.
+    objekt - udává na èem se pøíkaz vykonává (vypsané ní\9ee).
+
+  Krátký výpis objektù:
+    w - od kurzoru do konce slova, vèetnì mezer.
+    e - od kurzoru do konce slova, BEZ mezer.
+    $ - od kurzoru do konce øádku.
+
+POZNÁMKA:  Stlaèením klávesy objektu v Normálním módu se kurzor pøesune na
+           místo upøesnìné ve výpisu objektù.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 2.4: VÝJIMKA Z 'PØÍKAZ-OBJEKT'
+
+
+                 ** Napsáním   dd   sma\9ee\9a celý øádek. **
+
+  Vzhledem k èastosti mazání celého øádku se autoøi Vimu rozhodli, \9ee bude
+  jednodu\9aí napsat prostì dvì d k smazání celého øádku.
+
+  1. Pøesuò kurzor na druhý øádek spodního textu.
+  2. Napi\9a  dd  pro smazání øádku.
+  3. Pøejdi na ètvrtý øádek.
+  4. Napi\9a   2dd   (vzpomeò si  èíslo-pøíkaz-objekt) pro smazání dvou øádkù.
+
+      1)  Rù\9ee jsou èervené,
+      2)  Bláto je zábavné,
+      3)  Fialky jsou modré,
+      4)  Mám auto,
+      5)  Hodinky ukazují èas,
+      6)  Cukr je sladký,
+      7)  A to jsi i ty.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Lekce 2.5: PØÍKAZ UNDO
+
+
+   ** Stlaè  u pro vrácení posledního pøíkazu,  U  pro celou øádku. **
+
+  1. Pøesuò kurzor ní\9ee na øádek oznaèený ---> a pøemísti ho na první chybu.
+  2. Napi\9a  x  pro smazání prvního nechtìného znaku.
+  3. Teï napi\9a  u  èím\9e vrátí\9a zpìt poslední vykonaný pøíkaz.
+  4. Nyní oprav v\9aechny chyby na øádku pomocí pøíkazu  x  .
+  5. Napi\9a velké  U  èím\9e vrátí\9a øádek do pùvodního stavu.
+  6. Teï napi\9a  u  nìkolikrát, èím\9e vrátí\9a zpìt pøíkaz  U  .
+  7. Stlaè CTRL-R (klávesu CTRL dr\9e stlaèenou a stiskni R) nìkolikrát,
+     èím\9e vrátí\9a zpìt pøedtím vrácené pøíkazy (redo).
+
+---> Opprav chybby nna toomto øádku a nahraï je pommocí undo.
+
+  8. Toto jsou velmi u\9eiteèné pøíkazy. Nyní pøejdi na souhrn Lekce 2.
+
+  
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 2
+
+
+  1. Pro smazání znakù od kurzoru do konce slova napi\9a:    dw
+
+  2. Pro smazání znakù od kurzoru do konce øádku napi\9a:    d$
+
+  3. Pro smazání celého øádku napi\9a:    dd
+
+  4. Formát pøíkazu v Normálním módu je:
+
+       [èíslo]   pøíkaz   objekt    NEBO    pøíkaz     [èíslo]   objekt
+     kde:
+       èíslo - udává poèet opakování pøíkazu
+       pøíkaz - udává co je tøeba vykonat, napøíklad  d  ma\9ee
+       objekt - udává rozsah pøíkazu, napøíklad  w  (slovo),
+               $ (do konce øádku), atd.
+
+  5. Pro vrácení pøede\9alé èinnosti, napi\9a:     u (malé u)
+     Pro vrácení v\9aech úprav na øádku napi\9a:   U (velké U)
+     Pro vrácení vrácených úprav (redo) napi\9a: CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Lekce 3.1: PØÍKAZ VLO\8eIT
+
+
+       ** Pøíka  p  vlo\9eí poslední vymazaný text za kurzor. **
+
+  1. Pøesuò kurzor ní\9ee na poslední øádek textu.
+
+  2. Napi\9a  dd  pro smazání øádku a jeho ulo\9eení do bufferu.
+
+  3. Pøesuò kurzor VÝ\8aE tam, kam smazaný øádek patøí.
+
+  4. V Normálním módu napi\9a  p  pro opìtné vlo\9eení øádku.
+
+  5. Opakuj kroky 2 a\9e 4 dokud øádky nebudou ve správném poøadí.
+
+     d) Také se doká\9ee\9a vzdìlávat?
+     b) Fialky jsou modré,
+     c) Inteligence se uèí,
+     a) Rù\9ee jsou èervené,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Lekce 3.2: PØÍKAZ NAHRAZENÍ
+
+
+          ** Napsáním  r  a znaku se nahradí znak pod kurzorem. **
+
+  1. Pøesuò kurzor ní\9ee na první øádek oznaèený --->.
+
+  2. Pøesuò kurzor na zaèátek první chyby.
+
+  3. Napi\9a  r  a potom znak, který nahradí chybu.
+
+  4. Opakuj kroky 2 a\9e 3 dokud není první øádka správnì.
+
+--->  Kdi\9e byl pzán tento øádeg, nìkdu stla\9eil \9apaqné klávesy!
+--->  Kdy\9e byl psán tento øádek, nìkdo stlaèíl \9apatné klávesy!
+
+  5. Nyní pøejdi na Lekci 3.2.
+
+POZNÁMKA: Zapamatuj si, \9ee by ses mìl uèit pou\9eíváním, ne zapamatováním.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Lekce 3.3: PØÍKAZ ÚPRAVY
+
+
+         ** Pokud chce\9a zmìnit èást nebo celé slovo, napi\9a  cw . **
+
+  1. Pøesuò kurzor ní\9ee na první øádek oznaèený --->.
+
+  2. Umísti kurzor na písmeno i v slovì øi\9dok.
+
+  3. Napi\9a  cw  a oprav slovo (v tomto pøípadì napi\9a 'ádek'.)
+
+  4. Stlaè <ESC> a pøejdi na dal\9aí chybu (první znak, který tøeba zmìnit.)
+
+  5. Opakuj kroky 3 a\9e 4 dokud není první vìta stejná jako ta druhá.
+
+---> Tento øi\9dok má nìkolik skic, které psadoinsa zmìnit pasdgf pøíkazu.
+---> Tento øádek má nìkolik slov, které potøebují zmìnit pomocí pøíkazu.
+
+V\9aimni si, \9ee  cw  nejen nahrazuje slovo, ale také pøemístí do vkládání.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Lekce 3.4: VÍCE ZMÌN POU\8eITÍM c
+
+
+   ** Pøíkaz pro úpravu se dru\9eí se stejnými objekty jako ten pro mazání. **
+
+  1. Pøíkaz pro úpravu pracuje stejnì jako pro mazání. Formát je:
+
+       [èíslo]   c   objekt     NEBO      c    [èíslo]   objekt
+
+  2. Objekty jsou také shodné, jako napø.: w (slovo), $ (konec øádku), atd.
+
+  3. Pøejdi ní\9ee na první øádek oznaèený --->.
+
+  4. Pøesuò kurzor na první rozdíl.
+
+  5. Napi\9a  c$  pro upravení zbytku øádku podle toho druhého a stlaè <ESC>.
+
+---> Konec tohoto øádku potøebuje pomoc, aby byl jako ten druhý.
+---> Konec tohoto øádku potøebuje opravit pou\9eitím pøíkazu  c$  .
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 3
+
+
+  1. Pro vlo\9eení textu, který byl smazán, napi\9a  p  . To vlo\9eí smazaný text
+     ZA kurzor (pokud byl øádek smazaný, pøejde na øádek pod kurzorem).
+
+  2. Pro nahrazení znaku pod kurzorem, napi\9a  r  a potom znak, kterým
+     chce\9a pùvodní znak nahradit.
+
+  3. Pøíkaz na upravování umo\9eòuje zmìnit specifikovaný objekt od kurzoru
+     do konce objektu. Napøíklad: Napi\9a  cw  ,èím\9e zmìní\9a text od pozice
+     kurzoru do konce slova,  c$  zmìní text do konce øádku.
+
+  4. Formát pro nahrazování je:
+
+        [èíslo]   c   objekt      NEBO     c   [èíslo]   objekt
+
+Nyní pøejdi na následující lekci.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 4.1: POZICE A STATUS SOUBORU
+
+
+  ** Stlaè CTRL-g pro zobrazení své pozice v souboru a statusu souboru.
+     Stlaè SHIFT-G pro pøechod na øádek v souboru. **
+
+  Poznámka: Pøeèti si celou lekci ne\9e zaène\9a vykonávat kroky!!
+
+  1. Dr\9e klávesu Ctrl stlaèenou a stiskni  g  . Vespod obrazovky se zobrazí
+     stavový øádek s názvem souboru a øádkou na které se nachází\9a. Zapamatuj
+     si èíslo øádku pro krok 3.
+
+  2. Stlaè shift-G pro pøesun na konec souboru.
+
+  3. Napi\9a èíslo øádku na kterém si se nacházel a stlaè shift-G. To tì
+     vrátí na øádek, na kterém jsi døíve stiskl Ctrl-g.
+     (Kdy\9e pí\9ae\9a èísla, tak se NEZOBRAZUJÍ na obrazovce.)
+
+  4. Pokud se cítí\9a schopný vykonat tyto kroky, vykonej je.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 4.2: PØÍKAZ VYHLEDÁVÁNÍ
+
+
+     ** Napi\9a  /  následované øetìzcem pro vyhledání onoho øetìzce. **
+
+  1. Stiskni / v Normálním módu.  V\9aimni si, \9ee tento znak se spolu s
+     kurzorem zobrazí v dolní èásti obrazovky jako pøíkaz  :  .
+
+  2. Nyní napi\9a 'chhybba' <ENTER>.  To je slovo, které chce\9a vyhledat.
+
+  3. Pro vyhledání dal\9aího výsledku stejného øetìzce, jednodu\9ae stlaè  n  .
+     Pro vyhledání dal\9aího výsledku stejného øetìzce opaèným smìrem, stiskni
+     Shift-N.
+
+  4. Pokud chce\9a vyhledat øetìzec v opaèném smìru, pou\9eij pøíkaz  ?  místo
+     pøíkazu  /  .
+
+---> "chhybba" není zpùsob, jak hláskovat chyba; chhybba je chyba.
+
+Poznámka: Kdy\9e vyhledávání dosáhne konce souboru, bude pokraèovat na jeho
+          zaèátku.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Lekce 4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY
+
+
+             ** Napi\9a  %  pro nalezení párové ),], nebo } . **
+
+  1. Pøemísti kurzor na kteroukoli (, [, nebo { v øádku oznaèeném --->.
+
+  2. Nyní napi\9a znak  %  .
+
+  3. Kurzor se pøemístí na odpovídající závorku.
+
+  4. Stlaè  %  pro pøesun kurzoru zpìt na otvírající závorku.
+
+---> Toto ( je testovací øádek ('s, ['s ] a {'s } v nìm. ))
+
+Poznámka: Toto je velmi u\9eiteèné pøí ladìní programu s chybìjícími
+          uzavíracími závorkami.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 4.4: ZPÙSOB JAK ZMÌNIT CHYBY
+                     
+
+   ** Napi\9a  :s/staré/nové/g  pro nahrazení slova 'nové' za 'staré'. **
+
+  1. Pøesuò kurzor na øádek oznaèený --->.
+
+  2. Napi\9a  :s/dobréé/dobré <ENTER> .  V\9aimni si, \9ee tento pøíkaz zmìní pouze
+     první výskyt v øádku.
+
+  3. Nyní napi\9a         :s/dobréé/dobré/g  co\9e znamená celkové nahrazení v øádku.
+     Toto nahradí v\9aechny výskyty v øádku.
+
+---> dobréé suroviny a dobréé náèiní jsou základem dobréé kuchynì.
+
+  4. Pro zmìnu v\9aech výskytù øetìzce mezi dvìma øádky,
+     Napi\9a   :#,#s/staré/nové/g  kde #,# jsou èísla onìch øádek.
+     Napi\9a   :%s/staré/nové/g    pro zmìnu v\9aech výskytù v celém souboru.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 4
+
+
+  1. Ctrl-g  vypí\9ae tvou pozici v souboru a status souboru.
+     Shift-G  tì pøemístí na konec souboru.  Èíslo následované
+     Shift-G  tì pøesune na dané èíslo øádku.
+
+  2. Napsání  /  následované øetìzcem vyhledá øetìzec smìrem DOPØEDU.
+     Napsání  ?  následované øetìzcem vyhledá øetìzec smìrem DOZADU.
+     Napsání  n  po vyhledávání najde následující výskyt øetìzce ve stejném
+     smìru, Shift-N ve smìru opaèném.
+
+  3. Stisknutí  %  kdy\9e je kurzor na (,),[,],{, nebo } najde odpovídající
+     párovou závorku.
+
+  4. Pro nahrazení nového za první starý v øádku napi\9a     :s/staré/nové
+     Pro nahrazení nového za v\9aechny staré v øádku napi\9a   :s/staré/nové/g
+     Pro nahrazení øetìzcù mezi dvìmi øádkami # napi\9a      :#,#s/staré/nové/g
+     Pro nahrazení v\9aech výskytù v souboru napi\9a          :%s/staré/nové/g
+     Pro potvrzení ka\9edého nahrazení pøidej 'c'                   :%s/staré/nové/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Lekce 5.1: JAK VYKONAT VNÌJ\8aÍ PØÍKAZ
+
+
+   ** Napi\9a  :!  následované vnìj\9aím pøíkazem pro spu\9atìní pøíkazu. **
+
+  1. Napi\9a obvyklý pøíkaz  :  , který umístí kurzor na spodek obrazovky
+     To umo\9ení napsat pøíkaz.
+
+  2. Nyní stiskni  !  (vykøièník). To umo\9ení vykonat jakýkoliv vnìj\9aí
+     pøíkaz z pøíkazového øádku.
+
+  3. Napøíklad napi\9a  ls  za ! a stiskni <ENTER>.  Tento pøíkaz zobrazí
+     obsah tvého adresáøe jako v pøíkazovém øádku.
+     Vyzkou\9aej  :!dir  pokud ls nefunguje.
+
+Poznámka:  Takto je mo\9ené vykonat jakýkoliv pøíkaz.
+
+Poznámka:  V\9aechny pøíkazy  :  musí být dokonèené stisknutím <ENTER>
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 5.2: VÍCE O UKLÁDÁNÍ SOUBORÙ
+
+
+           ** Pro ulo\9eení zmìn v souboru napi\9a  :w SOUBOR. **
+
+  1. Napi\9a  :!dir  nebo  :!ls  pro výpis aktuálního adresáøe.
+     U\9e ví\9a\9ee za tímto musí\9a stisknout <ENTER>.
+
+  2. Vyber si název souboru, který je\9atì neexistuje, napøíklad TEST.
+
+  3. Nyní napi\9a:  :w TEST  (kde TEST je vybraný název souboru.)
+
+  4. To ulo\9eí celý soubor  (Výuka Vimu)  pod názvem TEST.
+     Pro ovìøení napi\9a znovu :!dir  , èím\9e zobrazí\9a obsah adresáøe.
+
+Poznámka: Jakmile ukonèí\9a Vim a znovu ho spustí\9a s názvem souboru TEST,
+          soubor bude pøesná kopie výuky, kdy\9e si ji ukládal.
+
+  5. Nyní odstraò soubor napsáním (MS-DOS):    :!del TEST
+                            nebo (Unix):      :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 5.3: VÝBÌROVÝ PØÍKAZ ULO\8eENÍ
+
+
+           ** Pro ulo\9eení èásti souboru napi\9a  :#,# w SOUBOR **
+
+  1. Je\9atì jednou napi\9a  :!dir  nebo  :!ls  pro výpis aktuálního adresáøe
+     a vyber vhodný název souboru jako napø. TEST.
+
+  2. Pøesuò kurzor na vrch této stránky a stiskni  Ctrl-g  pro zobrazení
+     èísla øádku.  ZAPAMATUJ SI TOTO ÈÍSLO!
+
+  3. Nyní se pøesuò na spodek této stránky a opìt stiskni Ctrl-g.
+     ZAPAMATUJ SI I ÈÍSLO TOHOTO ØÁDKU!
+
+  4. Pro ulo\9eení POUZE èásti souboru, napi\9a  :#,# w TEST  kde #,# jsou
+     èísla dvou zapamatovaných øádkù (vrch, spodek) a TEST je název souboru.
+
+  5. Znova se ujisti, \9ee tam ten soubor je pomocí  :!dir  ale NEODSTRAÒUJ ho.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 5.4: SLUÈOVÁNÍ SOUBORÙ
+
+
+          ** K vlo\9eení obsahu souboru napi\9a  :r NÁZEV_SOUBORU **
+
+  1. Napi\9a  :!dir  pro uji\9atìní, \9ee soubor TEST stále existuje.
+
+  2. Pøesuò kurzor na vrch této stránky.
+
+POZNÁMKA: Po vykonání kroku 3 uvidí\9a lekci 5.3.        Potom se opìt pøesuò dolù
+          na tuto lekci.
+
+  3. Nyní vlo\9e soubor TEST pou\9eitím pøíkazu  :r TEST  kde TEST je název
+     souboru.
+
+POZNÁMKA: Soubor, který vkládá\9a se vlo\9eí od místa, kde se nachází kurzor.
+
+  4. Pro potvrzení vlo\9eení souboru, pøesuò kurzor zpìt a v\9aimni si, \9ee teï
+     má\9a dvì kopie lekce 5.3, originál a souborovou verzi.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 5
+
+
+  1.  :!pøíkaz  vykoná vnìj\9aí pøíkaz.
+
+      Nìkteré u\9eiteèné pøíklady jsou:
+        (MS-DOS)         (Unix)
+         :!dir            :!ls            -  zobrazí obsah souboru.
+         :!del SOUBOR     :!rm SOUBOR     -  odstraní SOUBOR.
+
+  2.  :w SOUBOR  ulo\9eí aktuální text jako SOUBOR na disk.
+
+  3.  :#,#w SOUBOR  ulo\9eí øádky od # do # do SOUBORU.
+
+  4.  :r SOUBOR  vybere z disku SOUBOR a vlo\9eí ho do editovaného souboru
+      za pozici kurzoru.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Lekce 6.1: PØÍKAZ OTEVØÍT
+
+
+  ** Napi\9a  o  pro vlo\9eení øádku pod kurzor a pøepnutí do Vkládacího módu. **
+
+  1. Pøemísti kurzor ní\9ee na øádek oznaèený --->.
+
+  2. Napi\9a  o (malé) pro vlo\9eení øádku POD kurzor a pøepnutí do
+     Vkládacího módu.
+
+  3. Nyní zkopíruj øádek oznaèený ---> a stiskni <ESC> pro ukonèení
+     Vkládacího módu.
+  
+---> Po stisknutí  o  se kurzor pøemístí na vlo\9eený øádek do Vkládacího
+     módu.
+
+  4. Pro otevøení øádku NAD kurzorem jednodu\9ae napi\9a velké  O  , místo
+     malého o. Vyzkou\9aej si to na následujícím øádku.
+Vlo\9e øádek nad tímto napsáním Shift-O po umístìní kurzoru na tento øádek.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Lekce 6.2: PØÍKAZ PØIDAT
+
+
+            ** Stiskni  a  pro vlo\9eení textu ZA kurzor. **
+
+  1. Pøesuò kurzor na ní\9ee na konec øádky oznaèené --->
+     stisknutím $ v Normálním módu.
+
+  2. Stiskni  a  (malé) pro pøidání textu ZA znak, který je pod kurzorem.
+     (Velké  A  pøidá na konec øádku.)
+
+Poznámka: Tímto se vyhne\9a stisknutí  i  , posledního znaku, textu na vlo\9eení,
+          <ESC>, kurzor doprava, a nakonec  x  na pøidávání na konec øádku!
+
+  3. Nyní dokonèí první øádek. V\9aimni si, \9ee pøidávání je vlastnì stejné jako
+     Vkládací mód, kromì místa, kam se text vkládá.
+
+---> Tento øádek ti umo\9eòuje nacvièit
+---> Tento øádek ti umo\9eòuje nacvièit pøidávání textu na konec øádky.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 6.3: JINÝ ZPÙSOB NAHRAZOVÁNÍ
+
+
+         ** Napi\9a velké  R  pro nahrazení víc ne\9e jednoho znaku. **
+
+  1. Pøesuò kurzor na první øádek oznaèený --->.
+
+  2. Umísti kurzor na zaèátek prvního slova, které je odli\9ané od druhého
+     øádku oznaèeného ---> (slovo 'poslední').
+
+  3. Nyní stiskni  R  a nahraï zbytek textu na prvním øádku pøepsáním
+     starého textu tak, aby byl první øádek stejný jako ten druhý.
+
+---> Pro upravení prvního øádku do tvaru toho poslední na stranì pou\9eij kl.
+---> Pro upravení prvního øádku do tvaru toho druhého, napi\9a R a nový text.
+
+  4. V\9aimni si, \9ee jakmile stiskne\9a <ESC> v\9aechen nezmìnìný text zùstává.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Lekce 6.4: NASTAVENÍ MO\8eNOSTÍ
+
+  ** Nastav mo\9enost, \9ee vyhledávání anebo nahrazování nedbá velikosti písmen **
+
+  1. Vyhledej øetìzec 'ignore' napsáním:
+     /ignore
+     Zopakuj nìkolikrát stisknutí klávesy n.
+
+  2. Nastav mo\9enost 'ic' (Ignore case) napsáním pøíkazu:
+     :set ic
+
+  3. Nyní znovu vyhledej 'ignore' stisknutím: n
+     Nìkolikrát hledání zopakuj stisknutím klávesy n.
+
+  4. Nastav mo\9enosti 'hlsearch' a 'incsearch':
+     :set hls is
+
+  5. Nyní znovu vykonej vyhledávací pøíkaz a sleduj, co se stane:
+     /ignore
+
+  6. Pro vypnutí zvýrazòování výsledkù napi\9a:
+     :nohlsearch
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRHNUTÍ LEKCE 6
+
+
+  1. Stisknutí  o  otevøe nový øádek POD kurzorem a umístí kurzor na vlo\9eený
+     øádek do Vkládacího módu.
+     Napsání velkého  O  otevøe øádek NAD øádkem, na kterém je kurzor.
+
+  2. Stiskni  a  pro vlo\9eení textu ZA znak na pozici kurzoru.
+     Napsání velkého  A  automaticky pøidá text na konec øádku.
+
+  3. Stisknutí velkého  R  pøepne do Nahrazovacího módu, dokud
+     nestiskne\9a <ESC> pro jeho ukonèení.
+
+  4. Napsání ":set xxx" nastaví mo\9enosti "xxx".
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     LEKCE 7: PØÍKAZY ON-LINE NÁPOVÌDY
+
+
+                  ** Pou\9eívej on-line systém nápovìdy **
+
+  Vim má obsáhlý on-line systém nápovìdy. Pro zaèátek vyzkou\9aej jeden z
+  následujících:
+       - stiskni klávesu <HELP> (pokud ji má\9a)
+       - stiskni klávesu <F1>  (pokud ji má\9a)
+       - napi\9a  :help <ENTER>
+
+  Napi\9a  :q <ENTER>  pro uzavøení okna nápovìdy.
+
+  Mù\9ee\9a najít nápovìdu k jakémukoliv tématu pøidáním argumentu k
+  pøíkazu ":help". Zkus tyto (nezapomeò stisknout <ENTER>):
+
+       :help w
+       :help c_<T
+       :help insert-index
+       :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 LEKCE 8: VYTVOØENÍ INICIALIZAÈNÍHO SKRIPTU
+
+                       ** Zapni funkce editoru Vim **
+
+  Vim má daleko více funkcí ne\9e Vi, ale vìt\9aina z nich je vypnuta ve výchozím
+  nastavení. Pro zapnutí nìkterých vytvoø soubor "vimrc".
+
+  1. Zaèni upravovat soubor "vimrc". Toto závisí na pou\9eitém systému:
+       :edit ~/.vimrc                  pro Unix
+       :edit $VIM/_vimrc               pro MS-Windows
+
+  2. Nyní èti ukázkový "vimrc" soubor:
+
+       :read $VIMRUNTIME/vimrc_example.vim
+
+  3. Ulo\9e soubor pomocí:
+
+       :write
+
+  Po pøí\9atím startu Vim se zapne zvýrazòování syntaxe.
+  Do souboru "vimrc" mù\9ee\9a pøidat v\9aechny svoje upøednostòované nastavení.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Toto ukonèuje výuku Vim, která byla my\9alená jako struèný pøehled
+  editoru Vim, tak akorát postaèující pro lehké a obstojné pou\9eívání editoru.
+  Tato výuka má daleko od úplnosti, proto\9ee Vim obsahuje podstatnì více
+  pøíkazù. Dále si pøeèti u\9eivatelský manuál: ":help user-manual".
+
+  Pro dal\9aí studium je doporuèená kniha:
+       Vim - Vi Improved - od Steve Oualline
+       Nakladatel: New Riders
+  První kniha urèená pro Vim. Obzvlá\9atì vhodná pro zaèáteèníky.
+  Obsahuje mno\9eství pøíkladù a obrázkù.
+  viz http://iccf-holland.org/click5.html
+
+  Tato kniha je star\9aí a více vìnovaná Vi ne\9e Vim, ale také doporuèená:
+       Learning the Vi Editor - od Linda Lamb
+       Nakladatel: O'Reilly & Associates Inc.
+  Je to dobrá kniha pro získání vìdomostí témìø o v\9aem, co mù\9eete s Vi dìlat.
+  \8aesté vydání obsahuje té\9e informace o Vim.
+
+  Tato výuka byla napsaná autory Michael C. Pierce a Robert K. Ware,
+  Colorado School of Mines s pou\9eitím my\9alenek od: Charles Smith,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Upravil pro Vim: Bram Moolenaar.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Pøeklad do èe\9atiny: Lubo\9a Turek
+  E-Mail: lubos.turek@gmail.com
+  2007 Feb 28 
diff --git a/runtime/tutor/tutor.cs.utf-8 b/runtime/tutor/tutor.cs.utf-8
new file mode 100644 (file)
index 0000000..c880d6d
--- /dev/null
@@ -0,0 +1,812 @@
+===============================================================================
+=    V í t e j t e   v  t u t o r i a l u   V I M       -    Verze 1.5        =
+===============================================================================
+
+     Vim je velmi výkonný editor, který má příliš mnoho příkazů na to, aby
+     mohly být všechny vysvětlené ve výuce jako tato. Tato výuka obsahuje
+     dostatečné množství příkazů na to, aby bylo možné používat Vim jako
+     víceúčelový editor.
+
+     Přibližný čas potřebný ke zvládnutí této výuky je 25-30 minut, záleží
+     na tom, kolik času strávíte přezkušováním.
+
+     Příkazy v lekcích upravují text. Vytvoř kopii tohoto souboru pro
+     procvičování (při startu "vimtutor" je již toto kopie).
+
+     Je důležité pamatovat, že tato výuka je vytvořena pro výuku používáním.
+     To znamená, že je potřeba si příkazy vyzkoušet pro jejich správné
+     naučení. Pokud si jen čteš text, příkazy zapomeneš!
+
+     Nyní se přesvědčte, že Shift-Lock NENÍ stlačený a několikrát stiskněte
+     klávesu  j   aby se kurzor posunul natolik, že lekce 1.1 zaplní celou
+     obrazovku.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 1.1:  POHYB KURZORU
+
+
+   ** Pro pohyb kurzoru používej klávesy h,j,k,l jak je znázorněno níže. **
+            ^
+            k             Funkce: Klávesa h je vlevo a vykoná pohyb vlevo.
+       < h      l >               Klávesa l je vpravo a vykoná pohyb vpravo.
+            j                     Klávesa j vypadá na šipku dolu.
+            v
+  1. Pohybuj kurzorem po obrazovce dokud si na to nezvykneš.
+
+  2. Drž klávesu pro pohyb dolu (j), dokud se její funkce nezopakuje.
+---> Teď víš jak se přesunout na následující lekci.
+
+  3. Použitím klávesy dolu přejdi na lekci 1.2.
+
+Poznámka: Pokud si někdy nejsi jist něčím, co jsi napsal, stlač <ESC> pro
+          přechod do Normálního módu. Poté přepiš požadovaný příkaz.
+
+Poznámka: Kurzorové klávesy také fungují, avšak používání hjkl je rychlejší
+          jakmile si na něj zvykneš.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.2: SPUŠTĚNÍ A UKONČENÍ VIM
+
+
+  !! POZNÁMKA: Před vykonáním těchto kroků si přečti celou lekci!!
+
+  1. Stlač <ESC> (pro ujištění, že se nacházíš v Normálním módu).
+
+  2. Napiš:                   :q! <ENTER>.
+
+---> Tímto ukončíš editor BEZ uložení změn, které si vykonal.
+     Pokud chceš uložit změny a ukončit editor napiš:
+                               :wq  <ENTER>
+
+  3. Až se dostaneš na příkazový řádek, napiš příkaz, kterým se dostaneš zpět
+     do této výuky. To může být: vimtutor <ENTER>
+     Běžně se používá:            vim tutor <ENTER>
+
+---> 'vim' znamená spuštění editoru, 'tutor' je soubor k editaci.
+
+  4. Pokud si tyto kroky spolehlivě pamatuješ, vykonej kroky 1 až 3, čímž
+     ukončíš a znovu spustíš editor. Potom přesuň kurzor dolu na lekci 1.3.
+     
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.3: ÚPRAVA TEXTU - MAZÁNÍ
+
+
+  ** Stisknutím klávesy  x  v Normálním módu smažeš znak na místě kurzoru. **
+
+  1. Přesuň kurzor níže na řádek označený --->.
+
+  2. K odstranění chyb přejdi kurzorem na znak, který chceš smazat.
+
+  3. Stlač klávesu  x  k odstranění nechtěných znaků.
+
+  4. Opakuj kroky 2 až 4 dokud není věta správně.
+
+---> Krááva skoččilla přess měssíc.
+
+  5. Pokud je věta správně, přejdi na lekci 1.4.
+
+POZNÁMKA: Nesnaž se pouze zapamatovat předváděné příkazy, uč se je používáním.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ
+
+
+      ** Stlačení klávesy  i  v Normálním módu umožňuje vkládání textu. **
+
+  1. Přesuň kurzor na první řádek označený --->.
+
+  2. Pro upravení prvního řádku do podoby řádku druhého, přesuň kurzor na
+     první znak za místo, kde má být text vložený.
+
+  3. Stlač  i  a napiš potřebný dodatek.
+
+  4. Po opravení každé chyby stlač <ESC> pro návrat do Normálního módu.
+     Opakuj kroky 2 až 4 dokud není věta správně.
+
+---> Nějaký txt na této .
+---> Nějaký text chybí na této řádce.
+
+  5. Pokud již ovládáš vkládání textu, přejdi na následující shrnutí.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 1
+
+
+  1. Kurzorem se pohybuje pomocí šipek nebo klávesami hjkl.
+       h (vlevo)       j (dolu)        k (nahoru)      l (vpravo)
+
+  2. Pro spuštění Vimu (z příkazového řádku) napiš: vim SOUBOR <ENTER>
+
+  3. Pro ukončení Vimu napiš: <ESC>  :q!  <ENTER>  bez uložení změn.
+                      anebo: <ESC>  :wq  <ENTER>  pro uložení změn.
+
+  4. Pro smazání znaku pod kurzorem napiš v Normálním módu:  x
+
+  5. Pro vkládání textu od místa kurzoru napiš v Normálním módu:
+        i     vkládaný text  <ESC>
+
+POZNÁMKA: Stlačení <ESC> tě přemístí do Normálního módu nebo zruší nechtěný
+      a částečně dokončený příkaz.
+
+Nyní pokračuj Lekcí 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 2.1: PŘÍKAZY MAZÁNÍ
+
+
+              ** Příkaz  dw  smaže znaky do konce slova. **
+
+  1. Stlač  <ESC>  k ubezpečení, že jsi v Normálním módu.
+
+  2. Přesuň kurzor níže na řádek označený --->.
+
+  3. Přesuň kurzor na začátek slova, které je potřeba smazat.
+
+  4. Napiš   dw        , aby slovo zmizelo.
+
+POZNÁMKA: Písmena dw se zobrazí na posledním řádku obrazovky jakmile je
+         napíšeš. Když napíšeš něco špatně, stlač  <ESC>  a začni znova.
+
+---> Jsou tu nějaká slova zábava, která nepatří list do této věty.
+
+  5. Opakuj kroky 3 až 4 dokud není věta správně a přejdi na lekci 2.2.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 2.2: VÍCE PŘÍKAZŮ MAZÁNÍ
+
+
+          ** Napsání příkazu  d$  smaže vše až do konce řádky. **
+
+  1. Stlač  <ESC>  k ubezpečení, že jsi v Normálním módu.
+
+  2. Přesuň kurzor níže na řádek označený --->.
+
+  3. Přesuň kurzor na konec správné věty (ZA první tečku).
+
+  4. Napiš  d$  ,aby jsi smazal znaky až do konce řádku.
+
+---> Někdo napsal konec této věty dvakrát. konec této věty dvakrát.
+
+
+  5. Přejdi na lekci 2.3 pro pochopení toho, co se stalo.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Lekce 2.3: ROZŠIŘOVACÍ PŘÍKAZY A OBJEKTY
+
+
+  Formát mazacího příkazu  d  je následující:
+
+        [číslo]   d   objekt     NEBO     d   [číslo]   objekt
+  Kde:
+    číslo - udává kolikrát se příkaz vykoná (volitelné, výchozí=1).
+    d - je příkaz mazání.
+    objekt - udává na čem se příkaz vykonává (vypsané níže).
+
+  Krátký výpis objektů:
+    w - od kurzoru do konce slova, včetně mezer.
+    e - od kurzoru do konce slova, BEZ mezer.
+    $ - od kurzoru do konce řádku.
+
+POZNÁMKA:  Stlačením klávesy objektu v Normálním módu se kurzor přesune na
+           místo upřesněné ve výpisu objektů.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 2.4: VÝJIMKA Z 'PŘÍKAZ-OBJEKT'
+
+
+                 ** Napsáním   dd   smažeš celý řádek. **
+
+  Vzhledem k častosti mazání celého řádku se autoři Vimu rozhodli, že bude
+  jednoduší napsat prostě dvě d k smazání celého řádku.
+
+  1. Přesuň kurzor na druhý řádek spodního textu.
+  2. Napiš  dd  pro smazání řádku.
+  3. Přejdi na čtvrtý řádek.
+  4. Napiš   2dd   (vzpomeň si  číslo-příkaz-objekt) pro smazání dvou řádků.
+
+      1)  Růže jsou červené,
+      2)  Bláto je zábavné,
+      3)  Fialky jsou modré,
+      4)  Mám auto,
+      5)  Hodinky ukazují čas,
+      6)  Cukr je sladký,
+      7)  A to jsi i ty.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Lekce 2.5: PŘÍKAZ UNDO
+
+
+   ** Stlač  u        pro vrácení posledního příkazu,  U  pro celou řádku. **
+
+  1. Přesuň kurzor níže na řádek označený ---> a přemísti ho na první chybu.
+  2. Napiš  x  pro smazání prvního nechtěného znaku.
+  3. Teď napiš  u  čímž vrátíš zpět poslední vykonaný příkaz.
+  4. Nyní oprav všechny chyby na řádku pomocí příkazu  x  .
+  5. Napiš velké  U  čímž vrátíš řádek do původního stavu.
+  6. Teď napiš  u  několikrát, čímž vrátíš zpět příkaz  U  .
+  7. Stlač CTRL-R (klávesu CTRL drž stlačenou a stiskni R) několikrát,
+     čímž vrátíš zpět předtím vrácené příkazy (redo).
+
+---> Opprav chybby nna toomto řádku a nahraď je pommocí undo.
+
+  8. Toto jsou velmi užitečné příkazy. Nyní přejdi na souhrn Lekce 2.
+
+  
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 2
+
+
+  1. Pro smazání znaků od kurzoru do konce slova napiš:    dw
+
+  2. Pro smazání znaků od kurzoru do konce řádku napiš:    d$
+
+  3. Pro smazání celého řádku napiš:    dd
+
+  4. Formát příkazu v Normálním módu je:
+
+       [číslo]   příkaz   objekt    NEBO    příkaz     [číslo]   objekt
+     kde:
+       číslo - udává počet opakování příkazu
+       příkaz - udává co je třeba vykonat, například  d  maže
+       objekt - udává rozsah příkazu, například  w  (slovo),
+               $ (do konce řádku), atd.
+
+  5. Pro vrácení předešlé činnosti, napiš:      u (malé u)
+     Pro vrácení všech úprav na řádku napiš:    U (velké U)
+     Pro vrácení vrácených úprav (redo) napiš:   CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Lekce 3.1: PŘÍKAZ VLOŽIT
+
+
+       ** Příka  p  vloží poslední vymazaný text za kurzor. **
+
+  1. Přesuň kurzor níže na poslední řádek textu.
+
+  2. Napiš  dd  pro smazání řádku a jeho uložení do bufferu.
+
+  3. Přesuň kurzor VÝŠE tam, kam smazaný řádek patří.
+
+  4. V Normálním módu napiš  p  pro opětné vložení řádku.
+
+  5. Opakuj kroky 2 až 4 dokud řádky nebudou ve správném pořadí.
+
+     d) Také se dokážeš vzdělávat?
+     b) Fialky jsou modré,
+     c) Inteligence se učí,
+     a) Růže jsou červené,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Lekce 3.2: PŘÍKAZ NAHRAZENÍ
+
+
+          ** Napsáním  r  a znaku se nahradí znak pod kurzorem. **
+
+  1. Přesuň kurzor níže na první řádek označený --->.
+
+  2. Přesuň kurzor na začátek první chyby.
+
+  3. Napiš  r  a potom znak, který nahradí chybu.
+
+  4. Opakuj kroky 2 až 3 dokud není první řádka správně.
+
+--->  Kdiž byl pzán tento řádeg, někdu stlažil špaqné klávesy!
+--->  Když byl psán tento řádek, někdo stlačíl špatné klávesy!
+
+  5. Nyní přejdi na Lekci 3.2.
+
+POZNÁMKA: Zapamatuj si, že by ses měl učit používáním, ne zapamatováním.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Lekce 3.3: PŘÍKAZ ÚPRAVY
+
+
+         ** Pokud chceš změnit část nebo celé slovo, napiš  cw . **
+
+  1. Přesuň kurzor níže na první řádek označený --->.
+
+  2. Umísti kurzor na písmeno i v slově řiťok.
+
+  3. Napiš  cw  a oprav slovo (v tomto případě napiš 'ádek'.)
+
+  4. Stlač <ESC> a přejdi na další chybu (první znak, který třeba změnit.)
+
+  5. Opakuj kroky 3 až 4 dokud není první věta stejná jako ta druhá.
+
+---> Tento řiťok má několik skic, které psadoinsa změnit pasdgf příkazu.
+---> Tento řádek má několik slov, které potřebují změnit pomocí příkazu.
+
+Všimni si, že  cw  nejen nahrazuje slovo, ale také přemístí do vkládání.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Lekce 3.4: VÍCE ZMĚN POUŽITÍM c
+
+
+   ** Příkaz pro úpravu se druží se stejnými objekty jako ten pro mazání. **
+
+  1. Příkaz pro úpravu pracuje stejně jako pro mazání. Formát je:
+
+       [číslo]   c   objekt   NEBO      c    [číslo]   objekt
+
+  2. Objekty jsou také shodné, jako např.: w (slovo), $ (konec řádku), atd.
+
+  3. Přejdi níže na první řádek označený --->.
+
+  4. Přesuň kurzor na první rozdíl.
+
+  5. Napiš  c$  pro upravení zbytku řádku podle toho druhého a stlač <ESC>.
+
+---> Konec tohoto řádku potřebuje pomoc, aby byl jako ten druhý.
+---> Konec tohoto řádku potřebuje opravit použitím příkazu  c$  .
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 3
+
+
+  1. Pro vložení textu, který byl smazán, napiš  p  . To vloží smazaný text
+     ZA kurzor (pokud byl řádek smazaný, přejde na řádek pod kurzorem).
+
+  2. Pro nahrazení znaku pod kurzorem, napiš  r  a potom znak, kterým
+     chceš původní znak nahradit.
+
+  3. Příkaz na upravování umožňuje změnit specifikovaný objekt od kurzoru
+     do konce objektu. Například: Napiš  cw  ,čímž změníš text od pozice
+     kurzoru do konce slova,  c$  změní text do konce řádku.
+
+  4. Formát pro nahrazování je:
+
+        [číslo]   c   objekt      NEBO     c   [číslo]   objekt
+
+Nyní přejdi na následující lekci.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 4.1: POZICE A STATUS SOUBORU
+
+
+  ** Stlač CTRL-g pro zobrazení své pozice v souboru a statusu souboru.
+     Stlač SHIFT-G pro přechod na řádek v souboru. **
+
+  Poznámka: Přečti si celou lekci než začneš vykonávat kroky!!
+
+  1. Drž klávesu Ctrl stlačenou a stiskni  g  . Vespod obrazovky se zobrazí
+     stavový řádek s názvem souboru a řádkou na které se nacházíš. Zapamatuj
+     si číslo řádku pro krok 3.
+
+  2. Stlač shift-G pro přesun na konec souboru.
+
+  3. Napiš číslo řádku na kterém si se nacházel a stlač shift-G. To tě
+     vrátí na řádek, na kterém jsi dříve stiskl Ctrl-g.
+     (Když píšeš čísla, tak se NEZOBRAZUJÍ na obrazovce.)
+
+  4. Pokud se cítíš schopný vykonat tyto kroky, vykonej je.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 4.2: PŘÍKAZ VYHLEDÁVÁNÍ
+
+
+     ** Napiš  /  následované řetězcem pro vyhledání onoho řetězce. **
+
+  1. Stiskni / v Normálním módu.  Všimni si, že tento znak se spolu s
+     kurzorem zobrazí v dolní části obrazovky jako příkaz  :  .
+
+  2. Nyní napiš 'chhybba' <ENTER>.  To je slovo, které chceš vyhledat.
+
+  3. Pro vyhledání dalšího výsledku stejného řetězce, jednoduše stlač  n  .
+     Pro vyhledání dalšího výsledku stejného řetězce opačným směrem, stiskni
+     Shift-N.
+
+  4. Pokud chceš vyhledat řetězec v opačném směru, použij příkaz  ?  místo
+     příkazu  /  .
+
+---> "chhybba" není způsob, jak hláskovat chyba; chhybba je chyba.
+
+Poznámka: Když vyhledávání dosáhne konce souboru, bude pokračovat na jeho
+          začátku.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Lekce 4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY
+
+
+             ** Napiš  %  pro nalezení párové ),], nebo } . **
+
+  1. Přemísti kurzor na kteroukoli (, [, nebo { v řádku označeném --->.
+
+  2. Nyní napiš znak  %  .
+
+  3. Kurzor se přemístí na odpovídající závorku.
+
+  4. Stlač  %  pro přesun kurzoru zpět na otvírající závorku.
+
+---> Toto ( je testovací řádek ('s, ['s ] a {'s } v něm. ))
+
+Poznámka: Toto je velmi užitečné pří ladění programu s chybějícími
+          uzavíracími závorkami.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 4.4: ZPŮSOB JAK ZMĚNIT CHYBY
+                     
+
+   ** Napiš  :s/staré/nové/g  pro nahrazení slova 'nové' za 'staré'. **
+
+  1. Přesuň kurzor na řádek označený --->.
+
+  2. Napiš  :s/dobréé/dobré <ENTER> .  Všimni si, že tento příkaz změní pouze
+     první výskyt v řádku.
+
+  3. Nyní napiš       :s/dobréé/dobré/g  což znamená celkové nahrazení v řádku.
+     Toto nahradí všechny výskyty v řádku.
+
+---> dobréé suroviny a dobréé náčiní jsou základem dobréé kuchyně.
+
+  4. Pro změnu všech výskytů řetězce mezi dvěma řádky,
+     Napiš   :#,#s/staré/nové/g  kde #,# jsou čísla oněch řádek.
+     Napiš   :%s/staré/nové/g    pro změnu všech výskytů v celém souboru.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 4
+
+
+  1. Ctrl-g  vypíše tvou pozici v souboru a status souboru.
+     Shift-G  tě přemístí na konec souboru.  Číslo následované
+     Shift-G  tě přesune na dané číslo řádku.
+
+  2. Napsání  /  následované řetězcem vyhledá řetězec směrem DOPŘEDU.
+     Napsání  ?  následované řetězcem vyhledá řetězec směrem DOZADU.
+     Napsání  n  po vyhledávání najde následující výskyt řetězce ve stejném
+     směru, Shift-N ve směru opačném.
+
+  3. Stisknutí  %  když je kurzor na (,),[,],{, nebo } najde odpovídající
+     párovou závorku.
+
+  4. Pro nahrazení nového za první starý v řádku napiš     :s/staré/nové
+     Pro nahrazení nového za všechny staré v řádku napiš   :s/staré/nové/g
+     Pro nahrazení řetězců mezi dvěmi řádkami # napiš      :#,#s/staré/nové/g
+     Pro nahrazení všech výskytů v souboru napiš     :%s/staré/nové/g
+     Pro potvrzení každého nahrazení přidej 'c'              :%s/staré/nové/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Lekce 5.1: JAK VYKONAT VNĚJŠÍ PŘÍKAZ
+
+
+   ** Napiš  :!  následované vnějším příkazem pro spuštění příkazu. **
+
+  1. Napiš obvyklý příkaz  :  , který umístí kurzor na spodek obrazovky
+     To umožní napsat příkaz.
+
+  2. Nyní stiskni  !  (vykřičník). To umožní vykonat jakýkoliv vnější
+     příkaz z příkazového řádku.
+
+  3. Například napiš  ls  za ! a stiskni <ENTER>.  Tento příkaz zobrazí
+     obsah tvého adresáře jako v příkazovém řádku.
+     Vyzkoušej  :!dir  pokud ls nefunguje.
+
+Poznámka:  Takto je možné vykonat jakýkoliv příkaz.
+
+Poznámka:  Všechny příkazy  :  musí být dokončené stisknutím <ENTER>
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 5.2: VÍCE O UKLÁDÁNÍ SOUBORŮ
+
+
+           ** Pro uložení změn v souboru napiš  :w SOUBOR. **
+
+  1. Napiš  :!dir  nebo  :!ls  pro výpis aktuálního adresáře.
+     Už víš, že za tímto musíš stisknout <ENTER>.
+
+  2. Vyber si název souboru, který ještě neexistuje, například TEST.
+
+  3. Nyní napiš:  :w TEST  (kde TEST je vybraný název souboru.)
+
+  4. To uloží celý soubor  (Výuka Vimu)  pod názvem TEST.
+     Pro ověření napiš znovu :!dir  , čímž zobrazíš obsah adresáře.
+
+Poznámka: Jakmile ukončíš Vim a znovu ho spustíš s názvem souboru TEST,
+          soubor bude přesná kopie výuky, když si ji ukládal.
+
+  5. Nyní odstraň soubor napsáním (MS-DOS):    :!del TEST
+                            nebo (Unix):      :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lekce 5.3: VÝBĚROVÝ PŘÍKAZ ULOŽENÍ
+
+
+           ** Pro uložení části souboru napiš  :#,# w SOUBOR **
+
+  1. Ještě jednou napiš  :!dir  nebo  :!ls  pro výpis aktuálního adresáře
+     a vyber vhodný název souboru jako např. TEST.
+
+  2. Přesuň kurzor na vrch této stránky a stiskni  Ctrl-g  pro zobrazení
+     čísla řádku.  ZAPAMATUJ SI TOTO ČÍSLO!
+
+  3. Nyní se přesuň na spodek této stránky a opět stiskni Ctrl-g.
+     ZAPAMATUJ SI I ČÍSLO TOHOTO ŘÁDKU!
+
+  4. Pro uložení POUZE části souboru, napiš  :#,# w TEST  kde #,# jsou
+     čísla dvou zapamatovaných řádků (vrch, spodek) a TEST je název souboru.
+
+  5. Znova se ujisti, že tam ten soubor je pomocí  :!dir  ale NEODSTRAŇUJ ho.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lekce 5.4: SLUČOVÁNÍ SOUBORŮ
+
+
+          ** K vložení obsahu souboru napiš  :r NÁZEV_SOUBORU **
+
+  1. Napiš  :!dir  pro ujištění, že soubor TEST stále existuje.
+
+  2. Přesuň kurzor na vrch této stránky.
+
+POZNÁMKA: Po vykonání kroku 3 uvidíš lekci 5.3.   Potom se opět přesuň dolů
+          na tuto lekci.
+
+  3. Nyní vlož soubor TEST použitím příkazu  :r TEST  kde TEST je název
+     souboru.
+
+POZNÁMKA: Soubor, který vkládáš se vloží od místa, kde se nachází kurzor.
+
+  4. Pro potvrzení vložení souboru, přesuň kurzor zpět a všimni si, že teď
+     máš dvě kopie lekce 5.3, originál a souborovou verzi.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRNUTÍ LEKCE 5
+
+
+  1.  :!příkaz  vykoná vnější příkaz.
+
+      Některé užitečné příklady jsou:
+        (MS-DOS)         (Unix)
+         :!dir            :!ls            -  zobrazí obsah souboru.
+         :!del SOUBOR     :!rm SOUBOR     -  odstraní SOUBOR.
+
+  2.  :w SOUBOR  uloží aktuální text jako SOUBOR na disk.
+
+  3.  :#,#w SOUBOR  uloží řádky od # do # do SOUBORU.
+
+  4.  :r SOUBOR  vybere z disku SOUBOR a vloží ho do editovaného souboru
+      za pozici kurzoru.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Lekce 6.1: PŘÍKAZ OTEVŘÍT
+
+
+  ** Napiš  o  pro vložení řádku pod kurzor a přepnutí do Vkládacího módu. **
+
+  1. Přemísti kurzor níže na řádek označený --->.
+
+  2. Napiš  o (malé) pro vložení řádku POD kurzor a přepnutí do
+     Vkládacího módu.
+
+  3. Nyní zkopíruj řádek označený ---> a stiskni <ESC> pro ukončení
+     Vkládacího módu.
+  
+---> Po stisknutí  o  se kurzor přemístí na vložený řádek do Vkládacího
+     módu.
+
+  4. Pro otevření řádku NAD kurzorem jednoduše napiš velké  O  , místo
+     malého o. Vyzkoušej si to na následujícím řádku.
+Vlož řádek nad tímto napsáním Shift-O po umístění kurzoru na tento řádek.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Lekce 6.2: PŘÍKAZ PŘIDAT
+
+
+            ** Stiskni  a  pro vložení textu ZA kurzor. **
+
+  1. Přesuň kurzor na níže na konec řádky označené --->
+     stisknutím $ v Normálním módu.
+
+  2. Stiskni  a  (malé) pro přidání textu ZA znak, který je pod kurzorem.
+     (Velké  A  přidá na konec řádku.)
+
+Poznámka: Tímto se vyhneš stisknutí  i  , posledního znaku, textu na vložení,
+          <ESC>, kurzor doprava, a nakonec  x  na přidávání na konec řádku!
+
+  3. Nyní dokončí první řádek. Všimni si, že přidávání je vlastně stejné jako
+     Vkládací mód, kromě místa, kam se text vkládá.
+
+---> Tento řádek ti umožňuje nacvičit
+---> Tento řádek ti umožňuje nacvičit přidávání textu na konec řádky.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Lekce 6.3: JINÝ ZPŮSOB NAHRAZOVÁNÍ
+
+
+         ** Napiš velké  R  pro nahrazení víc než jednoho znaku. **
+
+  1. Přesuň kurzor na první řádek označený --->.
+
+  2. Umísti kurzor na začátek prvního slova, které je odlišné od druhého
+     řádku označeného ---> (slovo 'poslední').
+
+  3. Nyní stiskni  R  a nahraď zbytek textu na prvním řádku přepsáním
+     starého textu tak, aby byl první řádek stejný jako ten druhý.
+
+---> Pro upravení prvního řádku do tvaru toho poslední na straně použij kl.
+---> Pro upravení prvního řádku do tvaru toho druhého, napiš R a nový text.
+
+  4. Všimni si, že jakmile stiskneš <ESC> všechen nezměněný text zůstává.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Lekce 6.4: NASTAVENÍ MOŽNOSTÍ
+
+  ** Nastav možnost, že vyhledávání anebo nahrazování nedbá velikosti písmen **
+
+  1. Vyhledej řetězec 'ignore' napsáním:
+     /ignore
+     Zopakuj několikrát stisknutí klávesy n.
+
+  2. Nastav možnost 'ic' (Ignore case) napsáním příkazu:
+     :set ic
+
+  3. Nyní znovu vyhledej 'ignore' stisknutím: n
+     Několikrát hledání zopakuj stisknutím klávesy n.
+
+  4. Nastav možnosti 'hlsearch' a 'incsearch':
+     :set hls is
+
+  5. Nyní znovu vykonej vyhledávací příkaz a sleduj, co se stane:
+     /ignore
+
+  6. Pro vypnutí zvýrazňování výsledků napiš:
+     :nohlsearch
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              SHRHNUTÍ LEKCE 6
+
+
+  1. Stisknutí  o  otevře nový řádek POD kurzorem a umístí kurzor na vložený
+     řádek do Vkládacího módu.
+     Napsání velkého  O  otevře řádek NAD řádkem, na kterém je kurzor.
+
+  2. Stiskni  a  pro vložení textu ZA znak na pozici kurzoru.
+     Napsání velkého  A  automaticky přidá text na konec řádku.
+
+  3. Stisknutí velkého  R  přepne do Nahrazovacího módu, dokud
+     nestiskneš <ESC> pro jeho ukončení.
+
+  4. Napsání ":set xxx" nastaví možnosti "xxx".
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     LEKCE 7: PŘÍKAZY ON-LINE NÁPOVĚDY
+
+
+                  ** Používej on-line systém nápovědy **
+
+  Vim má obsáhlý on-line systém nápovědy. Pro začátek vyzkoušej jeden z
+  následujících:
+       - stiskni klávesu <HELP> (pokud ji máš)
+       - stiskni klávesu <F1>  (pokud ji máš)
+       - napiš  :help <ENTER>
+
+  Napiš  :q <ENTER>  pro uzavření okna nápovědy.
+
+  Můžeš najít nápovědu k jakémukoliv tématu přidáním argumentu k
+  příkazu ":help". Zkus tyto (nezapomeň stisknout <ENTER>):
+
+       :help w
+       :help c_<T
+       :help insert-index
+       :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 LEKCE 8: VYTVOŘENÍ INICIALIZAČNÍHO SKRIPTU
+
+                       ** Zapni funkce editoru Vim **
+
+  Vim má daleko více funkcí než Vi, ale většina z nich je vypnuta ve výchozím
+  nastavení. Pro zapnutí některých vytvoř soubor "vimrc".
+
+  1. Začni upravovat soubor "vimrc". Toto závisí na použitém systému:
+       :edit ~/.vimrc                  pro Unix
+       :edit $VIM/_vimrc               pro MS-Windows
+
+  2. Nyní čti ukázkový "vimrc" soubor:
+
+       :read $VIMRUNTIME/vimrc_example.vim
+
+  3. Ulož soubor pomocí:
+
+       :write
+
+  Po příštím startu Vim se zapne zvýrazňování syntaxe.
+  Do souboru "vimrc" můžeš přidat všechny svoje upřednostňované nastavení.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Toto ukončuje výuku Vim, která byla myšlená jako stručný přehled
+  editoru Vim, tak akorát postačující pro lehké a obstojné používání editoru.
+  Tato výuka má daleko od úplnosti, protože Vim obsahuje podstatně více
+  příkazů. Dále si přečti uživatelský manuál: ":help user-manual".
+
+  Pro další studium je doporučená kniha:
+       Vim - Vi Improved - od Steve Oualline
+       Nakladatel: New Riders
+  První kniha určená pro Vim. Obzvláště vhodná pro začátečníky.
+  Obsahuje množství příkladů a obrázků.
+  viz http://iccf-holland.org/click5.html
+
+  Tato kniha je starší a více věnovaná Vi než Vim, ale také doporučená:
+       Learning the Vi Editor - od Linda Lamb
+       Nakladatel: O'Reilly & Associates Inc.
+  Je to dobrá kniha pro získání vědomostí téměř o všem, co můžete s Vi dělat.
+  Šesté vydání obsahuje též informace o Vim.
+
+  Tato výuka byla napsaná autory Michael C. Pierce a Robert K. Ware,
+  Colorado School of Mines s použitím myšlenek od: Charles Smith,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Upravil pro Vim: Bram Moolenaar.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Překlad do češtiny: Luboš Turek
+  E-Mail: lubos.turek@gmail.com
+  2007 Feb 28 
diff --git a/runtime/tutor/tutor.hu b/runtime/tutor/tutor.hu
new file mode 100644 (file)
index 0000000..84e6bd4
--- /dev/null
@@ -0,0 +1,823 @@
+===============================================================================
+=    Ü d v ö z ö l j ü k   a   V I M   T u t o r b a n  -    1.5-ös  verzió ===
+===============================================================================
+
+     A Vim egy nagyon hatékony szerkesztõ, amelnyek rengeteg utasítása
+     van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni
+     mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit
+     elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az
+     általános célú szövegszerkesztõt.
+
+     A feladatok megoldásához 25-30 perc szükséges attól függõen,
+     mennyit töltünk a kisérletezéssel.
+
+     A leckében szereplõ utasítások módosítani fogják a szövegek.
+     Készítsen másolatot errõl a fájlról, ha gyakorolni akar.
+     (Ha "vimtutor"-ral indította, akkor ez már egy másolat.)
+
+     Fontos megérteni, hogy ez az oktató cselekedve taníttat.
+     Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat,
+     hogy megfelelõen megtanulja azokat. Ha csak olvassa, elfelejti!
+
+     Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és
+     Nyomja meg megfelelõ számúszor a   j   gombot, hogy az 1.1-es
+     lecke teljesen a képernyõn legyen!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       1.1.  lecke:  A KURZOR MOZGATÁSA
+
+
+   ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. **
+            ^
+            k              Tipp:  A h billentyû van balra, és balra mozgat
+       < h      l >               A l billentyû van jobbra, és jobbra mozgat
+            j                     A j billentyû olyan, mint egy lefele nyíl
+            v
+  1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik!
+
+  2. Tartsa lenyomva a lefelét (j), akkor ismétlõdik!
+---> Most tudja, hogyan mehet a következõ leckére.
+
+  3. A lefelé fomb használatával menjen a 1.2. leckére!
+
+Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
+      normál módba kerüljön, és ismételje meg a parancsot!
+
+Megj: A kurzor gomboknak is mûködniük kell, de a hjkl használatával
+      sokkal gyorsabban tud, mozogni, ha hozzászokik.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    1.2.  lecke: BE ÉS KILÉPÉS A VIMBÕL
+
+
+  !! MEGJ: Mielõtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !!
+
+  1. Nyomja meg az  <ESC> gombot (hogy biztosan normál módban legyen).
+
+  2. Írja:                     :q! <ENTER>.
+
+---> Ezzel kilép a szerkesztõbõl a változások MENTÉSE NÉLKÜL.
+     Ha menteni szeretné a változásokat és kilépni, írja:
+                               :wq  <ENTER>
+
+  3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe a
+     tutorba hozza:
+     Ez valószínûleg:  vimtutor <ENTER>
+     Normális esetben ezt írná:        vim tutor.hu <ENTER>
+
+---> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván.
+
+  4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket
+     1-tõl 3-ig, hogy kilépjen és visszatérjen a szerkesztõbe. Azután
+     menjen az 1.3.  leckére.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    1.3.  lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS
+
+
+** Normál módban nyomjon  x-et, hogy a kurzor alatti karaktert törölje. **
+
+  1. Mozgassa a kurzort a ---> kezdetû sorra!
+
+  2. A hibák kijavításához mozgassa a kurzort amíg a törlendõ karakter
+     fölé nem ér.
+
+  3. Nyomja meg az  x  gombot, hogy törölje a nemkívánt karaktert.
+
+  4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot.
+
+---> ÕÕszi éjjjell izziik aa galaggonya rruuhája.
+
+  5. Ha a sor helyes, ugorjon a 1.4. leckére.
+
+MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    1.4.  lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS
+
+
+        ** Normál módban  i  megnyomásával lehet beilleszteni. **
+
+  1. Az alábbi elsõ ---> kezdetû sorra menjen.
+
+  2. Ahhoz, hogy az elsõt azonossá tegye a másodikkal, mozgassa a kurzort
+     az elsõ karakterre, amely UTÁN szöveget kell beszúrni.
+
+  3. Nyomjon  i-t és írja be a megfelelõ szöveget.
+
+  4. Amikor mindent beírt, nyomjon <ESC>-et, hogy Normál módba visszatérjen.
+     Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot.
+
+---> Az átható soól hizik pár ész.
+---> Az itt látható sorból hiányzik pár rész.
+
+  5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              1. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja.
+        h (balra)      j (le)       k (fel)        l (jobbra)
+
+  2. A Vimbe (a $ prompttól) így léphet be:  vim FILENAME <ENTER>
+
+  3. A Vimbõl így léphet ki:  <ESC>   :q!  <ENTER>  a változtatások eldobásával.
+            vagy így:        <ESC>   :wq  <ENTER>  a változások mentésével.
+
+  4. A kurzor alatti karakter törlése normál módban:  x
+
+  5. Szöveg beszúrása a kurzor után normál módban:
+        i     gépelje be a szöveget    <ESC>
+
+MEGJ: Az <ESC> megnyomása normál módba viszi, vagy megszakít egy nem befejezett
+      részben befejezett parancsot.
+
+Most folytassuk a 2. leckével!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       2.1.  lecke: TÖRLÕ UTASÍTÁSOK
+
+
+           ** dw  töröl a szó végéig. **
+
+  1. Nyomjon <ESC>-et, hogy megbizonyosodjon, hogy normál módban van!
+
+  2. Mozgassa a kurzort a ---> kezdetû sorra!
+
+  3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne.
+     Törölje az állatokat a mondatból.
+
+  4. A szó törléséhez írja:   dw
+
+  MEGJ: Ha rosszul kezdte az utasítást csak nyomjon <ESC> gombot
+        a megszakításához.
+
+---> Pár szó kutya nem uhu illik pingvin a mondatba tehén.
+
+  5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     2.2.  lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS
+
+
+          ** d$ beírásával a sor végéig törölhet. **
+
+  1. Nyomjon <ESC>-et, hogy megbizonyosodjon, hogy normál módban van!
+
+  2. Mozgassa a kurzort a ---> kezdetû sorra!
+
+  3. Mozgassa a kurzort a helyes sor végére (az elsõ . UTÁN)!
+
+  4. d$  begépeléséveltörölje a sor végét!
+
+---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be.
+
+
+  5. Menjen a 2.3. leckére, hogy megértse mi történt!
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    2.3.  lecke: UTASÍTÁSOKRÓL ÉS OBJEKTUMOKRÓL
+
+
+  A  d  (delete=törlés) utasítás formája a következõ:
+
+        [szám]   d     objektum           VAGY      d   [szám] objektum
+  Ahol:
+    szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1).
+    d - a törlés (delete) utasítás.
+    objektum - amin a parancsnak teljesülnie kell (alább listázva).
+
+  Objektumok rövid listája:
+    w - a kurzortól a szó végéig, beleértve a szóközt.
+    e - a kurzortól a szó végéig, NEM beleértve a szóközt.
+    $ - a kurzortól a sor végéig.
+
+MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
+       a kurzor oda kerül, amit az objektumlista megad.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               2.4.  lecke: EGY KIVÉTEL A  'PARANCSOBJEKTUM' ALÓL
+
+
+              ** dd beírásával törölheti az egész sort. **
+
+  A teljes sor törlésének gyakorisága miatt a Vi tervezõi elhatározták,
+  hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk.
+
+  1. Mozgassa a kurzort az alábbi kifejezések második sorára!
+  2. dd begépelésével törölje a sort!
+  3. Menjen a 4. (eredetileg 5.) sorra!
+  4. 2dd   (ugyebár szám-utasítás-objektum) begépelésével töröljön két sort!
+
+      1)  Alvó szegek a jéghideg homokban,
+      2)  - kezdi a költõ -
+      3)  Plakátmagányban ázó éjjelek.
+      4)  Pingvinek ne féljetek,
+      5)  Távolról egy vaku villant,
+      6)  Égve hagytad a folyosón a villanyt.
+      7)  Ma ontják véremet.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        2.5.  lecke: A VISSZAVONÁS (UNDO) PARANCS
+
+
+** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. **
+
+  1. Menjünk az alábbi ---> kezdetû sor elsõ hibájára!
+  2. x  lenyomásával törölje az elsõ felesleges karaktert!
+  3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást!
+  4. Másodjára javítson ki minden hibát a sorben az x utasítással!
+  5. Most nagy  U  -val állítsa vissza a sor eredeti állapotát!
+  6. Nyomja meg az u gombot párszor, hogy az U és sz elõzõ utasításokat
+     visszaállítsa!
+  7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a
+     visszavont parancsokat (redo)!
+
+---> Javíítsd a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit.
+
+  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke összefoglalójára.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              2. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. Törlés a kurzortól a szó végéig:    dw
+
+  2. Törlés a kurzortól a szó végéig:    d$
+
+  3. Egész sor törlése:    dd
+
+  4. Egy utasítás alakja normál módban:
+
+       [szám]   utasítás   objektum   VAGY   utasítás  [szám] objektum
+     ahol:
+       szám - hányszor ismételjük a parancsot
+       utasítás - mit tegyünk, pl. d  a törléskor
+       objektum - mire hasson az utasítás, például w (szó=word),
+               $ (a sor végéig), stb.
+
+  5. Az elõzõ tett visszavonása (undo):             u   (kis u)
+     A sor összes változásának visszavonása: U  (nagy U)
+     Visszavonások visszavonása:            CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        3.1.  lecke: A PUT PARANCS
+
+
+  ** p  leütésével az utolsónak töröltet a kurzor után illeszhetjük. **
+
+  1. Mozgassuk a kurzort az alábbi sorok elsõ sorára.
+
+  2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében.
+
+  3. Mozgassuk a kurzort AFÖLÉ a sor fölé, ahová mozgatni szeretnénk a
+     törölt sort.
+
+  4. Normál módban írjunk  p   betût a törölt sor beillesztéséhez.
+
+  5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk.
+
+     d) Can you learn too?
+     b) Violets are blue,
+     c) Intelligence is learned,
+     a) Roses are red,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      3.2.  lecke: A REPLACE PARANCS
+
+
+** r  és  a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. **
+
+  1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra!
+
+  2. Mozgassuk a kurzort az elsõ hiba fölé!
+
+  3. r majd a kívánt karakter leütésével változtassuk meg a hibásat!
+
+  4. A 2. és 3. lépésekkel javítsuk az összes hibát!
+
+--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
+--->  When this line was typed in, someone pressed some wrong keys!
+
+  5. Menjünk a 3.2. leckére!
+
+MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       3.3.  lecke: A CHANGE PARANCS
+
+
+          ** A szó egy részének megváltoztatásához írjuk:  cw . **
+
+  1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra!
+
+  2. Vigye a kurzort a Ezen szó z betûje fölé!
+
+  3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót!
+
+  4. <ESC> lenyomása után a következõ hibára ugorjon (az elsõ cserélendõ
+     karakterre)!
+
+  5. A 3. és 4. lépések ismétlésével az elsõ mondatot tegye a másodikkal
+     azonossá!
+
+---> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskírésõ.
+---> Ebben a sorban pár szót meg kell változtatni a change utasítással.
+
+Vegyük észre, hogy a  cw  nem csak a szót írja át, hanem beszúró
+(insert) módba vált.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      3.4.  lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL
+
+
+ ** A c utasítás használható ugyanazokkal az objektumokkal mint a törlés **
+
+  1. A change utasítás a törléssel azonosan viselkedik.  A forma:
+
+       [szám]   c   objektum      OR       c   [szám]   objektum
+
+  2. Az objektumok is azonosak, pl.   w (szó), $ (sorvég), stb.
+
+  3. Mozgassuk a kurzort az elsõ ---> kezdetû sorra!
+
+  4. Menjünk az elsõ hibára!
+
+  5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk <ESC>-et!
+
+---> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal.
+---> Ennek a sornak a vége a c$ paranccsal változtatható meg.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              3. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget
+     a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor allatti sorba).
+
+  2. A kurzor alatti karakter átírásához az r-et és azt a karaktert
+     nyomjuk, amellyel az eredetit felül szeretnénk írni.
+
+  3. A változtatás (c) utasítás a karaktertõl az objektum végéig
+     változtatja meg az objektumot. Például a cw a kurzortól a szó végéig,
+     a c$ a sor végéig.
+
+  4. A változtatás formátuma:
+
+        [szám]   c     objektum        VAGY    c   [szám]   objektum
+
+Ugorjunk a következõ leckére!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    4.1.  lecke: HELY ÉS FÁJLÁLLAPOT
+
+
+ ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát.
+     SHIFT-G leütésével a fájl adott sorára ugorhatunk. **
+
+  Megj: Olvassuk el az egész leckét a lépések végrehajtása elõtt!!
+
+  1. Tartsuk nyomva a Ctrl gombot és nyomjunk  g-t.  Az állapotsor
+     megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával.
+     Jegyezzük meg a sorszámot a 3. lépéshez!
+
+  2. Nyomjunk Shift-G-t a lap aljára ugráshoz!
+
+  3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel
+     visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk.
+     (A beírt szám NEM fog megjelenni a képernyõn.)
+
+  4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       4.2.  lecke: A SEARCH PARANCS
+
+
+  ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. **
+
+  1. Normál módban üssünk  /  karaktert!  Ez és a kurzor megjelenik
+     a képernyõ alján, ahogy a : utasítás is.
+
+  2. Írjuk be: 'hiibaa' <ENTER>!  Ez az a szó amit keresünk.
+
+  3. A kifejezés újabb kereséséhez üssük le egyszerûen:  n .
+     A kifejezés ellenkezõ irányban történõ kereséséhez ezt üssük be: Shift-N .
+
+  4. Ha visszafelé szeretne keresni, akkor ? kell a ! helyett.
+
+---> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba.
+
+Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  4.3.  lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE
+
+
+          ** % leütésével megtaláljuk a ),], vagy }  párját. **
+
+  1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetû
+     sorban!
+
+  2. Üssön  %  karaktert!
+
+  3. A kurzor a zárójel párjára fog ugrani.
+
+  4. % leütésével visszaugrik az eredeti zárójelre.
+
+---> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. ))
+
+Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a
+      zárójelek nem párosak!
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     4.4.  lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA
+
+
+    ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. **
+
+  1. Menjünk a ---> kezdetû sorra!
+
+  2. Írjuk be:  :s/eggy/egy <ENTER> .  Ekkor csak az elsõ változik meg a
+     sorban.
+
+  3. Most ezt írjuk:    :s/eggy/egg/g     amely globálisan helyettesít
+     a sorban.
+     Ez a sorban minden elõfordulást helyettesít.
+
+---> eggy hegy meggy, szembe jön eggy másik heggy.
+
+  4. Két sor között a karaktersor minden elõfordulásának helyettesítése:
+     :#,#s/régi/új/g    ahol #,# a két sor sorszáma.
+     :%s/régi/új/g      a fájlbeli összes elõfordulás helyettesítése.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              4. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. Ctrl-g  kiírja az kurzor helyét a fájlban és a fájl állapotát.
+     Shift-G a fájl végére megy, gg az elejére. Egy szám után
+     Shift-G  az adott számú sorra ugrik.
+
+  2. / után egy kifejezés ELÕREFELE keresi a kifejezést.
+  2. ? után egy kifejezés VISSZAFELE keresi a kifejezést.
+     Egy keresés után az  n  a következõ elõfordulást keresi azonos irányban
+     Shift-N  az ellenkezõ irányban keres.
+
+  3. % begépelésével, ha  (,),[,],{, vagy } karakteren vagyunk a zárójel
+     párjára ugrik.
+
+  4. az elsõ régi helyettesítése újjal a sorban    :s/régi/új
+     az összes régi helyettesítése újjal a sorban  :s/régi/új/g
+     két sor közötti kifejezésekre                :#,#s/régi/új/g
+     # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g
+     A fájlbeli összes elõfordulás helyettesítése  :%s/régi/új/g
+     Mindenkori megerõsítésre vár 'c' hatására    :%s/régi/új/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               5.1.  lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA
+
+
+   ** :!  után külsõ parancsot írva végrehajtódik a parancs. **
+
+  1. Írjuk be az ismerõs : parancsot, hogy a kurzort a  képernyõ aljára
+     helyezzük. Ez lehetõvé teszi egy parancs beírását.
+
+  2. ! (felkiáltójel) beírásával tegyük lehetõvé külsõ héj (shell)-parancs
+     végrehajtását.
+
+  3. Írjunk például ls parancsot a ! után majd üssünk <ENTER>-t.  Ez ki
+     fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál
+     lennénk.  Vagy írja ezt  :!dir  ha az ls nem mûködik.
+
+Megj:  Ilymódon bármely külsõ utasítás végrehajtható.
+
+Megj:  Minden  :  parancs után <ENTER>-t kell ütni.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     5.2.  lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL
+
+
+     ** A fájlok változásait így írhatjuk ki  :w FÁJLNÉV. **
+
+  1. :!dir  vagy  :!ls  beírásával listázzuk a könyvtárunkat!
+     Ön már tudja, hogy <ENTER>-t kell ütnie utána.
+
+  2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT!
+
+  3. Írja:     :w TESZT   (ahol TESZT a választott fájlnév)!
+
+  4. Ez elmenti a teljes fájlt (a Vim Tutort) TESZT néven.
+     Ellenõrzésképp írjuk ismét    :!dir   hogy lássuk a könyvtárat!
+     (Felfelé gombbal : után az elõzõ utasítások visszahozhatóak.)
+
+Megj: Ha Ön kilépne a Vimbõl és és visszatérne a TESZT fájlnévvel, akkor a
+      fájl a tutor mentéskori pontos másolata lenne.
+
+  5. Távolítsa el a fájlt  (MS-DOS):   :!del TESZT
+                       vagy (Unix):    :!rm TESZT
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   5.3.  lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA
+
+
+       ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV **
+
+  1. :!dir  vagy :!ls  beírásával listázza a könyvtárat, és válasszon egy
+     megfelelõ fájlnevet, pl. TESZT.
+
+  2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon
+     Ctrl-g-t, hogy megtudja a sorszámot.  JEGYEZZE MEG A SZÁMOT!
+
+  3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g.  EZT A SZÁMOT
+     IS JEGYEZZE MEG!
+
+  4. Ha csak ezt a részét szeretné menteni a fájlnak, írja   :#,# w TESZT
+     ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve.
+
+  5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje.
+
+  6. Vimben létezik egy másik lehetõség: nyomja meg a Shift-V gombpárt
+     az elsõ menteni kívánt soron, majd menjen le az utolsóra, ezután
+     írja :w TESZT2   Ekkor a TESZT2 fájlba kerül a kijelölt rész.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  5.4.  lecke: RETRIEVING AND MERGING FILES
+
+
+       ** Egy fájl tartalmának beillesztéséhez írja   :r FÁJLNÉV **
+
+  1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még.
+
+  2. Helyezze a kurzort ennek az oldalnak a tetejére.
+
+MEGJ:  A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva
+       keresse meg ismét ezt a leckét.
+
+  3. Most szúrja be a TESZT nevû fájlt a   :r TESZT   paranccsal, ahol
+     TESZT az Ön fájljénak a neve.
+
+MEGJ:  A fájl, amit beillesztett a kurzora alatt helyezkedik el.
+
+  4. Hogy ellenõrizzük, hogy a fájlt tényleg beillsztettük, menjen
+     vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti
+     mellett a fájlból bemásolt is ott van.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              5. LECKE ÖSSZEFOGLALÓJA
+
+
+  1.  :!parancs végrehajt egy külsõ utasítást.
+
+      Pár hasznos példa:
+        (MS-DOS)         (Unix)
+         :!dir            :!ls            -  könyvtárlista kiírása.
+         :!del FÁJLNÉV    :!rm FÁJLNÉV    -  FÁJLNÉV nevû fájl törlése.
+
+  2.  :w FÁJLNÉV  kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven.
+
+  3.  :#,#w FÁJLNÉV  kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be
+      Másik lehetõség, hogy a kezdõsornál Ctrl-v-t nyom lemegy az utolsó
+      sorra, majd ezt üti be  :w FÁJLNÉV
+
+  4.  :r FÁJLNÉV  beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba
+      a kurzorpozició utáni sorba.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        6.1.  lecke: A OPEN PARANCS
+
+
+** o  beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba **
+
+  1. Mozgassuk a kurzort a ---> kezdetû sorra.
+
+  2. o (kicsi)  beírásával nyisson egy sort a kurzor ALATT! Ekkor
+     automatikusan beszúró (insert) módba kerül.
+
+  3. Másolja le a  ---> jelû sort és <ESC> megnyomásával lépjen ki
+     a beszúró módból.
+
+---> Az o lenyomása után a kurzor a következõ sor elején áll beszúró módban.
+
+  4. A kurzor FELETTI for megnyitásához egyzserûen a nagy O betût írjon
+kicsi helyett. Próbálja ki a következõ soron!
+Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor
+ezen a soron áll.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       6.2.  lecke: AZ APPEND PARANCS
+
+
+        ** a  lenyomásával a kuror UTÁN szúrhatunk szöveget. **
+
+  1. Mozgassuk a kurzort a következõ ---> kezdetû sor végére úgy,
+     hogy normál módban  $  ír be.
+
+  2. a  (kicsi) leütésével szöveget szúrhat be AMöGÉ a karakter mögé,
+     amelyen a kurzor áll.
+     (A nagy  A  az egész sor végére írja a szöveget.)
+
+Megj: A Vimben a sor legvégére is lehet állni, azonba ez elõdjében
+      a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes
+      a sor végéhez szöveget írni.
+
+  3. Egészítse ki az elsõ sort. Vegye észre, hogy az a utasítás (append)
+     teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye
+     különbözik.
+
+---> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja
+---> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja a sor végére beillesztést.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   6.3.  lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA
+
+
+      ** Nagy R  beírásával írhat felül több mint egy karaktert. **
+
+  1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra!
+
+  2. Place the cursor at the beginning of the first word that is different
+     from the second line marked ---> (the word 'last').
+
+  3. Now type  R  and replace the remainder of the text on the first line by
+     typing over the old text to make the first line the same as the second.
+
+---> To make the first line the same as the last on this page use the keys.
+---> To make the first line the same as the second, type R and the new text.
+
+  4. Note that when you press <ESC> to exit, any unaltered text remains.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           6.4.  lecke: BEÁLLÍTÁSOK
+
+** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetûktõl **
+
+  1. Keressük meg az 'ignore'-t az beírva:
+     /ignore
+     Ezt ismételjük többször az n billentyûvel
+
+  2. Állítsuk be az 'ic' (Ignore case) lehetõséget így:
+     :set ic
+
+  3. Most keressünk ismét az 'ignore'-ra n-nel
+     Ismételjük meg többször a keresést: n
+
+  4. Állítsuk be a 'hlsearch' és 'incsearch' lehetõségeket:
+     :set hls is
+
+  5. Most ismét írjuk be a keresõparancsot, és lássuk mi történik:
+     /ignore
+
+  6. A kiemelést szüntessük meg alábbi utasítások egyikével:
+     :set nohls     vagy        :nohlsearch
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              6. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. Typing  o opens a line BELOW the cursor and places the cursor on the open
+     line in Insert mode.
+     Typing a capital  O  opens the line ABOVE the line the cursor is on.
+
+  2. Type an  a  to insert text AFTER the character the cursor is on.
+     Typing a capital  A  automatically appends text to the end of the line.
+
+  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
+
+  4. Typing ":set xxx" sets the option "xxx"
+
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      7. lecke: ON-LINE HELP PARANCSOK
+
+
+                   ** Az online súgórendszer használata **
+
+  A Vim részletes súgóval rendelkezik.  Induláshoz a következõk egyikét
+  tegye:
+       - nyomja meg a <HELP> gombot (ha van ilyen)
+       - nyomja meg az <F1> gombot (ha van ilyen)
+       - írja be:   :help <ENTER>
+
+  :q <ENTER>   beírásával zárhatja be a súgóablakot.
+
+  Majdnem minden témakörrõl találhat súgót, argumentum megadásával
+  ":help" utasítás .  Próbálja az alábbiakat ki (<ENTER>-t ne felejtsük):
+
+       :help w
+       :help c_<T
+       :help insert-index
+       :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      8. lecke: INDÍTÓSZKRIPT ÍRÁSA
+
+                    ** A Vim lehetõségeinek beállítása **
+
+  A Vim rengeteg lehetõséggel rendelkezik a Vi-hoz képest, de a legtöbb
+  alapból elérhetetlen. Ahhoz, hogy alapból több lehetõségünk legyen készítenünk
+  kell egy "vimrc" fájlt.
+
+  1. Kezdjük el szerkeszteni a "vimrc" fájlt, ennek módja:
+       :edit ~/.vimrc                  Unixon, Linuxon
+       :edit $VIM/_vimrc               MS-Windowson
+
+  2. Most szúrjuk be a példa "vimrc" fájl szövegét:
+
+       :read $VIMRUNTIME/vimrc_example.vim
+
+  3. Írjuk ki a fájlt:
+
+       :write
+
+  Legközelebb a Vim szintaxiskiemeléssel indul.
+  Hozzáadhatja kedvenc beállításait ehhez a "vimrc" fájlhoz.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Itt végzõdik a Vim oktató, melynek a szándéka egy rövid áttekintés a
+  Vimrõl, amely elég ahhoz, hogy elég könnyedén kezeljük a szerkesztõt.
+  Távol van a teljességtõl, mivel a Vimnek számtalan további utasítása
+  van. Ezután a felhasználói kézikönyvet érdemes elolvasni az angolul
+  tudóknak: ":help user-manual". (egyelõre nem tud magyarul)
+
+  További magyar olvasnivalók érhetõek el az alábbi oldalról.
+  http://ubuntu.hu/index.php?title=Vim
+
+  For further reading and studying, this book is recommended:
+       Vim - Vi Improved - by Steve Oualline
+       Publisher: New Riders
+  The first book completely dedicated to Vim.  Especially useful for beginners.
+  There are many examples and pictures.
+  See http://iccf-holland.org/click5.html
+
+  This book is older and more about Vi than Vim, but also recommended:
+       Learning the Vi Editor - by Linda Lamb
+       Publisher: O'Reilly & Associates Inc.
+  It is a good book to get to know almost anything you want to do with Vi.
+  The sixth edition also includes information on Vim.
+
+  This tutorial was written by Michael C. Pierce and Robert K. Ware,
+  Colorado School of Mines using ideas supplied by Charles Smith,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Modified for Vim by Bram Moolenaar.
diff --git a/runtime/tutor/tutor.hu.utf-8 b/runtime/tutor/tutor.hu.utf-8
new file mode 100644 (file)
index 0000000..b64155f
--- /dev/null
@@ -0,0 +1,823 @@
+===============================================================================
+=    Ü d v ö z ö l j ü k   a   V I M   T u t o r b a n  -    1.5-ös  verzió ===
+===============================================================================
+
+     A Vim egy nagyon hatékony szerkesztő, amelnyek rengeteg utasítása
+     van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni
+     mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit
+     elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az
+     általános célú szövegszerkesztőt.
+
+     A feladatok megoldásához 25-30 perc szükséges attól függően,
+     mennyit töltünk a kisérletezéssel.
+
+     A leckében szereplő utasítások módosítani fogják a szövegek.
+     Készítsen másolatot erről a fájlról, ha gyakorolni akar.
+     (Ha "vimtutor"-ral indította, akkor ez már egy másolat.)
+
+     Fontos megérteni, hogy ez az oktató cselekedve taníttat.
+     Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat,
+     hogy megfelelően megtanulja azokat. Ha csak olvassa, elfelejti!
+
+     Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és
+     Nyomja meg megfelelő számúszor a   j   gombot, hogy az 1.1-es
+     lecke teljesen a képernyőn legyen!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       1.1.  lecke:  A KURZOR MOZGATÁSA
+
+
+   ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. **
+            ^
+            k              Tipp:  A h billentyű van balra, és balra mozgat
+       < h      l >               A l billentyű van jobbra, és jobbra mozgat
+            j                     A j billentyű olyan, mint egy lefele nyíl
+            v
+  1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik!
+
+  2. Tartsa lenyomva a lefelét (j), akkor ismétlődik!
+---> Most tudja, hogyan mehet a következő leckére.
+
+  3. A lefelé fomb használatával menjen a 1.2. leckére!
+
+Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
+      normál módba kerüljön, és ismételje meg a parancsot!
+
+Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával
+      sokkal gyorsabban tud, mozogni, ha hozzászokik.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    1.2.  lecke: BE ÉS KILÉPÉS A VIMBŐL
+
+
+  !! MEGJ: Mielőtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !!
+
+  1. Nyomja meg az  <ESC> gombot (hogy biztosan normál módban legyen).
+
+  2. Írja:                    :q! <ENTER>.
+
+---> Ezzel kilép a szerkesztőből a változások MENTÉSE NÉLKÜL.
+     Ha menteni szeretné a változásokat és kilépni, írja:
+                               :wq  <ENTER>
+
+  3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe a
+     tutorba hozza:
+     Ez valószínűleg:       vimtutor <ENTER>
+     Normális esetben ezt írná:     vim tutor.hu <ENTER>
+
+---> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván.
+
+  4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket
+     1-től 3-ig, hogy kilépjen és visszatérjen a szerkesztőbe. Azután
+     menjen az 1.3.  leckére.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    1.3.  lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS
+
+
+** Normál módban nyomjon  x-et, hogy a kurzor alatti karaktert törölje. **
+
+  1. Mozgassa a kurzort a ---> kezdetű sorra!
+
+  2. A hibák kijavításához mozgassa a kurzort amíg a törlendő karakter
+     fölé nem ér.
+
+  3. Nyomja meg az  x  gombot, hogy törölje a nemkívánt karaktert.
+
+  4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot.
+
+---> ŐŐszi éjjjell izziik aa galaggonya rruuhája.
+
+  5. Ha a sor helyes, ugorjon a 1.4. leckére.
+
+MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    1.4.  lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS
+
+
+        ** Normál módban  i  megnyomásával lehet beilleszteni. **
+
+  1. Az alábbi első ---> kezdetű sorra menjen.
+
+  2. Ahhoz, hogy az elsőt azonossá tegye a másodikkal, mozgassa a kurzort
+     az első karakterre, amely UTÁN szöveget kell beszúrni.
+
+  3. Nyomjon  i-t és írja be a megfelelő szöveget.
+
+  4. Amikor mindent beírt, nyomjon <ESC>-et, hogy Normál módba visszatérjen.
+     Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot.
+
+---> Az átható soól hizik pár ész.
+---> Az itt látható sorból hiányzik pár rész.
+
+  5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              1. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja.
+        h (balra)      j (le)       k (fel)        l (jobbra)
+
+  2. A Vimbe (a $ prompttól) így léphet be:  vim FILENAME <ENTER>
+
+  3. A Vimből így léphet ki:  <ESC>   :q!  <ENTER>  a változtatások eldobásával.
+            vagy így:       <ESC>   :wq  <ENTER>  a változások mentésével.
+
+  4. A kurzor alatti karakter törlése normál módban:  x
+
+  5. Szöveg beszúrása a kurzor után normál módban:
+        i     gépelje be a szöveget  <ESC>
+
+MEGJ: Az <ESC> megnyomása normál módba viszi, vagy megszakít egy nem befejezett
+      részben befejezett parancsot.
+
+Most folytassuk a 2. leckével!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       2.1.  lecke: TÖRLŐ UTASÍTÁSOK
+
+
+           ** dw  töröl a szó végéig. **
+
+  1. Nyomjon <ESC>-et, hogy megbizonyosodjon, hogy normál módban van!
+
+  2. Mozgassa a kurzort a ---> kezdetű sorra!
+
+  3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne.
+     Törölje az állatokat a mondatból.
+
+  4. A szó törléséhez írja:   dw
+
+  MEGJ: Ha rosszul kezdte az utasítást csak nyomjon <ESC> gombot
+        a megszakításához.
+
+---> Pár szó kutya nem uhu illik pingvin a mondatba tehén.
+
+  5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     2.2.  lecke: MÉG TÖBB TÖRLŐ UTASÍTÁS
+
+
+          ** d$ beírásával a sor végéig törölhet. **
+
+  1. Nyomjon <ESC>-et, hogy megbizonyosodjon, hogy normál módban van!
+
+  2. Mozgassa a kurzort a ---> kezdetű sorra!
+
+  3. Mozgassa a kurzort a helyes sor végére (az első . UTÁN)!
+
+  4. d$  begépeléséveltörölje a sor végét!
+
+---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be.
+
+
+  5. Menjen a 2.3. leckére, hogy megértse mi történt!
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    2.3.  lecke: UTASÍTÁSOKRÓL ÉS OBJEKTUMOKRÓL
+
+
+  A  d  (delete=törlés) utasítás formája a következő:
+
+        [szám]   d    objektum           VAGY      d   [szám] objektum
+  Ahol:
+    szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1).
+    d - a törlés (delete) utasítás.
+    objektum - amin a parancsnak teljesülnie kell (alább listázva).
+
+  Objektumok rövid listája:
+    w - a kurzortól a szó végéig, beleértve a szóközt.
+    e - a kurzortól a szó végéig, NEM beleértve a szóközt.
+    $ - a kurzortól a sor végéig.
+
+MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
+       a kurzor oda kerül, amit az objektumlista megad.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               2.4.  lecke: EGY KIVÉTEL A  'PARANCSOBJEKTUM' ALÓL
+
+
+              ** dd beírásával törölheti az egész sort. **
+
+  A teljes sor törlésének gyakorisága miatt a Vi tervezői elhatározták,
+  hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk.
+
+  1. Mozgassa a kurzort az alábbi kifejezések második sorára!
+  2. dd begépelésével törölje a sort!
+  3. Menjen a 4. (eredetileg 5.) sorra!
+  4. 2dd   (ugyebár szám-utasítás-objektum) begépelésével töröljön két sort!
+
+      1)  Alvó szegek a jéghideg homokban,
+      2)  - kezdi a költő -
+      3)  Plakátmagányban ázó éjjelek.
+      4)  Pingvinek ne féljetek,
+      5)  Távolról egy vaku villant,
+      6)  Égve hagytad a folyosón a villanyt.
+      7)  Ma ontják véremet.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        2.5.  lecke: A VISSZAVONÁS (UNDO) PARANCS
+
+
+** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. **
+
+  1. Menjünk az alábbi ---> kezdetű sor első hibájára!
+  2. x  lenyomásával törölje az első felesleges karaktert!
+  3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást!
+  4. Másodjára javítson ki minden hibát a sorben az x utasítással!
+  5. Most nagy  U  -val állítsa vissza a sor eredeti állapotát!
+  6. Nyomja meg az u gombot párszor, hogy az U és sz előző utasításokat
+     visszaállítsa!
+  7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a
+     visszavont parancsokat (redo)!
+
+---> Javíítsd a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit.
+
+  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke összefoglalójára.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              2. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. Törlés a kurzortól a szó végéig:    dw
+
+  2. Törlés a kurzortól a szó végéig:    d$
+
+  3. Egész sor törlése:    dd
+
+  4. Egy utasítás alakja normál módban:
+
+       [szám]   utasítás   objektum   VAGY   utasítás     [szám] objektum
+     ahol:
+       szám - hányszor ismételjük a parancsot
+       utasítás - mit tegyünk, pl. d  a törléskor
+       objektum - mire hasson az utasítás, például w (szó=word),
+               $ (a sor végéig), stb.
+
+  5. Az előző tett visszavonása (undo):          u   (kis u)
+     A sor összes változásának visszavonása: U     (nagy U)
+     Visszavonások visszavonása:          CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        3.1.  lecke: A PUT PARANCS
+
+
+  ** p  leütésével az utolsónak töröltet a kurzor után illeszhetjük. **
+
+  1. Mozgassuk a kurzort az alábbi sorok első sorára.
+
+  2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében.
+
+  3. Mozgassuk a kurzort AFÖLÉ a sor fölé, ahová mozgatni szeretnénk a
+     törölt sort.
+
+  4. Normál módban írjunk  p   betűt a törölt sor beillesztéséhez.
+
+  5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk.
+
+     d) Can you learn too?
+     b) Violets are blue,
+     c) Intelligence is learned,
+     a) Roses are red,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      3.2.  lecke: A REPLACE PARANCS
+
+
+** r  és  a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. **
+
+  1. Mozgassuk a kurzort az első ---> kezdetű sorra!
+
+  2. Mozgassuk a kurzort az első hiba fölé!
+
+  3. r majd a kívánt karakter leütésével változtassuk meg a hibásat!
+
+  4. A 2. és 3. lépésekkel javítsuk az összes hibát!
+
+--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
+--->  When this line was typed in, someone pressed some wrong keys!
+
+  5. Menjünk a 3.2. leckére!
+
+MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       3.3.  lecke: A CHANGE PARANCS
+
+
+          ** A szó egy részének megváltoztatásához írjuk:  cw . **
+
+  1. Mozgassuk a kurzort az első ---> kezdetű sorra!
+
+  2. Vigye a kurzort a Ezen szó z betűje fölé!
+
+  3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót!
+
+  4. <ESC> lenyomása után a következő hibára ugorjon (az első cserélendő
+     karakterre)!
+
+  5. A 3. és 4. lépések ismétlésével az első mondatot tegye a másodikkal
+     azonossá!
+
+---> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskíréső.
+---> Ebben a sorban pár szót meg kell változtatni a change utasítással.
+
+Vegyük észre, hogy a  cw  nem csak a szót írja át, hanem beszúró
+(insert) módba vált.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      3.4.  lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL
+
+
+ ** A c utasítás használható ugyanazokkal az objektumokkal mint a törlés **
+
+  1. A change utasítás a törléssel azonosan viselkedik.  A forma:
+
+       [szám]   c   objektum     OR       c   [szám]   objektum
+
+  2. Az objektumok is azonosak, pl.   w (szó), $ (sorvég), stb.
+
+  3. Mozgassuk a kurzort az első ---> kezdetű sorra!
+
+  4. Menjünk az első hibára!
+
+  5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk <ESC>-et!
+
+---> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal.
+---> Ennek a sornak a vége a c$ paranccsal változtatható meg.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              3. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget
+     a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor allatti sorba).
+
+  2. A kurzor alatti karakter átírásához az r-et és azt a karaktert
+     nyomjuk, amellyel az eredetit felül szeretnénk írni.
+
+  3. A változtatás (c) utasítás a karaktertől az objektum végéig
+     változtatja meg az objektumot. Például a cw a kurzortól a szó végéig,
+     a c$ a sor végéig.
+
+  4. A változtatás formátuma:
+
+        [szám]   c    objektum        VAGY    c   [szám]   objektum
+
+Ugorjunk a következő leckére!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    4.1.  lecke: HELY ÉS FÁJLÁLLAPOT
+
+
+ ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát.
+     SHIFT-G leütésével a fájl adott sorára ugorhatunk. **
+
+  Megj: Olvassuk el az egész leckét a lépések végrehajtása előtt!!
+
+  1. Tartsuk nyomva a Ctrl gombot és nyomjunk  g-t.  Az állapotsor
+     megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával.
+     Jegyezzük meg a sorszámot a 3. lépéshez!
+
+  2. Nyomjunk Shift-G-t a lap aljára ugráshoz!
+
+  3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel
+     visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk.
+     (A beírt szám NEM fog megjelenni a képernyőn.)
+
+  4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       4.2.  lecke: A SEARCH PARANCS
+
+
+  ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. **
+
+  1. Normál módban üssünk  /  karaktert!  Ez és a kurzor megjelenik
+     a képernyő alján, ahogy a : utasítás is.
+
+  2. Írjuk be: 'hiibaa' <ENTER>!  Ez az a szó amit keresünk.
+
+  3. A kifejezés újabb kereséséhez üssük le egyszerűen:  n .
+     A kifejezés ellenkező irányban történő kereséséhez ezt üssük be: Shift-N .
+
+  4. Ha visszafelé szeretne keresni, akkor ? kell a ! helyett.
+
+---> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba.
+
+Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  4.3.  lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE
+
+
+          ** % leütésével megtaláljuk a ),], vagy }  párját. **
+
+  1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetű
+     sorban!
+
+  2. Üssön  %  karaktert!
+
+  3. A kurzor a zárójel párjára fog ugrani.
+
+  4. % leütésével visszaugrik az eredeti zárójelre.
+
+---> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. ))
+
+Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a
+      zárójelek nem párosak!
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     4.4.  lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA
+
+
+    ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. **
+
+  1. Menjünk a ---> kezdetű sorra!
+
+  2. Írjuk be:  :s/eggy/egy <ENTER> .  Ekkor csak az első változik meg a
+     sorban.
+
+  3. Most ezt írjuk:   :s/eggy/egg/g     amely globálisan helyettesít
+     a sorban.
+     Ez a sorban minden előfordulást helyettesít.
+
+---> eggy hegy meggy, szembe jön eggy másik heggy.
+
+  4. Két sor között a karaktersor minden előfordulásának helyettesítése:
+     :#,#s/régi/új/g    ahol #,# a két sor sorszáma.
+     :%s/régi/új/g      a fájlbeli összes előfordulás helyettesítése.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              4. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. Ctrl-g  kiírja az kurzor helyét a fájlban és a fájl állapotát.
+     Shift-G a fájl végére megy, gg az elejére. Egy szám után
+     Shift-G  az adott számú sorra ugrik.
+
+  2. / után egy kifejezés ELŐREFELE keresi a kifejezést.
+  2. ? után egy kifejezés VISSZAFELE keresi a kifejezést.
+     Egy keresés után az  n  a következő előfordulást keresi azonos irányban
+     Shift-N  az ellenkező irányban keres.
+
+  3. % begépelésével, ha  (,),[,],{, vagy } karakteren vagyunk a zárójel
+     párjára ugrik.
+
+  4. az első régi helyettesítése újjal a sorban    :s/régi/új
+     az összes régi helyettesítése újjal a sorban  :s/régi/új/g
+     két sor közötti kifejezésekre            :#,#s/régi/új/g
+     # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g
+     A fájlbeli összes előfordulás helyettesítése  :%s/régi/új/g
+     Mindenkori megerősítésre vár 'c' hatására      :%s/régi/új/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               5.1.  lecke: KÜLSŐ PARANCS VÉGREHAJTÁSA
+
+
+   ** :!  után külső parancsot írva végrehajtódik a parancs. **
+
+  1. Írjuk be az ismerős : parancsot, hogy a kurzort a  képernyő aljára
+     helyezzük. Ez lehetővé teszi egy parancs beírását.
+
+  2. ! (felkiáltójel) beírásával tegyük lehetővé külső héj (shell)-parancs
+     végrehajtását.
+
+  3. Írjunk például ls parancsot a ! után majd üssünk <ENTER>-t.  Ez ki
+     fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál
+     lennénk.  Vagy írja ezt  :!dir  ha az ls nem működik.
+
+Megj:  Ilymódon bármely külső utasítás végrehajtható.
+
+Megj:  Minden  :  parancs után <ENTER>-t kell ütni.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     5.2.  lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL
+
+
+     ** A fájlok változásait így írhatjuk ki  :w FÁJLNÉV. **
+
+  1. :!dir  vagy  :!ls  beírásával listázzuk a könyvtárunkat!
+     Ön már tudja, hogy <ENTER>-t kell ütnie utána.
+
+  2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT!
+
+  3. Írja:    :w TESZT   (ahol TESZT a választott fájlnév)!
+
+  4. Ez elmenti a teljes fájlt (a Vim Tutort) TESZT néven.
+     Ellenőrzésképp írjuk ismét    :!dir   hogy lássuk a könyvtárat!
+     (Felfelé gombbal : után az előző utasítások visszahozhatóak.)
+
+Megj: Ha Ön kilépne a Vimből és és visszatérne a TESZT fájlnévvel, akkor a
+      fájl a tutor mentéskori pontos másolata lenne.
+
+  5. Távolítsa el a fájlt  (MS-DOS):        :!del TESZT
+                       vagy (Unix):    :!rm TESZT
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   5.3.  lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA
+
+
+       ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV **
+
+  1. :!dir  vagy :!ls  beírásával listázza a könyvtárat, és válasszon egy
+     megfelelő fájlnevet, pl. TESZT.
+
+  2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon
+     Ctrl-g-t, hogy megtudja a sorszámot.  JEGYEZZE MEG A SZÁMOT!
+
+  3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g.  EZT A SZÁMOT
+     IS JEGYEZZE MEG!
+
+  4. Ha csak ezt a részét szeretné menteni a fájlnak, írja   :#,# w TESZT
+     ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve.
+
+  5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje.
+
+  6. Vimben létezik egy másik lehetőség: nyomja meg a Shift-V gombpárt
+     az első menteni kívánt soron, majd menjen le az utolsóra, ezután
+     írja :w TESZT2   Ekkor a TESZT2 fájlba kerül a kijelölt rész.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  5.4.  lecke: RETRIEVING AND MERGING FILES
+
+
+       ** Egy fájl tartalmának beillesztéséhez írja   :r FÁJLNÉV **
+
+  1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még.
+
+  2. Helyezze a kurzort ennek az oldalnak a tetejére.
+
+MEGJ:  A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva
+       keresse meg ismét ezt a leckét.
+
+  3. Most szúrja be a TESZT nevű fájlt a   :r TESZT   paranccsal, ahol
+     TESZT az Ön fájljénak a neve.
+
+MEGJ:  A fájl, amit beillesztett a kurzora alatt helyezkedik el.
+
+  4. Hogy ellenőrizzük, hogy a fájlt tényleg beillsztettük, menjen
+     vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti
+     mellett a fájlból bemásolt is ott van.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              5. LECKE ÖSSZEFOGLALÓJA
+
+
+  1.  :!parancs végrehajt egy külső utasítást.
+
+      Pár hasznos példa:
+        (MS-DOS)         (Unix)
+         :!dir            :!ls            -  könyvtárlista kiírása.
+         :!del FÁJLNÉV    :!rm FÁJLNÉV    -  FÁJLNÉV nevű fájl törlése.
+
+  2.  :w FÁJLNÉV  kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven.
+
+  3.  :#,#w FÁJLNÉV  kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be
+      Másik lehetőség, hogy a kezdősornál Ctrl-v-t nyom lemegy az utolsó
+      sorra, majd ezt üti be  :w FÁJLNÉV
+
+  4.  :r FÁJLNÉV  beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba
+      a kurzorpozició utáni sorba.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        6.1.  lecke: A OPEN PARANCS
+
+
+** o  beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba **
+
+  1. Mozgassuk a kurzort a ---> kezdetű sorra.
+
+  2. o (kicsi)  beírásával nyisson egy sort a kurzor ALATT! Ekkor
+     automatikusan beszúró (insert) módba kerül.
+
+  3. Másolja le a  ---> jelű sort és <ESC> megnyomásával lépjen ki
+     a beszúró módból.
+
+---> Az o lenyomása után a kurzor a következő sor elején áll beszúró módban.
+
+  4. A kurzor FELETTI for megnyitásához egyzserűen a nagy O betűt írjon
+kicsi helyett. Próbálja ki a következő soron!
+Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor
+ezen a soron áll.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       6.2.  lecke: AZ APPEND PARANCS
+
+
+        ** a  lenyomásával a kuror UTÁN szúrhatunk szöveget. **
+
+  1. Mozgassuk a kurzort a következő ---> kezdetű sor végére úgy,
+     hogy normál módban  $  ír be.
+
+  2. a  (kicsi) leütésével szöveget szúrhat be AMöGÉ a karakter mögé,
+     amelyen a kurzor áll.
+     (A nagy  A  az egész sor végére írja a szöveget.)
+
+Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében
+      a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes
+      a sor végéhez szöveget írni.
+
+  3. Egészítse ki az első sort. Vegye észre, hogy az a utasítás (append)
+     teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye
+     különbözik.
+
+---> Ez a sor lehetővé teszi Önnek, hogy gyakorolja
+---> Ez a sor lehetővé teszi Önnek, hogy gyakorolja a sor végére beillesztést.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   6.3.  lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA
+
+
+      ** Nagy R  beírásával írhat felül több mint egy karaktert. **
+
+  1. Mozgassuk a kurzort az első ---> kezdetű sorra!
+
+  2. Place the cursor at the beginning of the first word that is different
+     from the second line marked ---> (the word 'last').
+
+  3. Now type  R  and replace the remainder of the text on the first line by
+     typing over the old text to make the first line the same as the second.
+
+---> To make the first line the same as the last on this page use the keys.
+---> To make the first line the same as the second, type R and the new text.
+
+  4. Note that when you press <ESC> to exit, any unaltered text remains.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           6.4.  lecke: BEÁLLÍTÁSOK
+
+** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetűktől **
+
+  1. Keressük meg az 'ignore'-t az beírva:
+     /ignore
+     Ezt ismételjük többször az n billentyűvel
+
+  2. Állítsuk be az 'ic' (Ignore case) lehetőséget így:
+     :set ic
+
+  3. Most keressünk ismét az 'ignore'-ra n-nel
+     Ismételjük meg többször a keresést: n
+
+  4. Állítsuk be a 'hlsearch' és 'incsearch' lehetőségeket:
+     :set hls is
+
+  5. Most ismét írjuk be a keresőparancsot, és lássuk mi történik:
+     /ignore
+
+  6. A kiemelést szüntessük meg alábbi utasítások egyikével:
+     :set nohls     vagy        :nohlsearch
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              6. LECKE ÖSSZEFOGLALÓJA
+
+
+  1. Typing  o opens a line BELOW the cursor and places the cursor on the open
+     line in Insert mode.
+     Typing a capital  O  opens the line ABOVE the line the cursor is on.
+
+  2. Type an  a  to insert text AFTER the character the cursor is on.
+     Typing a capital  A  automatically appends text to the end of the line.
+
+  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
+
+  4. Typing ":set xxx" sets the option "xxx"
+
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      7. lecke: ON-LINE HELP PARANCSOK
+
+
+                   ** Az online súgórendszer használata **
+
+  A Vim részletes súgóval rendelkezik.  Induláshoz a következők egyikét
+  tegye:
+       - nyomja meg a <HELP> gombot (ha van ilyen)
+       - nyomja meg az <F1> gombot (ha van ilyen)
+       - írja be:   :help <ENTER>
+
+  :q <ENTER>   beírásával zárhatja be a súgóablakot.
+
+  Majdnem minden témakörről találhat súgót, argumentum megadásával
+  ":help" utasítás .  Próbálja az alábbiakat ki (<ENTER>-t ne felejtsük):
+
+       :help w
+       :help c_<T
+       :help insert-index
+       :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      8. lecke: INDÍTÓSZKRIPT ÍRÁSA
+
+                    ** A Vim lehetőségeinek beállítása **
+
+  A Vim rengeteg lehetőséggel rendelkezik a Vi-hoz képest, de a legtöbb
+  alapból elérhetetlen. Ahhoz, hogy alapból több lehetőségünk legyen készítenünk
+  kell egy "vimrc" fájlt.
+
+  1. Kezdjük el szerkeszteni a "vimrc" fájlt, ennek módja:
+       :edit ~/.vimrc                  Unixon, Linuxon
+       :edit $VIM/_vimrc               MS-Windowson
+
+  2. Most szúrjuk be a példa "vimrc" fájl szövegét:
+
+       :read $VIMRUNTIME/vimrc_example.vim
+
+  3. Írjuk ki a fájlt:
+
+       :write
+
+  Legközelebb a Vim szintaxiskiemeléssel indul.
+  Hozzáadhatja kedvenc beállításait ehhez a "vimrc" fájlhoz.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Itt végződik a Vim oktató, melynek a szándéka egy rövid áttekintés a
+  Vimről, amely elég ahhoz, hogy elég könnyedén kezeljük a szerkesztőt.
+  Távol van a teljességtől, mivel a Vimnek számtalan további utasítása
+  van. Ezután a felhasználói kézikönyvet érdemes elolvasni az angolul
+  tudóknak: ":help user-manual". (egyelőre nem tud magyarul)
+
+  További magyar olvasnivalók érhetőek el az alábbi oldalról.
+  http://ubuntu.hu/index.php?title=Vim
+
+  For further reading and studying, this book is recommended:
+       Vim - Vi Improved - by Steve Oualline
+       Publisher: New Riders
+  The first book completely dedicated to Vim.  Especially useful for beginners.
+  There are many examples and pictures.
+  See http://iccf-holland.org/click5.html
+
+  This book is older and more about Vi than Vim, but also recommended:
+       Learning the Vi Editor - by Linda Lamb
+       Publisher: O'Reilly & Associates Inc.
+  It is a good book to get to know almost anything you want to do with Vi.
+  The sixth edition also includes information on Vim.
+
+  This tutorial was written by Michael C. Pierce and Robert K. Ware,
+  Colorado School of Mines using ideas supplied by Charles Smith,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Modified for Vim by Bram Moolenaar.
index d2a465ede0feb7ddeb1a575d762070477eaaad46..b1f6798d01e534496121e8880c5900810d426f69 100644 (file)
@@ -1,5 +1,5 @@
 ===============================================================================
-=    Benvenuto  alla   G u i d a    all'Editor   V I M   -    Versione 1.5    =
+=    Benvenuto  alla   G u i d a    all'Editor   V I M   -    Versione 1.7    =
 ===============================================================================
 
      Vim è un Editor molto potente ed ha parecchi comandi, troppi per
@@ -10,6 +10,7 @@
      Il tempo necessario per completare la guida è circa 25-30 minuti,
      a seconda di quanto tempo dedichi alla sperimentazione.
 
+     ATTENZIONE!
      I comandi nelle lezioni modificano questo testo. Fai una copia di questo
      file per esercitarti (se hai usato "vimtutor", stai già usando una copia).
 
@@ -33,7 +34,7 @@
   1. Muovi il cursore sullo schermo finché non ti senti a tuo agio.
 
   2. Tieni schiacciato il tasto "giù" (j) finché non si ripete il movimento.
----> Adesso sai come arrivare fino alla lezione successiva.
+     Adesso sai come arrivare fino alla lezione seguente.
 
   3. Usando il tasto "giù" spostati alla Lezione 1.2.
 
@@ -41,38 +42,38 @@ NOTA: Quando non sei sicuro del tasto che hai premuto, premi <ESC> per andare
       in Modalità Normale [Normal Mode]. Poi ri-immetti il comando che volevi.
 
 NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci
-      a muoverti molto più rapidamente, una volta presa l'abitudine.
+      a muoverti molto più rapidamente, dopo che ci si abitua.  Davvero!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Lezione 1.2: ENTRARE E USCIRE DA VIM
+                       Lezione 1.2: USCIRE DA VIM
 
 
   !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!!
 
   1. Premi il tasto <ESC> (per assicurarti di essere in Modalità Normale).
 
-  2. Batti:                    :q! <INVIO>.
-
----> Così esci dall'Editor SENZA SALVARE alcuna modifica fatta.
-     Se vuoi uscire SALVANDO le modifiche batti:
-                               :wq <INVIO>
+  2. Batti:     :q! <INVIO>.
+     Così esci dall'Editor SCARTANDO qualsiasi modifica fatta.
 
   3. Quando vedi il PROMPT della Shell, batti il comando con cui sei arrivato
-     qui.  Potrebbe essere:    vimtutor <INVIO>
-     Normalmente  useresti:    vim tutor <INVIO>
-
----> 'vim' indica l'Editor vim, 'tutor' è il nome del file che tu vuoi aprire.
+     qui.  Sarebbe:    vimtutor <INVIO>
 
   4. Se hai memorizzato questi comandi e ti senti pronto, esegui i passi
-     da 1 a 3 per uscire e rientrare nell'Editor.  Poi muovi il cursore in giù
-     fino alla Lezione 1.3.
+     da 1 a 3 per uscire e rientrare nell'Editor.
+
+NOTA:  :q! <INVIO> SCARTA qualsiasi modifica fatta.  In una delle prossime
+       lezioni imparerai come salvare un file che hai modificato.
+
+  5. Muovi in giù il cursore per passare alla lezione 1.3.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Lezione 1.3: EDITING DI TESTI - CANCELLAZIONE
+               Lezione 1.3: MODIFICA DI TESTI - CANCELLAZIONE
 
 
-** In Modalità Normale premi  x  per cancellare il carattere sotto al cursore **
+       ** Premere  x  per cancellare il carattere sotto al cursore **
 
-  1. Muovi il cursore alla linea più sotto, indicata da --->
+  1. Muovi il cursore alla linea più sotto, indicata da --->.
 
   2. Per correggere errori, muovi il cursore fino a posizionarlo sopra il
      carattere da cancellare.
@@ -86,16 +87,16 @@ NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci
   5. Ora che la linea è corretta, vai alla Lezione 1.4
 
 NOTA: Mentre segui questa guida, non cercare di imparare a memoria,
-                                ma impara facendo pratica.
+      ma impara facendo pratica.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Lezione 1.4: EDITING DI TESTI - INSERIMENTO
+               Lezione 1.4: MODIFICA DI TESTI - INSERIMENTO
 
 
-       ** Quando sei in Modalità Normale premi  i  per inserire testo. **
+                   ** Premere  i  per inserire testo. **
 
-  1. Muovi il cursore alla prima linea qui sotto, indicata da --->
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
 
   2. Per rendere la prima linea uguale alla seconda, muovi il cursore sopra
      il primo carattere DOPO la posizione in cui il testo va inserito.
@@ -108,10 +109,56 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria,
 ---> C'era del tsto mncnt questa .
 ---> C'era del testo mancante da questa linea.
 
-  5. Quando sei a tuo agio nell'inserimento di testo vai al sommario sotto.
+  5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                Lezione 1.5: MODIFICA DI TESTI - AGGIUNTA
+
+
+          ** Premere  A  per aggiungere testo a fine linea. **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+     Non importa dove è posizionato il cursore sulla linea stessa.
+
+  2. Batti  A  e inserisci le necessarie aggiunte.
 
+  3. Alla fine della aggiunta premi <ESC> per tornare in modalità Normale.
 
+  4. Muovi il cursore alla seconda linea indicata ---> e ripeti
+     i passi 2 e 3 per correggere questa frase.
 
+---> C'è del testo che manca da qu
+     C'è del testo che manca da questa linea.
+---> C'è anche del testo che ma
+     C'è anche del testo che manca qui.
+
+  5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Lezione 1.6: MODIFICARE UN FILE
+
+
+             ** Usare  :wq  per salvare un file e uscire. **
+
+  !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!!
+
+  1. Esci da Vim come hai fatto nella lezione 1.2:  :q!
+
+  2. Quando vedi il PROMPT della Shell, batti il comando:  vim tutor <INVIO>
+     'vim' è il comando per richiamare Vim, 'tutor' è il nome del file che
+     desideri modificare.  Usa un file che possa essere modificato.
+
+  3. Inserisci e cancella testo come hai imparato nelle lezioni precedenti.
+
+  4. Salva il file ed esci da Vim con:  :wq  <INVIO>
+
+  5. Rientra in vimtutor e scendi al sommario che segue.
+
+  6. Dopo aver letto i passi qui sopra ed averli compresi: eseguili.
+
+  
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               Lezione 1 SOMMARIO
 
@@ -119,54 +166,54 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria,
   1. Il cursore si muove usando i tasti con le frecce o i tasti hjkl.
         h (sinistra)   j (giù)       k (su)        l (destra)
 
-  2. Per eseguire Vim (dal prompt %) batti:  vim NOMEFILE <INVIO>
+  2. Per eseguire Vim dal PROMPT della Shell batti:  vim NOMEFILE <INVIO>
 
   3. Per uscire da Vim batti: <ESC> :q! <INVIO> per uscire senza salvare.
                oppure batti: <ESC> :wq <INVIO> per uscire salvando modifiche.
 
-  4. Per cancellare il carattere sotto al cursore in Modalità Normale batti: x
+  4. Per cancellare il carattere sotto al cursore batti: x
 
-  5. Per inserire testo subito prima del cursore in Modalità Normale batti:
-        i     batti del testo  <ESC>
+  5. Per inserire testo subito prima del cursore batti:
+        i     batti testo inserito     <ESC>   inserisci prima del cursore
+        A     batti testo aggiunto     <ESC>   aggiungi a fine linea
 
 NOTA: premendo <ESC> ritornerai in Modalità Normale o annullerai
       un comando errato che puoi aver inserito in parte.
 
 Ora continua con la Lezione 2.
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                       Lezione 2.1: COMANDI DI CANCELLAZIONE
+                  Lezione 2.1: COMANDI DI CANCELLAZIONE
 
 
-         ** Batti  dw  per cancellare fino a fine parola. **
+               ** Batti  dw  per cancellare una parola. **
 
   1. Premi  <ESC>  per accertarti di essere in Modalità Normale.
 
-  2. Muovi il cursore fino alla linea qui sotto, indicata da --->
+  2. Muovi il cursore fino alla linea qui sotto, indicata da --->.
 
   3. Muovi il cursore all'inizio di una parola che vuoi cancellare.
 
   4. Batti   dw   per cancellare la parola.
 
-NOTA: Le lettere  dw  saranno visibili sull'ultima linea dello schermo mentre le
-      batti. Se hai battuto qualcosa di sbagliato, premi  <ESC>  e ricomincia.
+NOTA: La lettera  d  sarà visibile sull'ultima linea dello schermo mentre la
+      batti. Vim attende che tu batta  w . Se vedi una lettera diversa
+      da  d  hai battuto qualcosa di sbagliato; premi  <ESC>  e ricomincia.
 
 ---> Ci sono le alcune parole gioia che non c'entrano carta in questa frase.
 
   5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 2.2.
 
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE
+               Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE
 
 
           ** Batti  d$ per cancellare fino a fine linea. **
 
   1. Premi  <ESC>  per accertarti di essere in Modalità Normale.
 
-  2. Muovi il cursore fino alla linea qui sotto, indicata da --->
+  2. Muovi il cursore fino alla linea qui sotto, indicata da --->.
 
   3. Muovi il cursore alla fine della linea corretta (DOPO il primo . ).
 
@@ -182,66 +229,112 @@ NOTA: Le lettere  dw  saranno visibili sull'ultima linea dello schermo mentre le
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Lezione 2.3: COMANDI E OGGETTI
+                    Lezione 2.3: OPERATORI E MOVIMENTI
 
 
-  Il formato del comando  d  [delete] cancella è il seguente:
+  Molti comandi di modifica testi consistono in un operatore e un movimento.
+  Il formato del comando di cancellazione con l'operatore  d  è il seguente:
+
+        d      movimento
 
-        [numero]   d   oggetto     OPPURE     d [numero]   oggetto
   Dove:
-    numero - indica quante volte va eseguito il comando (se omesso, vale 1).
-    d - è il comando di cancellazione.
-    oggetto - indica dove il comando va applicato (lista qui sotto).
+    d        - è l'operatore di cancellazione
+    movimento - indica dove l'operatore va applicato (lista qui sotto).
+
+  Breve lista di movimenti:
+    w - fino a inizio della parola seguente, ESCLUSO il suo primo carattere.
+    e - alla fine della parola corrente, COMPRESO il suo ultimo carattere.
+    $ - dal cursore fino a fine linea, COMPRESO l'ultimo carattere della linea.
+
+  Quindi se batti  de  cancelli dal cursore fino a fine parola.
+
+NOTA:  Se batti solo il movimento mentre sei in Modalità Normale, senza
+       nessun operatore, il cursore si muoverà come specificato.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        Lezione 2.4: USO DI UN CONTATORE PER UN MOVIMENTO
+
+
+  ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. **
+
+  1. Muovi il cursore fino all'inizio della linea qui sotto, indicata da --->.
+
+  2. Batti  2w  per spostare il cursore due parole più avanti.
+
+  3. Batti  3e  per spostare il cursore alla fine della terza parola seguente.
+
+  4. Batti  0  (zero) per posizionarti all'inizio della linea.
+
+  5. Ripeti i passi 2 e 3 usando numeri differenti.
+
+---> Questa è solo una linea con parole all'interno della quale puoi muoverti.
+
+  6. Vai alla Lezione 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       Lezione 2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU'
+
+
+  ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. **
+
+  Nella combinazione dell'operatore cancella e di un movimento, descritto prima,
+  inserite un contatore prima del movimento per cancellare di più:
+        d   numero   movimento
+
+  1. Muovi il cursore alla prima parola MAIUSCOLA nella riga indicata da --->.
+
+  2. Batti  d2w  per cancellare le due parole MAIUSCOLE
+
+  3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare la parole
+     MAIUSCOLE consecutive con un solo comando
+
+--->  questa ABC DE linea FGHI JK LMN OP di parole è Q RS TUV ora ripulita.
 
-  Breve lista di oggetti:
-    w - dal cursore alla fine della parola, incluso lo spazio.
-    e - dal cursore alla fine della parola, ESCLUSO lo spazio.
-    $ - dal cursore fino a fine linea.
 
-NOTA: Per amanti dell'avventura: premendo solo il tasto che indica l'oggetto
-      mentre siete in Modalità Normale, senza dare un comando, sposta
-      il cursore come specificato nella "lista di oggetti" qui sopra.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-               Lezione 2.4: UNA ECCEZIONE A 'COMANDO-OGGETTO'
+               Lezione 2.6: LAVORARE SU LINEE INTERE
 
-           ** Batti     dd   per cancellare un'intera linea. **
+           ** Batti  dd  per cancellare un'intera linea. **
 
-  Per la frequenza con cui capita di cancellare linee intere, chi
-  ha progettato Vi ha deciso che sarebbe stato più semplice
-  battere due d consecutive per cancellare una linea.
+  Per la frequenza con cui capita di cancellare linee intere, chi ha
+  disegnato Vi ha deciso che sarebbe stato più semplice battere
+  due d consecutive per cancellare una linea.
 
   1. Muovi il cursore alla linea 2) nella frase qui sotto.
   2. Batti  dd  per cancellare la linea.
   3. Ora spostati alla linea 4).
-  4. Batti   2dd   (ricorda:  numero-comando-oggetto) per cancellare due linee.
+  4. Batti   2dd   per cancellare due linee.
 
-      1)  Le rose sono rosse,
-      2)  Nel fango ci si diverte,
-      3)  Le viole sono blu,
-      4)  Io ho un'automobile,
-      5)  Gli orologi segnano il tempo,
-      6)  Il miele è dolce,
-      7)  E lo sei anche tu.
+--->  1)  Le rose sono rosse,
+--->  2)  Il fango è divertente,
+--->  3)  Le viole sono blu,
+--->  4)  Io ho un'automobile,
+--->  5)  Gli orologi segnano il tempo,
+--->  6)  Lo zucchero è dolce,
+--->  7)  E così sei anche tu.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        Lezione 2.5: IL COMANDO UNDO [ANNULLA]
+             Lezione 2.7: IL COMANDO UNDO [ANNULLA]
 
-    ** Premi  u                per annullare gli ultimi comandi eseguiti.  **
-    ** Premi  U                per annullare le modifiche all'ultima linea.   **
+    **  Premi  u  per annullare gli ultimi comandi eseguiti.  **
+    ** Premi  U  per annullare le modifiche all'ultima linea. **
 
-  1. Muovi il cursore fino alla linea qui sotto, indicata da --->
+  1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
      e posizionati sul primo errore.
   2. Batti  x  per cancellare il primo carattere sbagliato.
   3. Adesso batti  u  per annullare l'ultimo comando eseguito.
   4. Ora invece, correggi tutti gli errori sulla linea usando il comando  x .
   5. Adesso batti una U Maiuscola per riportare la linea al suo stato originale.
   6. Adesso batti  u  più volte per annullare la  U  e i comandi precedenti.
-  7. Adesso batti più volte CTRL-r (tenendo il tasto CTRL schiacciato
-     mentre batti r) per rifare i comandi (annullare l'annullamento).
+  7. Adesso batti più volte CTRL-r (tieni il tasto CTRL schiacciato
+     mentre batti r) per rieseguire i comandi (annullare l'annullamento).
 
 ---> Correeggi gli errori ssu quuesta linea e riimpiazzali coon "undo".
 
@@ -254,63 +347,63 @@ NOTA: Per amanti dell'avventura: premendo solo il tasto che indica l'oggetto
                               Lezione 2 SOMMARIO
 
 
-  1. Per cancellare dal cursore fino alla fine di una parola batti:    dw
-
-  2. Per cancellare dal cursore fino alla fine della linea   batti:    d$
-
+  1. Per cancellare dal cursore fino alla parola seguente batti:      dw
+  2. Per cancellare dal cursore fino alla fine della linea batti:     d$
   3. Per cancellare un'intera linea batti:    dd
+  4. Per eseguire più volte un movimento, mettici davanti un numero:  2w
+  5. Il formato per un comando di modifica è:
 
-  4. Il formato per un comando in Modalità Normale è:
+       operatore   [numero]   movimento
+     dove:
+       operatore - indica il da farsi, ad es.  d  per [delete] cancellare
+       [numero]  - contatore facoltativo di ripetizione del movimento
+       movimento - spostamento nel testo su cui operare, ad es.
+                          w [word] parola, $ (fino a fine linea), etc.
 
-       [numero]  comando  oggetto   OPPURE   comando  [numero]  oggetto
-     Dove:
-       numero - indica quante volte va eseguito il comando (se omesso, vale 1).
-       comando - è il comando da eseguire, ad es.  d  per [delete] cancellare.
-       oggetto - indica dove il comando va applicato, ad es.  w [word] parola,
-               $ (fino alla fine della linea), etc.
+  6. Per andare a inizio linea usate uno zero: 0
+  7. Per annullare i comandi precedenti, batti:                    u (u minuscola)
+     Per annullare tutte le modifiche a una linea batti:    U (U maiuscola)
+     Per annullare l'annullamento ["redo"]       batti:    CTRL-r
 
-  5. Per annullare i comandi precedenti,         batti:          u (u minuscola)
-     Per annullare tutte le modifiche a una linea batti:    U (U Maiuscola)
-     Per annullare l'annullamento [gli "undo"]       batti:      CTRL-r
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        Lezione 3.1: IL COMANDO PUT [METTI, PONI]
+                Lezione 3.1: IL COMANDO PUT [METTI, PONI]
 
 
-   ** Batti  p  per porre [put] l'ultima cancellazione dopo il cursore. **
+   ** Batti  p  per porre [put] testo (cancellato prima) dopo il cursore. **
 
-  1. Muovi il cursore alla prima linea fra quelle qui in basso.
+  1. Muovi il cursore alla prima linea indicata con ---> qui in basso.
 
-  2. Batti  dd  per cancellare la linea e depositarla nel buffer di Vim.
+  2. Batti  dd  per cancellare la linea e depositarla in un registro di Vim.
 
-  3. Muovi il cursore fino alla linea SOPRA quella dove andrebbe spostata
-     la linea che hai appena cancellato.
+  3. Muovi il cursore fino alla linea c) SOPRA quella dove andrebbe messa
+     la linea appena cancellata.
 
-  4. Mentre sei in Modalità Normale, batti  p  per reinserire la linea.
+  4. Batti  p  per mettere la linea sotto il cursore.
 
-  5. Ripeti i passi da 2 a 4 per mettere tutte le linee nel corretto ordine.
+  5. Ripeti i passi da 2 a 4 per mettere tutte le linee nel giusto ordine.
 
-     d)  Riesci a impararla tu?
-     b)  Le viole sono blu,
-     c)  La saggezza si impara,
-     a)  Le rose sono rosse,
+---> d)  Puoi impararla tu?
+---> b)  Le viole sono blu,
+---> c)  La saggezza si impara,
+---> a)  Le rose sono rosse,
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                 Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZA]
+             Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZARE]
 
 
-  ** Batti  r  e una lettera per rimpiazzare il carattere sotto al cursore. **
+  ** Batti  rx  per rimpiazzare il carattere sotto al cursore con x . **
 
-  1. Muovi il cursore alla prima linea qui sotto, indicata da --->
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
 
   2. Muovi il cursore fino a posizionarlo sopra il primo errore.
 
-  3. Batti   r e poi il carattere che dovrebbe rimpiazzare l'errore.
+  3. Batti   r e poi il carattere che dovrebbe stare qui.
 
-  4. Ripeti i passi 2 e 3 finché la prima linea è corretta.
+  4. Ripeti i passi 2 e 3 finché la prima linea è uguale alla seconda.
 
---->  Immattendo quetta libea, qualcuno ho predato alcuni tosti sballiati!
+--->  Ammattendo quetta lince, qualcuno ho predato alcuni tosti sballiati!
 --->  Immettendo questa linea, qualcuno ha premuto alcuni tasti sbagliati!
 
   5. Ora passa alla Lezione 3.2.
@@ -320,101 +413,100 @@ NOTA: Ricordati che dovresti imparare con la pratica, non solo leggendo.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-               Lezione 3.3: IL COMANDO CHANGE [CAMBIA]
+            Lezione 3.3: L'OPERATORE CHANGE [CAMBIA]
 
 
-     ** Per cambiare una parola in tutto o in parte, batti  cw . **
+     ** Per cambiare fino alla fine di una parola, batti  ce . **
 
-  1. Muovi il cursore alla prima linea qui sotto, indicata da --->
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
 
-  2. Posiziona il cursore alla u in lubw.
+  2. Posiziona il cursore alla  u  in lubw.
 
-  3. Batti  cw  e la parola corretta (in questo caso, batti  inea    ).
+  3. Batti  ce  e la parola corretta (in questo caso, batti  inea    ).
 
-  4. Premi <ESC> e vai sull'errore seguente (sul primo carattere da modificare).
+  4. Premi <ESC> e vai sul prossimo carattere da modificare.
 
   5. Ripeti i passi 3 e 4 finché la prima frase è uguale alla seconda.
 
----> Questa lubw ha alcune pptfd da asdert usgfk il comando CHANGE.
----> Questa linea ha alcune parole da cambiare usando il comando CHANGE.
+---> Questa lubw ha alcune pptfd da asdert usgfk l'operatore CHANGE.
+---> Questa linea ha alcune parole da cambiare usando l'operatore CHANGE.
 
-Nota che  cw  non solo rimpiazza la parola, ma ti mette anche in Modalità
-Inserimento [Insert Mode]
+Nota che  ce  cancella la parola, e ti mette anche in Modalità Inserimento
+    [Insert Mode]
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      Lezione 3.4: ALTRI CAMBIAMENTI USANDO c
+                 Lezione 3.4: ALTRI CAMBIAMENTI USANDO c
 
+** L'operatore c [CHANGE] agisce sugli stessi movimenti di  d  [DELETE] **
 
-** Il comando c [CHANGE] agisce sugli stessi oggetti del comando d [DELETE] **
+  1. L'operatore CHANGE si comporta come DELETE.  Il formato è:
 
-  1. Il comando CHANGE si comporta come DELETE.  Il formato è:
+       c   [numero]   movimento
 
-       [numero]   c   oggetto   OPPURE    c    [numero]   oggetto
+  2. I movimenti sono gli stessi,
+     ad es. w (word, parola), $ (fine linea), etc.
 
-  2. Gli oggetti sono gli stessi, ad es. w (word, parola), $ (fine linea), etc.
-
-  3. Muovi il cursore alla prima linea qui sotto, indicata da --->
+  3. Muovi il cursore alla prima linea qui sotto, indicata da --->.
 
   4. Posiziona il cursore al primo errore.
 
-  5. Batti  c$  per modificare il resto della linea secondo il modello della
-     linea successiva, e quando hai finito premi <ESC>
+  5. Batti  c$  e inserisci resto della linea utilizzando come modello la
+     linea seguente, e quando hai finito premi <ESC>
 
 ---> La fine di questa linea deve essere aiutata a divenire come la seguente.
 ---> La fine di questa linea deve essere corretta usando il comando  c$  .
 
-
+NOTA:  Puoi usare il tasto Backspace se devi correggere errori di battitura.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               Lezione 3 SOMMARIO
 
 
-  1. Per reinserire testo che hai appena cancellato, batti   p   .  Questo
+  1. Per reinserire del testo appena cancellato, batti   p   .  Questo
      inserisce [pone] il testo cancellato DOPO il cursore (se era stata tolta
      una linea intera, questa verrà messa nella linea SOTTO il cursore).
 
   2. Per rimpiazzare il carattere sotto il cursore, batti   r   e poi il
-     carattere sostitutivo.
+     carattere che vuoi sostituire.
 
-  3. Il comando CHANGE ti permette di cambiare l'oggetto specificato dal
-     cursore fino alla fine dell'oggetto. Ad es. Batti  cw  per cambiare dal
-     cursore alla fine della parola,  c$  per cambiare fino a fine linea.
+  3. L'operatore change ti permette di cambiare dal cursore fino a dove
+     arriva il movimento.  Ad es. Batti  ce  per cambiare dal cursore
+     fino alla fine della parola,  c$  per cambiare fino a fine linea.
 
-  4. Il formato del comando CHANGE è:
+  4. Il formato di  change  è:
 
-        [numero]   c   oggetto       OPPURE    c   [numero]   oggetto
+       c   [numero]   movimento
 
 Ora vai alla prossima Lezione.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Lezione 4.1: POSIZIONAMENTE E SITUAZIONE FILE
+                    Lezione 4.1: POSIZIONAMENTO E SITUAZIONE FILE
 
+  ** Batti CTRL-G per vedere a che punto sei nel file e la situazione **
+  **     del file.  Batti G  per raggiungere una linea nel file.      **
 
-  ** Batti CTRL-g per vedere a che punto sei nel file e la situazione del file.
-     Batti [numero] G  per raggiungere il numero della linea [numero] nel file.
-     Batti [numero] %  per posizionarti alla percentuale [numero] nel file **
+  NOTA: Leggi l'intera Lezione prima di eseguire un qualsiasi passo!!
 
-  NOTA: Leggi l'intera Lezione prima di eseguire un qualunque comando!!
+  1. Tieni premuto il tasto CTRL e batti  g  .  Ossia batti CTRL-G.
+     Un messaggio apparirà in fondo alla pagina con il NOME FILE e la
+     posizione nel file.  Ricordati il numero della linea per il Passo 3.
 
-  1. Tieni premuto il tasto CTRL e batti  g  .  Una linea di situazione
-     sarà visibile in fondo alla pagina con il NOME FILE e la linea
-     in cui sei posizionato.  Ricordati il numero della linea per il Passo 3.
+NOTA: La posizione del cursore si vede nell'angolo in basso a destra dello
+      schermo, se è impostata l'opzione 'ruler' (righello, vedi :help ruler).
 
-  2. Premi  G  [G Maiuscolo] per posizionarti alla fine del file.
+  2. Premi  G  [G Maiuscolo] per posizionarti in fondo al file.
+     Batti gg  per posizionarti in cima al file.
 
   3. Batti il numero della linea in cui ti trovavi e poi  G  .  Questo ti
      riporterà fino alla linea in cui ti trovavi quando avevi battuto CTRL-g.
-     (Mentre batti i numeri, questi NON saranno visualizzati sullo schermo.)
 
   4. Se ti senti sicuro nel farlo, esegui i passi da 1 a 3.
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                Lezione 4.2: IL COMANDO SEARCH [RICERCA]
 
-
      ** Batti  /  seguito da una frase per ricercare quella frase. **
 
   1. in Modalità Normale batti il carattere  /  . Nota che la "/" e il cursore
@@ -425,41 +517,41 @@ Ora vai alla prossima Lezione.
   3. Per ricercare ancora la stessa frase, batti soltanto       n  .
      Per ricercare la stessa frase in direzione opposta, batti  N  .
 
-  4. Se vuoi ricercare una frase in direzione opposta (in su), usa il
-     comando   ?   invece che   /  .
-
----> Quando la ricerca arriva a fine file, ricomincia dall'inizio del file.
-
-  "errroore" non è il modo giusto di digitare errore; errroore è un errore.
+  4. Per ricercare una frase nella direzione opposta, usa  ?  al posto di  /  .
 
+  5. Per tornare dove eri prima nel file premi  CTRL-O  (tieni il tasto CTRL
+     schiacciato mentre premi la lettera o).  Ripeti  CTRL-O  per andare ancora
+     indietro. Puoi usare  CTRL-I  per tornare in avanti.
 
+NOTA: "errroore" non è il modo giusto di digitare errore; errroore è un errore.
+NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio del file,
+      a meno che l'opzione 'wrapscan' sia stata disattivata.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                  Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI
+             Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI
 
 
-        ** Batti  %  per trovare una  ),], o }  corripondenti. **
+        ** Batti  %  per trovare una  ),], o }  corrispondente. **
 
-  1. Posiziona il cursore su un (, [, or { nella linea, indicata da --->
+  1. Posiziona il cursore su una (, [, o { nella linea sotto, indicata da --->.
 
   2. Adesso batti il carattere   %  .
 
-  3. Il cursore dovrebbe ora trovarsi sulla parentesi corrispondente.
+  3. Il cursore si sposterà sulla parentesi corrispondente.
 
-  4. Batti  %  per muovere il cursore alla parentesi di prima (corrispondente)
+  4. Batti  %  per muovere il cursore all'altra parentesi corrispondente.
 
 ---> Questa ( è una linea di test con (, [ ] e { } al suo interno. ))
 
-NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate!
 
+NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate!
 
 
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     Lezione 4.4: UN MODO PER CORREGGERE GLI ERRORI
-
+           Lezione 4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE)
 
   ** Batti  :s/vecchio/nuovo/g  per sostituire 'nuovo' a 'vecchio'. **
 
@@ -468,30 +560,33 @@ NOTA: Questo 
   2. Batti  :s/lla/la <INVIO> .  Nota che questo comando cambia solo
      LA PRIMA occorrenza di "lla" sulla linea.
 
-  3. Adesso batti  :s/lla/la/g  dove "g" sta per "globalmente" sulla linea.
-     Questo cambia TUTTE le occorrenze di "lla" sulla linea.
+  3. Adesso batti  :s/lla/la/g . Aggiungendo la flag  g  si chiede di
+     sostituire "globalmente" sulla linea, ossia tutte le occorrenze
+     di "lla" sulla linea.
 
 ---> lla stagione migliore per lla fioritura è lla primavera.
 
   4. Per cambiare ogni ricorrenza di una stringa di caratteri tra due linee,
-     batti :#,#s/vecchio/nuovo/g  dove #,# sono i numeri delle due linee.
+     batti :#,#s/vecchio/nuovo/g  dove #,# sono i numeri che delimitano
+                                  il gruppo di linee in cui si vuole sostituire.
      Batti :%s/vecchio/nuovo/g    per cambiare ogni occorrenza nell'intero file.
-
-
-
-
+     Batti :%s/vecchio/nuovo/gc   per trovare ogni occorrenza nell'intero file
+                                  ricevendo per ognuna una richiesta se
+                                 effettuare o meno la sostituzione.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               Lezione 4 SOMMARIO
 
 
-1. CTRL-g  visualizza a che punto sei nel file e la situazione del file.
-   G       [G Maiuscolo] ti porta alla fine del file. Un numero di linea
-   seguito da  G  [G Maiuscolo] ti porta a quel numero di linea nel file.
+1. CTRL-G  visualizza a che punto sei nel file e la situazione del file.
+          G  [G Maiuscolo] ti porta all'ultima linea del file.
+   numero G  ti porta alla linea con quel numero.
+         gg  ti porta alla prima linea del file.
 
 2. Battendo  /  seguito da una frase ricerca IN AVANTI quella frase.
    Battendo  ?  seguito da una frase ricerca ALL'INDIETRO quella frase.
    DOPO una ricerca batti    n   per trovare la prossima occorrenza nella
    stessa direzione, oppure  N   per cercare in direzione opposta.
+   CTRL-O ti porta alla posizione precedente, CTRL-I a quella più nuova.
 
 3. Battendo  %  mentre il cursore si trova su  (,),[,],{, oppure }
    ti posizioni sulla corrispondente parentesi.
@@ -501,36 +596,34 @@ NOTA: Questo 
    Per sostituire frasi tra 2 numeri di linea [#]  batti   :#,#s/vecchio/nuovo/g
    Per sostituire tutte le occorrenze nel file batti        :%s/vecchio/nuovo/g
    Per chiedere conferma ogni volta aggiungi 'c'           :%s/vecchio/nuovo/gc
-
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-               Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO
+             Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO
 
 
-   ** Batti  :!        seguito da un comando esterno per eseguire il comando. **
+  ** Batti  :!  seguito da un comando esterno per eseguire quel comando. **
 
-  1. Batti il comando   :   Per posizionare il cursore in fondo allo schermo.
-     Ciò ti permette di immettere un comando.
+  1. Batti il comando   :   per posizionare il cursore in fondo allo schermo.
+     Ciò ti permette di immettere un comando dalla linea comandi.
 
   2. Adesso batti il carattere  !  (punto esclamativo).  Ciò ti permette di
-     eseguire qualsiasi comando esterno che si può eseguire nella "shell".
+     eseguire qualsiasi comando esterno si possa eseguire nella "shell".
 
   3. Ad esempio batti   ls   dopo il ! e poi premi <INVIO>.  Questo
      visualizza una lista della tua directory, proprio come se fossi in una
-     "shell". Usa   :!dir  se  ls  non funziona.   [Unix:ls  MSDOS:dir]
-
----> NOTA:  E' possibile in questo modo eseguire un comando a piacere.
-
----> NOTA:  Tutti i comandi  :  devono essere terminati premendo <INVIO>
+     "shell". Usa   :!dir  se  ls  non funziona.   [Unix: ls  MS-DOS: dir]
 
+NOTA:  E' possibile in questo modo eseguire un comando a piacere, specificando
+       anche dei parametri per i comandi stessi.
 
+NOTA:  Tutti i comandi  :  devono essere terminati premendo <INVIO>
+       Da qui in avanti non lo ripeteremo ogni volta.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-               Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILES
+             Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILE
 
 
-     ** Per salvare le modifiche apportate a un file batti :w NOMEFILE. **
+   ** Per salvare le modifiche apportate a un testo batti :w NOMEFILE. **
 
   1. Batti  :!dir  or  :!ls  per procurarti una lista della tua directory.
      Già sai che devi premere <INVIO> dopo aver scritto il comando.
@@ -540,60 +633,60 @@ NOTA: Questo 
   3. Adesso batti:      :w TEST   (dove TEST è il NOMEFILE che hai scelto).
 
   4. Questo salva l'intero file ("tutor.it")  con il nome di TEST.
-     Per una verifica batti ancora  :!dir   per listare la tua directory.
+     Per verifica batti ancora  :!dir  o  :!ls  per listare la tua directory.
 
----> Nota che se esci da Vim e riesegui Vim usando come NOMEFILE TEST,
-     il file sarà una copia esatta di "tutor.it" al momento del salvataggio.
+NOTA: Se esci da Vim e riesegui Vim battendo  vim TEST , il file aperto
+      sarà una copia esatta di "tutor.it" al momento del salvataggio.
 
-  5. Ora cancella il file battendo:   :!rm      TEST    [sotto Unix] oppure
-                                     :!del     TEST    [sotto MSDOS]
+  5. Ora cancella il file battendo (MR-DOS):   :!del TEST
+                                o (Unix):     :!rm TEST
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                   Lezione 5.3: SCRIVERE IN MANIERA SELETTIVA
-
+               Lezione 5.3: SELEZIONARE IL TESTO DA SCRIVERE
 
-     ** Per salvare una porzione del file, batti   :#,# w NOMEFILE **
+   ** Per salvare una porzione di file, batti  v movimento :w NOMEFILE **
 
-  1. Batti ancora  :!dir  o  :!ls  per procurarti una lista della tua directory
-     e scegli un NOMEFILE adatto, come ad es.  TEST  .
+  1. Muovi il cursore su questa linea.
 
-  2. Muovi il cursore in cima a questa pagina e batti  CTRL-g  per procurarti
-     il numero di linea.  RICORDATI QUESTO NUMERO!
+  2. Premi  v  e muovi il cursore fino alla linea numerata 5., qui sotto.
+     Nota che il testo viene evidenziato.
 
-  3. Ora spostati in fondo alla pagina e batti  CTRL-g again.
-     RICORDATI ANCHE QUESTO NUMERO!
+  3. Batti il carattere  :  .  In fondo allo schermo apparirà :'<,'>  .
 
-  4. Per salvare SOLO una parte in un file, batti   :#,# w TEST
-     dove  #,#  sono i due numeri che hai memorizzato (cima,fondo) e TEST
-     è il tuo NOMEFILE.
-
-  5. Ancora una volta, controlla che il file esista con il comando :!dir
-     ma NON CANCELLARLO.
+  4. Batti  w TEST  , dove TEST è il nome di un file non ancora esistente.
+     Verifica che si veda  :'<,'>w TEST   prima di dare <INVIO>.
 
+  5. Vim scriverà nel file TEST le linee che hai selezionato.  Usa  :!dir
+     o  :!ls  per controllare che esiste.  Non cancellarlo ora!  Ti servirà
+     nella prossima lezione.
 
+NOTA:  Battere  v  inizia una selezione visuale.  Puoi muovere il cursore
+       come vuoi, e rendere la selezione più piccola o più grande.  Poi
+       puoi usare un operatore per agire sul testo selezionato.
+       Ad es.,  d  cancella il testo.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                  Lezione 5.4: INSERIRE E RIUNIRE FILE
-
+                 Lezione 5.4: INSERIRE E RIUNIRE FILE
 
-   ** Per inserire il contenuto di un file, batti   :r NOMEFILE **
 
-  1. Batti  :!dir  per accertarti che il tuo NOMEFILE TEST sia ancora presente.
+   ** Per inserire il contenuto di un file, batti  :r NOMEFILE  **
 
-  2. Posiziona il cursore all'inizio di questa pagina.
+  1. Posiziona il cursore appena sopra questa riga.
 
-NOTA: DOPO aver eseguito il Passo 3 vedrai ancora la Lezione 5.3.
+NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3.
       Quindi spostati IN GIU' per tornare ancora a questa Lezione.
 
-  3. Ora inserisci il tuo file TEST con il comando   :r TEST   dove TEST è
-     il nome del file.
+  2. Ora inserisci il tuo file TEST con il comando   :r TEST   dove TEST è
+     il nome che hai usato per creare il file.
+     Il file richiesto è inserito sotto la linea in cui si trova il cursore.
 
-NOTA: Il file che tu richiedi è inserito a partire da dove si trova il cursore.
-
-  4. Per verificare che un file è stato inserito, torna indietro col cursore
-     e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e quella
-     da te inserita.
+  3. Per verificare che un file è stato inserito, torna indietro col cursore
+     e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e
+     quella che viene dal file.
 
+NOTA:  Puoi anche leggere l'output prodotto da un comando esterno. Ad es.
+       :r !ls  legge l'output del comando  ls e lo inserisce sotto la linea
+       in cui si trova il cursore.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               Lezione 5 SOMMARIO
@@ -607,137 +700,159 @@ NOTA: Il file che tu richiedi 
 
   2.  :w NOMEFILE  scrive su disco il file che stai editando con nome NOMEFILE.
 
-  3.  :#,#w NOMEFILE  salva le linee da # a # nel file NOMEFILE.
-
-  4.  :r NOMEFILE  legge il file NOMEFILE da disco e lo inserisce nel
-      file che stai editando, dopo il punto dove è posizionato il cursore.
-
-
+  3.  v movimento :w NOMEFILE  salva le linee selezionate in maniera
+      visuale nel file NOMEFILE.
 
+  4.  :r NOMEFILE  legge il file NOMEFILE da disco e lo inserisce nel file
+      che stai modificando, dopo la linea in cui è posizionato il cursore.
 
+  5.  :r !dir  legge l'output del comando  dir  e lo inserisce dopo la
+      linea in cui è posizionato il cursore.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        Lezione 6.1: IL COMANDO OPEN [APRI]
+                Lezione 6.1: IL COMANDO OPEN [APRIRE]
 
 
-  ** Batti   o   per aprire una linea sotto il cursore e per passare in
-     Modalità Inserimento. **
+        ** Batti   o   per aprire una linea sotto il cursore **
+        **         e passare in Modalità Inserimento.        **
 
   1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
 
-  2. Batti   o   (minuscolo) per aprire una linea sotto il cursore e per
+  2. Batti la lettera minuscola  o  per aprire una linea sotto il cursore e
      passare in Modalità Inserimento.
 
-  3. Adesso ricopia la linea indicata da --->
-     e premi <ESC> per uscire dalla Modalità Inserimento.
+  3. Poi inserisci del testo e premi <ESC> per uscire dalla
+     Modalità Inserimento.
 
----> Dopo battuto  o  il cursore è sulla linea aperta (in Modalità Inserimento)
+---> Dopo battuto  o  il cursore è sulla linea aperta (in Modalità Inserimento).
 
-  4. Per aprire una linea SOPRA il cursore, batti   O  [Maiuscola], invece
-     che una   o   minuscola. Prova sulla linea subito sotto.
-Apri una linea SOPRA questa battendo  O  quando il cursore è su questa linea.
+  4. Per aprire una linea SOPRA il cursore, batti una   O  maiuscola, invece
+     che una   o   minuscola. Prova sulla linea qui sotto.
+Apri una linea SOPRA questa battendo  O  mentre il cursore è su questa linea.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-               Lezione 6.2: IL COMANDO APPEND [AGGIUNGI]
-
+               Lezione 6.2: IL COMANDO APPEND [AGGIUNGERE]
 
             ** Batti   a   per inserire testo DOPO il cursore. **
 
-  1. Muovi il cursore alla fine della prima linea qui sotto, indicata da --->
-     battendo  $  mentre sei in Modalità Normale.
-
-  2. Batti una  a  (minuscola) per aggiungere testo DOPO il carattere sotto
-     il cursore.   (A Maiuscola aggiunge alla fine della linea).
+  1. Muovi il cursore all'inizio della linea qui sotto, indicata da --->.
 
-NOTA: Eviti così di battere   i   , l'ultimo carattere, il testo da aggiungere,
-      <ESC>, spostare il cursore a sinistra e battere   x  solo per aggiungere
-      qualcosa alla fine della linea!
+  2. Batti  e  finché il cursore arriva alla fine di  li .
 
-  3. Adesso completa la prima linea.  Nota anche che l'aggiunta funziona come
-     la Modalità Inserimento, tranne che per il luogo dove il testo è inserito.
+  3. Batti una  a  (minuscola) per aggiungere testo DOPO il cursore.
 
----> Questa linea ti permetterà di esercitarti
----> Questa linea ti permetterà di esercitarti ad aggiungere testo a fine linea.
+  4. Completa la parola come mostrato nella linea successiva.  Premi <ESC>
+     per uscire dalla Modalità Inserimento.
 
+  5. Usa  e  per passare alla successiva parola incompleta e ripeti i passi
+     3 e 4.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-          Lezione 6.3: UN'ALTRA VARIANTE DI REPLACE [RIMPIAZZA]
+---> Questa li ti permetterà di esercit ad aggiungere testo a una linea.
+---> Questa linea ti permetterà di esercitarti ad aggiungere testo a una linea.
 
+NOTA: a, i ed A entrano sempre in Modalità Inserimento, la sola differenza
+      è dove verranno inseriti i caratteri.
 
-     ** Batti una  R  Maiuscola per rimpiazzare più di un carattere. **
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+          Lezione 6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE]
 
-  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
 
-  2. Posiziona il cursore all'inizio della prima parola differente
-     dalla seconda linea indicata da ---> (la parola "'ultima").
+     ** Batti una  R  maiuscola per rimpiazzare più di un carattere. **
 
-  3. Adesso batti  R  e rimpiazza il resto del testo sulla prima linea battendo
-     sopra il testo preesistente per rendere la prima linea uguale alla seconda.
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.  Muovi il
+     cursore all'inizio del primo  xxx .
 
----> Per rendere la prima linea uguale alla ultima su questa pagina usa i tasti.
----> Per rendere la prima linea uguale alla seconda, batti R e il nuovo testo.
+  2. Ora batti  R  e batti il numero che vedi nella linea seguente, in modo
+     che rimpiazzi l'  xxx .
 
-  4. Nota che quando premi <ESC> per uscire, ogni testo non toccato resta
-     uguale.
+  3. Premi <ESC> per uscire dalla Modalità Replace.  Nota che il resto della
+     linea resta invariato.
 
+  4. Ripeti i passi in modo da rimpiazzare l'altro xxx .
 
+---> Aggiungendo 123 a xxx si ottiene xxx.
+---> Aggiungendo 123 a 456 si ottiene 579.
 
+NOTA:  La Modalità Replace è come la Modalità Inserimento, ma ogni carattere
+       che viene battuto ricopre un carattere esistente.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                 Lezione 6.4: SET [IMPOSTA] UN'OPZIONE
+                Lezione 6.4: COPIA E INCOLLA DEL TESTO
 
-      ** Imposta un'opzione per ignorare maiuscole/minuscole
-        durante la ricerca/sostituzione **
 
- 1. Ricerca 'ignora' battendo:
-    /ignora
-    Ripeti la ricerca più volte usando il tasto   n
+     ** usa l'operatore  y  per copiare del testo e  p  per incollarlo **
 
- 2. Imposta l'opzione 'ic' (Ignore case, [Ignora Maiuscolo/minuscolo]) battendo:
-    :set ic
+  1. Vai alla linea indicata da ---> qui sotto, e metti il cursore dopo "a)".
+  
+  2. Entra in Modalità Visuale con  v  e metti il cursore davanti a "primo".
+  
+  3. Batti  y  per copiare [yank] il testo evidenziato.
 
- 3. Adesso ricerca ancora 'ignora' premendo il tasto    n
-    Ripeti la ricerca più volte usando il tasto   n
+  4. Muovi il cursore alla fine della linea successiva:  j$
 
- 4. Imposta le opzioni 'hlsearch' e 'incsearch' [evidenzia_ricerca subito]
-    :set hls is
+  5. Batti  p  per incollare [paste] il testo.  Poi batti:  a secondo <ESC> .
 
- 5. Adesso ribatti ancora il comando di ricerca, e guarda cosa succede:
-    /ignore
+  6. Usa la Modalità Visuale per selezionare " elemento.", copialo con  y ,
+     Vai alla fine della linea successiva con  j$  e incolla il testo con  p .
 
+--->  a) questo è il primo elemento.
+      b)
 
+NOTA: Puoi usare  y  come operatore;  yw  copia una parola [word].
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                              Lezione 6 SOMMARIO
+                Lezione 6.5: SET [IMPOSTA] UN'OPZIONE
+
+       ** Imposta un'opzione per ignorare maiuscole/minuscole **
+       **             durante la ricerca/sostituzione         **
 
+ 1. Ricerca 'nota' battendo:   /nota <ENTER>
+    Ripeti la ricerca più volte usando il tasto   n
 
-  1. Battendo  o  aggiungi una linea SOTTO il cursore ed il cursore
-     si posiziona sulla linea appena aperta, in Modalità Inserimento.
-     Battendo  O  [Maiuscola] apri la linea SOPRA la linea su cui è il cursore.
+ 2. Imposta l'opzione 'ic' (Ignore Case, [Ignora maiuscolo/minuscolo])
+    battendo:  :set ic
 
-  2. Batti una  a  per inserire testo DOPO il carattere su cui è il cursore.
-     Battendo   A  [Maiuscola] aggiungi testo alla fine della linea.
+ 3. Ora ricerca ancora 'nota' premendo il tasto    n
+    Troverai adesso anche  Nota  e  NOTA .
 
-  3. Battendo   R  [Maiuscola] entri in Modalità Rimpiazzo [Replace mode]
-     e ci resti finché non premi <ESC> per uscirne.
+ 4. Imposta le opzioni 'hlsearch' e 'incsearch'    :set hls is
 
-  4. Battendo ":set xxx" imposti l'opzione "xxx"
-     Battendo ":h   xxx" vedi la documentazione [inglese] per l'opzione "xxx"
+ 5. Ora batti ancora il comando di ricerca, e guarda cosa succede:    /nota
+ 6. Per disabilitare il riconoscimento di maiuscole/minuscole batti:  :set noic
+NOTA: Per non evidenziare le occorrenze trovate batti:   :nohlsearch
+NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c
+      nel comando di ricerca:    /nota\c <INVIO>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Lezione 6 SOMMARIO
 
+  1. Batti  o  per aggiungere una linea SOTTO il cursore ed entrare in
+               Modalità Inserimento.
+     Batti  O  per aggiungere una linea SOPRA il cursore.
 
+  2. Batti  a  per inserire testo DOPO il cursore.
+     Batti  A  per inserire testo alla fine della linea.
 
+  3. Il comando   e  sposta il cursore alla fine di una parola.
 
+  4. L'operatore  y  copia del testo,  p  incolla del testo.
 
+  5. Batti  R  per entrare in Modalità Replace, e ne esci premendo <ESC>.
 
+  6. Batti ":set xxx" per impostare l'opzione "xxx". Alcun opzioni sono:
+      'ic' 'ignorecase'        ignorare maiuscole/minuscole nella ricerca
+      'is' 'incsearch' mostra occorrenze parziali durante una ricerca
+      'hls' 'hlsearch' evidenzia tutte le occorrenze di una ricerca
+     Puoi usare sia il nome completo di un'opzione che quello abbreviato.
 
+  7. Usa il prefisso "no" per annullare una opzione:   :set noic
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      Lezione 7: COMANDI DI AIUTO ON-LINE
+                     Lezione 7.1: OTTENERE AIUTO
 
-
-                     ** Usa il sistema di help on-line **
+                ** Usa il sistema di aiuto on-line **
 
   Vim ha un esauriente sistema di aiuto on-line.  Per cominciare, prova una di
   queste alternative:
@@ -745,45 +860,92 @@ NOTA: Eviti cos
        - premi il tasto <F1>    (se ce n'è uno)
        - batti   :help  <INVIO>  OPPURE   :h <INVIO>
 
-  Batti   :q <INVIO>   per chiudere la finestra di help.
+  Leggi il testo nella finestra di aiuto per vedere come funziona l'aiuto.
+  Batti  CTRL-W CTRL-W per passare da una finestra all'altra.
+  Batti  :q <INVIO>   per chiudere la finestra di aiuto.
 
   Puoi trovare aiuto su quasi tutto, dando un argomento al comando ":help"
   Prova questi (non dimenticare di premere <INVIO>):
 
        :help w
-       :help c_<T
+       :help c_CTRL-D
        :help insert-index
        :help user-manual
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      LEZIONE 8: PREPARA UNO SCRIPT INIZIALE
+                Lezione 7.2: PREPARARE UNO SCRIPT INIZIALE
 
-                         ** Attiva le opzioni Vim **
+                       ** Attiva le opzioni Vim **
 
   Vim ha molte più opzioni di Vi, ma molte di esse sono predefinite inattive.
-  Per cominciare a usare più opzioni, devi preparare un file "vimrc".
+  Per cominciare a usare più opzioni, devi creare un file "vimrc".
 
-  1. Comincia a editare il file "vimrc", a seconda del tuo sistema operativo:
-       :edit ~/.vimrc                  per Unix
-       :edit $VIM/_vimrc               per MS-Windows
+  1. Comincia a editare il file "vimrc".  Questo dipende dal tuo sistema:
+       :e ~/.vimrc             per Unix
+       :e $VIM/_vimrc          per MS-Windows
 
-  2. Ora inserisci il file "vimrc" d'esempio:
+  2. Ora leggi i contenuti del file "vimrc" distribuito come esempio:
 
-       :read $VIMRUNTIME/vimrc_example.vim
+       :r $VIMRUNTIME/vimrc_example.vim
 
   3. Scrivi il file con:
+       :w
 
-       :write
-
-  La prossima volta che apri Vim, vedrai in uso la colorazione sintattica.
+  La prossima volta che apri Vim, sarà abilitata la colorazione sintattica.
   Puoi aggiungere a questo file "vimrc" tutte le tue impostazioni preferite.
+  Per maggiori informazioni batti:  :help vimrc-intro
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Lezione 7.3: COMPLETAMENTO
+
+
+             ** Completamento linea comandi con CTRL-D e <TAB> **
+
+  1. Imposta Vim in modalità compatibile:  :set nocp
+
+  2. Guarda i file esistenti nella directory:  :!ls   o  :!dir
+
+  3. Batti l'inizio di un comando:  :e
+
+  4. Premi  CTRL-D  e Vim ti mostra una lista di comandi che iniziano per "e".
+
+  5. Premi  <TAB>  e Vim completa per te il nome comando come ":edit".
+
+  6. Ora batti uno spazio e l'inizio del nome di un file esistente:  :edit FIL
+
+  7. Premi <TAB>.  Vim completerà il nome del file (se è il solo possibile).
+
+NOTA:  Il completamento è disponibile per molti comandi.  Prova a battere
+       CTRL-D e <TAB>.  Particolarmente utile per  :help .
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Lezione 7 Sommario
+
+
+  1. Batti  :help  o premi <F1> o <Help>  per aprire una finestra di aiuto.
+
+  2. Batti  :help comando  per avere aiuto su  comando .
+
+  3. Batti  CTRL-W CTRL-W  per saltare alla prossima finestra.
+
+  4. Batti  :q  per chiudere la finestra di aiuto.
+
+  5. Crea uno script iniziale vimrc contenente le tue impostazioni preferite.
+
+  6. Mentre batti un comando  : , premi CTRL-D per vedere i possibili
+     completamenti.  Premi <TAB> per usare il completamento desiderato.
+
+
+
+
+
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Qui finisce la Guida a Vim.  Il suo intento è di fornire una breve panoramica
   dell'Editor Vim, che ti consenta di usare l'Editor abbastanza facilmente.
   Questa guida è largamente incompleta poiché Vim ha moltissimi altri comandi.
-  Puoi anche leggere il manuale utente: ":help user-manual".
+  Puoi anche leggere il manuale utente (anche in italiano): ":help user-manual".
 
   Per ulteriore lettura e studio, raccomandiamo:
        Vim - Vi Improved - di Steve Oualline     Editore: New Riders
@@ -801,5 +963,5 @@ NOTA: Eviti cos
   Colorado School of Mines, usando idee fornite da Charles Smith,
   Colorado State University - E-mail: bware@mines.colorado.edu
   Modificato per Vim da Bram Moolenaar.
-  Segnalare refusi ad Antonio Colombo - E-mail: azc10@yahoo.com
+  Segnalare refusi ad Antonio Colombo - E-mail: azc100@gmail.com
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/runtime/tutor/tutor.tr.utf-8 b/runtime/tutor/tutor.tr.utf-8
new file mode 100644 (file)
index 0000000..0e6802d
--- /dev/null
@@ -0,0 +1,813 @@
+===============================================================================
+=      V I M   T u t o r'a Hoş Geldiniz    -    Sürüm 1.5      =
+===============================================================================
+
+     Vim, bu gibi bir eğitmen ile açıklanması gereken çok fazla komut barındıran,
+     oldukça kuvvetli bir metin düzenleyicidir. Bu eğitmen Vim'i çok amaçlı bir
+     düzenleyici olarak kolaylıkla kullanabileceğiniz yeterli sayıda komutu açıklamak
+     için tasarlanmıştır.
+
+     Eğitmeni tamamlama süresi yapacağınız denemelere bağlı olarak 25-30
+     dakikadır.
+
+     Derslerdeki komutlar bu metini değiştirecektir. Üzerinde çalışmak için
+     bu dosyanın bir kopyasını alın (eğer "vimtutor" uygulamasını çalıştırdıysanız
+     zaten bir kopyasını almış oldunuz).
+
+     Bu eğitmenin, kullanarak öğretmeye ayarlandığını unutmamak önemlidir. Bu şu
+     anlama gelir; komutları öğrenmek için doğru bir şekilde çalıştırmanız gerekir.
+     Eğer sadece yazılanları okursanız komutları unutursunuz.
+
+     Şimdi Shift-Lock tuşlarınızın basılı olmadığına emin olun ve Ders 1.1'in
+     ekranı tamamen doldurması için   j   tuşuna yeterli miktarda basın.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Ders 1.1:  İMLECİ HAREKET ETTİRMEK
+
+  Ç.N: Tüm derslerde <ENTER> gördüğünüz yerde bu tuşa basmanız gerekir.
+
+   ** İmleci hareket ettirmek için, h,j,k,l tuşlarına gösterildiği gibi basın. **
+            ^
+            k              İpucu: h tuşu soldadır ve sola hareket eder.
+       < h      l >               l tuşu sağdadır ve sağa hareket eder.
+            j                     j tuşu aşağı yönlü bir ok gibidir.
+            v
+  1. Yeterli hissedinceye kadar imleci ekranda hareket ettirin.
+
+  2. Aşağı tuşunu  (j)  tekrar edene kadar basılı tutun.
+---> Şimdi, bir sonraki derse nasıl geçeceğinizi biliyorsunuz.
+
+  3. Aşağı tuşunu kullanarak, Ders 1.2'ye geçin.
+  Not:  Eğer yazdığınız bir şeyden emin değilseniz, Normal kipe geçmek için <ESC> tuşuna basın.
+        Daha sonra istediğiniz komutu yeniden yazın.
+  Not:  İmleç tuşları da aynı zamanda işe yararlar ancak   hjkl   tuşlarını kullanmaya alıştığınızda etrafta daha hızlı
+        hareket edersiniz.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Ders 1.2: VIM'E GİRİŞ VE VIM'DEN ÇIKIŞ
+
+
+  !! NOT: Aşağıdaki adımları yapmadan önce, bu dersi tamamen okuyun.
+
+  1. <ESC> tuşuna basın (Normal kipte olmayı garantilemek için).
+
+  2. Yazın:                   :q! <ENTER>.
+
+---> Bu düzenleyicinin yaptığınız değişiklikleri KAYDETMEDEN kapanmasını sağlar.
+     Eğer yaptıklarınızın kaydedilmesini istiyorsanız şunu yazın:
+                               :wq  <ENTER>
+
+  3. Kabuk istemcisini (shell prompt) gördüğünüzde, sizi bu eğitmene getiren
+     komutu yazın. Bu:        vimtutor <ENTER> komutudur.
+     Normalde: vim tutor <ENTER> komutu kullanılır.
+---> 'vim' vim düzenleyicisine gir anlamına gelir, 'tutor' ise açmak istediğiniz dosyadır.
+
+  4. Eğer bu adımları ezberlediyseniz ve kendinizden eminseniz, 1'den 3'e kadar olan adımları,
+     düzenleyiciden çıkmak ve yeniden girmek için uygulayın.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Ders 1.3: METİN DÜZENLEME - SİLME
+
+
+** Normal kipteyken imlecin altındaki karakteri silmek için   x  'e basın.**
+
+  1. İmleci aşağıda işaretlenmiş (-->) satıra götürün.
+
+  2. Hataları düzeltmek için, imleci silinmesi gereken karakterin üzerine getirin
+
+  3. İstenmeyen karakteri silmek için   x   tuşuna basın.
+
+  4. Cümle düzelene kadar 2'den 4'e kadar olan adımları tekrar edin.
+
+---> İinek ayyın üzzerinden attladı.
+
+  5. Şimdi satır düzeldi, Ders 1.4'e geçin.
+
+NOT: Bu eğitmende ilerledikçe ezberlemeye çalışmayın, kullanarak öğrenin.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Ders 1.4: METİN DÜZENLEME - EKLEME
+
+
+         ** Normal kipteyken metin eklemek için   i  'ye basın. **
+
+  1. İmleci aşağıdaki işaretlenmiş (-->) ilk satıra götürün.
+
+  2. İlk satırı ikincisinin aynısı gibi yapmak için, imleci eklenmesi gereken
+     metinden sonraki ilk karakterin üzerine götürün.
+
+  3. i  'ye basın ve gerekli eklemeleri yapın.
+
+  4. Her hata düzeltildiğinde <ESC> tuşuna basarak Normal kipe dönün.
+     Cümleyi düzeltmek için 2'den 4'e kadar olan adımları tekrar edin.
+
+---> Bu metinde eksk.
+---> Bu metinde birşey eksik.
+
+  5. Metin ekleme çalışmalarını yeterli görüyorsanız aşağıdaki özete geçin.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              DERS 1 ÖZET
+
+
+  1. İmleç hem ok tuşları hem de   hjkl   tuşları ile hareket ettirilir.
+        h (sol)        j (aşağı)       k (yukarı)      l (sağ)
+
+  2. (Konsoldan) Vim'e girmek içn  yazın:  vim DOSYAİSMİ <ENTER>
+
+  3. Tüm değişiklikleri göz ardı edip vimden çıkmak için yazın:
+     <ESC>     :q!     <ENTER>
+     veya tüm değişiklikleri kaydetmek için yazın:
+     <ESC>     :wq     <ENTER>
+
+  4. İmlecin altındaki bir karakteri silmek için Normal kipte   x   yazın.
+
+  5. İmlecin altında metin eklemek için Normal kipte yazın:
+        i     yazılacak metin <ESC>
+
+NOT: <ESC> tuşuna basmak sizi Normal kipe götürür ya da istenmeyen tamamlanmamış bir komutu
+     iptal eder.
+
+Şimdi Ders 2 ile devam edin.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Ders 2.1: SİLME KOMUTLARI
+
+           ** Bir kelimeyi silmek için  dw  yazın.**
+
+  1. Normal kipte olmakten emin olmak için <ESC> tuşuna basın.
+
+  2. İmleci aşağıdaki işaretlenmiş (-->) satıra götürün.
+
+  3. İmleci silinmesi gereken kelimenin başına götürün.
+
+  4. Kelimeyi silmek için   dw   yazın.
+
+  NOT:  dw  harfleri siz yazdıkça ekranın son satırında görülecektir.
+        Eğer yanlış bir şeyler yazarsanız, yeniden başlamak için <ESC> tuşuna basın.
+
+---> Bu satırda çerez cümleye ait olmayan leblebi kelimeler var.
+
+
+  5. Cümle düzelene kadar adım 3 ve 4'ü tekrar edin, daha sonra Ders 2.2'ye gidin.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Ders 2.2: DAHA FAZLA SİLME KOMUTU
+
+
+          ** Satırı sonuna kadar silmek için   d$   yazın.**
+
+  1. Normal kipte olmaktan emin olmak için <ESC> tuşuna basın.
+
+  2. İmleci aşağıdaki işaretlenmiş (-->) satıra götürün.
+
+  3. İmleci doğru olan satırın sonuna götürün. (Birinciden SONRA. )
+
+  4. Satırı sonuna kadar silmek için   d$   yazın.
+  ( d$  yazarken d'den sonra <ALT> ile beraber $ tuşuna basın)
+
+---> Birileri bu satırın sonunu iki defa yazmış. Birileri bu satırın sonunu iki defa yazmış.
+
+  5. Neler olduğunu anlamak için Ders 2.3'e gidin.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Ders 2.3: KOMUTLAR VE NESNELER
+
+
+   d   silme komutu için biçim aşağıdaki gibidir:
+
+        [sayı]   d    nesne       VEYA     d   [sayı]   nesne
+  Burada:
+    sayı   - komutun kaç defa çalıştırlacağı (isteğe bağlı, varsayılan=1).
+    d      - silme komutu
+    nesne  - komutun ne şekilde çalışacağı (aşağıda listlendi).
+
+  Nesnelerin kısa bir listesi.
+    w - Boşluğu da içererek, imleçten itibaren kelimenin sonuna kadar.
+    e - Boşluğu İÇERMEDEN, imleçten itibaren kelimenin sonuna kadar.
+    $ - imleçten satırın sonuna kadar.
+
+NOT:   Serüven sevenler için, Normal kipte iken, komut olmadan sadece nesnenin kendisine basmak
+       imleci yukardaki listede olduğu gibi hareket ettirecektir.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               Ders 2.4:   'KOMUT-NESNE'ye BİR İSTİSNA
+
+
+                ** Bütün bir satırı silmek için   dd   yazın. **
+
+  Bütün bir satır silme sıklığından dolayı, Vi tasarımcıları bir satırı
+  tamamen silmek için iki d yazmanın daha kolay olacağına karar verdiler.
+
+  1. İmleci aşağıdaki tümceciğin ikinci satırına götürün.
+  2. Satırı silmek için    dd   yazın.
+  3. Şimdi de dördüncü satıra gidin.
+  4. İki satırı birden silmek için   2dd   (sayı-komut-nesne'yi hatırlayın) yazın.
+
+       1)  Güller kırmızıdır,
+       2)  Çamur eğlenceli,
+       3)  Menekşeler mavi,
+       4)  Bir arabam var,
+        5)  Saat bana söyler,
+       6)  Şeker tatlıdır
+       7)  Ve sen de öylesin
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Ders 2.5: GERİ AL KOMUTU
+
+
+   ** Son komutu geri almak için    u   , bütün bir satırı düzeltmek için U yazın.**
+
+  1. İmleci aşağıdaki işaretlenmiş (-->) satırdaki ilk hatanın üzerine götürün.
+  2. İlk istenmeyen karakteri silmek için   x   yazın.
+  3. Şimdi son çalıştırılan komutu geri almak için   u   yazın.
+  4. Bu sefer   x    komutunu kullanarak satırdaki tüm hataları düzeltin.
+  5. Şimdi satırı ilk haline çevirmek için büyük   U    yazın.
+  6. Şimdi   U    ve daha önceki komutları geri almak için birkaç defa   u    yazın.
+  7. Şimdi birkaç defa CTRL-R (CTRL'yi basılı tutarken R ye basın) yazarak geri almaları da geri alın.
+
+---> Buu satıırdaki hataları düüzeltinn ve sonra koomutu geri alllın.
+
+  8. Bunlar son derece kullanışlı komutlardır. Şimdi Ders 2 Özete geçin.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              DERS 2 ÖZET
+
+
+  1. İmleçten itibaren bir kelimeyi silmek için yazın:     dw
+
+  2. İmleçten itibaren bir satırı silmek için yazın:     d$
+
+  3. Bütün bir satırı silmek için yazın:         dd
+
+  4. Normal kipte bir komut biçimi şöyledir:
+
+       [sayı]   komut    nesne    VEYA     komut      [sayı]   nesne
+     burada:
+        sayı  - komutun kaç kere tekrar edeceği
+        komut - ne yapılacağı, silmek için   d   olduğu gibi
+        nesne - komutun nasıl davranacağı, w (kelime), $ (satır sonu), vb gibi.
+
+  5. Önceki hareketleri geri almak için yazın:              u       (küçük u)
+     Bir satırdaki tüm değişiklikleri geri almak için yazın:     U       (büyük u)
+     Geri almaları geri almak için yazın:   CTRL-R
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Ders 3.1: KOY KOMUTU
+
+
+       ** Son yaptığınız silme işlemini imleçten sona geri yerleştirmek için   p   yazın.**
+
+  1. İmleci aşağıdaki tümceciğin ilk satırına götürün.
+
+  2. Satırı silip Vim'in tamponuna yerleştirmek için   dd   yazın.
+
+  3. İmleci, silinmiş satırı nereye yerleştirmek istiyorsanız, o satırın ÜZERİNE götürün.
+
+  4. Normal kipteyken, satırı yerleştirmek için   p   yazın.
+
+  5. Tüm satırları doğru sıraya koymak için 2'den 4'e kadar olan adımları tekrar edin.
+
+     d) Sen de öğrendin mi?
+     b) Menekşeler mavidir,
+     c) Akıl öğrenilir,
+     a) Güller kırmızıdır,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Ders 3.2: YERLEŞTİR KOMUTU
+
+
+  ** İmlecin altında bir karakter yerleştirmek için    r    yazın.**
+
+  1. İmleci aşağıdaki işaretlenmiş(--->) ilk satıra götürün.
+
+  2. İmleci satırdaki ilk hatanın üzerine götürün.
+
+  3. Hatayı düzeltmek için önce   r    ardından da doğru karakteri yazın.
+
+  4. İlk satır düzelene kadar adım 2 ve 3'ü tekrar edin.
+
+--->  Bu satıv yazılıvken, bivileri yamlış tuştara basmış.
+--->  Bu satır yazılırken, birileri yanlış tuşlara basmış.
+
+  5. Ders 3.2'ye geçin.
+
+NOT: Unutmayın, ezberleyerek değil kullanarak öğrenin.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Ders 3.3: DEĞİŞTİR KOMUTU
+
+
+          ** Bir kelimenin tamamını veya parçasını değiştirmek için   cw   yazın.
+
+  1. İmleci aşağıdaki işaretlenmiş(--->) satıra götürün.
+
+  2. İmleci "sutar" daki u'nun üzerine yerleştirin.
+
+  3. Önce   cw   ardından doğru kelimeyi girin (bu durumda 'atır'.)
+
+  4. <ESC> tuşuna basın ve bir sonraki hataya gidin (değişmesi gereken ilk karakter.)
+
+  5. İlk cümle ikincisiyle aynı olana kadar adım 3 ve 4'ü tekrar edin.
+
+---> Bu sutar değiştir komutu ile değişneli gereken birkaç petime içeriyor.
+---> Bu satır değiştir komutu ile değişmesi gereken birkaç kelime içeriyor.
+
+cw'nin sadece kelimeyi değiştirmediğini, aynı zamanda sizi insert kipine götürdüğüne de dikkat edin.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Ders 3.4: c'Yİ KULLANARAK DAHA FAZLA DEĞİŞTİRME
+
+
+     ** Değiştir komutu sil komutu ile aynı nesnelerle kullanılır.**
+
+  1. Değiştir komutu sil ile aynı yolla çalışır. Biçim şöyledir:
+
+       [sayı]   c   nesne        VEYA     c   [sayı]   nesne
+
+  2. Nesneler de aynı zamanda aynıdır. Örneğin w (word), $ (satır sonu), vb. gibi.
+
+  3. Aşağıdaki işaretlenmiş(--->) ilk satıra gidin.
+
+  4. İmleci ilk hataya götürün.
+
+  5. Satırın geri kalan kısmını ikincisi gibi yapmak için   c$   yazın ve daha sonra <ESC> tuşuna basın.
+
+---> Bu satırın sonu düzeltilmek için biraz yardıma ihtiyaç duyuyor.
+---> Bu satırın sonu düzeltilmek için   c$   komutu kullanılarak yardıma ihtiyaç duyuyor.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              DERS 3 ÖZET
+
+
+  1. Silinmiş olan bir metini geri yerleştirmek için   p   yazın. Bu silinmiş metini
+     imleçten hemen SONRA geri yerleştirir (eğer bir satır silinmişse hemen imleçten sonra, alta
+     yerleştirilecektir)
+
+  2. İmlecin altındaki karakteri değiştirmek için önce   r    ardından da
+     asıl karakteri yazın.
+
+  3. Değiştir komutu belirlenen nesneyi, imleçten nesnenin sonuna kadar değiştirme imkanı verir.
+     Örneğin, bir kelimeyi imleçten sonuna kadar değiştirmek için   cw   , bir satırın tamamını
+     değiştirmek içinse   c$   yazın.
+
+  4. Değiştir için biçim şöyledir:
+
+        [sayı]   c    nesne         VEYA      c   [sayı]   nesne
+
+Şimdi bir sonraki derse geçin.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Ders 4.1: KONUM VE DOSYA DURUMU
+
+
+  ** Dosya içerisindeki konumunuzu ve dosyanın durumunu görmek için   CTRL-g    yazın. **
+  ** Dosya içerisindeki bir satıra gitmek için   SHIFT-g   yazın. **
+
+  Not: Adımlardan herhangi birini yapmadan önce dersin tamamını okuyun!!
+
+  1. Ctrl tuşunu basılı tutun ve   g'ye   basın. Dosyanın sonunda dosya ismini ve bulunduğunuz konumu
+     gösteren bir durum satırı görünecektir. Adım 3 için satır numarasını
+     unutmayın.
+
+  2. Dosyanın sonuna gitmek için   shift-G   'ye basın.
+
+  3. Daha önce bulunduğunuz satır numarasını yazın ve daha sonra    shift-G   'ye basın.
+     Bu sizi daha önce bulunduğunuz ve    Ctrl-g   'ye bastığınız satıra geri götürecektir.
+     (Sayılar yazılırken ekranda GÖRÜNMEYECEKLERDİR.)
+
+  4. Yapabileceğinizi düşündüğünüzde, adım 1'den 3'e kadar yapın.
+
+  Ç.N: Bu kısım orijinal metinde de biraz eksik anlatılmış gibi. Bir satır hakkında bilgi almak için
+       Ctrl-g'yi kullanın. Herhangi bir satıra gitmek içinse, önce satır numarasını yazın ve ardınan
+       shift-g'ye basın. Satır numarası girmeden basılan shift-g sizi satır sonuna götürür.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Ders 4.2: ARAMA KOMUTU
+
+
+     ** Bir kelime öbeğini aramak için   /   ile beraber kelime öbeğini girin. **
+
+  1. Normal kipteyken   /   karakterini yazın. Komut bölümü yerine   /   karakterinin ve
+     imlecin ekranın sonunda göründüğüne dikkat edin.
+
+  2. Şimdi, 'hatttaa' yazıp <ENTER> 'a basın. Bu sizin aramak istediğiniz kelime.
+
+  3. Aynı kelime öbeğini tekrar aramak için, basitçe   n   yazın.
+     Aynı kelime öbeğini zıt yönde aramak için, Shift-N yazın.
+
+  4. Eğer zıt yöne doğru bir arama yapmak istiyorsanız,  /   komutu yerine
+     ?   komutunu kullanın.
+
+---> "hatttaa" hatayı yazmanın doğru yolu değil; hatttaa bir hata.
+
+Not: Arama dosyanın sonuna ulaştığında, tekrar baştan başlayacaktır.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Ders 4.3: UYAN PARANTEZ ARAMASI
+
+
+             ** Uyan bir ),] veya } bulmak için   %   yazın. **
+
+  1. İmleci işaretli (--->) satırdaki herhangi bir (, [ veya { karakterinin
+     üzerine götürün.
+
+  2. Şimdi   %    karakterini yazın.
+
+  3. İmleç uyan parantez veya ayracın üzerine gider.
+
+  4. Uyan ilk parantezin üzerine geri dönmek için yine   %   yazın.
+
+---> Bu ( içerisinde ('ler, ['ler ] ve {'ler } bulunan bir satırdır. ))
+
+Not: Bu içerisinde uymayan parantezler bulunan bir programın yanlışını ayıklamak için
+     son derece yararlıdır.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Ders 4.4: HATALARI DÜZELTMEK İÇİN BİR YOL
+
+
+       ** 'eski' yerine 'yeni' yerleştirmek için   :s/eski/yeni/g   yazın. **
+
+  1. İmleci aşağıdaki işaretli (--->) satıra götürün.
+
+  2. :s/buu/bu  yazıp <ENTER> 'a basın. Bu komutun sadece satırdaki ilk karşılaşmayı
+     düzelttiğine dikkat edin.
+
+  3. Şimdi genel olarak satırdaki tüm değişikliği  yapmak için   :s/buu/bu/g   yazın.
+
+---> Buu birinci, buu ikinci, buu üçüncü bölüm.
+
+  4. İki satır arasındaki bir karakter katarının tümünü değiştirmek için,
+     :#,#s/eski/yeni/g  yazın, burada #,# iki satırın sayılarıdır.
+     Tüm dosyadaki karşılaşılan kelimeleri değiştirmek için  :%s/eski/yeni/g  yazın.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              DERS 4 ÖZET
+
+
+  1. Ctrl-g sizin dosyadaki konumunuzu ve dosya durumunu gösterir.
+     Shift-G dosyanın sonuna gider. Shift-G 'den önce bir sayı yazılırsa, o satıra
+     gidilir.
+
+  2. Bir sözcük öbeğinden önce / yazmak, İLERİ yönde o öbeği aratır.
+     Bir sözcük öbeğinden önce ? yazmak, GERİ yönde o öbeği aratır.
+     Bir aramadan sonra, aynı yöndeki bir sonraki karşılaşmayı bulmak için   n   ,
+     veya zıt yöndekini bulmak için Shift-N yazın.
+
+  3. İmleç bir (,),[,],{,} parantezi üzerindeyken   %   yazmak, uyan diğer eş parantezi bulur.
+
+  4. Bir satırdaki ilk 'eski'yi 'yeni' ile değiştirmek için                :s/eski/yeni            yazın.
+     Bir satırdaki tüm 'eski'leri 'yeni' ile değiştirmek için             :s/eski/yeni/g          yazın.
+     İki satır arasındaki öbekleri değiştirmek için                     :#,#s/eski/yeni/g       yazın.
+                                                                        (#'lar satır numaraları)
+     Bir dosyadaki tüm karşılaşmaları değiştirmek için                 :%s/eski/yeni/g         yazın.
+     Her seferinde onay sorması için 'c' ekleyin.                    :%s/eski/yeni/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               Ders 5.1: BIR DIŞ KOMUT ÇALIŞTIRMAK
+
+
+   ** Bir dış komutu çalıştırmak için   :!      ve ardından istediğiniz dış komutu yazın. **
+
+  1. İmleci ekranın altına götürmek için alışık olduğunuz  :  komutunu yazın. Bu size
+     bir komut yazma imkanı verir.
+
+  2. Şimdi ! (ünlem) karakterini yazın. Bu size bir dış komut çalıştırma
+     imkanı verir.
+
+  3. Örnek olarak ! karakterini takiben  ls  yazın ve <ENTER>'a basın. Bu size
+     o anda bulunduğunuz dizindeki dosyaları gösterecektir. Veya ls çalışmazsa :!dir
+     komutunu kullanın.
+
+Not: Herhangi bir dış komutu bu yolla çalıştırmak mümkündür.
+
+Not: Tüm  :   komutlarından sonra <ENTER> tuşuna basılmalıdır.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Ders 5.2: DOSYA YAZMAYA DEVAM
+
+
+     ** Dosyaya yapılan değişikliği kaydetmek için, :w DOSYAİSMİ  yazın. **
+
+  1. Bulunduğunuz dizini listelemek için  :!dir  veya  :!ls  yazın.
+     Komuttan sonra <ENTER> tuşuna basıcağınızı zaten biliyorsunuz.
+
+  2. Mevcut olmayan bir dosya ismi seçin, örneğin DENEME.
+
+  3. Şimdi   :w DENEME   yazın (DENEME sizin seçtiğiniz dosya ismi).
+
+  4. Bu tüm dosyayı (Vim Tutor) DENEME isminde başka bir dosyaya yazar.
+     Bunu doğrulamak için,  :!dir   yazın ve yeniden bulunduğunuz dizini listeleyin.
+
+Not: Eğer Vim'den çıkıp kaydettiğiniz DENEME dosyasını açarsanız, bunun kaydettiğiniz
+     vimtutor'un gerçek bir kopyası olduğunu görürsünüz.
+
+  5. Şimdi dosyayı şu komutları vererek silin      (MS-DOS)     :!del DENEME
+                                               (veya UNIX)  :!rm DENEME
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Ders 5.3: SEÇMELİ YAZ KOMUTU
+
+
+       ** Dosyanın bir bölümünü kaydetmek için,  :#,# w DOSYAİSMİ  yazın. **
+
+  1. Bir kez daha bulunduğunuz dizini görmek için  :!dir  veya  :!ls  yazın,
+     ardından DENEME gibi uygun bir dosya ismi seçin.
+
+  2. İmleci bu sayfanın başına götürün ve ardından CTRL-g'ye basarak satır numarasını
+     öğrenin. BU NUMARAYI UNUTMAYIN!
+
+  3. Şimdi sayfanın sonuna gidib ve yine CTRL-g'ye basarak satır numarasını
+     öğrenin. BU NUMARAYI DA UNUTMAYIN!
+
+  4. Bir dosyaya sadece bir bölümü kaydetmek için, :#,# w DENEME yazın. #,# sizin
+     baktığınız sayılar (üst,alt) ve DENEME dosyanızın ismidir.
+
+
+  5. Yine,  :!dir  yazarak dosyanın orada olduğuna bakın ama SİLMEYİN.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Ders 5.4: DOSYALARI BİRLEŞTİRMEK-BÖLÜM EKLEMEK
+
+
+       ** Bir dosyanın içeriğini eklemek için  :r DOSYAİSMİ   yazın. **
+
+  1. DENEME dosyanızın önceden bulunduğundan emin olmak için  :!dir   yazın.
+
+  2. İmleci bu sayfanın başına yerleştirin.
+
+NOT: Adım 3'ü uyguladıktan sonra Ders 5.3'ü görüyor olacaksınız. Daha sonra bu
+     derse sayfasına dönün.
+
+  3. Şimdi DENEME sayfasını  :r DENEME  yazarak aktarın.
+
+NOT: Aktardığınız dosya imlecinizin hemen altına eklenecektir.
+
+  4. Dosyanın eklendiğini görmek için, geriye gidin. Ders 5.3'ten iki kopya
+     olduğunu göreceksiniz; asıl ve kopya olanı.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              DERS 5 ÖZET
+
+
+  1.  :!komut bir dış komut çalıştırır.
+
+      Bazı yararlı örnekler:
+        (MS-DOS)         (Unix)
+         :!dir            :!ls            -  bir dizini listeler.
+         :!del DOSYA      :!rm DOSYA      -  DOSYA'yı siler.
+
+  2.  :w DOSYAİSMİ o anki Vim dosyasını diske DOSYAİSMİ ile kaydeder.
+
+  3.  :#,#w DOSYAİSMİ # ile # satır arasını DOSYAİSMİ ile kaydeder.
+
+  4.  :r DOSYAİSMİ imlecin altından başlayarak DOSYAİSMİ isimli dosyanın içeriğini ekler.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Ders 6.1: AÇ KOMUTU
+
+
+ ** İmlecin aşağısına bir satır açmak ve Insert kipine geçmek için   o    yazın. **
+
+  1. İmleci aşağıdaki işaretlenmiş (--->) satıra götürün.
+
+  2. İmlecin aşağısına bir satır açmak ve Insert kipine geçmek için
+     o   (küçük harfle) yazın.
+
+  3. Şimdi işaretlenmiş satırı kopyalayın ve Insert kipinden çıkmak için <ESC>
+     tuşuna basın.
+
+---> o  yazdıktan sonra imlec açılan satıra gidicek ve Insert kipine geçilecek.
+
+  4. İmlecin üzerinde bir satır açmak için, basitçe büyük O yazın. Bunu aşağıdaki
+     satırda deneyin.
+Bu satırın üzerine bir satır açmak için imleç bu satırdayken   Shift-o   yazın.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Ders 6.2: EKLE KOMUTU
+
+
+            ** İmleçten sonra metin eklemek için   a   yazın. **
+
+  1. İmleci aşağıdaki işaretlenmiş (--->) satırın sonuna götürmek için
+     Normal Kipteyken $ yazın.
+
+  2. İmlecin altındaki karakterden sonra metin eklemek için  a   (küçük harfle) yazın.
+     (Büyük  A  satırın sonuna ekler).
+
+  3. Şimdi ilk satırı tamamlayın. Ekle komutunun Insert kipiyle aynı işi yaptığına
+     dikkat edin. Tek fark metinin eklendiği yer.
+Ç.N: Eğer  a   yazarsanız imlecin altındaki karakterden hemen sonra ekleme yapabilirsiniz.
+     Eğer  Shift-a  yazarsanız imleç satır sonuna gidecek ve hemen ardına ekleme yapabileceksiniz.
+     Doğal olarak bizim örneğimizde Shift-A'yı kullanmak daha güzel olacaktır. Önce $ ardınan a
+     yazmamıza gerek kalmaz.
+
+---> Bu satırda çalışabilirsiniz
+---> Bu satırda çalışabilirsiniz. Çalışırken metin eklemeyi kullanın.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Ders 6.3: BİR BAŞKA DEĞİŞTİR KOMUTU
+
+
+      ** Birden fazla karakter değiştirmek için büyük R yazın. **
+
+  1. İmleci aşağıdaki işaretli (--->) satırların ilkine götürün.
+
+  2. İmleci işaretli olan ikinci satırdakinden farklı olan ilk kelimenin
+     başına götürün. ( "tuşları" kelimesi )
+
+  3. Şimdi büyük R yazın ve ilk satırı ikincisinin aynısı yapmak için
+     eski metinin üzerinden yenisini yazın. Siz yazdıkça metin değişecektir.
+
+---> Bu satırı ikincisinin aynısı yapmak için tuşları kullanın.
+---> Bu satırı ikincisinin aynısı yapmak için R yazın ve metini girin.
+
+  4. Çıkmak için <ESC> tuşuna bastığınızda, değişmemiş metinin aynen
+     kaldığına dikkat edin.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Ders 6.4: SET SEÇENEĞİ
+
+         ** Bir seçenek ayarlayın , böylece bir arama veya değiştirme **
+         ** durumu görmezden gelsin.                                 **
+
+  1. 'ignore' kelimesini aramak için:
+     /ignore
+     yazın.
+     Bunu   n  tuşuna basarak birkaç kez tekrar edin
+
+  2. :set ic    yazarak 'ic' (Ignore case) ayarını seçin.
+
+  3. Tekrar  n  tuşuna basarak 'ignore' kelimseini arayın.
+     n   tuşuna basarak bu aramayı birden çok defa tekrar edin.
+
+  4. :set hls is   yazarak 'hlsearch' ve 'incsearch' ayarlarını seçin.
+
+  5. /ignore  yazarak arama komutunu tekrar verin ve ne olacağını görün.
+
+  6. Karşılaşma vurgularını iptal etmek için,
+     :nohlsearch   yazın.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              DERS 6 ÖZET
+
+
+  1. o   yazmak imlecin altında bir satır açar ve imleci bu açılmış satıra
+     Insert kipinde yerleştirir.
+     Büyük O  yazmak imlecin üzerinde bir satır açar.
+
+  2. İmlecin üzerindeki karakterden hemen sonra metin eklemek için  a   yazın.
+     Büyük A  yazmak hemen satır sonuna giderek metin eklemeye hazır hale getirir.
+
+  3. Büyük  R   yazmak Değiştir kipine girer ve çıkmak için <ESC> tuşuna
+     basılana kadar sizi bu kipte bırakır.
+
+  4. ":set xxx"  yazmak  "xxx" seçeneğini ayarlar.
+
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Ders 7: ÇEVİRİMİÇİ (ON-LINE) YARDIM KOMUTLARI
+
+
+                     ** Çevirimiçi yardım sistemini kullanın **
+
+  Vim geniş bir çevirimiçi yardım sistemine sahiptir. Başlamak için şu üçünü
+  deneyebilirsiniz.
+       - (eğer sahipseniz) <HELP> tuşuna basın
+       - (eğer sahipseniz) <F1> tuşuna basın
+       - :help yazın ve <ENTER> tuşuna basın
+
+  Yardım penceresini kapatmak için  :q yazıp <ENTER> tuşuna basın.
+
+  ":help" komutuna değişken (argüman) vererek herhangi bir konu hakkında
+  yardım alabilirsini. Şunları deneyin (<ENTER> tuşuna basmayı unutmayın) :
+
+       :help w
+       :help c_<T
+       :help insert-index
+       :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Ders 8: BİR BAŞLANGIÇ BETİĞİ OLUŞTURUN
+
+                         ** Switch on Vim features **
+                         ** Vim'in özelliklerine bakın **
+
+  Vim Vi'dan çok daha fazla özelliğe sahiptir fakat birçoğu öntanımlı olarak kapalıdır.
+  Daha fazla özellik kullanabilmek için bir "vimrc" dosyası oluşturmalısınız.
+
+  1. "vimrc" dosyasını düzenlemeye başlayın, bu işletim sisteminize göre değişir:
+
+  Ç.N: (Bu komutu verdiğinizde eğer yoksa home dizininizde .vimrc isimli bir dosya oluşacaktır.
+  Bu dosyaya vimrc örnek dosyasını aktarmak için 2. adımdaki komutu kullanacaksınız. Bu yüzden
+  vimrc dosyanızı düzenlemeden önce aşağıdaki adımların hepsini okuyun ve komutları hatırlayın.)
+
+       :edit ~/.vimrc                  Unix için
+       :edit $VIM/_vimrc               MS-Windows için
+
+  2. Şimdi örnek "vimrc" dosyasını okuyun
+
+       :read $VIMRUNTIME/vimrc_example.vim
+
+  3. Dosyayı kaydedin ve çıkın
+
+       :write
+       :q
+
+  Vim'i bir dahaki sefer çalıştırdığınızda sözdizim (sytax) vurgusu kullanılacaktır.
+  Tüm tercih ettiğiniz ayarları bu "vimrc" dosyasına ekleyebilirsiniz.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Burada Vim Eğitmeni tamamlanmış oldu. Eğitmendeki amaç Vim düzenleyicisi hakkında
+  kısa bir bilgi vermek ve onu kolayca kullanmanızı sağlamaktı. Vim'in tamamını öğretmek
+  çok zordur zira Vim birçok komuta sahiptir.Bundan sonra :help user-manual" komutu ile
+  kullanıcı kılavuzunu okumalısınız.
+
+  Daha fazla okuma ve çalışma için şu kitabı öneriyoruz:
+       Vim - Vi Improved - by Steve Oualline
+       Publisher: New Riders
+  Tamamiyle Vim için hazırlanmış ilk kitap. Özellikle ilk kullanıcılar için uygun.
+  Kitapta birçok örnek ve resim var.
+  http://iccf-holland.org/click5.html adresine bakabilirsiniz.
+
+  Bu kitap daha eskidir ve Vim'den daha çok Vi içindir ancak tavsiye edilir:
+       Learning the Vi Editor - by Linda Lamb
+       Publisher: O'Reilly & Associates Inc.
+  Vi hakkında bilmek isteyeceğiniz neredeyse herşeyin bulunduğu bir kitap.
+  6.Basım aynı zamanda Vim hakkında bilgi de içermekte.
+
+  Bu eğitmen Michael C. Pierce ve Robert K. Ware tarafından yazıldı,
+  Charles Smith tarafından sağlanan fikirlerle Colorado School Of Mines,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Vim için değiştiren : Bram Moolenaar.
+
+  Türkçeye çeviren    : Serkan "heartsmagic" Çalış    Yıl 2005
+  E-mail             : adresimeyaz (at) yahoo com
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index 2b80956d86d8498c98e70efc4a4387125e3b2545..ed0f5af1aedf5a9721fc9f1cbc6c3f47ff74fb8f 100644 (file)
@@ -15,6 +15,6 @@ REGEDIT4
 [HKEY_LOCAL_MACHINE\Software\Vim\Gvim]
    "path"="gvim.exe"
 
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0]
-   "DisplayName"="Vim 7.0: Edit with Vim popup menu entry"
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.1a]
+   "DisplayName"="Vim 7.1a: Edit with Vim popup menu entry"
    "UninstallString"="uninstal.exe"
index ef6e2574107a051cdbb6997ee68da3db31bb3214..3774ff421414fc63485be0a7a5963afa06f36a61 100644 (file)
@@ -37,8 +37,8 @@
 # endif
 
 /*
- * This file provides procedures that implement the command server functionality
- * of Vim when in contact with an X11 server.
+ * This file provides procedures that implement the command server
+ * functionality of Vim when in contact with an X11 server.
  *
  * Adapted from TCL/TK's send command  in tkSend.c of the tk 3.6 distribution.
  * Adapted for use in Vim by Flemming Madsen. Protocol changed to that of tk 4
index 34521e4034d1392ffe385b76ed1676e619902461..376ac9c0020d1d4cb1345deaff2872c6fbe849e1 100644 (file)
@@ -229,7 +229,7 @@ enum key_extra
     , KE_S_XF4
 
     , KE_MOUSEDOWN     /* scroll wheel pseudo-button Down */
-    , KE_MOUSEUP               /* scroll wheel pseudo-button Up */
+    , KE_MOUSEUP       /* scroll wheel pseudo-button Up */
 
     , KE_KINS          /* keypad Insert key */
     , KE_KDEL          /* keypad Delete key */
index c0bbac265e8fcdc3863807223764bf4783b8ef2f..f21f5e9f6b67c397b32945835eec27a7e7980d6f 100644 (file)
@@ -166,7 +166,7 @@ update_topline()
 
 #ifdef FEAT_MOUSE
     /* When dragging with the mouse, don't scroll that quickly */
-    if (mouse_dragging)
+    if (mouse_dragging > 0)
        p_so = mouse_dragging - 1;
 #endif
 
@@ -1995,7 +1995,7 @@ scroll_cursor_bot(min_scroll, set_topbot)
        if ((((scrolled <= 0 || scrolled >= min_scroll)
                        && extra >= (
 #ifdef FEAT_MOUSE
-                           mouse_dragging ? mouse_dragging - 1 :
+                           mouse_dragging > 0 ? mouse_dragging - 1 :
 #endif
                            p_so))
                    || boff.lnum + 1 > curbuf->b_ml.ml_line_count)
@@ -2209,7 +2209,7 @@ cursor_correct()
     above_wanted = p_so;
     below_wanted = p_so;
 #ifdef FEAT_MOUSE
-    if (mouse_dragging)
+    if (mouse_dragging > 0)
     {
        above_wanted = mouse_dragging - 1;
        below_wanted = mouse_dragging - 1;
@@ -2225,7 +2225,7 @@ cursor_correct()
     validate_botline();
     if (curwin->w_botline == curbuf->b_ml.ml_line_count + 1
 #ifdef FEAT_MOUSE
-           && !mouse_dragging
+           && mouse_dragging == 0
 #endif
            )
     {
index f87a1cd5d760bbb2a1a3b1d0bd7c97de1b379cb0..a612d81044e6b7f0f882f00f1a79cab02c45f04d 100644 (file)
@@ -626,12 +626,13 @@ vms_fixfilename(void *instring)
 
     Fspec_Rms = buf;                           /* for decc$to_vms */
 
-    if ( strchr(instring,'/') == NULL )
+    if (strchr(instring,'/') == NULL)
        /* It is already a VMS file spec */
        strcpy(buf, instring);
-    else if ( strchr(instring,'"') == NULL ){     /* password in the path ?   */
+    else if (strchr(instring,'"') == NULL)     /* password in the path? */
+    {
        /* Seems it is a regular file, let guess that it is pure Unix fspec */
-       if ( decc$to_vms(instring, vms_fspec_proc, 0, 0) <= 0 )
+       if (decc$to_vms(instring, vms_fspec_proc, 0, 0) <= 0)
            /* No... it must be mixed */
            vms_unix_mixed_filespec(instring, buf);
     }
@@ -643,6 +644,7 @@ vms_fixfilename(void *instring)
 
     return buf;
 }
+
 /*
  * Remove version number from file name
  * we need it in some special cases as:
index cd107debf4573f354dcef474e2674e833fa17511..293edf2d4fc3d352520daaa5312ff1c25e0aea0a 100644 (file)
@@ -4,7 +4,7 @@ This file explains how to create and maintain po files using
 gnu-gettext.win32, a Windows port of gettext by Franco Bez
 <franco.bez@gmx.de>.  You can find it at:
 
-       http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html
+       http://people.freenet.de/franco.bez/gettext/gettext_win32_en.html
 
 First read the README.txt file in this directory for general remarks on
 translating Vim messages.
@@ -12,18 +12,32 @@ translating Vim messages.
 
 SETUP
 
-Set the enviroment variable LANGUAGE to the language code for the language you
-are translating Vim messages to.  Languagde codes are typically two characters
-and you can find a list of them at:
+Set the environment variable LANGUAGE to the language code for the language
+you are translating Vim messages to.  Language codes are typically two
+characters and you can find a list of them at:
 
        http://www.geocities.com/click2speak/languages.html
 
+Another possibility is to use the gnuwin32 port of gettext. This is
+recommended especially if you use already gnuwin32 tools to gunzip, bunzip,
+patch etc. these files. You find the gnuwin32 version of gettext here:
+
+        http://gnuwin32.sourceforge.net/packages/gettext.htm
+
+Yet another very strait forward way is to get the sources of gettext from
+
+        http://www.gnu.org/software/gettext/gettext.html
+
+and build your own version of these tools. The documentation states that this
+should be possible with MSVC4.0, MSVC5.0, MSVC6.0 or MSVC7.0, but you can
+build it even successfully with MSVC8.0.
+
 The LANGUAGE environment variable can be set from the command line, by adding
 a line to your autoexec.bat file, or by defining a user variable from the
 Advanced tab in the System control panel.
 
 Next, edit Make_mvc.mak so that GETTEXT_PATH points the binary directory of
-the intallation.
+the installation.
 
 
 CREATING A NEW TRANSLATION
@@ -43,7 +57,7 @@ highlighting turned on then untranslated messages will stand out more easily.
 You will also need to edit the file names in the comments in the .po file.
 You need to remove the absolute directory specification (which has the form
 c:\vim61\src\).  You can do this in Vim with the following command with the
-appropriate directory specfication for where you have installed the Vim
+appropriate directory specification for where you have installed the Vim
 source:
 
        %s/c:\\vim61\\src\\//g
@@ -57,7 +71,7 @@ with the following command:
 
        nmake -f Make_mvc.mak xx.po
 
-where xx is the langauge code for the language needing translations.  The
+where xx is the language code for the language needing translations.  The
 original .po file is copied to xx.po.orig.
 
 
index 43fbbe78d8cb78d06450640a41e1f4514079afe7..171ddca24e7ea823e4cdc381f9d90880c4c422ec 100644 (file)
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim(deutsch)\n"
 "POT-Creation-Date: 2006-04-02 11:30+0200\n"
-"PO-Revision-Date: 2006-04-02 17:26+0200\n"
+"PO-Revision-Date: 2006-06-18 12:34+0200\n"
 "Last-Translator: Georg Dahn <gorgyd@yahoo.co.uk>\n"
 "Language-Team: German <de@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -3502,7 +3502,7 @@ msgid ""
 "&Quit\n"
 "&Abort"
 msgstr ""
-"Öffnen nur zum &Lesen\n"
+"Nur zum &Lesen öffnen\n"
 "Trotzdem &editieren\n"
 "&Wiederherstellen\n"
 "&Beenden\n"
@@ -3516,10 +3516,10 @@ msgid ""
 "&Quit\n"
 "&Abort"
 msgstr ""
-"Öffnen nur zum &Lesen\n"
+"Nur zum &Lesen öffnen\n"
 "Trotzdem &editieren\n"
 "&Wiederherstellen\n"
-"&Löschen\n"
+"&Datei Löschen\n"
 "&Beenden\n"
 "&Abbrechen"
 
@@ -6131,3 +6131,5 @@ msgstr ""
 "Die Definition von COMPOUNDPERMITFLAG nach dem PFX Element kann falsches Ergebnis in Zeile %s ergeben "
 "%d"
 
+msgid "E116: Invalid arguments for function %s"
+msgstr "E116: Ungültige Argumente für die Funktion %s"
index 302ff8c3a8f3f69285ad8d04f1c37cc88db13a46..75270caedffa919b4e316f8600de873cf365f2e7 100644 (file)
@@ -1,22 +1,22 @@
 # translation of pl.po to Polish
 # Polish Translation for Vim
 #
-# updated 2006 for vim-7.0
+# updated 2007 for vim-7.0
 #
 # FIRST AUTHOR Marcin Dalecki <martin@dalecki.de>, 2000.
-# Mikolaj Machowski <mikmach@wp.pl>, 2004, 2005, 2006.
+# Mikolaj Machowski <mikmach@wp.pl>, 2004, 2005, 2006, 2007.
 msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-27 18:27+0200\n"
-"PO-Revision-Date: 2006-04-27 19:15+0200\n"
+"POT-Creation-Date: 2007-04-30 20:03+0200\n"
+"PO-Revision-Date: 2007-04-30 20:07+0200\n"
 "Last-Translator: Mikolaj Machowski <mikmach@wp.pl>\n"
 "Language-Team: Polish <kde-transl@mer.chemia.polsl.gliwice.pl>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.2\n"
+"X-Generator: KBabel 1.11.4\n"
 
 msgid "E82: Cannot allocate any buffer, exiting..."
 msgstr "E82: Nie mogę zarezerwować bufora; zakończenie..."
@@ -194,6 +194,9 @@ msgstr "E98: Nie mogę wczytać wyjścia różnicy"
 msgid "E99: Current buffer is not in diff mode"
 msgstr "E99: Bieżący bufor nie jest w trybie różnic"
 
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: Żaden inny bufor w trybie diff nie jest modyfikowalny"
+
 msgid "E100: No other buffer in diff mode"
 msgstr "E100: Brak innego bufora w trybie różnic"
 
@@ -618,6 +621,10 @@ msgstr "E705: Nazwa zmiennej jest w konflikcie z istniejącą funkcją: %s"
 msgid "E706: Variable type mismatch for: %s"
 msgstr "E706: Nieprawidłowy typ zmiennej dla: %s"
 
+#, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: Nie mogę usunąć zmiennej %s"
+
 #, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: Wartość jest zablokowana: %s"
@@ -883,6 +890,7 @@ msgstr " zakładki"
 msgid " FAILED"
 msgstr " NIE POWIODŁO SIĘ"
 
+#. avoid a wait_return for this message, it's annoying
 #, c-format
 msgid "E137: Viminfo file is not writable: %s"
 msgstr "E137: Plik viminfo jest niezapisywalny: %s"
@@ -1457,6 +1465,9 @@ msgstr "jest katalogiem"
 msgid "is not a file"
 msgstr "nie jest plikiem"
 
+msgid "is a device (disabled with 'opendevice' option"
+msgstr "jest urządzeniem (wyłączonym w opcji 'opendevice'"
+
 msgid "[New File]"
 msgstr "[Nowy Plik]"
 
@@ -1553,6 +1564,9 @@ msgstr "Częściowy zapis niemożliwy dla buforów NetBeans"
 msgid "is not a file or writable device"
 msgstr "nie jest plikiem lub zapisywalnym przyrządem"
 
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "zapisywanie do urządzenia wyłączone w opcji 'opendevice'"
+
 msgid "is read-only (add ! to override)"
 msgstr "jest tylko do odczytu (wymuś poprzez !)"
 
@@ -3288,6 +3302,9 @@ msgstr ""
 ",\n"
 "lub plik został uszkodzony."
 
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " został uszkodzony (wielkość strony jest mniejsza niż najmniejsza wartość).\n"
+
 #, c-format
 msgid "Using swap file \"%s\""
 msgstr "Używam pliku wymiany \"%s\""
@@ -3626,6 +3643,10 @@ msgstr "E328: Menu istnieje tylko w innym trybie"
 msgid "E329: No menu \"%s\""
 msgstr "E329: Nie ma menu \"%s\""
 
+#. Only a mnemonic or accelerator is not valid.
+msgid "E792: Empty menu name"
+msgstr "E792: Pusta nazwa menu"
+
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: Trop menu nie może prowadzić do podmenu"
 
@@ -4999,6 +5020,7 @@ msgstr "Przykro mi, brak podpowiedzi"
 msgid "Sorry, only %ld suggestions"
 msgstr "Przykro mi, tylko %ld podpowiedzi"
 
+#. for when 'cmdheight' > 1
 #. avoid more prompt
 #, c-format
 msgid "Change \"%.*s\" to:"
@@ -5421,6 +5443,13 @@ msgstr ""
 "\n"
 "16/32 bitowa wersja GUI dla MS-Windows"
 
+msgid ""
+"\n"
+"MS-Windows 64 bit GUI version"
+msgstr ""
+"\n"
+"64 bitowa wersja GUI dla MS-Windows"
+
 msgid ""
 "\n"
 "MS-Windows 32 bit GUI version"
@@ -6016,8 +6045,8 @@ msgid "E46: Cannot change read-only variable \"%s\""
 msgstr "E46: Nie mogę zmienić zmiennej tylko do odczytu \"%s\""
 
 #, c-format
-msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: Nie mogę ustawić zmiennej w piaskownicy: \"%s\""
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: Nie mogę ustawić zmiennej w piaskownicy: \"%s\""
 
 msgid "E47: Error while reading errorfile"
 msgstr "E47: Błąd w trakcie czytania pliku błędów"
index e10e74541760451a1ced813656594ff2e7ef3010..c67f748c2db25f539703b564582a3fcc6cf40cd6 100644 (file)
@@ -1,22 +1,22 @@
 # translation of pl.po to Polish
 # Polish Translation for Vim
 #
-# updated 2006 for vim-7.0
+# updated 2007 for vim-7.0
 #
 # FIRST AUTHOR Marcin Dalecki <martin@dalecki.de>, 2000.
-# Mikolaj Machowski <mikmach@wp.pl>, 2004, 2005, 2006.
+# Mikolaj Machowski <mikmach@wp.pl>, 2004, 2005, 2006, 2007.
 msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-27 18:27+0200\n"
-"PO-Revision-Date: 2006-04-27 19:15+0200\n"
+"POT-Creation-Date: 2007-04-30 20:03+0200\n"
+"PO-Revision-Date: 2007-04-30 20:07+0200\n"
 "Last-Translator: Mikolaj Machowski <mikmach@wp.pl>\n"
 "Language-Team: Polish <kde-transl@mer.chemia.polsl.gliwice.pl>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=cp1250\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.2\n"
+"X-Generator: KBabel 1.11.4\n"
 
 msgid "E82: Cannot allocate any buffer, exiting..."
 msgstr "E82: Nie mogê zarezerwowaæ bufora; zakoñczenie..."
@@ -194,6 +194,9 @@ msgstr "E98: Nie mog
 msgid "E99: Current buffer is not in diff mode"
 msgstr "E99: Bie¿¹cy bufor nie jest w trybie ró¿nic"
 
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: ¯aden inny bufor w trybie diff nie jest modyfikowalny"
+
 msgid "E100: No other buffer in diff mode"
 msgstr "E100: Brak innego bufora w trybie ró¿nic"
 
@@ -618,6 +621,10 @@ msgstr "E705: Nazwa zmiennej jest w konflikcie z istniej
 msgid "E706: Variable type mismatch for: %s"
 msgstr "E706: Nieprawid³owy typ zmiennej dla: %s"
 
+#, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: Nie mogê usun¹æ zmiennej %s"
+
 #, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: Warto\9cæ jest zablokowana: %s"
@@ -883,6 +890,7 @@ msgstr " zak
 msgid " FAILED"
 msgstr " NIE POWIOD£O SIÊ"
 
+#. avoid a wait_return for this message, it's annoying
 #, c-format
 msgid "E137: Viminfo file is not writable: %s"
 msgstr "E137: Plik viminfo jest niezapisywalny: %s"
@@ -1457,6 +1465,9 @@ msgstr "jest katalogiem"
 msgid "is not a file"
 msgstr "nie jest plikiem"
 
+msgid "is a device (disabled with 'opendevice' option"
+msgstr "jest urz¹dzeniem (wy³¹czonym w opcji 'opendevice'"
+
 msgid "[New File]"
 msgstr "[Nowy Plik]"
 
@@ -1553,6 +1564,9 @@ msgstr "Cz
 msgid "is not a file or writable device"
 msgstr "nie jest plikiem lub zapisywalnym przyrz¹dem"
 
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "zapisywanie do urz¹dzenia wy³¹czone w opcji 'opendevice'"
+
 msgid "is read-only (add ! to override)"
 msgstr "jest tylko do odczytu (wymu\9c poprzez !)"
 
@@ -3288,6 +3302,9 @@ msgstr ""
 ",\n"
 "lub plik zosta³ uszkodzony."
 
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " zosta³ uszkodzony (wielko\9cæ strony jest mniejsza ni¿ najmniejsza warto\9cæ).\n"
+
 #, c-format
 msgid "Using swap file \"%s\""
 msgstr "U¿ywam pliku wymiany \"%s\""
@@ -3626,6 +3643,10 @@ msgstr "E328: Menu istnieje tylko w innym trybie"
 msgid "E329: No menu \"%s\""
 msgstr "E329: Nie ma menu \"%s\""
 
+#. Only a mnemonic or accelerator is not valid.
+msgid "E792: Empty menu name"
+msgstr "E792: Pusta nazwa menu"
+
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: Trop menu nie mo¿e prowadziæ do podmenu"
 
@@ -4999,6 +5020,7 @@ msgstr "Przykro mi, brak podpowiedzi"
 msgid "Sorry, only %ld suggestions"
 msgstr "Przykro mi, tylko %ld podpowiedzi"
 
+#. for when 'cmdheight' > 1
 #. avoid more prompt
 #, c-format
 msgid "Change \"%.*s\" to:"
@@ -5421,6 +5443,13 @@ msgstr ""
 "\n"
 "16/32 bitowa wersja GUI dla MS-Windows"
 
+msgid ""
+"\n"
+"MS-Windows 64 bit GUI version"
+msgstr ""
+"\n"
+"64 bitowa wersja GUI dla MS-Windows"
+
 msgid ""
 "\n"
 "MS-Windows 32 bit GUI version"
@@ -6016,8 +6045,8 @@ msgid "E46: Cannot change read-only variable \"%s\""
 msgstr "E46: Nie mogê zmieniæ zmiennej tylko do odczytu \"%s\""
 
 #, c-format
-msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: Nie mogê ustawiæ zmiennej w piaskownicy: \"%s\""
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: Nie mogê ustawiæ zmiennej w piaskownicy: \"%s\""
 
 msgid "E47: Error while reading errorfile"
 msgstr "E47: B³¹d w trakcie czytania pliku b³êdów"
index a6f4802622cb7e08acbdad444cd498414b368d57..4b6890d18bd32c6c2e978b6bc534e41e0fadaa26 100644 (file)
@@ -1,56 +1,56 @@
 /* charset.c */
-extern int init_chartab __ARGS((void));
-extern int buf_init_chartab __ARGS((buf_T *buf, int global));
-extern void trans_characters __ARGS((char_u *buf, int bufsize));
-extern char_u *transstr __ARGS((char_u *s));
-extern char_u *str_foldcase __ARGS((char_u *str, int orglen, char_u *buf, int buflen));
-extern char_u *transchar __ARGS((int c));
-extern char_u *transchar_byte __ARGS((int c));
-extern void transchar_nonprint __ARGS((char_u *buf, int c));
-extern void transchar_hex __ARGS((char_u *buf, int c));
-extern int byte2cells __ARGS((int b));
-extern int char2cells __ARGS((int c));
-extern int ptr2cells __ARGS((char_u *p));
-extern int vim_strsize __ARGS((char_u *s));
-extern int vim_strnsize __ARGS((char_u *s, int len));
-extern int chartabsize __ARGS((char_u *p, colnr_T col));
-extern int linetabsize __ARGS((char_u *s));
-extern int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
-extern int vim_isIDc __ARGS((int c));
-extern int vim_iswordc __ARGS((int c));
-extern int vim_iswordp __ARGS((char_u *p));
-extern int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
-extern int vim_isfilec __ARGS((int c));
-extern int vim_isprintc __ARGS((int c));
-extern int vim_isprintc_strict __ARGS((int c));
-extern int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col));
-extern int lbr_chartabsize_adv __ARGS((char_u **s, colnr_T col));
-extern int win_lbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
-extern int in_win_border __ARGS((win_T *wp, colnr_T vcol));
-extern void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
-extern colnr_T getvcol_nolist __ARGS((pos_T *posp));
-extern void getvvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
-extern void getvcols __ARGS((win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right));
-extern char_u *skipwhite __ARGS((char_u *p));
-extern char_u *skipdigits __ARGS((char_u *p));
-extern char_u *skiphex __ARGS((char_u *p));
-extern char_u *skiptodigit __ARGS((char_u *p));
-extern char_u *skiptohex __ARGS((char_u *p));
-extern int vim_isdigit __ARGS((int c));
-extern int vim_isxdigit __ARGS((int c));
-extern int vim_islower __ARGS((int c));
-extern int vim_isupper __ARGS((int c));
-extern int vim_toupper __ARGS((int c));
-extern int vim_tolower __ARGS((int c));
-extern char_u *skiptowhite __ARGS((char_u *p));
-extern char_u *skiptowhite_esc __ARGS((char_u *p));
-extern long getdigits __ARGS((char_u **pp));
-extern int vim_isblankline __ARGS((char_u *lbuf));
-extern void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr));
-extern int hex2nr __ARGS((int c));
-extern int hexhex2nr __ARGS((char_u *p));
-extern int rem_backslash __ARGS((char_u *str));
-extern void backslash_halve __ARGS((char_u *p));
-extern char_u *backslash_halve_save __ARGS((char_u *p));
-extern void ebcdic2ascii __ARGS((char_u *buffer, int len));
+int init_chartab __ARGS((void));
+int buf_init_chartab __ARGS((buf_T *buf, int global));
+void trans_characters __ARGS((char_u *buf, int bufsize));
+char_u *transstr __ARGS((char_u *s));
+char_u *str_foldcase __ARGS((char_u *str, int orglen, char_u *buf, int buflen));
+char_u *transchar __ARGS((int c));
+char_u *transchar_byte __ARGS((int c));
+void transchar_nonprint __ARGS((char_u *buf, int c));
+void transchar_hex __ARGS((char_u *buf, int c));
+int byte2cells __ARGS((int b));
+int char2cells __ARGS((int c));
+int ptr2cells __ARGS((char_u *p));
+int vim_strsize __ARGS((char_u *s));
+int vim_strnsize __ARGS((char_u *s, int len));
+int chartabsize __ARGS((char_u *p, colnr_T col));
+int linetabsize __ARGS((char_u *s));
+int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
+int vim_isIDc __ARGS((int c));
+int vim_iswordc __ARGS((int c));
+int vim_iswordp __ARGS((char_u *p));
+int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
+int vim_isfilec __ARGS((int c));
+int vim_isprintc __ARGS((int c));
+int vim_isprintc_strict __ARGS((int c));
+int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col));
+int lbr_chartabsize_adv __ARGS((char_u **s, colnr_T col));
+int win_lbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
+int in_win_border __ARGS((win_T *wp, colnr_T vcol));
+void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
+colnr_T getvcol_nolist __ARGS((pos_T *posp));
+void getvvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
+void getvcols __ARGS((win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right));
+char_u *skipwhite __ARGS((char_u *p));
+char_u *skipdigits __ARGS((char_u *p));
+char_u *skiphex __ARGS((char_u *p));
+char_u *skiptodigit __ARGS((char_u *p));
+char_u *skiptohex __ARGS((char_u *p));
+int vim_isdigit __ARGS((int c));
+int vim_isxdigit __ARGS((int c));
+int vim_islower __ARGS((int c));
+int vim_isupper __ARGS((int c));
+int vim_toupper __ARGS((int c));
+int vim_tolower __ARGS((int c));
+char_u *skiptowhite __ARGS((char_u *p));
+char_u *skiptowhite_esc __ARGS((char_u *p));
+long getdigits __ARGS((char_u **pp));
+int vim_isblankline __ARGS((char_u *lbuf));
+void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr));
+int hex2nr __ARGS((int c));
+int hexhex2nr __ARGS((char_u *p));
+int rem_backslash __ARGS((char_u *str));
+void backslash_halve __ARGS((char_u *p));
+char_u *backslash_halve_save __ARGS((char_u *p));
+void ebcdic2ascii __ARGS((char_u *buffer, int len));
 /* vim: set ft=c : */
index 65b978fe931e172e71c9af976ddf40ca4960e5e9..e45127ad0de2c8258348c02940b695d81dc98065 100644 (file)
@@ -1,26 +1,26 @@
 /* diff.c */
-extern void diff_buf_delete __ARGS((buf_T *buf));
-extern void diff_buf_adjust __ARGS((win_T *win));
-extern void diff_buf_add __ARGS((buf_T *buf));
-extern void diff_invalidate __ARGS((buf_T *buf));
-extern void diff_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
-extern void ex_diffupdate __ARGS((exarg_T *eap));
-extern void ex_diffpatch __ARGS((exarg_T *eap));
-extern void ex_diffsplit __ARGS((exarg_T *eap));
-extern void ex_diffthis __ARGS((exarg_T *eap));
-extern void diff_win_options __ARGS((win_T *wp, int addbuf));
-extern void ex_diffoff __ARGS((exarg_T *eap));
-extern void diff_clear __ARGS((tabpage_T *tp));
-extern int diff_check __ARGS((win_T *wp, linenr_T lnum));
-extern int diff_check_fill __ARGS((win_T *wp, linenr_T lnum));
-extern void diff_set_topline __ARGS((win_T *fromwin, win_T *towin));
-extern int diffopt_changed __ARGS((void));
-extern int diffopt_horizontal __ARGS((void));
-extern int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int *endp));
-extern int diff_infold __ARGS((win_T *wp, linenr_T lnum));
-extern void nv_diffgetput __ARGS((int put));
-extern void ex_diffgetput __ARGS((exarg_T *eap));
-extern int diff_mode_buf __ARGS((buf_T *buf));
-extern int diff_move_to __ARGS((int dir, long count));
-extern linenr_T diff_lnum_win __ARGS((linenr_T lnum, win_T *wp));
+void diff_buf_delete __ARGS((buf_T *buf));
+void diff_buf_adjust __ARGS((win_T *win));
+void diff_buf_add __ARGS((buf_T *buf));
+void diff_invalidate __ARGS((buf_T *buf));
+void diff_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+void ex_diffupdate __ARGS((exarg_T *eap));
+void ex_diffpatch __ARGS((exarg_T *eap));
+void ex_diffsplit __ARGS((exarg_T *eap));
+void ex_diffthis __ARGS((exarg_T *eap));
+void diff_win_options __ARGS((win_T *wp, int addbuf));
+void ex_diffoff __ARGS((exarg_T *eap));
+void diff_clear __ARGS((tabpage_T *tp));
+int diff_check __ARGS((win_T *wp, linenr_T lnum));
+int diff_check_fill __ARGS((win_T *wp, linenr_T lnum));
+void diff_set_topline __ARGS((win_T *fromwin, win_T *towin));
+int diffopt_changed __ARGS((void));
+int diffopt_horizontal __ARGS((void));
+int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int *endp));
+int diff_infold __ARGS((win_T *wp, linenr_T lnum));
+void nv_diffgetput __ARGS((int put));
+void ex_diffgetput __ARGS((exarg_T *eap));
+int diff_mode_buf __ARGS((buf_T *buf));
+int diff_move_to __ARGS((int dir, long count));
+linenr_T diff_lnum_win __ARGS((linenr_T lnum, win_T *wp));
 /* vim: set ft=c : */
index 20601f8af69734e219524773dae7e9823606fd7a..8fb234283e33b00bc49f66f02a6045b4e2c44625 100644 (file)
@@ -1,32 +1,32 @@
 /* ex_eval.c */
-extern int aborting __ARGS((void));
-extern void update_force_abort __ARGS((void));
-extern int should_abort __ARGS((int retcode));
-extern int aborted_in_try __ARGS((void));
-extern int cause_errthrow __ARGS((char_u *mesg, int severe, int *ignore));
-extern void do_errthrow __ARGS((struct condstack *cstack, char_u *cmdname));
-extern int do_intthrow __ARGS((struct condstack *cstack));
-extern void discard_current_exception __ARGS((void));
-extern void report_make_pending __ARGS((int pending, void *value));
-extern void report_resume_pending __ARGS((int pending, void *value));
-extern void report_discard_pending __ARGS((int pending, void *value));
-extern void ex_if __ARGS((exarg_T *eap));
-extern void ex_endif __ARGS((exarg_T *eap));
-extern void ex_else __ARGS((exarg_T *eap));
-extern void ex_while __ARGS((exarg_T *eap));
-extern void ex_continue __ARGS((exarg_T *eap));
-extern void ex_break __ARGS((exarg_T *eap));
-extern void ex_endwhile __ARGS((exarg_T *eap));
-extern void ex_throw __ARGS((exarg_T *eap));
-extern void do_throw __ARGS((struct condstack *cstack));
-extern void ex_try __ARGS((exarg_T *eap));
-extern void ex_catch __ARGS((exarg_T *eap));
-extern void ex_finally __ARGS((exarg_T *eap));
-extern void ex_endtry __ARGS((exarg_T *eap));
-extern void enter_cleanup __ARGS((cleanup_T *csp));
-extern void leave_cleanup __ARGS((cleanup_T *csp));
-extern int cleanup_conditionals __ARGS((struct condstack *cstack, int searched_cond, int inclusive));
-extern void rewind_conditionals __ARGS((struct condstack *cstack, int idx, int cond_type, int *cond_level));
-extern void ex_endfunction __ARGS((exarg_T *eap));
-extern int has_loop_cmd __ARGS((char_u *p));
+int aborting __ARGS((void));
+void update_force_abort __ARGS((void));
+int should_abort __ARGS((int retcode));
+int aborted_in_try __ARGS((void));
+int cause_errthrow __ARGS((char_u *mesg, int severe, int *ignore));
+void do_errthrow __ARGS((struct condstack *cstack, char_u *cmdname));
+int do_intthrow __ARGS((struct condstack *cstack));
+void discard_current_exception __ARGS((void));
+void report_make_pending __ARGS((int pending, void *value));
+void report_resume_pending __ARGS((int pending, void *value));
+void report_discard_pending __ARGS((int pending, void *value));
+void ex_if __ARGS((exarg_T *eap));
+void ex_endif __ARGS((exarg_T *eap));
+void ex_else __ARGS((exarg_T *eap));
+void ex_while __ARGS((exarg_T *eap));
+void ex_continue __ARGS((exarg_T *eap));
+void ex_break __ARGS((exarg_T *eap));
+void ex_endwhile __ARGS((exarg_T *eap));
+void ex_throw __ARGS((exarg_T *eap));
+void do_throw __ARGS((struct condstack *cstack));
+void ex_try __ARGS((exarg_T *eap));
+void ex_catch __ARGS((exarg_T *eap));
+void ex_finally __ARGS((exarg_T *eap));
+void ex_endtry __ARGS((exarg_T *eap));
+void enter_cleanup __ARGS((cleanup_T *csp));
+void leave_cleanup __ARGS((cleanup_T *csp));
+int cleanup_conditionals __ARGS((struct condstack *cstack, int searched_cond, int inclusive));
+void rewind_conditionals __ARGS((struct condstack *cstack, int idx, int cond_type, int *cond_level));
+void ex_endfunction __ARGS((exarg_T *eap));
+int has_loop_cmd __ARGS((char_u *p));
 /* vim: set ft=c : */
index 6dd06ff02cac5c9b1cfbd0552c79c3c73fbeec52..f5feb201f1873144b34cf6e11525c70cc296efc0 100644 (file)
@@ -1,56 +1,56 @@
 /* ex_getln.c */
-extern char_u *getcmdline __ARGS((int firstc, long count, int indent));
-extern char_u *getcmdline_prompt __ARGS((int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg));
-extern int text_locked __ARGS((void));
-extern void text_locked_msg __ARGS((void));
-extern int curbuf_locked __ARGS((void));
-extern char_u *getexline __ARGS((int c, void *dummy, int indent));
-extern char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
-extern int cmdline_overstrike __ARGS((void));
-extern int cmdline_at_end __ARGS((void));
-extern colnr_T cmdline_getvcol_cursor __ARGS((void));
-extern void free_cmdline_buf __ARGS((void));
-extern void putcmdline __ARGS((int c, int shift));
-extern void unputcmdline __ARGS((void));
-extern int put_on_cmdline __ARGS((char_u *str, int len, int redraw));
-extern char_u *save_cmdline_alloc __ARGS((void));
-extern void restore_cmdline_alloc __ARGS((char_u *p));
-extern void cmdline_paste_str __ARGS((char_u *s, int literally));
-extern void redrawcmdline __ARGS((void));
-extern void redrawcmd __ARGS((void));
-extern void compute_cmdrow __ARGS((void));
-extern void gotocmdline __ARGS((int clr));
-extern char_u *ExpandOne __ARGS((expand_T *xp, char_u *str, char_u *orig, int options, int mode));
-extern void ExpandInit __ARGS((expand_T *xp));
-extern void ExpandCleanup __ARGS((expand_T *xp));
-extern void ExpandEscape __ARGS((expand_T *xp, char_u *str, int numfiles, char_u **files, int options));
-extern void tilde_replace __ARGS((char_u *orig_pat, int num_files, char_u **files));
-extern char_u *sm_gettail __ARGS((char_u *s));
-extern char_u *addstar __ARGS((char_u *fname, int len, int context));
-extern void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
-extern int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
-extern int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
-extern char_u *globpath __ARGS((char_u *path, char_u *file));
-extern void init_history __ARGS((void));
-extern int get_histtype __ARGS((char_u *name));
-extern void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
-extern int get_history_idx __ARGS((int histype));
-extern char_u *get_cmdline_str __ARGS((void));
-extern int get_cmdline_pos __ARGS((void));
-extern int set_cmdline_pos __ARGS((int pos));
-extern int get_cmdline_type __ARGS((void));
-extern char_u *get_history_entry __ARGS((int histype, int idx));
-extern int clr_history __ARGS((int histype));
-extern int del_history_entry __ARGS((int histype, char_u *str));
-extern int del_history_idx __ARGS((int histype, int idx));
-extern void remove_key_from_history __ARGS((void));
-extern int get_list_range __ARGS((char_u **str, int *num1, int *num2));
-extern void ex_history __ARGS((exarg_T *eap));
-extern void prepare_viminfo_history __ARGS((int asklen));
-extern int read_viminfo_history __ARGS((vir_T *virp));
-extern void finish_viminfo_history __ARGS((void));
-extern void write_viminfo_history __ARGS((FILE *fp));
-extern void cmd_pchar __ARGS((int c, int offset));
-extern int cmd_gchar __ARGS((int offset));
-extern char_u *script_get __ARGS((exarg_T *eap, char_u *cmd));
+char_u *getcmdline __ARGS((int firstc, long count, int indent));
+char_u *getcmdline_prompt __ARGS((int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg));
+int text_locked __ARGS((void));
+void text_locked_msg __ARGS((void));
+int curbuf_locked __ARGS((void));
+char_u *getexline __ARGS((int c, void *dummy, int indent));
+char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
+int cmdline_overstrike __ARGS((void));
+int cmdline_at_end __ARGS((void));
+colnr_T cmdline_getvcol_cursor __ARGS((void));
+void free_cmdline_buf __ARGS((void));
+void putcmdline __ARGS((int c, int shift));
+void unputcmdline __ARGS((void));
+int put_on_cmdline __ARGS((char_u *str, int len, int redraw));
+char_u *save_cmdline_alloc __ARGS((void));
+void restore_cmdline_alloc __ARGS((char_u *p));
+void cmdline_paste_str __ARGS((char_u *s, int literally));
+void redrawcmdline __ARGS((void));
+void redrawcmd __ARGS((void));
+void compute_cmdrow __ARGS((void));
+void gotocmdline __ARGS((int clr));
+char_u *ExpandOne __ARGS((expand_T *xp, char_u *str, char_u *orig, int options, int mode));
+void ExpandInit __ARGS((expand_T *xp));
+void ExpandCleanup __ARGS((expand_T *xp));
+void ExpandEscape __ARGS((expand_T *xp, char_u *str, int numfiles, char_u **files, int options));
+void tilde_replace __ARGS((char_u *orig_pat, int num_files, char_u **files));
+char_u *sm_gettail __ARGS((char_u *s));
+char_u *addstar __ARGS((char_u *fname, int len, int context));
+void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+char_u *globpath __ARGS((char_u *path, char_u *file));
+void init_history __ARGS((void));
+int get_histtype __ARGS((char_u *name));
+void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
+int get_history_idx __ARGS((int histype));
+char_u *get_cmdline_str __ARGS((void));
+int get_cmdline_pos __ARGS((void));
+int set_cmdline_pos __ARGS((int pos));
+int get_cmdline_type __ARGS((void));
+char_u *get_history_entry __ARGS((int histype, int idx));
+int clr_history __ARGS((int histype));
+int del_history_entry __ARGS((int histype, char_u *str));
+int del_history_idx __ARGS((int histype, int idx));
+void remove_key_from_history __ARGS((void));
+int get_list_range __ARGS((char_u **str, int *num1, int *num2));
+void ex_history __ARGS((exarg_T *eap));
+void prepare_viminfo_history __ARGS((int asklen));
+int read_viminfo_history __ARGS((vir_T *virp));
+void finish_viminfo_history __ARGS((void));
+void write_viminfo_history __ARGS((FILE *fp));
+void cmd_pchar __ARGS((int c, int offset));
+int cmd_gchar __ARGS((int offset));
+char_u *script_get __ARGS((exarg_T *eap, char_u *cmd));
 /* vim: set ft=c : */
index 85510932ff98b4d2364147b9718e01dea0e1cbdc..3318bbde757d5fad5146de43018b5a798bb1d740 100644 (file)
@@ -1,41 +1,41 @@
 /* fold.c */
-extern void copyFoldingState __ARGS((win_T *wp_from, win_T *wp_to));
-extern int hasAnyFolding __ARGS((win_T *win));
-extern int hasFolding __ARGS((linenr_T lnum, linenr_T *firstp, linenr_T *lastp));
-extern int hasFoldingWin __ARGS((win_T *win, linenr_T lnum, linenr_T *firstp, linenr_T *lastp, int cache, foldinfo_T *infop));
-extern int foldLevel __ARGS((linenr_T lnum));
-extern int lineFolded __ARGS((win_T *win, linenr_T lnum));
-extern long foldedCount __ARGS((win_T *win, linenr_T lnum, foldinfo_T *infop));
-extern int foldmethodIsManual __ARGS((win_T *wp));
-extern int foldmethodIsIndent __ARGS((win_T *wp));
-extern int foldmethodIsExpr __ARGS((win_T *wp));
-extern int foldmethodIsMarker __ARGS((win_T *wp));
-extern int foldmethodIsSyntax __ARGS((win_T *wp));
-extern int foldmethodIsDiff __ARGS((win_T *wp));
-extern void closeFold __ARGS((linenr_T lnum, long count));
-extern void closeFoldRecurse __ARGS((linenr_T lnum));
-extern void opFoldRange __ARGS((linenr_T first, linenr_T last, int opening, int recurse, int had_visual));
-extern void openFold __ARGS((linenr_T lnum, long count));
-extern void openFoldRecurse __ARGS((linenr_T lnum));
-extern void foldOpenCursor __ARGS((void));
-extern void newFoldLevel __ARGS((void));
-extern void foldCheckClose __ARGS((void));
-extern int foldManualAllowed __ARGS((int create));
-extern void foldCreate __ARGS((linenr_T start, linenr_T end));
-extern void deleteFold __ARGS((linenr_T start, linenr_T end, int recursive, int had_visual));
-extern void clearFolding __ARGS((win_T *win));
-extern void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot));
-extern void foldUpdateAll __ARGS((win_T *win));
-extern int foldMoveTo __ARGS((int updown, int dir, long count));
-extern void foldInitWin __ARGS((win_T *newwin));
-extern int find_wl_entry __ARGS((win_T *win, linenr_T lnum));
-extern void foldAdjustVisual __ARGS((void));
-extern void foldAdjustCursor __ARGS((void));
-extern void cloneFoldGrowArray __ARGS((garray_T *from, garray_T *to));
-extern void deleteFoldRecurse __ARGS((garray_T *gap));
-extern void foldMarkAdjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
-extern int getDeepestNesting __ARGS((void));
-extern char_u *get_foldtext __ARGS((win_T *wp, linenr_T lnum, linenr_T lnume, foldinfo_T *foldinfo, char_u *buf));
-extern void foldtext_cleanup __ARGS((char_u *str));
-extern int put_folds __ARGS((FILE *fd, win_T *wp));
+void copyFoldingState __ARGS((win_T *wp_from, win_T *wp_to));
+int hasAnyFolding __ARGS((win_T *win));
+int hasFolding __ARGS((linenr_T lnum, linenr_T *firstp, linenr_T *lastp));
+int hasFoldingWin __ARGS((win_T *win, linenr_T lnum, linenr_T *firstp, linenr_T *lastp, int cache, foldinfo_T *infop));
+int foldLevel __ARGS((linenr_T lnum));
+int lineFolded __ARGS((win_T *win, linenr_T lnum));
+long foldedCount __ARGS((win_T *win, linenr_T lnum, foldinfo_T *infop));
+int foldmethodIsManual __ARGS((win_T *wp));
+int foldmethodIsIndent __ARGS((win_T *wp));
+int foldmethodIsExpr __ARGS((win_T *wp));
+int foldmethodIsMarker __ARGS((win_T *wp));
+int foldmethodIsSyntax __ARGS((win_T *wp));
+int foldmethodIsDiff __ARGS((win_T *wp));
+void closeFold __ARGS((linenr_T lnum, long count));
+void closeFoldRecurse __ARGS((linenr_T lnum));
+void opFoldRange __ARGS((linenr_T first, linenr_T last, int opening, int recurse, int had_visual));
+void openFold __ARGS((linenr_T lnum, long count));
+void openFoldRecurse __ARGS((linenr_T lnum));
+void foldOpenCursor __ARGS((void));
+void newFoldLevel __ARGS((void));
+void foldCheckClose __ARGS((void));
+int foldManualAllowed __ARGS((int create));
+void foldCreate __ARGS((linenr_T start, linenr_T end));
+void deleteFold __ARGS((linenr_T start, linenr_T end, int recursive, int had_visual));
+void clearFolding __ARGS((win_T *win));
+void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot));
+void foldUpdateAll __ARGS((win_T *win));
+int foldMoveTo __ARGS((int updown, int dir, long count));
+void foldInitWin __ARGS((win_T *newwin));
+int find_wl_entry __ARGS((win_T *win, linenr_T lnum));
+void foldAdjustVisual __ARGS((void));
+void foldAdjustCursor __ARGS((void));
+void cloneFoldGrowArray __ARGS((garray_T *from, garray_T *to));
+void deleteFoldRecurse __ARGS((garray_T *gap));
+void foldMarkAdjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
+int getDeepestNesting __ARGS((void));
+char_u *get_foldtext __ARGS((win_T *wp, linenr_T lnum, linenr_T lnume, foldinfo_T *foldinfo, char_u *buf));
+void foldtext_cleanup __ARGS((char_u *str));
+int put_folds __ARGS((FILE *fd, win_T *wp));
 /* vim: set ft=c : */
index aeabd42cd528484031528480af178198c0f083e1..322dc795579c6a9a85b470ba0891f6dd03005831 100644 (file)
@@ -1,65 +1,65 @@
 /* gui.c */
-extern void gui_start __ARGS((void));
-extern void gui_prepare __ARGS((int *argc, char **argv));
-extern int gui_init_check __ARGS((void));
-extern void gui_init __ARGS((void));
-extern void gui_exit __ARGS((int rc));
-extern void gui_shell_closed __ARGS((void));
-extern int gui_init_font __ARGS((char_u *font_list, int fontset));
-extern int gui_get_wide_font __ARGS((void));
-extern void gui_set_cursor __ARGS((int row, int col));
-extern void gui_update_cursor __ARGS((int force, int clear_selection));
-extern void gui_position_menu __ARGS((void));
-extern int gui_get_base_width __ARGS((void));
-extern int gui_get_base_height __ARGS((void));
-extern void gui_resize_shell __ARGS((int pixel_width, int pixel_height));
-extern void gui_may_resize_shell __ARGS((void));
-extern int gui_get_shellsize __ARGS((void));
-extern void gui_set_shellsize __ARGS((int mustset, int fit_to_display, int direction));
-extern void gui_new_shellsize __ARGS((void));
-extern void gui_reset_scroll_region __ARGS((void));
-extern void gui_start_highlight __ARGS((int mask));
-extern void gui_stop_highlight __ARGS((int mask));
-extern void gui_clear_block __ARGS((int row1, int col1, int row2, int col2));
-extern void gui_update_cursor_later __ARGS((void));
-extern void gui_write __ARGS((char_u *s, int len));
-extern void gui_dont_update_cursor __ARGS((void));
-extern void gui_can_update_cursor __ARGS((void));
-extern int gui_outstr_nowrap __ARGS((char_u *s, int len, int flags, guicolor_T fg, guicolor_T bg, int back));
-extern void gui_undraw_cursor __ARGS((void));
-extern void gui_redraw __ARGS((int x, int y, int w, int h));
-extern int gui_redraw_block __ARGS((int row1, int col1, int row2, int col2, int flags));
-extern int gui_wait_for_chars __ARGS((long wtime));
-extern void gui_send_mouse_event __ARGS((int button, int x, int y, int repeated_click, int_u modifiers));
-extern int gui_xy2colrow __ARGS((int x, int y, int *colp));
-extern void gui_menu_cb __ARGS((vimmenu_T *menu));
-extern void gui_init_which_components __ARGS((char_u *oldval));
-extern int gui_use_tabline __ARGS((void));
-extern void gui_update_tabline __ARGS((void));
-extern void get_tabline_label __ARGS((tabpage_T *tp, int tooltip));
-extern int send_tabline_event __ARGS((int nr));
-extern void send_tabline_menu_event __ARGS((int tabidx, int event));
-extern void gui_remove_scrollbars __ARGS((void));
-extern void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp));
-extern scrollbar_T *gui_find_scrollbar __ARGS((long ident));
-extern void gui_drag_scrollbar __ARGS((scrollbar_T *sb, long value, int still_dragging));
-extern void gui_update_scrollbars __ARGS((int force));
-extern int gui_do_scroll __ARGS((void));
-extern int gui_do_horiz_scroll __ARGS((void));
-extern void gui_check_colors __ARGS((void));
-extern guicolor_T gui_get_color __ARGS((char_u *name));
-extern int gui_get_lightness __ARGS((guicolor_T pixel));
-extern void gui_new_scrollbar_colors __ARGS((void));
-extern void gui_focus_change __ARGS((int in_focus));
-extern void gui_mouse_moved __ARGS((int x, int y));
-extern void gui_mouse_correct __ARGS((void));
-extern void ex_gui __ARGS((exarg_T *eap));
-extern int gui_find_bitmap __ARGS((char_u *name, char_u *buffer, char *ext));
-extern void gui_find_iconfile __ARGS((char_u *name, char_u *buffer, char *ext));
-extern void display_errors __ARGS((void));
-extern int no_console_input __ARGS((void));
-extern void gui_update_screen __ARGS((void));
-extern char_u *get_find_dialog_text __ARGS((char_u *arg, int *wwordp, int *mcasep));
-extern int gui_do_findrepl __ARGS((int flags, char_u *find_text, char_u *repl_text, int down));
-extern void gui_handle_drop __ARGS((int x, int y, int_u modifiers, char_u **fnames, int count));
+void gui_start __ARGS((void));
+void gui_prepare __ARGS((int *argc, char **argv));
+int gui_init_check __ARGS((void));
+void gui_init __ARGS((void));
+void gui_exit __ARGS((int rc));
+void gui_shell_closed __ARGS((void));
+int gui_init_font __ARGS((char_u *font_list, int fontset));
+int gui_get_wide_font __ARGS((void));
+void gui_set_cursor __ARGS((int row, int col));
+void gui_update_cursor __ARGS((int force, int clear_selection));
+void gui_position_menu __ARGS((void));
+int gui_get_base_width __ARGS((void));
+int gui_get_base_height __ARGS((void));
+void gui_resize_shell __ARGS((int pixel_width, int pixel_height));
+void gui_may_resize_shell __ARGS((void));
+int gui_get_shellsize __ARGS((void));
+void gui_set_shellsize __ARGS((int mustset, int fit_to_display, int direction));
+void gui_new_shellsize __ARGS((void));
+void gui_reset_scroll_region __ARGS((void));
+void gui_start_highlight __ARGS((int mask));
+void gui_stop_highlight __ARGS((int mask));
+void gui_clear_block __ARGS((int row1, int col1, int row2, int col2));
+void gui_update_cursor_later __ARGS((void));
+void gui_write __ARGS((char_u *s, int len));
+void gui_dont_update_cursor __ARGS((void));
+void gui_can_update_cursor __ARGS((void));
+int gui_outstr_nowrap __ARGS((char_u *s, int len, int flags, guicolor_T fg, guicolor_T bg, int back));
+void gui_undraw_cursor __ARGS((void));
+void gui_redraw __ARGS((int x, int y, int w, int h));
+int gui_redraw_block __ARGS((int row1, int col1, int row2, int col2, int flags));
+int gui_wait_for_chars __ARGS((long wtime));
+void gui_send_mouse_event __ARGS((int button, int x, int y, int repeated_click, int_u modifiers));
+int gui_xy2colrow __ARGS((int x, int y, int *colp));
+void gui_menu_cb __ARGS((vimmenu_T *menu));
+void gui_init_which_components __ARGS((char_u *oldval));
+int gui_use_tabline __ARGS((void));
+void gui_update_tabline __ARGS((void));
+void get_tabline_label __ARGS((tabpage_T *tp, int tooltip));
+int send_tabline_event __ARGS((int nr));
+void send_tabline_menu_event __ARGS((int tabidx, int event));
+void gui_remove_scrollbars __ARGS((void));
+void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp));
+scrollbar_T *gui_find_scrollbar __ARGS((long ident));
+void gui_drag_scrollbar __ARGS((scrollbar_T *sb, long value, int still_dragging));
+void gui_update_scrollbars __ARGS((int force));
+int gui_do_scroll __ARGS((void));
+int gui_do_horiz_scroll __ARGS((void));
+void gui_check_colors __ARGS((void));
+guicolor_T gui_get_color __ARGS((char_u *name));
+int gui_get_lightness __ARGS((guicolor_T pixel));
+void gui_new_scrollbar_colors __ARGS((void));
+void gui_focus_change __ARGS((int in_focus));
+void gui_mouse_moved __ARGS((int x, int y));
+void gui_mouse_correct __ARGS((void));
+void ex_gui __ARGS((exarg_T *eap));
+int gui_find_bitmap __ARGS((char_u *name, char_u *buffer, char *ext));
+void gui_find_iconfile __ARGS((char_u *name, char_u *buffer, char *ext));
+void display_errors __ARGS((void));
+int no_console_input __ARGS((void));
+void gui_update_screen __ARGS((void));
+char_u *get_find_dialog_text __ARGS((char_u *arg, int *wwordp, int *mcasep));
+int gui_do_findrepl __ARGS((int flags, char_u *find_text, char_u *repl_text, int down));
+void gui_handle_drop __ARGS((int x, int y, int_u modifiers, char_u **fnames, int count));
 /* vim: set ft=c : */
index deb8039be9b61075f1ca6872e4513db589ce3156..87ff6da40798686892c00edb0ffb59013d816f92 100644 (file)
@@ -1,73 +1,73 @@
 /* gui_gtk_x11.c */
-extern void gui_mch_prepare __ARGS((int *argc, char **argv));
-extern void gui_mch_free_all __ARGS((void));
-extern void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
-extern void gui_mch_stop_blink __ARGS((void));
-extern void gui_mch_start_blink __ARGS((void));
-extern int gui_mch_init_check __ARGS((void));
-extern void gui_mch_show_tabline __ARGS((int showit));
-extern int gui_mch_showing_tabline __ARGS((void));
-extern void gui_mch_update_tabline __ARGS((void));
-extern void gui_mch_set_curtab __ARGS((int nr));
-extern int gui_mch_init __ARGS((void));
-extern void gui_mch_forked __ARGS((void));
-extern void gui_mch_new_colors __ARGS((void));
-extern int gui_mch_open __ARGS((void));
-extern void gui_mch_exit __ARGS((int rc));
-extern int gui_mch_get_winpos __ARGS((int *x, int *y));
-extern void gui_mch_set_winpos __ARGS((int x, int y));
-extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
-extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
-extern void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
-extern void gui_mch_enable_menu __ARGS((int showit));
-extern void gui_mch_show_toolbar __ARGS((int showit));
-extern int gui_mch_adjust_charheight __ARGS((void));
-extern GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int report_error, int fixed_width));
-extern char_u *gui_mch_font_dialog __ARGS((char_u *oldval));
-extern int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
-extern GuiFont gui_mch_get_font __ARGS((char_u *name, int report_error));
-extern char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
-extern void gui_mch_set_font __ARGS((GuiFont font));
-extern void gui_mch_set_fontset __ARGS((GuiFontset fontset));
-extern void gui_mch_free_font __ARGS((GuiFont font));
-extern void gui_mch_free_fontset __ARGS((GuiFontset fontset));
-extern guicolor_T gui_mch_get_color __ARGS((char_u *name));
-extern void gui_mch_set_fg_color __ARGS((guicolor_T color));
-extern void gui_mch_set_bg_color __ARGS((guicolor_T color));
-extern void gui_mch_set_sp_color __ARGS((guicolor_T color));
-extern int gui_gtk2_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
-extern void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
-extern int gui_mch_haskey __ARGS((char_u *name));
-extern int gui_get_x11_windis __ARGS((Window *win, Display **dis));
-extern Display *gui_mch_get_display __ARGS((void));
-extern void gui_mch_beep __ARGS((void));
-extern void gui_mch_flash __ARGS((int msec));
-extern void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
-extern void gui_mch_iconify __ARGS((void));
-extern void gui_mch_set_foreground __ARGS((void));
-extern void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
-extern void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
-extern void gui_mch_update __ARGS((void));
-extern int gui_mch_wait_for_chars __ARGS((long wtime));
-extern void gui_mch_flush __ARGS((void));
-extern void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
-extern void gui_mch_clear_all __ARGS((void));
-extern void gui_mch_delete_lines __ARGS((int row, int num_lines));
-extern void gui_mch_insert_lines __ARGS((int row, int num_lines));
-extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-extern void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-extern void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
-extern void gui_mch_draw_menubar __ARGS((void));
-extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-extern void gui_mch_getmouse __ARGS((int *x, int *y));
-extern void gui_mch_setmouse __ARGS((int x, int y));
-extern void gui_mch_mousehide __ARGS((int hide));
-extern void mch_set_mouse_shape __ARGS((int shape));
-extern void gui_mch_drawsign __ARGS((int row, int col, int typenr));
-extern void *gui_mch_register_sign __ARGS((char_u *signfile));
-extern void gui_mch_destroy_sign __ARGS((void *sign));
+void gui_mch_prepare __ARGS((int *argc, char **argv));
+void gui_mch_free_all __ARGS((void));
+void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+void gui_mch_stop_blink __ARGS((void));
+void gui_mch_start_blink __ARGS((void));
+int gui_mch_init_check __ARGS((void));
+void gui_mch_show_tabline __ARGS((int showit));
+int gui_mch_showing_tabline __ARGS((void));
+void gui_mch_update_tabline __ARGS((void));
+void gui_mch_set_curtab __ARGS((int nr));
+int gui_mch_init __ARGS((void));
+void gui_mch_forked __ARGS((void));
+void gui_mch_new_colors __ARGS((void));
+int gui_mch_open __ARGS((void));
+void gui_mch_exit __ARGS((int rc));
+int gui_mch_get_winpos __ARGS((int *x, int *y));
+void gui_mch_set_winpos __ARGS((int x, int y));
+void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
+void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+void gui_mch_enable_menu __ARGS((int showit));
+void gui_mch_show_toolbar __ARGS((int showit));
+int gui_mch_adjust_charheight __ARGS((void));
+GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int report_error, int fixed_width));
+char_u *gui_mch_font_dialog __ARGS((char_u *oldval));
+int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
+GuiFont gui_mch_get_font __ARGS((char_u *name, int report_error));
+char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
+void gui_mch_set_font __ARGS((GuiFont font));
+void gui_mch_set_fontset __ARGS((GuiFontset fontset));
+void gui_mch_free_font __ARGS((GuiFont font));
+void gui_mch_free_fontset __ARGS((GuiFontset fontset));
+guicolor_T gui_mch_get_color __ARGS((char_u *name));
+void gui_mch_set_fg_color __ARGS((guicolor_T color));
+void gui_mch_set_bg_color __ARGS((guicolor_T color));
+void gui_mch_set_sp_color __ARGS((guicolor_T color));
+int gui_gtk2_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+int gui_mch_haskey __ARGS((char_u *name));
+int gui_get_x11_windis __ARGS((Window *win, Display **dis));
+Display *gui_mch_get_display __ARGS((void));
+void gui_mch_beep __ARGS((void));
+void gui_mch_flash __ARGS((int msec));
+void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+void gui_mch_iconify __ARGS((void));
+void gui_mch_set_foreground __ARGS((void));
+void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+void gui_mch_update __ARGS((void));
+int gui_mch_wait_for_chars __ARGS((long wtime));
+void gui_mch_flush __ARGS((void));
+void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+void gui_mch_clear_all __ARGS((void));
+void gui_mch_delete_lines __ARGS((int row, int num_lines));
+void gui_mch_insert_lines __ARGS((int row, int num_lines));
+void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+void gui_mch_draw_menubar __ARGS((void));
+void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+void gui_mch_getmouse __ARGS((int *x, int *y));
+void gui_mch_setmouse __ARGS((int x, int y));
+void gui_mch_mousehide __ARGS((int hide));
+void mch_set_mouse_shape __ARGS((int shape));
+void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+void *gui_mch_register_sign __ARGS((char_u *signfile));
+void gui_mch_destroy_sign __ARGS((void *sign));
 /* vim: set ft=c : */
index dc6655a15bf62dd0e469f512934aa03d6a2ba8a1..4f88c2ff17136d259a046302d7613ed170a15ce5 100644 (file)
@@ -1,3 +1,3 @@
 /* gui_xmdlg.c */
-extern char_u *gui_xm_select_font __ARGS((char_u *current));
+char_u *gui_xm_select_font __ARGS((char_u *current));
 /* vim: set ft=c : */
index 90abb9f0b681dab69e9e2518390d634764e7c0fe..e3c22b726a9304717cd179cbd5e487616694c6f2 100644 (file)
@@ -1,14 +1,14 @@
 /* hashtab.c */
-extern void hash_init __ARGS((hashtab_T *ht));
-extern void hash_clear __ARGS((hashtab_T *ht));
-extern void hash_clear_all __ARGS((hashtab_T *ht, int off));
-extern hashitem_T *hash_find __ARGS((hashtab_T *ht, char_u *key));
-extern hashitem_T *hash_lookup __ARGS((hashtab_T *ht, char_u *key, hash_T hash));
-extern void hash_debug_results __ARGS((void));
-extern int hash_add __ARGS((hashtab_T *ht, char_u *key));
-extern int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash));
-extern void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));
-extern void hash_lock __ARGS((hashtab_T *ht));
-extern void hash_unlock __ARGS((hashtab_T *ht));
-extern hash_T hash_hash __ARGS((char_u *key));
+void hash_init __ARGS((hashtab_T *ht));
+void hash_clear __ARGS((hashtab_T *ht));
+void hash_clear_all __ARGS((hashtab_T *ht, int off));
+hashitem_T *hash_find __ARGS((hashtab_T *ht, char_u *key));
+hashitem_T *hash_lookup __ARGS((hashtab_T *ht, char_u *key, hash_T hash));
+void hash_debug_results __ARGS((void));
+int hash_add __ARGS((hashtab_T *ht, char_u *key));
+int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash));
+void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));
+void hash_lock __ARGS((hashtab_T *ht));
+void hash_unlock __ARGS((hashtab_T *ht));
+hash_T hash_hash __ARGS((char_u *key));
 /* vim: set ft=c : */
index 2af917429d5e8f68fe6805bc9e6acf6ab8a2ed51..0679ed41a672372b0b38f2dd4bc925811d414c43 100644 (file)
@@ -1,10 +1,10 @@
 /* if_tcl.c */
-extern void vim_tcl_init __ARGS((char *arg));
-extern int tcl_enabled __ARGS((int verbose));
-extern void tcl_end __ARGS((void));
-extern void ex_tcl __ARGS((exarg_T *eap));
-extern void ex_tclfile __ARGS((exarg_T *eap));
-extern void ex_tcldo __ARGS((exarg_T *eap));
-extern void tcl_buffer_free __ARGS((buf_T *buf));
-extern void tcl_window_free __ARGS((win_T *win));
+void vim_tcl_init __ARGS((char *arg));
+int tcl_enabled __ARGS((int verbose));
+void tcl_end __ARGS((void));
+void ex_tcl __ARGS((exarg_T *eap));
+void ex_tclfile __ARGS((exarg_T *eap));
+void ex_tcldo __ARGS((exarg_T *eap));
+void tcl_buffer_free __ARGS((buf_T *buf));
+void tcl_window_free __ARGS((win_T *win));
 /* vim: set ft=c : */
index 93a312f241baec7183d5ba5ec0893ed6d0f6c5c7..2ecce7955735292956adac125de0bced6c6fe9f0 100644 (file)
@@ -1,26 +1,26 @@
 /* main.c */
-extern void main_loop __ARGS((int cmdwin, int noexmode));
-extern void getout_preserve_modified __ARGS((int exitval));
-extern void getout __ARGS((int exitval));
-extern int process_env __ARGS((char_u *env, int is_viminit));
-extern void mainerr_arg_missing __ARGS((char_u *str));
-extern void time_push __ARGS((void *tv_rel, void *tv_start));
-extern void time_pop __ARGS((void *tp));
-extern void time_msg __ARGS((char *msg, void *tv_start));
-extern void server_to_input_buf __ARGS((char_u *str));
-extern char_u *eval_client_expr_to_string __ARGS((char_u *expr));
-extern char_u *serverConvert __ARGS((char_u *client_enc, char_u *data, char_u **tofree));
-extern int toF_TyA __ARGS((int c));
-extern int fkmap __ARGS((int c));
-extern void conv_to_pvim __ARGS((void));
-extern void conv_to_pstd __ARGS((void));
-extern char_u *lrswap __ARGS((char_u *ibuf));
-extern char_u *lrFswap __ARGS((char_u *cmdbuf, int len));
-extern char_u *lrF_sub __ARGS((char_u *ibuf));
-extern int cmdl_fkmap __ARGS((int c));
-extern int F_isalpha __ARGS((int c));
-extern int F_isdigit __ARGS((int c));
-extern int F_ischar __ARGS((int c));
-extern void farsi_fkey __ARGS((cmdarg_T *cap));
-extern int arabic_shape __ARGS((int c, int *ccp, int *c1p, int prev_c, int prev_c1, int next_c));
+void main_loop __ARGS((int cmdwin, int noexmode));
+void getout_preserve_modified __ARGS((int exitval));
+void getout __ARGS((int exitval));
+int process_env __ARGS((char_u *env, int is_viminit));
+void mainerr_arg_missing __ARGS((char_u *str));
+void time_push __ARGS((void *tv_rel, void *tv_start));
+void time_pop __ARGS((void *tp));
+void time_msg __ARGS((char *msg, void *tv_start));
+void server_to_input_buf __ARGS((char_u *str));
+char_u *eval_client_expr_to_string __ARGS((char_u *expr));
+char_u *serverConvert __ARGS((char_u *client_enc, char_u *data, char_u **tofree));
+int toF_TyA __ARGS((int c));
+int fkmap __ARGS((int c));
+void conv_to_pvim __ARGS((void));
+void conv_to_pstd __ARGS((void));
+char_u *lrswap __ARGS((char_u *ibuf));
+char_u *lrFswap __ARGS((char_u *cmdbuf, int len));
+char_u *lrF_sub __ARGS((char_u *ibuf));
+int cmdl_fkmap __ARGS((int c));
+int F_isalpha __ARGS((int c));
+int F_isdigit __ARGS((int c));
+int F_ischar __ARGS((int c));
+void farsi_fkey __ARGS((cmdarg_T *cap));
+int arabic_shape __ARGS((int c, int *ccp, int *c1p, int prev_c, int prev_c1, int next_c));
 /* vim: set ft=c : */
index fe44031884826cce674e73b32038a04d51896c70..13e186899e64cb5361c9549a428b9107f96824e3 100644 (file)
@@ -1,30 +1,30 @@
 /* mark.c */
-extern int setmark __ARGS((int c));
-extern int setmark_pos __ARGS((int c, pos_T *pos, int fnum));
-extern void setpcmark __ARGS((void));
-extern void checkpcmark __ARGS((void));
-extern pos_T *movemark __ARGS((int count));
-extern pos_T *movechangelist __ARGS((int count));
-extern pos_T *getmark __ARGS((int c, int changefile));
-extern pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum));
-extern pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
-extern void fmarks_check_names __ARGS((buf_T *buf));
-extern int check_mark __ARGS((pos_T *pos));
-extern void clrallmarks __ARGS((buf_T *buf));
-extern char_u *fm_getname __ARGS((fmark_T *fmark, int lead_len));
-extern void do_marks __ARGS((exarg_T *eap));
-extern void ex_delmarks __ARGS((exarg_T *eap));
-extern void ex_jumps __ARGS((exarg_T *eap));
-extern void ex_changes __ARGS((exarg_T *eap));
-extern void mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
-extern void mark_col_adjust __ARGS((linenr_T lnum, colnr_T mincol, long lnum_amount, long col_amount));
-extern void copy_jumplist __ARGS((win_T *from, win_T *to));
-extern void free_jumplist __ARGS((win_T *wp));
-extern void set_last_cursor __ARGS((win_T *win));
-extern void free_all_marks __ARGS((void));
-extern int read_viminfo_filemark __ARGS((vir_T *virp, int force));
-extern void write_viminfo_filemarks __ARGS((FILE *fp));
-extern int removable __ARGS((char_u *name));
-extern int write_viminfo_marks __ARGS((FILE *fp_out));
-extern void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
+int setmark __ARGS((int c));
+int setmark_pos __ARGS((int c, pos_T *pos, int fnum));
+void setpcmark __ARGS((void));
+void checkpcmark __ARGS((void));
+pos_T *movemark __ARGS((int count));
+pos_T *movechangelist __ARGS((int count));
+pos_T *getmark __ARGS((int c, int changefile));
+pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum));
+pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
+void fmarks_check_names __ARGS((buf_T *buf));
+int check_mark __ARGS((pos_T *pos));
+void clrallmarks __ARGS((buf_T *buf));
+char_u *fm_getname __ARGS((fmark_T *fmark, int lead_len));
+void do_marks __ARGS((exarg_T *eap));
+void ex_delmarks __ARGS((exarg_T *eap));
+void ex_jumps __ARGS((exarg_T *eap));
+void ex_changes __ARGS((exarg_T *eap));
+void mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+void mark_col_adjust __ARGS((linenr_T lnum, colnr_T mincol, long lnum_amount, long col_amount));
+void copy_jumplist __ARGS((win_T *from, win_T *to));
+void free_jumplist __ARGS((win_T *wp));
+void set_last_cursor __ARGS((win_T *win));
+void free_all_marks __ARGS((void));
+int read_viminfo_filemark __ARGS((vir_T *virp, int force));
+void write_viminfo_filemarks __ARGS((FILE *fp));
+int removable __ARGS((char_u *name));
+int write_viminfo_marks __ARGS((FILE *fp_out));
+void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
 /* vim: set ft=c : */
index 6c4329a18dcdb41ba9c59c608234d10bd25110e8..3983b4799c300ff1f6adc1a62a9edac8ebf6907d 100644 (file)
@@ -1,18 +1,18 @@
 /* memfile.c */
-extern memfile_T *mf_open __ARGS((char_u *fname, int flags));
-extern int mf_open_file __ARGS((memfile_T *mfp, char_u *fname));
-extern void mf_close __ARGS((memfile_T *mfp, int del_file));
-extern void mf_close_file __ARGS((buf_T *buf, int getlines));
-extern void mf_new_page_size __ARGS((memfile_T *mfp, unsigned new_size));
-extern bhdr_T *mf_new __ARGS((memfile_T *mfp, int negative, int page_count));
-extern bhdr_T *mf_get __ARGS((memfile_T *mfp, blocknr_T nr, int page_count));
-extern void mf_put __ARGS((memfile_T *mfp, bhdr_T *hp, int dirty, int infile));
-extern void mf_free __ARGS((memfile_T *mfp, bhdr_T *hp));
-extern int mf_sync __ARGS((memfile_T *mfp, int flags));
-extern void mf_set_dirty __ARGS((memfile_T *mfp));
-extern int mf_release_all __ARGS((void));
-extern blocknr_T mf_trans_del __ARGS((memfile_T *mfp, blocknr_T old_nr));
-extern void mf_set_ffname __ARGS((memfile_T *mfp));
-extern void mf_fullname __ARGS((memfile_T *mfp));
-extern int mf_need_trans __ARGS((memfile_T *mfp));
+memfile_T *mf_open __ARGS((char_u *fname, int flags));
+int mf_open_file __ARGS((memfile_T *mfp, char_u *fname));
+void mf_close __ARGS((memfile_T *mfp, int del_file));
+void mf_close_file __ARGS((buf_T *buf, int getlines));
+void mf_new_page_size __ARGS((memfile_T *mfp, unsigned new_size));
+bhdr_T *mf_new __ARGS((memfile_T *mfp, int negative, int page_count));
+bhdr_T *mf_get __ARGS((memfile_T *mfp, blocknr_T nr, int page_count));
+void mf_put __ARGS((memfile_T *mfp, bhdr_T *hp, int dirty, int infile));
+void mf_free __ARGS((memfile_T *mfp, bhdr_T *hp));
+int mf_sync __ARGS((memfile_T *mfp, int flags));
+void mf_set_dirty __ARGS((memfile_T *mfp));
+int mf_release_all __ARGS((void));
+blocknr_T mf_trans_del __ARGS((memfile_T *mfp, blocknr_T old_nr));
+void mf_set_ffname __ARGS((memfile_T *mfp));
+void mf_fullname __ARGS((memfile_T *mfp));
+int mf_need_trans __ARGS((memfile_T *mfp));
 /* vim: set ft=c : */
index e6bd3e9e23e7be87cd6c1bf6488b6e33de37fb14..cff7d6b505d58e185c75837844d53cd4211117a6 100644 (file)
@@ -1,71 +1,71 @@
 /* message.c */
-extern int msg __ARGS((char_u *s));
-extern int verb_msg __ARGS((char_u *s));
-extern int msg_attr __ARGS((char_u *s, int attr));
-extern int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
-extern char_u *msg_strtrunc __ARGS((char_u *s, int force));
-extern void trunc_string __ARGS((char_u *s, char_u *buf, int room));
-extern void reset_last_sourcing __ARGS((void));
-extern void msg_source __ARGS((int attr));
-extern int emsg_not_now __ARGS((void));
-extern int emsg __ARGS((char_u *s));
-extern int emsg2 __ARGS((char_u *s, char_u *a1));
-extern void emsg_invreg __ARGS((int name));
-extern char_u *msg_trunc_attr __ARGS((char_u *s, int force, int attr));
-extern char_u *msg_may_trunc __ARGS((int force, char_u *s));
-extern int delete_first_msg __ARGS((void));
-extern void ex_messages __ARGS((exarg_T *eap));
-extern void msg_end_prompt __ARGS((void));
-extern void wait_return __ARGS((int redraw));
-extern void set_keep_msg __ARGS((char_u *s, int attr));
-extern void set_keep_msg_from_hist __ARGS((void));
-extern void msg_start __ARGS((void));
-extern void msg_starthere __ARGS((void));
-extern void msg_putchar __ARGS((int c));
-extern void msg_putchar_attr __ARGS((int c, int attr));
-extern void msg_outnum __ARGS((long n));
-extern void msg_home_replace __ARGS((char_u *fname));
-extern void msg_home_replace_hl __ARGS((char_u *fname));
-extern int msg_outtrans __ARGS((char_u *str));
-extern int msg_outtrans_attr __ARGS((char_u *str, int attr));
-extern int msg_outtrans_len __ARGS((char_u *str, int len));
-extern char_u *msg_outtrans_one __ARGS((char_u *p, int attr));
-extern int msg_outtrans_len_attr __ARGS((char_u *msgstr, int len, int attr));
-extern void msg_make __ARGS((char_u *arg));
-extern int msg_outtrans_special __ARGS((char_u *strstart, int from));
-extern char_u *str2special __ARGS((char_u **sp, int from));
-extern void str2specialbuf __ARGS((char_u *sp, char_u *buf, int len));
-extern void msg_prt_line __ARGS((char_u *s, int list));
-extern void msg_puts __ARGS((char_u *s));
-extern void msg_puts_title __ARGS((char_u *s));
-extern void msg_puts_long_attr __ARGS((char_u *longstr, int attr));
-extern void msg_puts_long_len_attr __ARGS((char_u *longstr, int len, int attr));
-extern void msg_puts_attr __ARGS((char_u *s, int attr));
-extern void may_clear_sb_text __ARGS((void));
-extern void clear_sb_text __ARGS((void));
-extern void show_sb_text __ARGS((void));
-extern int msg_use_printf __ARGS((void));
-extern void mch_errmsg __ARGS((char *str));
-extern void mch_msg __ARGS((char *str));
-extern void msg_moremsg __ARGS((int full));
-extern void repeat_message __ARGS((void));
-extern void msg_clr_eos __ARGS((void));
-extern void msg_clr_eos_force __ARGS((void));
-extern void msg_clr_cmdline __ARGS((void));
-extern int msg_end __ARGS((void));
-extern void msg_check __ARGS((void));
-extern void verbose_enter __ARGS((void));
-extern void verbose_leave __ARGS((void));
-extern void verbose_enter_scroll __ARGS((void));
-extern void verbose_leave_scroll __ARGS((void));
-extern void verbose_stop __ARGS((void));
-extern int verbose_open __ARGS((void));
-extern void give_warning __ARGS((char_u *message, int hl));
-extern void msg_advance __ARGS((int col));
-extern int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
-extern void display_confirm_msg __ARGS((void));
-extern int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
-extern int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
-extern int vim_dialog_yesnoallcancel __ARGS((int type, char_u *title, char_u *message, int dflt));
-extern char_u *do_browse __ARGS((int flags, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter, buf_T *buf));
+int msg __ARGS((char_u *s));
+int verb_msg __ARGS((char_u *s));
+int msg_attr __ARGS((char_u *s, int attr));
+int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
+char_u *msg_strtrunc __ARGS((char_u *s, int force));
+void trunc_string __ARGS((char_u *s, char_u *buf, int room));
+void reset_last_sourcing __ARGS((void));
+void msg_source __ARGS((int attr));
+int emsg_not_now __ARGS((void));
+int emsg __ARGS((char_u *s));
+int emsg2 __ARGS((char_u *s, char_u *a1));
+void emsg_invreg __ARGS((int name));
+char_u *msg_trunc_attr __ARGS((char_u *s, int force, int attr));
+char_u *msg_may_trunc __ARGS((int force, char_u *s));
+int delete_first_msg __ARGS((void));
+void ex_messages __ARGS((exarg_T *eap));
+void msg_end_prompt __ARGS((void));
+void wait_return __ARGS((int redraw));
+void set_keep_msg __ARGS((char_u *s, int attr));
+void set_keep_msg_from_hist __ARGS((void));
+void msg_start __ARGS((void));
+void msg_starthere __ARGS((void));
+void msg_putchar __ARGS((int c));
+void msg_putchar_attr __ARGS((int c, int attr));
+void msg_outnum __ARGS((long n));
+void msg_home_replace __ARGS((char_u *fname));
+void msg_home_replace_hl __ARGS((char_u *fname));
+int msg_outtrans __ARGS((char_u *str));
+int msg_outtrans_attr __ARGS((char_u *str, int attr));
+int msg_outtrans_len __ARGS((char_u *str, int len));
+char_u *msg_outtrans_one __ARGS((char_u *p, int attr));
+int msg_outtrans_len_attr __ARGS((char_u *msgstr, int len, int attr));
+void msg_make __ARGS((char_u *arg));
+int msg_outtrans_special __ARGS((char_u *strstart, int from));
+char_u *str2special __ARGS((char_u **sp, int from));
+void str2specialbuf __ARGS((char_u *sp, char_u *buf, int len));
+void msg_prt_line __ARGS((char_u *s, int list));
+void msg_puts __ARGS((char_u *s));
+void msg_puts_title __ARGS((char_u *s));
+void msg_puts_long_attr __ARGS((char_u *longstr, int attr));
+void msg_puts_long_len_attr __ARGS((char_u *longstr, int len, int attr));
+void msg_puts_attr __ARGS((char_u *s, int attr));
+void may_clear_sb_text __ARGS((void));
+void clear_sb_text __ARGS((void));
+void show_sb_text __ARGS((void));
+int msg_use_printf __ARGS((void));
+void mch_errmsg __ARGS((char *str));
+void mch_msg __ARGS((char *str));
+void msg_moremsg __ARGS((int full));
+void repeat_message __ARGS((void));
+void msg_clr_eos __ARGS((void));
+void msg_clr_eos_force __ARGS((void));
+void msg_clr_cmdline __ARGS((void));
+int msg_end __ARGS((void));
+void msg_check __ARGS((void));
+void verbose_enter __ARGS((void));
+void verbose_leave __ARGS((void));
+void verbose_enter_scroll __ARGS((void));
+void verbose_leave_scroll __ARGS((void));
+void verbose_stop __ARGS((void));
+int verbose_open __ARGS((void));
+void give_warning __ARGS((char_u *message, int hl));
+void msg_advance __ARGS((int col));
+int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+void display_confirm_msg __ARGS((void));
+int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
+int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
+int vim_dialog_yesnoallcancel __ARGS((int type, char_u *title, char_u *message, int dflt));
+char_u *do_browse __ARGS((int flags, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter, buf_T *buf));
 /* vim: set ft=c : */
index 71a5ec459d735fe248ef41b79a3f361e1a1c03ea..75d01494a6ea001afdad6aaa0fd73887e532f51c 100644 (file)
@@ -1,25 +1,25 @@
 /* netbeans.c */
-extern void messageFromNetbeansW32 __ARGS((void));
-extern int isNetbeansBuffer __ARGS((buf_T *bufp));
-extern int isNetbeansModified __ARGS((buf_T *bufp));
-extern void netbeans_end __ARGS((void));
-extern void ex_nbkey __ARGS((exarg_T *eap));
-extern void netbeans_beval_cb __ARGS((BalloonEval *beval, int state));
-extern void netbeans_startup_done __ARGS((void));
-extern void netbeans_send_disconnect __ARGS((void));
-extern void netbeans_frame_moved __ARGS((int new_x, int new_y));
-extern void netbeans_file_activated __ARGS((buf_T *bufp));
-extern void netbeans_file_opened __ARGS((buf_T *bufp));
-extern void netbeans_file_closed __ARGS((buf_T *bufp));
-extern void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
-extern void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
-extern void netbeans_unmodified __ARGS((buf_T *bufp));
-extern void netbeans_button_release __ARGS((int button));
-extern void netbeans_keycommand __ARGS((int key));
-extern void netbeans_save_buffer __ARGS((buf_T *bufp));
-extern void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
-extern int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
-extern void netbeans_draw_multisign_indicator __ARGS((int row));
-extern void netbeans_draw_multisign_indicator __ARGS((int row));
-extern void netbeans_gutter_click __ARGS((linenr_T lnum));
+void messageFromNetbeansW32 __ARGS((void));
+int isNetbeansBuffer __ARGS((buf_T *bufp));
+int isNetbeansModified __ARGS((buf_T *bufp));
+void netbeans_end __ARGS((void));
+void ex_nbkey __ARGS((exarg_T *eap));
+void netbeans_beval_cb __ARGS((BalloonEval *beval, int state));
+void netbeans_startup_done __ARGS((void));
+void netbeans_send_disconnect __ARGS((void));
+void netbeans_frame_moved __ARGS((int new_x, int new_y));
+void netbeans_file_activated __ARGS((buf_T *bufp));
+void netbeans_file_opened __ARGS((buf_T *bufp));
+void netbeans_file_closed __ARGS((buf_T *bufp));
+void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
+void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+void netbeans_unmodified __ARGS((buf_T *bufp));
+void netbeans_button_release __ARGS((int button));
+void netbeans_keycommand __ARGS((int key));
+void netbeans_save_buffer __ARGS((buf_T *bufp));
+void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+void netbeans_draw_multisign_indicator __ARGS((int row));
+void netbeans_draw_multisign_indicator __ARGS((int row));
+void netbeans_gutter_click __ARGS((linenr_T lnum));
 /* vim: set ft=c : */
index 8280e45d9075e728b6faa4a0646ba48a6dea0428..55e81635e820a415516f184152c339509b3f3f54 100644 (file)
@@ -1,26 +1,26 @@
 /* normal.c */
-extern void init_normal_cmds __ARGS((void));
-extern void normal_cmd __ARGS((oparg_T *oap, int toplevel));
-extern void do_pending_operator __ARGS((cmdarg_T *cap, int old_col, int gui_yank));
-extern int do_mouse __ARGS((oparg_T *oap, int c, int dir, long count, int fixindent));
-extern void check_visual_highlight __ARGS((void));
-extern void end_visual_mode __ARGS((void));
-extern void reset_VIsual_and_resel __ARGS((void));
-extern void reset_VIsual __ARGS((void));
-extern int find_ident_under_cursor __ARGS((char_u **string, int find_type));
-extern int find_ident_at_pos __ARGS((win_T *wp, linenr_T lnum, colnr_T startcol, char_u **string, int find_type));
-extern void clear_showcmd __ARGS((void));
-extern int add_to_showcmd __ARGS((int c));
-extern void add_to_showcmd_c __ARGS((int c));
-extern void push_showcmd __ARGS((void));
-extern void pop_showcmd __ARGS((void));
-extern void do_check_scrollbind __ARGS((int check));
-extern void check_scrollbind __ARGS((linenr_T topline_diff, long leftcol_diff));
-extern int find_decl __ARGS((char_u *ptr, int len, int locally, int thisblock, int searchflags));
-extern void scroll_redraw __ARGS((int up, long count));
-extern void handle_tabmenu __ARGS((void));
-extern void do_nv_ident __ARGS((int c1, int c2));
-extern int get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
-extern void start_selection __ARGS((void));
-extern void may_start_select __ARGS((int c));
+void init_normal_cmds __ARGS((void));
+void normal_cmd __ARGS((oparg_T *oap, int toplevel));
+void do_pending_operator __ARGS((cmdarg_T *cap, int old_col, int gui_yank));
+int do_mouse __ARGS((oparg_T *oap, int c, int dir, long count, int fixindent));
+void check_visual_highlight __ARGS((void));
+void end_visual_mode __ARGS((void));
+void reset_VIsual_and_resel __ARGS((void));
+void reset_VIsual __ARGS((void));
+int find_ident_under_cursor __ARGS((char_u **string, int find_type));
+int find_ident_at_pos __ARGS((win_T *wp, linenr_T lnum, colnr_T startcol, char_u **string, int find_type));
+void clear_showcmd __ARGS((void));
+int add_to_showcmd __ARGS((int c));
+void add_to_showcmd_c __ARGS((int c));
+void push_showcmd __ARGS((void));
+void pop_showcmd __ARGS((void));
+void do_check_scrollbind __ARGS((int check));
+void check_scrollbind __ARGS((linenr_T topline_diff, long leftcol_diff));
+int find_decl __ARGS((char_u *ptr, int len, int locally, int thisblock, int searchflags));
+void scroll_redraw __ARGS((int up, long count));
+void handle_tabmenu __ARGS((void));
+void do_nv_ident __ARGS((int c1, int c2));
+int get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
+void start_selection __ARGS((void));
+void may_start_select __ARGS((int c));
 /* vim: set ft=c : */
index cf31dca7d92986b6966cfca54b823f04a777595a..bb50ef14af9bdff420fc531b7a041a51763097ff 100644 (file)
@@ -1,56 +1,56 @@
 /* option.c */
-extern void set_init_1 __ARGS((void));
-extern void set_string_default __ARGS((char *name, char_u *val));
-extern void set_number_default __ARGS((char *name, long val));
-extern void free_all_options __ARGS((void));
-extern void set_init_2 __ARGS((void));
-extern void set_init_3 __ARGS((void));
-extern void set_helplang_default __ARGS((char_u *lang));
-extern void init_gui_options __ARGS((void));
-extern void set_title_defaults __ARGS((void));
-extern int do_set __ARGS((char_u *arg, int opt_flags));
-extern void set_options_bin __ARGS((int oldval, int newval, int opt_flags));
-extern int get_viminfo_parameter __ARGS((int type));
-extern char_u *find_viminfo_parameter __ARGS((int type));
-extern void check_options __ARGS((void));
-extern void check_buf_options __ARGS((buf_T *buf));
-extern void free_string_option __ARGS((char_u *p));
-extern void clear_string_option __ARGS((char_u **pp));
-extern void set_term_option_alloced __ARGS((char_u **p));
-extern int was_set_insecurely __ARGS((char_u *opt, int opt_flags));
-extern void set_string_option_direct __ARGS((char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid));
-extern char_u *check_stl_option __ARGS((char_u *s));
-extern int get_option_value __ARGS((char_u *name, long *numval, char_u **stringval, int opt_flags));
-extern void set_option_value __ARGS((char_u *name, long number, char_u *string, int opt_flags));
-extern char_u *get_term_code __ARGS((char_u *tname));
-extern char_u *get_highlight_default __ARGS((void));
-extern char_u *get_encoding_default __ARGS((void));
-extern int makeset __ARGS((FILE *fd, int opt_flags, int local_only));
-extern int makefoldset __ARGS((FILE *fd));
-extern void clear_termoptions __ARGS((void));
-extern void free_termoptions __ARGS((void));
-extern void set_term_defaults __ARGS((void));
-extern void comp_col __ARGS((void));
-extern char_u *get_equalprg __ARGS((void));
-extern void win_copy_options __ARGS((win_T *wp_from, win_T *wp_to));
-extern void copy_winopt __ARGS((winopt_T *from, winopt_T *to));
-extern void check_win_options __ARGS((win_T *win));
-extern void check_winopt __ARGS((winopt_T *wop));
-extern void clear_winopt __ARGS((winopt_T *wop));
-extern void buf_copy_options __ARGS((buf_T *buf, int flags));
-extern void reset_modifiable __ARGS((void));
-extern void set_iminsert_global __ARGS((void));
-extern void set_imsearch_global __ARGS((void));
-extern void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
-extern int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
-extern int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
-extern int has_format_option __ARGS((int x));
-extern int shortmess __ARGS((int x));
-extern void vimrc_found __ARGS((char_u *fname, char_u *envname));
-extern void change_compatible __ARGS((int on));
-extern int option_was_set __ARGS((char_u *name));
-extern int can_bs __ARGS((int what));
-extern void save_file_ff __ARGS((buf_T *buf));
-extern int file_ff_differs __ARGS((buf_T *buf));
-extern int check_ff_value __ARGS((char_u *p));
+void set_init_1 __ARGS((void));
+void set_string_default __ARGS((char *name, char_u *val));
+void set_number_default __ARGS((char *name, long val));
+void free_all_options __ARGS((void));
+void set_init_2 __ARGS((void));
+void set_init_3 __ARGS((void));
+void set_helplang_default __ARGS((char_u *lang));
+void init_gui_options __ARGS((void));
+void set_title_defaults __ARGS((void));
+int do_set __ARGS((char_u *arg, int opt_flags));
+void set_options_bin __ARGS((int oldval, int newval, int opt_flags));
+int get_viminfo_parameter __ARGS((int type));
+char_u *find_viminfo_parameter __ARGS((int type));
+void check_options __ARGS((void));
+void check_buf_options __ARGS((buf_T *buf));
+void free_string_option __ARGS((char_u *p));
+void clear_string_option __ARGS((char_u **pp));
+void set_term_option_alloced __ARGS((char_u **p));
+int was_set_insecurely __ARGS((char_u *opt, int opt_flags));
+void set_string_option_direct __ARGS((char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid));
+char_u *check_stl_option __ARGS((char_u *s));
+int get_option_value __ARGS((char_u *name, long *numval, char_u **stringval, int opt_flags));
+void set_option_value __ARGS((char_u *name, long number, char_u *string, int opt_flags));
+char_u *get_term_code __ARGS((char_u *tname));
+char_u *get_highlight_default __ARGS((void));
+char_u *get_encoding_default __ARGS((void));
+int makeset __ARGS((FILE *fd, int opt_flags, int local_only));
+int makefoldset __ARGS((FILE *fd));
+void clear_termoptions __ARGS((void));
+void free_termoptions __ARGS((void));
+void set_term_defaults __ARGS((void));
+void comp_col __ARGS((void));
+char_u *get_equalprg __ARGS((void));
+void win_copy_options __ARGS((win_T *wp_from, win_T *wp_to));
+void copy_winopt __ARGS((winopt_T *from, winopt_T *to));
+void check_win_options __ARGS((win_T *win));
+void check_winopt __ARGS((winopt_T *wop));
+void clear_winopt __ARGS((winopt_T *wop));
+void buf_copy_options __ARGS((buf_T *buf, int flags));
+void reset_modifiable __ARGS((void));
+void set_iminsert_global __ARGS((void));
+void set_imsearch_global __ARGS((void));
+void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
+int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
+int has_format_option __ARGS((int x));
+int shortmess __ARGS((int x));
+void vimrc_found __ARGS((char_u *fname, char_u *envname));
+void change_compatible __ARGS((int on));
+int option_was_set __ARGS((char_u *name));
+int can_bs __ARGS((int what));
+void save_file_ff __ARGS((buf_T *buf));
+int file_ff_differs __ARGS((buf_T *buf));
+int check_ff_value __ARGS((char_u *p));
 /* vim: set ft=c : */
index ec8055b434b0f23a5aa9e7b8e2b822117cadbc74..9ea4cd55ffa8ba94276c78939308c9da9377dda2 100644 (file)
@@ -1,49 +1,49 @@
 /* os_riscos.c */
-extern void mch_write __ARGS((char_u *s, int len));
-extern int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
-extern int mch_char_avail __ARGS((void));
-extern long_u mch_avail_mem __ARGS((int special));
-extern void mch_delay __ARGS((long msec, int ignoreinput));
-extern void mch_suspend __ARGS((void));
-extern void mch_init __ARGS((void));
-extern int mch_check_win __ARGS((int argc, char **argv));
-extern int mch_input_isatty __ARGS((void));
-extern int mch_can_restore_title __ARGS((void));
-extern int mch_can_restore_icon __ARGS((void));
-extern void mch_settitle __ARGS((char_u *title, char_u *icon));
-extern void mch_restore_title __ARGS((int which));
-extern int mch_get_user_name __ARGS((char_u *s, int len));
-extern void mch_get_host_name __ARGS((char_u *s, int len));
-extern long mch_get_pid __ARGS((void));
-extern int mch_dirname __ARGS((char_u *buf, int len));
-extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-extern int mch_isFullName __ARGS((char_u *fname));
-extern long mch_getperm __ARGS((char_u *name));
-extern int mch_setperm __ARGS((char_u *name, long perm));
-extern void mch_hide __ARGS((char_u *name));
-extern int mch_isdir __ARGS((char_u *name));
-extern int mch_can_exe __ARGS((char_u *name));
-extern int mch_nodetype __ARGS((char_u *name));
-extern void mch_early_init __ARGS((void));
-extern void mch_exit __ARGS((int r));
-extern void mch_settmode __ARGS((int tmode));
-extern void mch_setmouse __ARGS((int on));
-extern int mch_screenmode __ARGS((char_u *arg));
-extern int mch_get_shellsize __ARGS((void));
-extern void mch_set_shellsize __ARGS((void));
-extern void mch_new_shellsize __ARGS((void));
-extern int mch_call_shell __ARGS((char_u *cmd, int options));
-extern void mch_breakcheck __ARGS((void));
-extern int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
-extern int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags));
-extern int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-extern int mch_has_exp_wildcard __ARGS((char_u *p));
-extern int mch_has_wildcard __ARGS((char_u *p));
-extern int mch_remove __ARGS((char_u *file));
-extern char_u *mch_munge_fname __ARGS((char_u *fname));
-extern int ro_buflist_add __ARGS((char_u *old_name));
-extern int mch_chdir __ARGS((char_u *dir));
-extern void mch_read_filetype __ARGS((char_u *file));
-extern void mch_set_filetype __ARGS((char_u *file, char_u *type));
-extern int mch_check_filetype __ARGS((char_u *fname, char_u *type));
+void mch_write __ARGS((char_u *s, int len));
+int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+int mch_char_avail __ARGS((void));
+long_u mch_avail_mem __ARGS((int special));
+void mch_delay __ARGS((long msec, int ignoreinput));
+void mch_suspend __ARGS((void));
+void mch_init __ARGS((void));
+int mch_check_win __ARGS((int argc, char **argv));
+int mch_input_isatty __ARGS((void));
+int mch_can_restore_title __ARGS((void));
+int mch_can_restore_icon __ARGS((void));
+void mch_settitle __ARGS((char_u *title, char_u *icon));
+void mch_restore_title __ARGS((int which));
+int mch_get_user_name __ARGS((char_u *s, int len));
+void mch_get_host_name __ARGS((char_u *s, int len));
+long mch_get_pid __ARGS((void));
+int mch_dirname __ARGS((char_u *buf, int len));
+int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+int mch_isFullName __ARGS((char_u *fname));
+long mch_getperm __ARGS((char_u *name));
+int mch_setperm __ARGS((char_u *name, long perm));
+void mch_hide __ARGS((char_u *name));
+int mch_isdir __ARGS((char_u *name));
+int mch_can_exe __ARGS((char_u *name));
+int mch_nodetype __ARGS((char_u *name));
+void mch_early_init __ARGS((void));
+void mch_exit __ARGS((int r));
+void mch_settmode __ARGS((int tmode));
+void mch_setmouse __ARGS((int on));
+int mch_screenmode __ARGS((char_u *arg));
+int mch_get_shellsize __ARGS((void));
+void mch_set_shellsize __ARGS((void));
+void mch_new_shellsize __ARGS((void));
+int mch_call_shell __ARGS((char_u *cmd, int options));
+void mch_breakcheck __ARGS((void));
+int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags));
+int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+int mch_has_exp_wildcard __ARGS((char_u *p));
+int mch_has_wildcard __ARGS((char_u *p));
+int mch_remove __ARGS((char_u *file));
+char_u *mch_munge_fname __ARGS((char_u *fname));
+int ro_buflist_add __ARGS((char_u *old_name));
+int mch_chdir __ARGS((char_u *dir));
+void mch_read_filetype __ARGS((char_u *file));
+void mch_set_filetype __ARGS((char_u *file, char_u *type));
+int mch_check_filetype __ARGS((char_u *fname, char_u *type));
 /* vim: set ft=c : */
index 667f7ab3ca61c8759c291e5469a5a00692c51086..2ed6394ebda3cd9131d29559e19c438a41b31b63 100644 (file)
@@ -1,14 +1,14 @@
 /* os_vms.c */
-extern void mch_settmode __ARGS((int tmode));
-extern int mch_get_shellsize __ARGS((void));
-extern void mch_set_shellsize __ARGS((void));
-extern char_u *mch_getenv __ARGS((char_u *lognam));
-extern int mch_setenv __ARGS((char *var, char *value, int x));
-extern int vms_sys __ARGS((char *cmd, char *out, char *inp));
-extern int vms_sys_status __ARGS((int status));
-extern int vms_read __ARGS((char *inbuf, size_t nbytes));
-extern int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-extern int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
-extern void *vms_fixfilename __ARGS((void *instring));
-extern void vms_remove_version __ARGS((void *fname));
+void mch_settmode __ARGS((int tmode));
+int mch_get_shellsize __ARGS((void));
+void mch_set_shellsize __ARGS((void));
+char_u *mch_getenv __ARGS((char_u *lognam));
+int mch_setenv __ARGS((char *var, char *value, int x));
+int vms_sys __ARGS((char *cmd, char *out, char *inp));
+int vms_sys_status __ARGS((int status));
+int vms_read __ARGS((char *inbuf, size_t nbytes));
+int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+void *vms_fixfilename __ARGS((void *instring));
+void vms_remove_version __ARGS((void *fname));
 /* vim: set ft=c : */
index 4bfd9b32fe8a524ab948ae5635546671c02fc593..31fa72c05b22c4cf048a05ee1962122cd7042ef1 100644 (file)
@@ -1,12 +1,12 @@
 /* os_win16.c */
-extern void mch_setmouse __ARGS((int on));
-extern void mch_init __ARGS((void));
-extern int mch_check_win __ARGS((int argc, char **argv));
-extern long mch_get_pid __ARGS((void));
-extern int mch_call_shell __ARGS((char_u *cmd, int options));
-extern void mch_delay __ARGS((long msec, int ignoreinput));
-extern void mch_breakcheck __ARGS((void));
-extern long_u mch_avail_mem __ARGS((int special));
-extern int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
-extern char *default_shell __ARGS((void));
+void mch_setmouse __ARGS((int on));
+void mch_init __ARGS((void));
+int mch_check_win __ARGS((int argc, char **argv));
+long mch_get_pid __ARGS((void));
+int mch_call_shell __ARGS((char_u *cmd, int options));
+void mch_delay __ARGS((long msec, int ignoreinput));
+void mch_breakcheck __ARGS((void));
+long_u mch_avail_mem __ARGS((int special));
+int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
+char *default_shell __ARGS((void));
 /* vim: set ft=c : */
index 5427dad837528c7ace404ff857979b94af7bf47a..74a53e2f0e32b44e40f49ed8fc45fb3bee21dd43 100644 (file)
@@ -1,8 +1,8 @@
 /* popupmnu.c */
-extern void pum_display __ARGS((pumitem_T *array, int size, int selected));
-extern void pum_redraw __ARGS((void));
-extern void pum_undisplay __ARGS((void));
-extern void pum_clear __ARGS((void));
-extern int pum_visible __ARGS((void));
-extern int pum_get_height __ARGS((void));
+void pum_display __ARGS((pumitem_T *array, int size, int selected));
+void pum_redraw __ARGS((void));
+void pum_undisplay __ARGS((void));
+void pum_clear __ARGS((void));
+int pum_visible __ARGS((void));
+int pum_get_height __ARGS((void));
 /* vim: set ft=c : */
index 27597b2efacc75c31403f1e92e7f87f1e867f9f1..df2fde40cec97ddcd8c4df998c927a278d2deeb6 100644 (file)
@@ -1,17 +1,17 @@
 /* regexp.c */
-extern void free_regexp_stuff __ARGS((void));
-extern int re_multiline __ARGS((regprog_T *prog));
-extern int re_lookbehind __ARGS((regprog_T *prog));
-extern char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
-extern regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
-extern int vim_regcomp_had_eol __ARGS((void));
-extern int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
-extern int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
-extern long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col));
-extern reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
-extern void unref_extmatch __ARGS((reg_extmatch_T *em));
-extern char_u *regtilde __ARGS((char_u *source, int magic));
-extern int vim_regsub __ARGS((regmatch_T *rmp, char_u *source, char_u *dest, int copy, int magic, int backslash));
-extern int vim_regsub_multi __ARGS((regmmatch_T *rmp, linenr_T lnum, char_u *source, char_u *dest, int copy, int magic, int backslash));
-extern char_u *reg_submatch __ARGS((int no));
+void free_regexp_stuff __ARGS((void));
+int re_multiline __ARGS((regprog_T *prog));
+int re_lookbehind __ARGS((regprog_T *prog));
+char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
+regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
+int vim_regcomp_had_eol __ARGS((void));
+int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
+int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
+long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col));
+reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
+void unref_extmatch __ARGS((reg_extmatch_T *em));
+char_u *regtilde __ARGS((char_u *source, int magic));
+int vim_regsub __ARGS((regmatch_T *rmp, char_u *source, char_u *dest, int copy, int magic, int backslash));
+int vim_regsub_multi __ARGS((regmmatch_T *rmp, linenr_T lnum, char_u *source, char_u *dest, int copy, int magic, int backslash));
+char_u *reg_submatch __ARGS((int no));
 /* vim: set ft=c : */
index d1e5ef72c7084ac0e33be665a858718b0ccdc13b..fecf4e05aa0c9b8515af9408cfdc2e50ba177b29 100644 (file)
@@ -1,26 +1,26 @@
 /* spell.c */
-extern int spell_check __ARGS((win_T *wp, char_u *ptr, hlf_T *attrp, int *capcol, int docount));
-extern int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, hlf_T *attrp));
-extern void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
-extern char_u *did_set_spelllang __ARGS((buf_T *buf));
-extern void spell_free_all __ARGS((void));
-extern void spell_reload __ARGS((void));
-extern int spell_check_msm __ARGS((void));
-extern void put_bytes __ARGS((FILE *fd, long_u nr, int len));
-extern void ex_mkspell __ARGS((exarg_T *eap));
-extern void ex_spell __ARGS((exarg_T *eap));
-extern void spell_add_word __ARGS((char_u *word, int len, int bad, int index, int undo));
-extern void init_spell_chartab __ARGS((void));
-extern int spell_check_sps __ARGS((void));
-extern void spell_suggest __ARGS((int count));
-extern void ex_spellrepall __ARGS((exarg_T *eap));
-extern void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap, int interactive));
-extern char_u *eval_soundfold __ARGS((char_u *word));
-extern void ex_spellinfo __ARGS((exarg_T *eap));
-extern void ex_spelldump __ARGS((exarg_T *eap));
-extern void spell_dump_compl __ARGS((buf_T *buf, char_u *pat, int ic, int *dir, int dumpflags_arg));
-extern char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
-extern int spell_word_start __ARGS((int startcol));
-extern void spell_expand_check_cap __ARGS((colnr_T col));
-extern int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
+int spell_check __ARGS((win_T *wp, char_u *ptr, hlf_T *attrp, int *capcol, int docount));
+int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, hlf_T *attrp));
+void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
+char_u *did_set_spelllang __ARGS((buf_T *buf));
+void spell_free_all __ARGS((void));
+void spell_reload __ARGS((void));
+int spell_check_msm __ARGS((void));
+void put_bytes __ARGS((FILE *fd, long_u nr, int len));
+void ex_mkspell __ARGS((exarg_T *eap));
+void ex_spell __ARGS((exarg_T *eap));
+void spell_add_word __ARGS((char_u *word, int len, int bad, int idx, int undo));
+void init_spell_chartab __ARGS((void));
+int spell_check_sps __ARGS((void));
+void spell_suggest __ARGS((int count));
+void ex_spellrepall __ARGS((exarg_T *eap));
+void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap, int interactive));
+char_u *eval_soundfold __ARGS((char_u *word));
+void ex_spellinfo __ARGS((exarg_T *eap));
+void ex_spelldump __ARGS((exarg_T *eap));
+void spell_dump_compl __ARGS((buf_T *buf, char_u *pat, int ic, int *dir, int dumpflags_arg));
+char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
+int spell_word_start __ARGS((int startcol));
+void spell_expand_check_cap __ARGS((colnr_T col));
+int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
 /* vim: set ft=c : */
index ad442e66f5dbb16bb775186db4a50a8cca3815a0..c33a890d272d8dc40a6188a50cb86716ec593dba 100644 (file)
@@ -1,47 +1,47 @@
 /* syntax.c */
-extern void syntax_start __ARGS((win_T *wp, linenr_T lnum));
-extern void syn_stack_free_all __ARGS((buf_T *buf));
-extern void syn_stack_apply_changes __ARGS((buf_T *buf));
-extern void syntax_end_parsing __ARGS((linenr_T lnum));
-extern int syntax_check_changed __ARGS((linenr_T lnum));
-extern int get_syntax_attr __ARGS((colnr_T col, int *can_spell));
-extern void syntax_clear __ARGS((buf_T *buf));
-extern void ex_syntax __ARGS((exarg_T *eap));
-extern int syntax_present __ARGS((buf_T *buf));
-extern void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
-extern char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
-extern int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp));
-extern int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
-extern void init_highlight __ARGS((int both, int reset));
-extern int load_colors __ARGS((char_u *name));
-extern void do_highlight __ARGS((char_u *line, int forceit, int init));
-extern void free_highlight __ARGS((void));
-extern void restore_cterm_colors __ARGS((void));
-extern void set_normal_colors __ARGS((void));
-extern char_u *hl_get_font_name __ARGS((void));
-extern void hl_set_font_name __ARGS((char_u *font_name));
-extern void hl_set_bg_color_name __ARGS((char_u *name));
-extern void hl_set_fg_color_name __ARGS((char_u *name));
-extern void clear_hl_tables __ARGS((void));
-extern int hl_combine_attr __ARGS((int char_attr, int prim_attr));
-extern attrentry_T *syn_gui_attr2entry __ARGS((int attr));
-extern int syn_attr2attr __ARGS((int attr));
-extern attrentry_T *syn_term_attr2entry __ARGS((int attr));
-extern attrentry_T *syn_cterm_attr2entry __ARGS((int attr));
-extern char_u *highlight_has_attr __ARGS((int id, int flag, int modec));
-extern char_u *highlight_color __ARGS((int id, char_u *what, int modec));
-extern long_u highlight_gui_color_rgb __ARGS((int id, int fg));
-extern int syn_name2id __ARGS((char_u *name));
-extern int highlight_exists __ARGS((char_u *name));
-extern char_u *syn_id2name __ARGS((int id));
-extern int syn_namen2id __ARGS((char_u *linep, int len));
-extern int syn_check_group __ARGS((char_u *pp, int len));
-extern int syn_id2attr __ARGS((int hl_id));
-extern int syn_id2colors __ARGS((int hl_id, guicolor_T *fgp, guicolor_T *bgp));
-extern int syn_get_final_id __ARGS((int hl_id));
-extern void highlight_gui_started __ARGS((void));
-extern int highlight_changed __ARGS((void));
-extern void set_context_in_highlight_cmd __ARGS((expand_T *xp, char_u *arg));
-extern char_u *get_highlight_name __ARGS((expand_T *xp, int idx));
-extern void free_highlight_fonts __ARGS((void));
+void syntax_start __ARGS((win_T *wp, linenr_T lnum));
+void syn_stack_free_all __ARGS((buf_T *buf));
+void syn_stack_apply_changes __ARGS((buf_T *buf));
+void syntax_end_parsing __ARGS((linenr_T lnum));
+int syntax_check_changed __ARGS((linenr_T lnum));
+int get_syntax_attr __ARGS((colnr_T col, int *can_spell));
+void syntax_clear __ARGS((buf_T *buf));
+void ex_syntax __ARGS((exarg_T *eap));
+int syntax_present __ARGS((buf_T *buf));
+void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
+char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
+int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp));
+int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
+void init_highlight __ARGS((int both, int reset));
+int load_colors __ARGS((char_u *name));
+void do_highlight __ARGS((char_u *line, int forceit, int init));
+void free_highlight __ARGS((void));
+void restore_cterm_colors __ARGS((void));
+void set_normal_colors __ARGS((void));
+char_u *hl_get_font_name __ARGS((void));
+void hl_set_font_name __ARGS((char_u *font_name));
+void hl_set_bg_color_name __ARGS((char_u *name));
+void hl_set_fg_color_name __ARGS((char_u *name));
+void clear_hl_tables __ARGS((void));
+int hl_combine_attr __ARGS((int char_attr, int prim_attr));
+attrentry_T *syn_gui_attr2entry __ARGS((int attr));
+int syn_attr2attr __ARGS((int attr));
+attrentry_T *syn_term_attr2entry __ARGS((int attr));
+attrentry_T *syn_cterm_attr2entry __ARGS((int attr));
+char_u *highlight_has_attr __ARGS((int id, int flag, int modec));
+char_u *highlight_color __ARGS((int id, char_u *what, int modec));
+long_u highlight_gui_color_rgb __ARGS((int id, int fg));
+int syn_name2id __ARGS((char_u *name));
+int highlight_exists __ARGS((char_u *name));
+char_u *syn_id2name __ARGS((int id));
+int syn_namen2id __ARGS((char_u *linep, int len));
+int syn_check_group __ARGS((char_u *pp, int len));
+int syn_id2attr __ARGS((int hl_id));
+int syn_id2colors __ARGS((int hl_id, guicolor_T *fgp, guicolor_T *bgp));
+int syn_get_final_id __ARGS((int hl_id));
+void highlight_gui_started __ARGS((void));
+int highlight_changed __ARGS((void));
+void set_context_in_highlight_cmd __ARGS((expand_T *xp, char_u *arg));
+char_u *get_highlight_name __ARGS((expand_T *xp, int idx));
+void free_highlight_fonts __ARGS((void));
 /* vim: set ft=c : */
index 00ca91663e9b9d78826a1cc537c2d6e7db9e634f..3f371f9b88df5d04993711e75c39204f3734dbf7 100644 (file)
@@ -1,9 +1,9 @@
 /* version.c */
-extern void make_version __ARGS((void));
-extern int highest_patch __ARGS((void));
-extern int has_patch __ARGS((int n));
-extern void ex_version __ARGS((exarg_T *eap));
-extern void list_version __ARGS((void));
-extern void intro_message __ARGS((int colon));
-extern void ex_intro __ARGS((exarg_T *eap));
+void make_version __ARGS((void));
+int highest_patch __ARGS((void));
+int has_patch __ARGS((int n));
+void ex_version __ARGS((exarg_T *eap));
+void list_version __ARGS((void));
+void intro_message __ARGS((int colon));
+void ex_intro __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
index ad40a527c4cdd74494ed790cfbe9302aeb860162..45a90b82a58209dd466177dc0eded87ba5ebf4c5 100644 (file)
@@ -1,62 +1,62 @@
 /* window.c */
-extern void do_window __ARGS((int nchar, long Prenum, int xchar));
-extern int win_split __ARGS((int size, int flags));
-extern int win_valid __ARGS((win_T *win));
-extern int win_count __ARGS((void));
-extern int make_windows __ARGS((int count, int vertical));
-extern void win_move_after __ARGS((win_T *win1, win_T *win2));
-extern void win_equal __ARGS((win_T *next_curwin, int current, int dir));
-extern void close_windows __ARGS((buf_T *buf, int keep_curwin));
-extern void win_close __ARGS((win_T *win, int free_buf));
-extern void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
-extern void win_free_all __ARGS((void));
-extern void close_others __ARGS((int message, int forceit));
-extern void curwin_init __ARGS((void));
-extern int win_alloc_first __ARGS((void));
-extern void win_init_size __ARGS((void));
-extern void free_tabpage __ARGS((tabpage_T *tp));
-extern int win_new_tabpage __ARGS((int after));
-extern int may_open_tabpage __ARGS((void));
-extern int make_tabpages __ARGS((int maxcount));
-extern int valid_tabpage __ARGS((tabpage_T *tpc));
-extern tabpage_T *find_tabpage __ARGS((int n));
-extern int tabpage_index __ARGS((tabpage_T *ftp));
-extern void goto_tabpage __ARGS((int n));
-extern void goto_tabpage_tp __ARGS((tabpage_T *tp));
-extern void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp));
-extern void tabpage_move __ARGS((int nr));
-extern void win_goto __ARGS((win_T *wp));
-extern win_T *win_find_nr __ARGS((int winnr));
-extern void win_enter __ARGS((win_T *wp, int undo_sync));
-extern win_T *buf_jump_open_win __ARGS((buf_T *buf));
-extern win_T *buf_jump_open_tab __ARGS((buf_T *buf));
-extern int win_alloc_lines __ARGS((win_T *wp));
-extern void win_free_lsize __ARGS((win_T *wp));
-extern void shell_new_rows __ARGS((void));
-extern void shell_new_columns __ARGS((void));
-extern void win_size_save __ARGS((garray_T *gap));
-extern void win_size_restore __ARGS((garray_T *gap));
-extern int win_comp_pos __ARGS((void));
-extern void win_setheight __ARGS((int height));
-extern void win_setheight_win __ARGS((int height, win_T *win));
-extern void win_setwidth __ARGS((int width));
-extern void win_setwidth_win __ARGS((int width, win_T *wp));
-extern void win_setminheight __ARGS((void));
-extern void win_drag_status_line __ARGS((win_T *dragwin, int offset));
-extern void win_drag_vsep_line __ARGS((win_T *dragwin, int offset));
-extern void win_comp_scroll __ARGS((win_T *wp));
-extern void command_height __ARGS((void));
-extern void last_status __ARGS((int morewin));
-extern int tabline_height __ARGS((void));
-extern char_u *grab_file_name __ARGS((long count, linenr_T *file_lnum));
-extern char_u *file_name_at_cursor __ARGS((int options, long count, linenr_T *file_lnum));
-extern char_u *file_name_in_line __ARGS((char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum));
-extern char_u *find_file_name_in_path __ARGS((char_u *ptr, int len, int options, long count, char_u *rel_fname));
-extern int path_with_url __ARGS((char_u *fname));
-extern int vim_isAbsName __ARGS((char_u *name));
-extern int vim_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-extern int min_rows __ARGS((void));
-extern int only_one_window __ARGS((void));
-extern void check_lnums __ARGS((int do_curwin));
-extern int win_hasvertsplit __ARGS((void));
+void do_window __ARGS((int nchar, long Prenum, int xchar));
+int win_split __ARGS((int size, int flags));
+int win_valid __ARGS((win_T *win));
+int win_count __ARGS((void));
+int make_windows __ARGS((int count, int vertical));
+void win_move_after __ARGS((win_T *win1, win_T *win2));
+void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+void close_windows __ARGS((buf_T *buf, int keep_curwin));
+void win_close __ARGS((win_T *win, int free_buf));
+void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+void win_free_all __ARGS((void));
+void close_others __ARGS((int message, int forceit));
+void curwin_init __ARGS((void));
+int win_alloc_first __ARGS((void));
+void win_init_size __ARGS((void));
+void free_tabpage __ARGS((tabpage_T *tp));
+int win_new_tabpage __ARGS((int after));
+int may_open_tabpage __ARGS((void));
+int make_tabpages __ARGS((int maxcount));
+int valid_tabpage __ARGS((tabpage_T *tpc));
+tabpage_T *find_tabpage __ARGS((int n));
+int tabpage_index __ARGS((tabpage_T *ftp));
+void goto_tabpage __ARGS((int n));
+void goto_tabpage_tp __ARGS((tabpage_T *tp));
+void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp));
+void tabpage_move __ARGS((int nr));
+void win_goto __ARGS((win_T *wp));
+win_T *win_find_nr __ARGS((int winnr));
+void win_enter __ARGS((win_T *wp, int undo_sync));
+win_T *buf_jump_open_win __ARGS((buf_T *buf));
+win_T *buf_jump_open_tab __ARGS((buf_T *buf));
+int win_alloc_lines __ARGS((win_T *wp));
+void win_free_lsize __ARGS((win_T *wp));
+void shell_new_rows __ARGS((void));
+void shell_new_columns __ARGS((void));
+void win_size_save __ARGS((garray_T *gap));
+void win_size_restore __ARGS((garray_T *gap));
+int win_comp_pos __ARGS((void));
+void win_setheight __ARGS((int height));
+void win_setheight_win __ARGS((int height, win_T *win));
+void win_setwidth __ARGS((int width));
+void win_setwidth_win __ARGS((int width, win_T *wp));
+void win_setminheight __ARGS((void));
+void win_drag_status_line __ARGS((win_T *dragwin, int offset));
+void win_drag_vsep_line __ARGS((win_T *dragwin, int offset));
+void win_comp_scroll __ARGS((win_T *wp));
+void command_height __ARGS((void));
+void last_status __ARGS((int morewin));
+int tabline_height __ARGS((void));
+char_u *grab_file_name __ARGS((long count, linenr_T *file_lnum));
+char_u *file_name_at_cursor __ARGS((int options, long count, linenr_T *file_lnum));
+char_u *file_name_in_line __ARGS((char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum));
+char_u *find_file_name_in_path __ARGS((char_u *ptr, int len, int options, long count, char_u *rel_fname));
+int path_with_url __ARGS((char_u *fname));
+int vim_isAbsName __ARGS((char_u *name));
+int vim_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+int min_rows __ARGS((void));
+int only_one_window __ARGS((void));
+void check_lnums __ARGS((int do_curwin));
+int win_hasvertsplit __ARGS((void));
 /* vim: set ft=c : */
index c72e215f40ba912b03b30868ae40310a40bdc96f..426fded0b483c2ed37e2bba6e013f30d23120e79 100644 (file)
@@ -1,49 +1,49 @@
 /* workshop.c */
-extern void workshop_init __ARGS((void));
-extern void workshop_postinit __ARGS((void));
-extern void ex_wsverb __ARGS((exarg_T *eap));
-extern char *workshop_get_editor_name __ARGS((void));
-extern char *workshop_get_editor_version __ARGS((void));
-extern void workshop_load_file __ARGS((char *filename, int line, char *frameid));
-extern void workshop_reload_file __ARGS((char *filename, int line));
-extern void workshop_show_file __ARGS((char *filename));
-extern void workshop_goto_line __ARGS((char *filename, int lineno));
-extern void workshop_front_file __ARGS((char *filename));
-extern void workshop_save_file __ARGS((char *filename));
-extern void workshop_save_files __ARGS((void));
-extern void workshop_quit __ARGS((void));
-extern void workshop_minimize __ARGS((void));
-extern void workshop_maximize __ARGS((void));
-extern void workshop_add_mark_type __ARGS((int idx, char *colorspec, char *sign));
-extern void workshop_set_mark __ARGS((char *filename, int lineno, int markId, int idx));
-extern void workshop_change_mark_type __ARGS((char *filename, int markId, int idx));
-extern void workshop_goto_mark __ARGS((char *filename, int markId, char *message));
-extern void workshop_delete_mark __ARGS((char *filename, int markId));
-extern int workshop_get_mark_lineno __ARGS((char *filename, int markId));
-extern void workshop_moved_marks __ARGS((char *filename));
-extern int workshop_get_font_height __ARGS((void));
-extern void workshop_footer_message __ARGS((char *message, int severity));
-extern void workshop_menu_begin __ARGS((char *label));
-extern void workshop_submenu_begin __ARGS((char *label));
-extern void workshop_submenu_end __ARGS((void));
-extern void workshop_menu_item __ARGS((char *label, char *verb, char *accelerator, char *acceleratorText, char *name, char *filepos, char *sensitive));
-extern void workshop_menu_end __ARGS((void));
-extern void workshop_toolbar_begin __ARGS((void));
-extern void workshop_toolbar_end __ARGS((void));
-extern void workshop_toolbar_button __ARGS((char *label, char *verb, char *senseVerb, char *filepos, char *help, char *sense, char *file, char *left));
-extern void workshop_frame_sensitivities __ARGS((VerbSense *vs));
-extern void workshop_set_option __ARGS((char *option, char *value));
-extern void workshop_balloon_mode __ARGS((Boolean on));
-extern void workshop_balloon_delay __ARGS((int delay));
-extern void workshop_show_balloon_tip __ARGS((char *tip));
-extern void workshop_hotkeys __ARGS((Boolean on));
-extern int workshop_get_positions __ARGS((void *clientData, char **filename, int *curLine, int *curCol, int *selStartLine, int *selStartCol, int *selEndLine, int *selEndCol, int *selLength, char **selection));
-extern char *workshop_test_getcurrentfile __ARGS((void));
-extern int workshop_test_getcursorrow __ARGS((void));
-extern int workshop_test_getcursorcol __ARGS((void));
-extern char *workshop_test_getcursorrowtext __ARGS((void));
-extern char *workshop_test_getselectedtext __ARGS((void));
-extern void workshop_save_sensitivity __ARGS((char *filename));
-extern void workshop_beval_cb __ARGS((BalloonEval *beval, int state));
-extern void findYourself __ARGS((char *argv0));
+void workshop_init __ARGS((void));
+void workshop_postinit __ARGS((void));
+void ex_wsverb __ARGS((exarg_T *eap));
+char *workshop_get_editor_name __ARGS((void));
+char *workshop_get_editor_version __ARGS((void));
+void workshop_load_file __ARGS((char *filename, int line, char *frameid));
+void workshop_reload_file __ARGS((char *filename, int line));
+void workshop_show_file __ARGS((char *filename));
+void workshop_goto_line __ARGS((char *filename, int lineno));
+void workshop_front_file __ARGS((char *filename));
+void workshop_save_file __ARGS((char *filename));
+void workshop_save_files __ARGS((void));
+void workshop_quit __ARGS((void));
+void workshop_minimize __ARGS((void));
+void workshop_maximize __ARGS((void));
+void workshop_add_mark_type __ARGS((int idx, char *colorspec, char *sign));
+void workshop_set_mark __ARGS((char *filename, int lineno, int markId, int idx));
+void workshop_change_mark_type __ARGS((char *filename, int markId, int idx));
+void workshop_goto_mark __ARGS((char *filename, int markId, char *message));
+void workshop_delete_mark __ARGS((char *filename, int markId));
+int workshop_get_mark_lineno __ARGS((char *filename, int markId));
+void workshop_moved_marks __ARGS((char *filename));
+int workshop_get_font_height __ARGS((void));
+void workshop_footer_message __ARGS((char *message, int severity));
+void workshop_menu_begin __ARGS((char *label));
+void workshop_submenu_begin __ARGS((char *label));
+void workshop_submenu_end __ARGS((void));
+void workshop_menu_item __ARGS((char *label, char *verb, char *accelerator, char *acceleratorText, char *name, char *filepos, char *sensitive));
+void workshop_menu_end __ARGS((void));
+void workshop_toolbar_begin __ARGS((void));
+void workshop_toolbar_end __ARGS((void));
+void workshop_toolbar_button __ARGS((char *label, char *verb, char *senseVerb, char *filepos, char *help, char *sense, char *file, char *left));
+void workshop_frame_sensitivities __ARGS((VerbSense *vs));
+void workshop_set_option __ARGS((char *option, char *value));
+void workshop_balloon_mode __ARGS((Boolean on));
+void workshop_balloon_delay __ARGS((int delay));
+void workshop_show_balloon_tip __ARGS((char *tip));
+void workshop_hotkeys __ARGS((Boolean on));
+int workshop_get_positions __ARGS((void *clientData, char **filename, int *curLine, int *curCol, int *selStartLine, int *selStartCol, int *selEndLine, int *selEndCol, int *selLength, char **selection));
+char *workshop_test_getcurrentfile __ARGS((void));
+int workshop_test_getcursorrow __ARGS((void));
+int workshop_test_getcursorcol __ARGS((void));
+char *workshop_test_getcursorrowtext __ARGS((void));
+char *workshop_test_getselectedtext __ARGS((void));
+void workshop_save_sensitivity __ARGS((char *filename));
+void workshop_beval_cb __ARGS((BalloonEval *beval, int state));
+void findYourself __ARGS((char *argv0));
 /* vim: set ft=c : */
index 1f52f2955262ce89bb8c95df188a8f5b4cd7353f..da8300290af16074d56aece80e41d4b9ab1383c8 100644 (file)
@@ -105,3 +105,7 @@ caught a:000[3]
 ['aa', '', 'bb', 'cc', '']
 ['a', 'b', 'c']
 ['', 'a', '', 'b', '', 'c', '']
+1
+1
+0
+0
index 452325cb24a2c7a48488cdcfde70b374bc18e12c..c32529d4cd484fec26c7dd26ec124ef68a806d36 100644 (file)
@@ -1,5 +1,5 @@
 CODE PRELOAD EXECUTEONLY
 DATA MULTIPLE SHARED
-DESCRIPTION 'Vim 7.0'
+DESCRIPTION 'Vim 7.1a'
 STACKSIZE 16000
 HEAPSIZE 10000
index fed5076a523eaba08a70e62f23bb81a3d6554bd8..c423e6cc5fb72b2040361021124c9e5edd3ba70f 100644 (file)
@@ -99,7 +99,9 @@ main(void)
      */
     retval = system(p);
 
-    if (retval != 0)
+    if (retval == -1)
+       perror("vimrun system(): ");
+    else if (retval != 0)
        printf("shell returned %d\n", retval);
 
     if (!silent)