summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2007-05-05 17:54:07 +0000
committerBram Moolenaar <Bram@vim.org>2007-05-05 17:54:07 +0000
commit9964e468c0209f6b8286e0b08109817c845a3079 (patch)
tree3c53288cff0d4c2e32169d8eb4cd53cc343ad0bc
parentd5ab34bd5ecc748d5502f149c476968e5ec2b7c9 (diff)
downloadvim-git-9964e468c0209f6b8286e0b08109817c845a3079.tar.gz
updated for version 7.1a
-rw-r--r--README.txt2
-rw-r--r--README_amibin.txt2
-rw-r--r--README_dos.txt2
-rw-r--r--README_extra.txt2
-rw-r--r--README_mac.txt2
-rw-r--r--README_ole.txt2
-rw-r--r--runtime/autoload/adacomplete.vim109
-rw-r--r--runtime/autoload/csscomplete.vim740
-rw-r--r--runtime/autoload/decada.vim75
-rw-r--r--runtime/autoload/getscript.vim501
-rw-r--r--runtime/autoload/netrw.vim4597
-rw-r--r--runtime/autoload/pythoncomplete.vim94
-rw-r--r--runtime/autoload/rubycomplete.vim896
-rw-r--r--runtime/autoload/syntaxcomplete.vim117
-rw-r--r--runtime/autoload/xmlcomplete.vim24
-rw-r--r--runtime/autoload/zip.vim138
-rw-r--r--runtime/colors/blue.vim90
-rw-r--r--runtime/colors/torte.vim6
-rw-r--r--runtime/doc/change.txt20
-rw-r--r--runtime/doc/cmdline.txt6
-rw-r--r--runtime/doc/debug.txt2
-rw-r--r--runtime/doc/debugger.txt2
-rw-r--r--runtime/doc/develop.txt4
-rw-r--r--runtime/doc/diff.txt17
-rw-r--r--runtime/doc/digraph.txt15
-rw-r--r--runtime/doc/editing.txt14
-rw-r--r--runtime/doc/fold.txt2
-rw-r--r--runtime/doc/gui_w16.txt2
-rw-r--r--runtime/doc/gui_w32.txt7
-rw-r--r--runtime/doc/gui_x11.txt15
-rw-r--r--runtime/doc/hangulin.txt2
-rw-r--r--runtime/doc/help.txt15
-rw-r--r--runtime/doc/if_cscop.txt2
-rw-r--r--runtime/doc/if_mzsch.txt9
-rw-r--r--runtime/doc/if_ole.txt2
-rw-r--r--runtime/doc/if_perl.txt2
-rw-r--r--runtime/doc/if_pyth.txt2
-rw-r--r--runtime/doc/if_ruby.txt2
-rw-r--r--runtime/doc/if_sniff.txt2
-rw-r--r--runtime/doc/insert.txt58
-rw-r--r--runtime/doc/mbyte.txt5
-rw-r--r--runtime/doc/mlang.txt4
-rw-r--r--runtime/doc/motion.txt20
-rw-r--r--runtime/doc/os_390.txt2
-rw-r--r--runtime/doc/os_beos.txt2
-rw-r--r--runtime/doc/os_mac.txt2
-rw-r--r--runtime/doc/os_msdos.txt2
-rw-r--r--runtime/doc/os_risc.txt2
-rw-r--r--runtime/doc/os_unix.txt2
-rw-r--r--runtime/doc/pi_getscript.txt406
-rw-r--r--runtime/doc/pi_gzip.txt2
-rw-r--r--runtime/doc/pi_netrw.txt959
-rw-r--r--runtime/doc/pi_paren.txt4
-rw-r--r--runtime/doc/pi_tar.txt34
-rw-r--r--runtime/doc/pi_vimball.txt71
-rw-r--r--runtime/doc/pi_zip.txt24
-rw-r--r--runtime/doc/print.txt4
-rw-r--r--runtime/doc/quickref.txt5
-rw-r--r--runtime/doc/recover.txt2
-rw-r--r--runtime/doc/rileft.txt2
-rw-r--r--runtime/doc/russian.txt2
-rw-r--r--runtime/doc/sign.txt2
-rw-r--r--runtime/doc/sponsor.txt4
-rw-r--r--runtime/doc/tags236
-rw-r--r--runtime/doc/term.txt4
-rw-r--r--runtime/doc/tips.txt6
-rw-r--r--runtime/doc/uganda.txt26
-rw-r--r--runtime/doc/undo.txt2
-rw-r--r--runtime/doc/usr_02.txt64
-rw-r--r--runtime/doc/usr_03.txt6
-rw-r--r--runtime/doc/usr_08.txt8
-rw-r--r--runtime/doc/usr_09.txt2
-rw-r--r--runtime/doc/usr_10.txt7
-rw-r--r--runtime/doc/usr_25.txt4
-rw-r--r--runtime/doc/usr_26.txt2
-rw-r--r--runtime/doc/usr_29.txt2
-rw-r--r--runtime/doc/usr_32.txt2
-rw-r--r--runtime/doc/usr_42.txt2
-rw-r--r--runtime/doc/usr_44.txt2
-rw-r--r--runtime/doc/usr_90.txt2
-rw-r--r--runtime/doc/usr_toc.txt2
-rw-r--r--runtime/doc/version5.txt8
-rw-r--r--runtime/doc/version6.txt6
-rw-r--r--runtime/doc/vim2html.pl1
-rw-r--r--runtime/doc/visual.txt4
-rwxr-xr-xruntime/doc/xxd-it.12
-rw-r--r--runtime/doc/xxd-pl.UTF-8.12
-rw-r--r--runtime/doc/xxd-ru.UTF-8.12
-rw-r--r--runtime/ftplugin/ada.vim357
-rw-r--r--runtime/ftplugin/bst.vim15
-rw-r--r--runtime/ftplugin/cobol.vim266
-rw-r--r--runtime/ftplugin/debchangelog.vim27
-rw-r--r--runtime/ftplugin/hamster.vim61
-rw-r--r--runtime/ftplugin/haskell.vim2
-rw-r--r--runtime/ftplugin/mail.vim5
-rw-r--r--runtime/ftplugin/make.vim4
-rw-r--r--runtime/ftplugin/ocaml.vim8
-rw-r--r--runtime/indent/ada.vim78
-rw-r--r--runtime/indent/eruby.vim51
-rw-r--r--runtime/indent/html.vim13
-rw-r--r--runtime/indent/htmldjango.vim12
-rw-r--r--runtime/indent/jsp.vim17
-rw-r--r--runtime/indent/ocaml.vim2
-rw-r--r--runtime/indent/python.vim4
-rw-r--r--runtime/indent/ruby.vim14
-rw-r--r--runtime/indent/vhdl.vim111
-rw-r--r--runtime/keymap/bulgarian-bds.vim127
-rw-r--r--runtime/keymap/bulgarian-phonetic.vim108
-rw-r--r--runtime/keymap/thaana.vim3
-rw-r--r--runtime/keymap/vietnamese-viqr_utf-8.vim160
-rw-r--r--runtime/lang/menu_sl_si.cp1250.vim294
-rw-r--r--runtime/lang/menu_sl_si.latin2.vim294
-rw-r--r--runtime/lang/menu_slovak_slovak_republic.1250.vim2
-rw-r--r--runtime/plugin/README.txt20
-rw-r--r--runtime/plugin/vimballPlugin.vim30
-rw-r--r--runtime/plugin/zipPlugin.vim24
-rw-r--r--runtime/spell/da/main.aap2
-rw-r--r--runtime/spell/pl/main.aap40
-rw-r--r--runtime/spell/pt/pt_PT.diff50
-rw-r--r--runtime/synmenu.vim296
-rw-r--r--runtime/syntax/amiga.vim6
-rw-r--r--runtime/syntax/aspvbs.vim8
-rw-r--r--runtime/syntax/autoit.vim1111
-rw-r--r--runtime/syntax/automake.vim27
-rw-r--r--runtime/syntax/b.vim2
-rw-r--r--runtime/syntax/bzr.vim51
-rw-r--r--runtime/syntax/c.vim17
-rw-r--r--runtime/syntax/cmusrc.vim309
-rw-r--r--runtime/syntax/csh.vim16
-rw-r--r--runtime/syntax/dcl.vim6
-rw-r--r--runtime/syntax/desc.vim4
-rw-r--r--runtime/syntax/elmfilt.vim8
-rw-r--r--runtime/syntax/eruby.vim8
-rw-r--r--runtime/syntax/foxpro.vim45
-rw-r--r--runtime/syntax/fvwm.vim906
-rw-r--r--runtime/syntax/hamster.vim382
-rw-r--r--runtime/syntax/ia64.vim3
-rw-r--r--runtime/syntax/ibasic.vim176
-rw-r--r--runtime/syntax/initng.vim91
-rw-r--r--runtime/syntax/javascript.vim6
-rw-r--r--runtime/syntax/lua.vim29
-rw-r--r--runtime/syntax/lynx.vim128
-rw-r--r--runtime/syntax/make.vim10
-rw-r--r--runtime/syntax/maple.vim10
-rw-r--r--runtime/syntax/masm.vim366
-rw-r--r--runtime/syntax/muttrc.vim163
-rw-r--r--runtime/syntax/named.vim44
-rw-r--r--runtime/syntax/netrw.vim13
-rw-r--r--runtime/syntax/objc.vim4
-rw-r--r--runtime/syntax/ocaml.vim20
-rw-r--r--runtime/syntax/php.vim734
-rw-r--r--runtime/syntax/privoxy.vim71
-rw-r--r--runtime/syntax/remind.vim17
-rw-r--r--runtime/syntax/ruby.vim149
-rw-r--r--runtime/syntax/sd.vim75
-rw-r--r--runtime/syntax/sh.vim73
-rw-r--r--runtime/syntax/tcsh.vim19
-rw-r--r--runtime/syntax/tex.vim38
-rw-r--r--runtime/syntax/vim.vim59
-rw-r--r--runtime/syntax/xdefaults.vim6
-rw-r--r--runtime/tutor/tutor.cs812
-rw-r--r--runtime/tutor/tutor.cs.cp1250812
-rw-r--r--runtime/tutor/tutor.cs.utf-8812
-rw-r--r--runtime/tutor/tutor.hu823
-rw-r--r--runtime/tutor/tutor.hu.utf-8823
-rw-r--r--runtime/tutor/tutor.it752
-rw-r--r--runtime/tutor/tutor.tr.utf-8813
-rw-r--r--src/GvimExt/GvimExt.reg4
-rw-r--r--src/if_xcmdsrv.c4
-rw-r--r--src/keymap.h2
-rw-r--r--src/move.c8
-rw-r--r--src/os_vms.c8
-rw-r--r--src/po/README_mvc.txt28
-rw-r--r--src/po/de.po10
-rw-r--r--src/po/pl.UTF-8.po43
-rw-r--r--src/po/pl.cp1250.po43
-rw-r--r--src/proto/charset.pro108
-rw-r--r--src/proto/diff.pro48
-rw-r--r--src/proto/ex_eval.pro60
-rw-r--r--src/proto/ex_getln.pro108
-rw-r--r--src/proto/fold.pro78
-rw-r--r--src/proto/gui.pro126
-rw-r--r--src/proto/gui_gtk_x11.pro142
-rw-r--r--src/proto/gui_xmdlg.pro2
-rw-r--r--src/proto/hashtab.pro24
-rw-r--r--src/proto/if_tcl.pro16
-rw-r--r--src/proto/main.pro48
-rw-r--r--src/proto/mark.pro56
-rw-r--r--src/proto/memfile.pro32
-rw-r--r--src/proto/message.pro138
-rw-r--r--src/proto/netbeans.pro46
-rw-r--r--src/proto/normal.pro48
-rw-r--r--src/proto/option.pro108
-rw-r--r--src/proto/os_riscos.pro94
-rw-r--r--src/proto/os_vms.pro24
-rw-r--r--src/proto/os_win16.pro20
-rw-r--r--src/proto/popupmnu.pro12
-rw-r--r--src/proto/regexp.pro30
-rw-r--r--src/proto/spell.pro48
-rw-r--r--src/proto/syntax.pro90
-rw-r--r--src/proto/version.pro14
-rw-r--r--src/proto/window.pro120
-rw-r--r--src/proto/workshop.pro94
-rw-r--r--src/testdir/test55.ok4
-rw-r--r--src/vim16.def2
-rw-r--r--src/vimrun.c4
206 files changed, 18815 insertions, 6000 deletions
diff --git a/README.txt b/README.txt
index 3289023d8..5f9d0e985 100644
--- a/README.txt
+++ b/README.txt
@@ -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
diff --git a/README_amibin.txt b/README_amibin.txt
index c6bf424ba..c2df760c9 100644
--- a/README_amibin.txt
+++ b/README_amibin.txt
@@ -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.
diff --git a/README_dos.txt b/README_dos.txt
index c153e5392..7cfef57c3 100644
--- a/README_dos.txt
+++ b/README_dos.txt
@@ -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.
diff --git a/README_extra.txt b/README_extra.txt
index a1de23fb4..649f62c49 100644
--- a/README_extra.txt
+++ b/README_extra.txt
@@ -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.
diff --git a/README_mac.txt b/README_mac.txt
index 39857110a..50d939ee7 100644
--- a/README_mac.txt
+++ b/README_mac.txt
@@ -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.
diff --git a/README_ole.txt b/README_ole.txt
index 4e8ba470d..d6b20d94b 100644
--- a/README_ole.txt
+++ b/README_ole.txt
@@ -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
index 000000000..28d68f63d
--- /dev/null
+++ b/runtime/autoload/adacomplete.vim
@@ -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
diff --git a/runtime/autoload/csscomplete.vim b/runtime/autoload/csscomplete.vim
index a6f7041ff..c9a5997c1 100644
--- a/runtime/autoload/csscomplete.vim
+++ b/runtime/autoload/csscomplete.vim
@@ -1,422 +1,407 @@
" 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
index 000000000..9f8aaf260
--- /dev/null
+++ b/runtime/autoload/decada.vim
@@ -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
index 000000000..bfe057cc3
--- /dev/null
+++ b/runtime/autoload/getscript.vim
@@ -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
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index a2f7efc02..6e80a6926 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -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,
@@ -14,29 +14,53 @@
" 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")
let g:netrw_dav_cmd = "cadaver"
@@ -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("$")
+ 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()
- " 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
- endif
-
-" call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".filereadable(a:tfile))
-
- " make sure file is being displayed
- redraw!
-" call Dret("NetGetFile")
+" 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,266 +1158,845 @@ 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)
+" 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
- if exists("s:netrw_skipbrowse")
- unlet s:netrw_skipbrowse
-" call Dret("NetBrowse")
+" ===========================================
+" 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.">)")
+
+ " readcmd=='t': simply do nothing
+ if a:readcmd == 't'
+" call Dret("NetGetFile : skip read of <".a:tfile.">")
return
endif
- call s:NetOptionSave()
+ " get name of remote filename (ie. url and all)
+ let rfile= bufname("%")
+" call Decho("rfile<".rfile.">")
- " 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
+ if exists("*NetReadFixup")
+ " for the use of NetReadFixup (not otherwise used internally)
+ let line2= line("$")
+ endif
+
+ if a:readcmd[0] == '%'
+ " get file into buffer
+" call Decho("get file into buffer")
+
+ " 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
- 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()
+" call Decho("keepalt exe file ".tfile)
+ keepalt exe "silent! keepalt file ".tfile
+
+ " 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
- call s:NetOptionRestore()
-" call Dret("NetBrowse")
+ " 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("$")
+
+ 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
+
+ else
+ " 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
- " use buffer-oriented WinVars if buffer ones exist but window ones don't
- call s:UseBufWinVars()
+ " 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
- " set up menus
- let b:netrw_browser_active= 1
- call s:NetMenu(1)
+ " update the Buffers menu
+ if has("gui") && has("gui_running")
+ silent! emenu Buffers.Refresh\ menu
+ endif
- " make this buffer modifiable
- setlocal ma nonu nowrap
+" call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".s:FileReadable(a:tfile))
- " 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()
+ " make sure file is being displayed
+ redraw!
+" call Dret("NetGetFile")
+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.">)")
+
+ " initialization
+ let b:netrw_method = 0
+ let g:netrw_machine = ""
+ let b:netrw_fname = ""
+ let g:netrw_port = ""
+ let g:netrw_choice = a:choice
+
+ " Patterns:
+ " mipf : a:machine a:id password filename Use ftp
+ " mf : a:machine filename Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
+ " 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://\([^/]\{-}\)/\(.*\)\=$'
+
+" 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
- 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 .">")
+ " 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',"")
+
+ " http://user@hostname/...path-to-file
+ elseif match(a:choice,httpurm) == 0
+" call Decho("http://...")
+ let b:netrw_method = 5
+ let g:netrw_machine= substitute(a:choice,httpurm,'\1',"")
+ let b:netrw_fname = substitute(a:choice,httpurm,'\2',"")
+
+ " dav://hostname[:port]/..path-to-file..
+ elseif match(a:choice,davurm) == 0
+" call Decho("dav://...")
+ 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',"")
+
+ " rsync://user@hostname/...path-to-file
+ elseif match(a:choice,rsyncurm) == 0
+" call Decho("rsync://...")
+ let b:netrw_method = 7
+ let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"")
+ let b:netrw_fname = substitute(a:choice,rsyncurm,'\2',"")
+
+ " ftp://[user@]hostname[[:#]port]/...path-to-file
+ elseif match(a:choice,ftpurm) == 0
+" call Decho("ftp://...")
+ 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 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
+ let b:netrw_method= 3
+ endif
+ 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',"")
+
+ " 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',"")
+
+ " 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 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
+
+ " sftp://user@hostname/...path-to-file
+ elseif match(a:choice,sftpurm) == 0
+" call Decho("sftp://...")
+ let b:netrw_method = 9
+ let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"")
+ let b:netrw_fname = substitute(a:choice,sftpurm,'\2',"")
+
+ " Issue an rcp: hostname:filename" (this one should be last)
+ elseif match(a:choice,rcphf) == 0
+" call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">")
+ 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 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,'')
+ if !exists("g:netrw_quiet")
+ call netrw#ErrorMsg(s:WARNING,"cannot determine method",45)
+ endif
+ let b:netrw_method = -1
endif
- if exists("b:netrw_method")
-" call Decho("setting w:netrw_method<".b:netrw_method.">")
- let w:netrw_method= b:netrw_method
+ " remove any leading [:#] from port number
+ if g:netrw_port != ""
+ let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
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"
+" 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
+
+" ------------------------------------------------------------------------
+" 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
- " optionally sort in reverse
- if g:netrw_sort_direction =~ "^r" && listcmd == "dir"
- let listcmd= listcmd."r"
+" ---------------------------------------------------------------------
+" 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
+
+ " 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
+" ===========================================
+
+" ---------------------------------------------------------------------
+" 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
-" 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")
+" ---------------------------------------------------------------------
+" 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 fname !~ '[\/]$' && fname !~ '^"'
+ elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"'
" looks like a regular file, attempt transfer
-" call Decho("attempt transfer as regular file<".dirname.">")
+" call Decho("attempt transfer as regular file<".a: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')
+ " 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
+ " remote-read the requested file into current buffer {{{3
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: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<".fname.">")
+" call Dret("NetBrowse : file<".s:fname.">")
return
endif
- " ---------------------------------------------------------------------
- " 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")
+ " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
+ call s:UseBufWinVars()
+
+ " 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
+ " under unix, when the root directory is encountered, the result
+ " from the preceding substitute is an empty string.
+ let b:netrw_curdir= '/'
+ endif
+ endif
+ if !a:islocal && b:netrw_curdir !~ '/$'
+ let b:netrw_curdir= b:netrw_curdir.'/'
+ endif
+" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
+
+ " ------------
+ " (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
+
+ " --------------------------------
+ " remote handling: {{{3
+ " --------------------------------
+ else
+" 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
+
+ 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)
+
+ " -----------------------
+ " Directory Listing: {{{3
+ " -----------------------
+ setlocal noro ma
+ call s:BrowserMaps(a:islocal)
+ call s:PerformListing(a:islocal)
+
+" call Dret("NetBrowse")
+ return
+endfun
+
+" ---------------------------------------------------------------------
+" 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
+
else
-" call Decho("generate a new buffer")
- keepjumps keepalt enew!
+ " 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
- " rename file to reflect where its from
- setlocal bt=nofile bh=wipe nobl noswf
+ " 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
+ exe 'silent! keepalt file '.escape(dirname,s:netrw_cd_escape)
+ endif
+" call Decho("named enew buffer<".expand("%").">")
+
+ else " Re-use the buffer
+
+" 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
+" 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
+
+ " 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
+
+" call Dret("s:NetGetBuffer 0 : buf#".bufnr("%"))
+ return 0
+endfun
+
+" ---------------------------------------------------------------------
+" 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 Dredir("ls!")
+" call Decho("exe setlocal ts=".g:netrw_maxfilenamelen)
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
+ if g:netrw_fastbrowse > a:islocal
setlocal bh=hide
else
setlocal bh=delete
endif
+" call Dret("s:NetrwListSettings")
+endfun
+
+" ---------------------------------------------------------------------
+" 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
" 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
+ call s:NetBookmarkDir(3,b:netrw_curdir)
+
+ " 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
+
+ let sortby= g:netrw_sort_by
if g:netrw_sort_direction =~ "^r"
- let sortby = sortby." reversed"
+ let sortby= sortby." reversed"
endif
+ " 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
- let w:netrw_bannercnt= w:netrw_bannercnt + 1
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 time")
" sorted by size or date
keepjumps put ='\" Sorted by '.sortby
+ let w:netrw_bannercnt= w:netrw_bannercnt + 1
endif
+ exe w:netrw_bannercnt
+
+ " 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
-" call Decho("g:netrw_hide=".g:netrw_hide)
if g:netrw_hide == 1
keepjumps put ='\" Hiding: '.g:netrw_list_hide
else
@@ -1363,211 +2004,528 @@ fun! s:NetBrowse(dirname)
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 ='\" ==========================================================================='
-
- " 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
-
- if w:netrw_longlist == 0 || w:netrw_longlist == 2
- " shorten the listing
-" call Decho("generate short listing")
- exe "keepjumps ".w:netrw_bannercnt
-
- " cleanup
- if g:netrw_ftp_browse_reject != ""
- exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
- endif
- silent! keepjumps %s/\r$//e
-
- " 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
-
- " 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'
- endif
+ keepjumps put ='\" ============================================================================'
+ let w:netrw_bannercnt= w:netrw_bannercnt + 2
- 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
+ " 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("$"))
- " set up syntax highlighting
+ " 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=
- " 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
- " manipulate the directory listing (hide, sort)
+ " 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)")
+
+ " 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:NetrwListHide()
+ call s:NetListHide()
endif
-
- 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
-
- 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
-
if line("$") >= w:netrw_bannercnt
+" call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">")
+
if g:netrw_sort_by =~ "^n"
+ " sort by name
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 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
- 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'
- 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 s:NetrwWideListing()
- if line("$") >= w:netrw_bannercnt
+ " convert to wide/tree listing {{{3
+" call Decho("modify display if wide/tree listing style")
+ call s:NetWideListing()
+ call s:NetTreeListing(b:netrw_curdir)
+
+ if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
" place cursor on the top-left corner of the file listing
- exe "keepjumps ".w:netrw_bannercnt
+" call Decho("place cursor on top-left corner of file listing")
+ exe 'silent '.w:netrw_bannercnt
norm! 0
endif
+ " record previous current directory
+ let w:netrw_prvdir= b:netrw_curdir
+" call Decho("record netrw_prvdir<".w:netrw_prvdir.">")
+
+ " save certain window-oriented variables into buffer-oriented variables {{{3
+ call s:SetBufWinVars()
call s:NetOptionRestore()
- setlocal nomod noma nonu
-" call Dret("NetBrowse")
- return
+ " 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
+
+" call Dret("s:PerformListing : curpos<".string(getpos(".")).">")
endfun
" ---------------------------------------------------------------------
-" NetBrowseChgDir: {{{2
-fun! s:NetBrowseChgDir(dirname,newdir)
-" call Dfunc("NetBrowseChgDir(dirname<".a:dirname."> newdir<".a:newdir.">)")
+" 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 : "").">")
- let dirname= a:dirname
- let newdir = a:newdir
+ 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
+ let dirpat= '[\/]$'
+ endif
+" call Decho("dirname<".dirname."> dirpat<".dirpat.">")
+
+ 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
- if newdir !~ '[\/]$'
+ if newdir !~ dirpat
" 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 |
+" 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
- " handling a file, didn't split, so possibly remove menu
- call s:NetMenu(0)
+ 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
-" call Decho("handling a file: dirname<".dirname.">")
+
+ elseif newdir =~ '^/'
+ " just go to the new directory spec
+" call Decho('case "just go to new directory spec": newdir<'.newdir.'>')
+ let dirname= newdir
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
- endif
- %d
+" call Decho('case "refresh directory listing": newdir == "./"')
elseif newdir == '../'
" go up one directory
- let trailer= substitute(a:dirname,'^\(\w\+://\%(\w\+@\)\=\w\+/\)\(.*\)$','\2','')
+" 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)")
+
+ else
+ " 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
+
+ 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
- if trailer =~ '^\%(\.\./\)*$'
- " tack on a ../"
- let dirname= dirname.'../'
+ " 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
+
+ " 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
+ 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
- " strip off a directory name from dirname
- let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','')
+ " go down one directory
+ let dirname= substitute(treedir,'/*$','/','')
+" call Decho("go down one dir: treedir<".treedir.">")
endif
-" call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">")
else
" go down one directory
- let dirname= dirname.newdir
+ let dirname= s:ComposePath(dirname,newdir)
" call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
endif
-" call Dret("NetBrowseChgDir <".dirname.">")
+" call Dret("s:NetBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">")
return dirname
endfun
" ---------------------------------------------------------------------
+" 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
+
+" ---------------------------------------------------------------------
+
+" ===========================================
+" 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
+" call Dret("NetPreview")
+endfun
+
+" ---------------------------------------------------------------------
+" 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()
+
+ 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("s:NetSortStyle : netrw_sort_by<".g:netrw_sort_by.">")
+endfun
+
+" ---------------------------------------------------------------------
+" Remote Directory Browsing Support: {{{1
+" ===========================================
+
+" ---------------------------------------------------------------------
+" 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
+
+ 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 s:NetOptionRestore()
+" call Dret("s:RemoteListing")
+ return
+ endif " (remote handling sanity check)
+
+ if exists("b:netrw_method")
+" call Decho("setting w:netrw_method<".b:netrw_method.">")
+ let w:netrw_method= b:netrw_method
+ endif
+
+ 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 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
+
+ " cleanup
+ if g:netrw_ftp_browse_reject != ""
+ exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
+ endif
+ silent! keepjumps %s/\r$//e
+
+ " 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
+ 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
+ endif
+
+ 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
+ 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
+
+ " 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
+ endif
+
+ 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
+ endif
+
+" 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
+
+" ---------------------------------------------------------------------
" NetGetWord: it gets the directory named under the cursor {{{2
fun! s:NetGetWord()
-" call Dfunc("NetGetWord() line#".line(".")." longlist=".g:netrw_longlist." virtcol=".virtcol("."))
+" call Dfunc("NetGetWord() line#".line(".")." liststyle=".g:netrw_liststyle." virtcol=".virtcol("."))
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
+ " 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_longlist= 0
+ let w:netrw_liststyle= s:THINLIST
endif
-" call Decho("w:netrw_longlist=".w:netrw_longlist)
+" call Decho("w:netrw_liststyle=".w:netrw_liststyle)
endif
if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt
@@ -1576,34 +2534,43 @@ fun! s:NetGetWord()
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
endif
- elseif w:netrw_longlist == 0
+ elseif w:netrw_liststyle == s:THINLIST
" call Decho("thin column handling")
norm! 0
let dirname= getline(".")
- elseif w:netrw_longlist == 1
+ elseif w:netrw_liststyle == s:LONGLIST
" call Decho("long column handling")
norm! 0
- let dirname= substitute(getline("."),'^\(\%(\S\+\s\)*\S\+\).\{-}$','\1','e')
+ 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")
@@ -1615,6 +2582,7 @@ fun! s:NetGetWord()
" call Decho("computed cpf")
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.">")
@@ -1649,6 +2617,7 @@ fun! s:NetBrowseRm(usrhost,path) range
if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
" attempt to remove file
+" call Decho("attempt to remove file")
if !all
echohl Statement
call inputsave()
@@ -1669,9 +2638,9 @@ fun! s:NetBrowseRm(usrhost,path) range
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).'"'
+ let netrw_rm_cmd= s:MakeSshCmd(g:netrw_rm_cmd)
" call Decho("attempt to remove file: system(".netrw_rm_cmd.")")
- let ret= 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]'
@@ -1680,6 +2649,7 @@ fun! s:NetBrowseRm(usrhost,path) range
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)] ")
@@ -1697,21 +2667,21 @@ fun! s:NetBrowseRm(usrhost,path) range
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.'"'."'"
+ 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= system(netrw_rmdir_cmd)
+ let ret= s:System("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("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= system(netrw_rmf_cmd)
+ let ret= s:System("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()
+ call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22)
endif
endif
endif
@@ -1724,11 +2694,10 @@ fun! s:NetBrowseRm(usrhost,path) range
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
+ " refresh the (remote) directory listing
+" call Decho("refresh remote directory listing")
+ call netrw#NetSavePosn()
+ call s:NetRefresh(0,s:NetBrowseChgDir(0,'./'))
" call Dret("NetBrowseRm")
endfun
@@ -1740,7 +2709,7 @@ fun! s:NetBrowseRename(usrhost,path) range
" preparation for removing multiple files/directories
let ctr = a:firstline
- let rename_cmd = substitute(g:netrw_rename_cmd,'\<HOSTNAME\>',a:usrhost,'')
+ let rename_cmd = s:MakeSshCmd(g:netrw_rename_cmd)
" attempt to rename files/directories
while ctr <= a:lastline
@@ -1760,7 +2729,7 @@ fun! s:NetBrowseRename(usrhost,path) range
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).'"')
+ let ret= s:System("system",rename_cmd.' "'.escape(oldname,s:netrw_cd_escape).'" "'.escape(newname,s:netrw_cd_escape).'"')
endif
let ctr= ctr + 1
@@ -1768,22 +2737,25 @@ fun! s:NetBrowseRename(usrhost,path) range
" refresh the directory
let curline= line(".")
- call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
+ call s:NetBrowse(0,s:NetBrowseChgDir(0,'./'))
exe "keepjumps ".curline
" call Dret("NetBrowseRename")
endfun
" ---------------------------------------------------------------------
" NetRefresh: {{{2
-fun! s:NetRefresh(dirname,islocal)
-" call Dfunc("NetRefresh(dirname<".a:dirname.">,islocal=".a:islocal.")")
- call netrw#NetSavePosn()
- set ma
+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(a:dirname)
+ call netrw#LocalBrowseCheck(a:dirname)
else
- call s:NetBrowse(a:dirname)
+ call s:NetBrowse(a:islocal,a:dirname)
endif
call netrw#NetRestorePosn()
redraw!
@@ -1793,33 +2765,70 @@ endfun
" ---------------------------------------------------------------------
" NetSplit: mode {{{2
" =0 : net and o
-" =1 : net and v
-" =2 : local and o
-" =3 : local and v
+" =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)
call s:SaveWinVars()
+
if a:mode == 0
+ " remote and o
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
+ 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"
- call s:CopyWinVars()
- exe "norm! 0"
- call s:NetBrowse(s:NetBrowseChgDir(expand("%"),s:NetGetWord()))
- elseif a:mode ==2
+ let s:didsplit= 1
+ call s:RestoreWinVars()
+ call s:NetBrowse(0,s:NetBrowseChgDir(0,s:NetGetWord()))
+ unlet s:didsplit
+
+ elseif a:mode == 3
+ " local and o
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()))
- else
+ 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"
- call s:CopyWinVars()
- exe "norm! 0"
- call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,s:NetGetWord()))
+ let s:didsplit= 1
+ call s:RestoreWinVars()
+ call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,s:NetGetWord()))
+ unlet s:didsplit
+
+ else
+ call netrw#ErrorMsg(s:ERROR,"(NetSplit) unsupported mode=".a:mode,45)
endif
" call Dret("NetSplit")
@@ -1845,7 +2854,7 @@ fun! netrw#NetBrowseX(fname,remote)
" usually have "kdeinit" running, though... (tnx Mikolaj Machowski)
if !exists("s:haskdeinit")
if has("unix")
- silent! let s:haskdeinit= system('ps -e') =~ 'kdeinit'
+ let s:haskdeinit= s:System("system",'ps -e') =~ 'kdeinit'
if v:shell_error
let s:haskdeinit = 0
endif
@@ -1857,10 +2866,11 @@ fun! netrw#NetBrowseX(fname,remote)
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.">")
+ 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
- set bh=delete
+ setlocal bh=delete
+" call Decho("exe w! ".fname)
exe "w! ".fname
q
endif
@@ -1874,20 +2884,21 @@ fun! netrw#NetBrowseX(fname,remote)
endif
" call Decho("redir{".redir."} srr{".&srr."}")
- if exists("g:netrw_browsex_viewer") && executable(g:netrw_browsex_viewer)
+ " 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)
+
+ elseif 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)
- 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
- endif
+" 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
- " 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, '%#').'"'
+ call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let ret= v:shell_error
elseif has("unix") && executable("gnome-open") && !s:haskdeinit
@@ -1917,11 +2928,14 @@ fun! netrw#NetBrowseX(fname,remote)
" return to prior buffer (directory listing)
if a:remote == 1 && fname != a:fname
" call Decho("deleting temporary file<".fname.">")
- call delete(fname)
+ call s:System("delete",fname)
endif
if a:remote == 1
- set bh=delete bt=nofile noswf
+ setlocal bh=delete bt=nofile
+ if g:netrw_use_noswf
+ setlocal noswf
+ endif
exe "norm! \<c-o>"
redraw!
endif
@@ -1936,32 +2950,35 @@ endfun
" 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)
" 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"
+ setlocal ma ff=unix noro
+
+ " 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"
".........................................
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
+ if exists("g:netrw_ftpextracmd")
+ exe "put ='".g:netrw_ftpextracmd."'"
+" call Decho("filter input: ".getline("."))
endif
exe "put ='".a:listcmd."'"
-" call Decho("ftp: ".getline("."))
-" redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
+" exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))'
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
+" 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
-" 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
+" 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
".........................................
@@ -1984,41 +3001,46 @@ fun! s:NetBrowseFtpCmd(path,listcmd)
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."'"
" 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"
+" 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
- echo "***warning*** unable to comply with your request<" . choice . ">"
+ 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
+ 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'
+ 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
- " ftp's ls doesn't seem to include ./ or ../
- if !search('^\.\/$','wn')
- exe 'keepjumps '.curline
- if a:path !~ '^$'
- put ='../'
- endif
+ " ftp's listing doesn't seem to include ./ or ../
+ if !search('^\.\/$\|\s\.\/$','wn')
+ exe 'keepjumps '.w:netrw_bannercnt
put ='./'
- exe 'keepjumps '.curline
+ endif
+ if !search('^\.\.\/$\|\s\.\.\/$','wn')
+ exe 'keepjumps '.w:netrw_bannercnt
+ put ='../'
endif
" restore settings
@@ -2027,15 +3049,17 @@ fun! s:NetBrowseFtpCmd(path,listcmd)
endfun
" ---------------------------------------------------------------------
-" NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2
+" NetListHide: 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.">")
+fun! s:NetListHide()
+" call Dfunc("NetListHide() hide=".g:netrw_hide." listhide<".g:netrw_list_hide.">")
- " find a character not in the "hide" string to used as a separator
- " for :g and :v commands
+ " 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('~!@#$%^&*{};:,<.>/?|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
+ let sep = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
" call Decho("sep=".sep)
while listhide != ""
@@ -2061,7 +3085,7 @@ fun! s:NetrwListHide()
exe 'silent keepjumps '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
endif
-" call Dret("NetrwListHide")
+" call Dret("NetListHide")
endfun
" ---------------------------------------------------------------------
@@ -2069,6 +3093,9 @@ endfun
fun! s:NetHideEdit(islocal)
" call Dfunc("NetHideEdit(islocal=".a:islocal.")")
+ " save current cursor position
+ let s:nhe_curpos= getpos(".")
+
" get new hiding list from user
call inputsave()
let newhide= input("Edit Hiding List: ",g:netrw_list_hide)
@@ -2077,19 +3104,19 @@ fun! s:NetHideEdit(islocal)
" call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
" 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)
- endif
+ silent call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,"./"))
+
+ " restore cursor position
+ call setpos('.',s:nhe_curpos)
+ unlet s:nhe_curpos
" call Dret("NetHideEdit")
endfun
" ---------------------------------------------------------------------
" NetSortSequence: allows user to edit the sorting sequence
-fun! s:NetSortSequence(mode)
-" call Dfunc("NetSortSequence(mode=".a:mode.")")
+fun! s:NetSortSequence(islocal)
+" call Dfunc("NetSortSequence(islocal=".a:islocal.")")
call inputsave()
let newsortseq= input("Edit Sorting Sequence: ",g:netrw_sort_sequence)
@@ -2097,77 +3124,87 @@ fun! s:NetSortSequence(mode)
" 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 netrw#NetSavePosn()
+ call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./'))
" call Dret("NetSortSequence")
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
+" 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").">")
- if w:netrw_longlist == 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')
- elseif w:netrw_longlist == 1
+ elseif w:netrw_liststyle == s:LONGLIST
" use long list
" call Decho("use long list")
let g:netrw_list_cmd = g:netrw_list_cmd." -l"
- else
+ 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')
+
+ elseif w:netrw_liststyle == s:TREELIST
+" call Decho("use tree list")
+ let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
+
+ 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
+ setlocal ma noro
- " clear buffer - this will cause NetBrowse/LocalBrowse to do a refresh
+ " clear buffer - this will cause NetBrowse/LocalBrowseCheck to do a refresh
+" call Decho("clear buffer<".expand("%")."> with :%d")
%d
" 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
+ call netrw#NetSavePosn()
+ call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./'))
" 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')
+ 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
-" call Dret("NetLongList : w:netrw_longlist=".w:netrw_longlist)
+" call Dret("NetListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
endfun
" ---------------------------------------------------------------------
-" NetrwWideListing: {{{2
-fun! s:NetrwWideListing()
+" NetWideListing: {{{2
+fun! s:NetWideListing()
- if w:netrw_longlist == 2
-" call Dfunc("NetrwWideListing() w:netrw_longlist=".w:netrw_longlist)
+ 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
- set ma
+ 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("NetrwWideListing")
+" call Dret("NetWideListing")
return
endif
" call Decho("max file strlen+1=".b:netrw_cpf)
@@ -2181,11 +3218,12 @@ fun! s:NetrwWideListing()
" 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),"\\"))/'
+ 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
@@ -2198,14 +3236,187 @@ fun! s:NetrwWideListing()
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
-" call Dret("NetrwWideListing")
+ setlocal noma nomod ro
+" call Dret("NetWideListing")
endif
endfun
" ---------------------------------------------------------------------
+" 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
+
+" call Decho("treedir<".treedir.">")
+
+ " 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
+
+ " 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,'//$','/','')
+
+" " now force a refresh
+" call Decho("clear buffer<".expand("%")."> with :%d")
+" setlocal ma noro
+" keepjumps %d
+
+" call Dret("NetTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
+ return treedir
+endfun
+
+" ---------------------------------------------------------------------
+" NetTreeDisplay: recursive tree display {{{2
+fun! s:NetTreeDisplay(dir,depth)
+" call Dfunc("NetTreeDisplay(dir<".a:dir."> depth<".a:depth.">)")
+
+ " insure that there are no folds
+ setlocal nofen
+
+ " install ../ and shortdir
+ if a:depth == ""
+ call setline(line("$")+1,'../')
+" call Decho("setline#".line("$")." ../ (depth is zero)")
+ endif
+ 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.">")
+
+ " append a / to dir if its missing one
+ let dir= a:dir
+ if dir !~ '/$'
+ let dir= dir.'/'
+ endif
+
+ " 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
+
+" ---------------------------------------------------------------------
+" 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
+
+ " insure that we have at least an empty treedict
+ if !exists("w:netrw_treedict")
+ let w:netrw_treedict= {}
+ endif
+
+ " 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
+ let fname= ""
+ endif
+
+ " 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
+ endif
+
+" call Dret("NetTreeListing : bufname<".expand("%").">")
+ 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.
@@ -2249,16 +3460,14 @@ fun! s:NetMakeDir(usrhost)
" 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()
+ call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a directory!",24)
endif
" call Dret("NetMakeDir : directory<".newdirname."> exists previously")
return
endif
- if filereadable(fullnewdir)
+ if s: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()
+ call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a file!",25)
endif
" call Dret("NetMakeDir : file<".newdirname."> exists previously")
return
@@ -2272,8 +3481,8 @@ fun! s:NetMakeDir(usrhost)
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.'"'
+" 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
@@ -2284,36 +3493,25 @@ fun! s:NetMakeDir(usrhost)
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
+ call netrw#NetSavePosn()
+ call s:NetRefresh(1,s:NetBrowseChgDir(1,'./'))
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()
+ call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",26)
endif
redraw!
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
+ 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
- let linenum= line(".")
- norm! H0
- let hline = line(".")
- call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
- exe "norm! ".hline."G0z\<CR>"
- exe linenum
+ call netrw#NetSavePosn()
+ call s:NetRefresh(0,s:NetBrowseChgDir(0,'./'))
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()
+ call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",27)
endif
redraw!
endif
@@ -2326,36 +3524,33 @@ endfun
" 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
+" 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)
- 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 ""
- endif
-" call Dret("NetBookmarkDir - ignoring")
- return
- endif
+" 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 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
+" 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"
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
@@ -2363,7 +3558,10 @@ fun! s:NetBookmarkDir(chg,curdir)
endif
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
@@ -2371,6 +3569,7 @@ fun! s:NetBookmarkDir(chg,curdir)
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
@@ -2386,6 +3585,7 @@ fun! s:NetBookmarkDir(chg,curdir)
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
let first = 0
let cnt = ( cnt - 1 ) % g:netrw_dirhistmax
@@ -2393,24 +3593,36 @@ fun! s:NetBookmarkDir(chg,curdir)
let cnt= cnt + g:netrw_dirhistmax
endif
endwhile
+ if didwork
+ call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ endif
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}= 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
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}.">")
- exe "e ".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"
@@ -2418,10 +3630,17 @@ fun! s:NetBookmarkDir(chg,curdir)
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}.">")
- exe "e ".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
@@ -2430,39 +3649,93 @@ fun! s:NetBookmarkDir(chg,curdir)
echo "Sorry, no successor directory exists yet"
endif
endif
+ call s:NetBookmarkMenu()
" call Dret("NetBookmarkDir")
endfun
" ---------------------------------------------------------------------
+" 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
+
+ " 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
+
+ " 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
+
+" ---------------------------------------------------------------------
" NetObtain: obtain file under cursor (for remote browsing support) {{{2
-fun! netrw#NetObtain(...)
-" call Dfunc("NetObtain() a:0=".a:0)
+fun! netrw#NetObtain(vismode,...) range
+" call Dfunc("NetObtain(vismode=".a:vismode.") a:0=".a:0)
- if a:0==0
- " no arguments -- use word under cursor
+ if a:vismode == 0
+ " normal mode
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
+ 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
- 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.">")
+ elseif a:vismode == 2
+ " multiple file mode
+ let fname= a:1
+" call Decho("visual mode handling: <".fname.">")
endif
" NetrwStatusLine support - for obtaining support
@@ -2472,11 +3745,11 @@ fun! netrw#NetObtain(...)
" call Decho("method=".w:netrw_method)
if executable("ftp")
" call Decho("ftp is executable, method=".w:netrw_method)
- let curdir = expand("%")
+ let curdir = b:netrw_curdir
let path = substitute(curdir,'ftp://[^/]\+/','','e')
let curline= line(".")
let endline= line("$")+1
- set ma
+ setlocal ma noro
keepjumps $
" call Decho("getcwd<".getcwd().">")
" call Decho("curdir<".curdir.">")
@@ -2526,12 +3799,14 @@ fun! netrw#NetObtain(...)
" call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
endif
- if a:path != ""
- put ='cd '.a:path
+ if path != ""
+ put ='cd '.path
" call Decho('cd '.a:path)
endif
- exe "put ='".a:cmd."'"
-" call Decho("ftp: ".a:cmd)
+ put ='get '.fname
+" call Decho("ftp: get ".fname)
+ put ='quit'
+" call Decho("ftp: quit")
" perform ftp:
" -i : turns off interactive prompting from ftp
@@ -2542,17 +3817,16 @@ fun! netrw#NetObtain(...)
".........................................
else
- echo "***warning*** unable to comply with your request<" . choice . ">"
+ 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
+ setlocal noma nomod ro
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()
+ call netrw#ErrorMsg(s:ERROR,"this system doesn't support ftp",29)
endif
" restore status line
let &stl = s:netrw_users_stl
@@ -2570,7 +3844,7 @@ fun! netrw#NetObtain(...)
else
" scp: Method#4
" call Decho("using scp")
- let curdir = expand("%")
+ let curdir = b:netrw_curdir
let path = substitute(curdir,'scp://[^/]\+/','','e')
" call Decho("path<".path.">")
if exists("g:netrw_port") && g:netrw_port != ""
@@ -2578,13 +3852,8 @@ fun! netrw#NetObtain(...)
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,' ?&')." ."
+" 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
@@ -2611,7 +3880,6 @@ fun! s:NetPrevWinOpen(islocal)
" 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.">")
let didsplit = 0
@@ -2640,8 +3908,7 @@ fun! s:NetPrevWinOpen(islocal)
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()
+ call netrw#ErrorMsg(s:ERROR,"unable to write <".bufname.">!",30)
if didsplit
q
else
@@ -2653,8 +3920,8 @@ fun! s:NetPrevWinOpen(islocal)
elseif choice == 2
" No -- don't worry about changed file, just browse anyway
- set nomod
- echohl WarningMsg | echo "***netrw*** ".bufname." changes abandoned" | echohl None
+ setlocal nomod
+ call netrw#ErrorMsg(s:WARNING,bufname." changes abandoned",31)
else
" Cancel -- don't do this
@@ -2671,9 +3938,9 @@ fun! s:NetPrevWinOpen(islocal)
endif
if a:islocal
- call s:LocalBrowse(s:LocalBrowseChgDir(curdir,curword))
+ call netrw#LocalBrowseCheck(s:NetBrowseChgDir(a:islocal,curword))
else
- call s:NetBrowse(s:NetBrowseChgDir(expand("%"),curword))
+ call s:NetBrowse(a:islocal,s:NetBrowseChgDir(a:islocal,curword))
endif
" call Dret("NetPrevWinOpen")
endfun
@@ -2686,40 +3953,41 @@ fun! s:NetMenu(domenu)
let g:NetrwMenuPriority= 80
endif
- if has("menu") && has("gui_running") && &go =~ 'm'
+ 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
- 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>"
+ 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()
@@ -2757,7 +4025,8 @@ fun! s:NetMenu(domenu)
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
+ exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
+ silent! unlet s:netrw_menu_enabled
endif
endif
" call Dret("NetMenu")
@@ -2770,329 +4039,36 @@ endfun
" ==========================================
" ---------------------------------------------------------------------
-" 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.
+" 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 netrw#DirBrowse(a:dirname)
+ silent! call s:NetBrowse(1,a:dirname)
endif
+" call Dret("LocalBrowseCheck")
" not a directory, ignore it
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!")
-
- if exists("s:netrw_skipbrowse")
- unlet s:netrw_skipbrowse
-" call Dret("DirBrowse")
- return
- endif
- if &fo =~ '[ta]'
- set fo-=t
- set fo-=a
- echohl Warning
- echo '***warning*** directory browsing and formatoptions "ta" are incompatible'
- echohl None
- endif
-
- call s:NetOptionSave()
- 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().">")
- endif
-
- 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
- endif
-
- " use buffer-oriented WinVars if buffer ones exist but window ones don't
- call s:UseBufWinVars()
-
- " set up menus
- let b:netrw_browser_active= 1
- call s:NetMenu(1)
-
- " 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
-
- " 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
-
- " set up ShellCmdPost handling. Append current buffer to browselist
- call s:LocalFastBrowser()
-
- " 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= '/'
- 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
- 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)
-
- " 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
- endif
- keepalt silent! %d
-
- " ---------------------------
- " Perform Directory Listing:
- if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
- echo "(netrw) Processing your browsing request..."
- endif
-
- " save current directory on directory history list
- call s:NetBookmarkDir(3,b:netrw_curdir)
-
- " 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
-
- let sortby= g:netrw_sort_by
- if g:netrw_sort_direction =~ "^r"
- let sortby= sortby." reversed"
- endif
-
- " 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
-
- " Hiding... -or- Showing...
- if g:netrw_list_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 ='\" ============================================================================'
- 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)
-
- " generate the requested directory listing
- call s:LocalBrowseList()
-
- " set up syntax highlighting
- if has("syntax")
- setlocal ft=netrw
- if !exists("g:syntax_on") || !g:syntax_on
- setlocal ft=
- endif
- endif
-
- " manipulate the directory listing (hide, sort)
- if line("$") >= w:netrw_bannercnt
- if g:netrw_hide && g:netrw_list_hide != ""
- call s:NetrwListHide()
- endif
- if line("$") >= w:netrw_bannercnt
-
- if g:netrw_sort_by =~ "^n"
- call s:SetSort()
-
- 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'
-
- 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
-
- 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
- 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
- endif
-
-" call Dret("DirBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
-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.">")
+" 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(dirname."/*")
-" call Decho("glob(dirname<".dirname."/.*>)=".filelist)
+ let filelist = glob(s:ComposePath(dirname,"*"))
+" call Decho("glob(dirname<".dirname."/*>)=".filelist)
if filelist != ""
let filelist= filelist."\n"
endif
- let filelist= filelist.glob(dirname."/.*")
+ let filelist= filelist.glob(s:ComposePath(dirname,".*"))
" call Decho("glob(dirname<".dirname."/.*>)=".glob(dirname.".*"))
" if the directory name includes a "$", and possibly other characters,
@@ -3100,16 +4076,21 @@ fun! s:LocalBrowseList()
if filelist !~ '[\\/]\.[\\/]\=\(\n\|$\)'
" call Decho("forcibly tacking on .")
if filelist == ""
- let filelist= dirname."."
+ let filelist= s:ComposePath(dirname,"./")
else
- let filelist= filelist."\n".b:netrw_curdir."."
+ 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".b:netrw_curdir.".."
-" call Decho("filelist<".filelist.">")
+ 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"))
@@ -3138,12 +4119,12 @@ fun! s:LocalBrowseList()
let pfile= substitute(pfile,'//$','/','e')
endif
let pfile= strpart(pfile,dirnamelen)
- let pfile= substitute(pfile,'^/','','e')
+ let pfile= substitute(pfile,'^[/\\]','','e')
" call Decho(" ")
" call Decho("filename<".filename.">")
" call Decho("pfile <".pfile.">")
- if w:netrw_longlist == 1
+ 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))
@@ -3178,65 +4159,9 @@ fun! s:LocalBrowseList()
" cleanup any windows mess at end-of-line
silent! keepjumps %s/\r$//e
setlocal ts=32
+" call Decho("setlocal ts=32")
-" call Dret("LocalBrowseList")
-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)
-
- let dirname= substitute(a:dirname,'\\','','ge')
- let newdir = a:newdir
-
- 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
-
- 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
-
- elseif newdir == './'
- " refresh the directory list
-" call Decho("refresh directory listing")
-
- elseif newdir == '../'
- " go up one directory
- let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e')
-" call Decho("go up one dir: dirname<".dirname.">")
-
- else
- " go down one directory
- let dirname= dirname.newdir
-" call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
- endif
-
-" call Dret("LocalBrowseChgDir <".dirname.">")
- return dirname
+" call Dret("LocalListing")
endfun
" ---------------------------------------------------------------------
@@ -3246,22 +4171,32 @@ endfun
" 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
- if bufwinnr(ibuf) == -1
-" call Decho("wiping buf#".ibuf)
+" 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
- else
+ elseif index(tabpagebuflist(),ibuf) != -1
" call Decho("refresh buf#".ibuf.'-> win#'.bufwinnr(ibuf))
exe bufwinnr(ibuf)."wincmd w"
- call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./'),1)
+ call s:NetRefresh(1,s:NetBrowseChgDir(1,'./'))
endif
let ibl= ibl + 1
endfor
@@ -3297,7 +4232,7 @@ fun! s:LocalBrowseRm(path) range
endif
norm! 0
- let rmfile= a:path."/".curword
+ let rmfile= s:ComposePath(a:path,curword)
" call Decho("rmfile<".rmfile.">")
if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
@@ -3320,7 +4255,7 @@ fun! s:LocalBrowseRm(path) range
endif
if all || ok =~ 'y\%[es]' || ok == ""
- let ret= delete(rmfile)
+ let ret= s:System("delete",rmfile)
" call Decho("errcode=".v:shell_error." ret=".ret)
elseif ok =~ 'q\%[uit]'
break
@@ -3345,25 +4280,23 @@ fun! s:LocalBrowseRm(path) range
if all || ok =~ 'y\%[es]' || ok == ""
" call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")')
- call 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= delete(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 system("rm ".rmfile)
+ call s:System("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()
+ call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",34)
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()
+ call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",35)
endif
endif
endif
@@ -3379,7 +4312,7 @@ endif
" refresh the directory
let curline= line(".")
" call Decho("refresh the directory")
- call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./'),1)
+ call s:NetRefresh(1,s:NetBrowseChgDir(1,'./'))
exe curline
" call Dret("LocalBrowseRm")
@@ -3409,7 +4342,7 @@ fun! s:LocalBrowseRename(path) range
endif
norm! 0
- let oldname= a:path."/".curword
+ let oldname= s:ComposePath(a:path,curword)
" call Decho("oldname<".oldname.">")
call inputsave()
@@ -3423,26 +4356,31 @@ fun! s:LocalBrowseRename(path) range
endwhile
" 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 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()")
+" 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
@@ -3466,6 +4404,7 @@ fun! s:LocalFastBrowser()
" 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!
@@ -3485,180 +4424,227 @@ fun! s:LocalObtain()
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()
+ call netrw#ErrorMsg(s:ERROR,"local browsing directory doesn't exist!",36)
else
- echohl Error | echo "***netrw*** local browsing directory and current directory are identical"
- call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ call netrw#ErrorMsg(s:ERROR,"local browsing directory and current directory are identical",37)
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()
- 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
+" 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("Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a: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.">")
+
+ " save registers
+ silent! let keepregstar = @*
+ silent! let keepregplus = @+
+ silent! let keepregslash= @/
" if dosplit or file has been modified
- if a:dosplit || &modified
+ if a:dosplit || &modified || a:style == 6
+" call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style)
call s:SaveWinVars()
if a:style == 0 " Explore, Sexplore
- exe g:netrw_winsize."wincmd s"
" call Decho("style=0: Explore or Sexplore")
+ exe g:netrw_winsize."wincmd s"
elseif a:style == 1 "Explore!, Sexplore!
- exe g:netrw_winsize."wincmd v"
" call Decho("style=1: Explore! or Sexplore!")
+ exe g:netrw_winsize."wincmd v"
elseif a:style == 2 " Hexplore
- exe "bel ".g:netrw_winsize."wincmd s"
" call Decho("style=2: Hexplore")
+ exe "bel ".g:netrw_winsize."wincmd s"
elseif a:style == 3 " Hexplore!
- exe "abo ".g:netrw_winsize."wincmd s"
" call Decho("style=3: Hexplore!")
+ exe "abo ".g:netrw_winsize."wincmd s"
elseif a:style == 4 " Vexplore
- exe "lefta ".g:netrw_winsize."wincmd v"
" call Decho("style=4: Vexplore")
+ exe "lefta ".g:netrw_winsize."wincmd v"
elseif a:style == 5 " Vexplore!
- exe "rightb ".g:netrw_winsize."wincmd v"
" call Decho("style=5: Vexplore!")
+ exe "rightb ".g:netrw_winsize."wincmd v"
+
+ elseif a:style == 6 " Texplore
+ call s:SaveBufVars()
+" call Decho("style = 6: Texplore")
+ tabnew
+ call s:RestoreBufVars()
endif
- call s:CopyWinVars()
+ call s:RestoreWinVars()
endif
norm! 0
- if a:1 =~ '^\*/'
+" 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
+" 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
+
+ if dirname =~ '^\*/'
" Explore */pattern
- let pattern= substitute(a:1,'^\*/\(.*\)$','\1','')
-" call Decho("Explore */pat: a:1<".a:1."> -> pattern<".pattern.">")
- elseif a:1 =~ '^\*\*//'
+" 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
- let pattern = substitute(a:1,'^\*\*//','','')
+" call Decho("case Explore **//pattern")
+ let pattern = substitute(dirname,'^\*\*//','','')
let starstarpat = 1
-" call Decho("Explore **//pat: a:1<".a:1."> -> pattern<".pattern.">")
+" call Decho("Explore **//pat: dirname<".dirname."> -> pattern<".pattern.">")
endif
- if a:1 == "" && a:indx >= 0
+ if dirname == "" && a:indx >= 0
" Explore Hexplore Vexplore Sexplore
-" call Decho("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(newdir<".newdir.">)")
- call s:NetBrowse(newdir)
+" call Decho("calling NetBrowse(0,newdir<".newdir.">)")
+ call s:NetBrowse(0,newdir)
else
if newdir == ""|let newdir= getcwd()|endif
-" call Decho("calling LocalBrowse(newdir<".newdir.">)")
- call s:LocalBrowse(newdir)
+" call Decho("calling LocalBrowseCheck(newdir<".newdir.">)")
+ call netrw#LocalBrowseCheck(newdir)
endif
+ call search('\<'.substitute(curfile,'^.*/','','e').'\>','cW')
- elseif a:1 =~ '^\*\*/' || a:indx < 0 || a:1 =~ '^\*/'
+ elseif dirname =~ '^\*\*/' || a:indx < 0 || dirname =~ '^\*/'
" 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")
+" 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
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=".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
- 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")
+ 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
+ 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)
+" 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)
elseif indx == -2
"Pexplore
+" call Decho("case Pexplore: (indx=".indx.")")
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")
+ 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
+ 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]
- while indx > 0 && 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("Explore -- initialize")
+" 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("building list based on pattern<".pattern."> cwd<".getcwd().">")
+" call Decho("pattern exists: building list 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)')
+" 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."/*"
- 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
+ let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)')
+ if &hls | let keepregslash= s:ExplorePatHls(pattern) | 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')
+" 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 == 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")
+ 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
@@ -3667,13 +4653,13 @@ fun! netrw#Explore(indx,dosplit,style,...)
let w:netrw_explore_indx= indx
" call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
- " sanity check
+ " wrap the indx around, but issue a note
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
+" 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."]"
@@ -3681,9 +4667,12 @@ fun! netrw#Explore(indx,dosplit,style,...)
let newdir= substitute(dirfile,'/[^/]*$','','e')
" call Decho("newdir<".newdir.">")
-" call Decho("calling LocalBrowse(newdir<".newdir.">)")
- call s:LocalBrowse(newdir)
- if w:netrw_longlist == 0 || w:netrw_longlist == 1
+" 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")
@@ -3695,19 +4684,48 @@ fun! netrw#Explore(indx,dosplit,style,...)
" call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
else
+" call Decho("vim does not have path_extra")
if !exists("g:netrw_quiet")
- echohl WarningMsg | echo "***netrw*** your vim needs the +path_extra feature for Exploring with **!" | echohl None | echohl None
+ call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
endif
- call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ silent! let @* = keepregstar
+ silent! let @+ = keepregstar
+ silent! let @/ = keepregslash
+" call Dret("netrw#Explore : missing +path_extra")
+ return
endif
else
-" call Decho("Explore newdir<".a:1.">")
- let newdir= a:1
- call s:LocalBrowse(newdir)
+" 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
-" call Dret("Explore")
+ silent! let @* = keepregstar
+ silent! let @+ = keepregstar
+ silent! let @/ = keepregslash
+" call Dret("netrw#Explore : @/<".@/.">")
+endfun
+
+" ---------------------------------------------------------------------
+" 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
" ---------------------------------------------------------------------
@@ -3746,7 +4764,7 @@ fun! s:SetupNetrwStatusLine(statline)
" insure that windows have a statusline
" make sure statusline is displayed
let &stl=a:statline
- set laststatus=2
+ setlocal laststatus=2
" call Decho("stl=".&stl)
redraw!
@@ -3757,7 +4775,7 @@ endfun
" NetrwStatusLine: {{{2
fun! NetrwStatusLine()
- " vvv NetrwStatusLine() debugging vvv
+" vvv NetrwStatusLine() debugging vvv
" let g:stlmsg=""
" if !exists("w:netrw_explore_bufnr")
" let g:stlmsg="!X<explore_bufnr>"
@@ -3772,7 +4790,7 @@ fun! NetrwStatusLine()
" if !exists("w:netrw_explore_list")
" let g:stlmsg=" !X<explore_list>"
" endif
- " ^^^ NetrwStatusLine() debugging ^^^
+" ^^^ 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
@@ -3804,395 +4822,6 @@ fun! s:NetGetcwd(doesc)
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.">)")
-
- " initialization
- let b:netrw_method = 0
- let g:netrw_machine = ""
- let b:netrw_fname = ""
- let g:netrw_port = ""
- let g:netrw_choice = a:choice
-
- " Patterns:
- " mipf : a:machine a:id password filename Use ftp
- " mf : a:machine filename Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
- " 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://\([^/]\{-}\)/\(.*\)\=$'
-
-" 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
-
- " 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',"")
-
- " http://user@hostname/...path-to-file
- elseif match(a:choice,httpurm) == 0
-" call Decho("http://...")
- let b:netrw_method = 5
- let g:netrw_machine= substitute(a:choice,httpurm,'\1',"")
- let b:netrw_fname = substitute(a:choice,httpurm,'\2',"")
-
- " dav://hostname[:port]/..path-to-file..
- elseif match(a:choice,davurm) == 0
-" call Decho("dav://...")
- 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',"")
-
- " rsync://user@hostname/...path-to-file
- elseif match(a:choice,rsyncurm) == 0
-" call Decho("rsync://...")
- let b:netrw_method = 7
- let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"")
- let b:netrw_fname = substitute(a:choice,rsyncurm,'\2',"")
-
- " ftp://[user@]hostname[[:#]port]/...path-to-file
- elseif match(a:choice,ftpurm) == 0
-" call Decho("ftp://...")
- 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
-
- 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',"")
-
- " 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',"")
-
- " 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 filereadable(expand("$HOME/.netrc"))
- let b:netrw_method = 2
- let g:netrw_machine = substitute(a:choice,mf,'\1',"")
- let b:netrw_fname = substitute(a:choice,mf,'\2',"")
- endif
-
- " sftp://user@hostname/...path-to-file
- elseif match(a:choice,sftpurm) == 0
-" call Decho("sftp://...")
- let b:netrw_method = 9
- let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"")
- let b:netrw_fname = substitute(a:choice,sftpurm,'\2',"")
-
- " Issue an rcp: hostname:filename" (this one should be last)
- elseif match(a:choice,rcphf) == 0
-" call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">")
- 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
- endif
-
- 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()
- endif
- let b:netrw_method = -1
- endif
-
- " remove any leading [:#] from port number
- if g:netrw_port != ""
- let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
- endif
-
-" call Decho("a:choice <".a:choice.">")
-" call Decho("b:netrw_method <".b:netrw_method.">")
-" call Decho("g:netrw_machine<".g:netrw_machine.">")
-" 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
-
-" ------------------------------------------------------------------------
-" 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
-
- " 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
-
-" ------------------------------------------------------------------------
-" 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
- 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
-
-" call Dret("NetOptionSave")
-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
-
- 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
- endif
- unlet w:swfkeep
- endif
-
-" call Dret("NetOptionRestore")
-endfun
-
-" ------------------------------------------------------------------------
-" 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
-
-" ---------------------------------------------------------------------
-" 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
-
-" " call Dret("NetSort")
- endfun
-endif
-
-" ---------------------------------------------------------------------
" SetSort: sets up the sort based on the g:netrw_sort_sequence {{{2
" What this function does is to compute a priority for the patterns
" in the g:netrw_sort_sequence. It applies a substitute to any
@@ -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
" ---------------------------------------------------------------------
-" CopyWinVars: (used by Explore()) {{{2
-fun! s:CopyWinVars()
-" call Dfunc("CopyWinVars()")
+" 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
+
+" ---------------------------------------------------------------------
+" 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
" ---------------------------------------------------------------------
-" SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{2
+" 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
+
+" ---------------------------------------------------------------------
+" 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
diff --git a/runtime/autoload/pythoncomplete.vim b/runtime/autoload/pythoncomplete.vim
index ee217ed2c..2f52f97e2 100644
--- a/runtime/autoload/pythoncomplete.vim
+++ b/runtime/autoload/pythoncomplete.vim
@@ -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(' ',' ')
+ 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)
diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim
index 9cde21494..5b728607c 100644
--- a/runtime/autoload/rubycomplete.vim
+++ b/runtime/autoload/rubycomplete.vim
@@ -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)
@@ -12,20 +13,20 @@
" {{{ 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:
diff --git a/runtime/autoload/syntaxcomplete.vim b/runtime/autoload/syntaxcomplete.vim
index 5e0d013c6..36bd9f426 100644
--- a/runtime/autoload/syntaxcomplete.vim
+++ b/runtime/autoload/syntaxcomplete.vim
@@ -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
-
diff --git a/runtime/autoload/xmlcomplete.vim b/runtime/autoload/xmlcomplete.vim
index 78d30582a..79d913d63 100644
--- a/runtime/autoload/xmlcomplete.vim
+++ b/runtime/autoload/xmlcomplete.vim
@@ -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")
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index e0ae9b8b7..2a15deeaf 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -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
@@ -15,15 +15,28 @@
" 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,7 +304,8 @@ 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
@@ -288,17 +313,52 @@ fun! zip#Write(fname)
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
diff --git a/runtime/colors/blue.vim b/runtime/colors/blue.vim
index dcfe3d783..86de8a4dc 100644
--- a/runtime/colors/blue.vim
+++ b/runtime/colors/blue.vim
@@ -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
diff --git a/runtime/colors/torte.vim b/runtime/colors/torte.vim
index 65d4b3f89..0e7a916a1 100644
--- a/runtime/colors/torte.vim
+++ b/runtime/colors/torte.vim
@@ -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
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 01f9a4bf9..f0ae4133c 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -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
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 414ef429a..6d2fef289 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -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.
diff --git a/runtime/doc/debug.txt b/runtime/doc/debug.txt
index 599e18138..6af7a12c8 100644
--- a/runtime/doc/debug.txt
+++ b/runtime/doc/debug.txt
@@ -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
diff --git a/runtime/doc/debugger.txt b/runtime/doc/debugger.txt
index d7268209d..b96f7c208 100644
--- a/runtime/doc/debugger.txt
+++ b/runtime/doc/debugger.txt
@@ -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
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
index 1d1c6cae5..037a3ccb1 100644
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -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
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index a0e8053a4..ed059c919 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -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
diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt
index ec5aec5a5..8ca411090 100644
--- a/runtime/doc/digraph.txt
+++ b/runtime/doc/digraph.txt
@@ -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
==============================================================================
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index 4c982c50e..05c46fbfe 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -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
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index d29fa4cf1..99c2e4a01 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -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
diff --git a/runtime/doc/gui_w16.txt b/runtime/doc/gui_w16.txt
index 5319beeed..d7eb73971 100644
--- a/runtime/doc/gui_w16.txt
+++ b/runtime/doc/gui_w16.txt
@@ -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
diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt
index 25b0e164a..a518f032a 100644
--- a/runtime/doc/gui_w32.txt
+++ b/runtime/doc/gui_w32.txt
@@ -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:
diff --git a/runtime/doc/gui_x11.txt b/runtime/doc/gui_x11.txt
index a78dd3640..838b13f65 100644
--- a/runtime/doc/gui_x11.txt
+++ b/runtime/doc/gui_x11.txt
@@ -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.
diff --git a/runtime/doc/hangulin.txt b/runtime/doc/hangulin.txt
index a5d97bc37..a79e8ab78 100644
--- a/runtime/doc/hangulin.txt
+++ b/runtime/doc/hangulin.txt
@@ -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
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index 77a7ebd39..40fad99ae 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -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*
diff --git a/runtime/doc/if_cscop.txt b/runtime/doc/if_cscop.txt
index 3a9de57cd..b8b04403a 100644
--- a/runtime/doc/if_cscop.txt
+++ b/runtime/doc/if_cscop.txt
@@ -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
diff --git a/runtime/doc/if_mzsch.txt b/runtime/doc/if_mzsch.txt
index 2760b1162..f42b1bfde 100644
--- a/runtime/doc/if_mzsch.txt
+++ b/runtime/doc/if_mzsch.txt
@@ -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:
diff --git a/runtime/doc/if_ole.txt b/runtime/doc/if_ole.txt
index e8fac082e..626da3e2f 100644
--- a/runtime/doc/if_ole.txt
+++ b/runtime/doc/if_ole.txt
@@ -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
diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt
index c0c4bc8b7..930522df1 100644
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -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
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
index e171c6b12..04bbced34 100644
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -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
diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt
index 978782de3..a61417246 100644
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -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
diff --git a/runtime/doc/if_sniff.txt b/runtime/doc/if_sniff.txt
index 972776054..3444c3831 100644
--- a/runtime/doc/if_sniff.txt
+++ b/runtime/doc/if_sniff.txt
@@ -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
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 8171ef9c3..f7188296c 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -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 "."
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index 809abda4b..9a24736cb 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -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.
diff --git a/runtime/doc/mlang.txt b/runtime/doc/mlang.txt
index c1ef8d502..7b27fc497 100644
--- a/runtime/doc/mlang.txt
+++ b/runtime/doc/mlang.txt
@@ -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
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 6fdfd9310..1446db0a9 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -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}
diff --git a/runtime/doc/os_390.txt b/runtime/doc/os_390.txt
index fd9ab244c..119635577 100644
--- a/runtime/doc/os_390.txt
+++ b/runtime/doc/os_390.txt
@@ -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
diff --git a/runtime/doc/os_beos.txt b/runtime/doc/os_beos.txt
index e872b4d04..52276efaf 100644
--- a/runtime/doc/os_beos.txt
+++ b/runtime/doc/os_beos.txt
@@ -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
diff --git a/runtime/doc/os_mac.txt b/runtime/doc/os_mac.txt
index d788477ea..e56d4c71a 100644
--- a/runtime/doc/os_mac.txt
+++ b/runtime/doc/os_mac.txt
@@ -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.
diff --git a/runtime/doc/os_msdos.txt b/runtime/doc/os_msdos.txt
index 9a255d070..e689b6e79 100644
--- a/runtime/doc/os_msdos.txt
+++ b/runtime/doc/os_msdos.txt
@@ -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
diff --git a/runtime/doc/os_risc.txt b/runtime/doc/os_risc.txt
index 79f610617..2756f224b 100644
--- a/runtime/doc/os_risc.txt
+++ b/runtime/doc/os_risc.txt
@@ -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
diff --git a/runtime/doc/os_unix.txt b/runtime/doc/os_unix.txt
index c6a987ffd..96d7c14e1 100644
--- a/runtime/doc/os_unix.txt
+++ b/runtime/doc/os_unix.txt
@@ -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
index 000000000..10d9387fd
--- /dev/null
+++ b/runtime/doc/pi_getscript.txt
@@ -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
diff --git a/runtime/doc/pi_gzip.txt b/runtime/doc/pi_gzip.txt
index 1d9466ac2..e29ea1be7 100644
--- a/runtime/doc/pi_gzip.txt
+++ b/runtime/doc/pi_gzip.txt
@@ -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
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 5c01d61ac..d5821de11 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -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|
@@ -19,14 +22,14 @@
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|
@@ -38,38 +41,39 @@
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
diff --git a/runtime/doc/pi_paren.txt b/runtime/doc/pi_paren.txt
index b3488496f..3752637eb 100644
--- a/runtime/doc/pi_paren.txt
+++ b/runtime/doc/pi_paren.txt
@@ -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.
==============================================================================
diff --git a/runtime/doc/pi_tar.txt b/runtime/doc/pi_tar.txt
index 9dd746906..51c96ccb5 100644
--- a/runtime/doc/pi_tar.txt
+++ b/runtime/doc/pi_tar.txt
@@ -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/)
==============================================================================
diff --git a/runtime/doc/pi_vimball.txt b/runtime/doc/pi_vimball.txt
index 1fefc7f90..75eae344a 100644
--- a/runtime/doc/pi_vimball.txt
+++ b/runtime/doc/pi_vimball.txt
@@ -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.
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index ce2dcd18c..cedd9114a 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -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
==============================================================================
diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt
index 36f9470fc..9f912815b 100644
--- a/runtime/doc/print.txt
+++ b/runtime/doc/print.txt
@@ -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
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index bdd2be508..9377d6443 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -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
diff --git a/runtime/doc/recover.txt b/runtime/doc/recover.txt
index 0de489a83..159bd3c03 100644
--- a/runtime/doc/recover.txt
+++ b/runtime/doc/recover.txt
@@ -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
diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt
index a149e150c..a3f655f0c 100644
--- a/runtime/doc/rileft.txt
+++ b/runtime/doc/rileft.txt
@@ -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
diff --git a/runtime/doc/russian.txt b/runtime/doc/russian.txt
index c240a9ba1..d487d97ce 100644
--- a/runtime/doc/russian.txt
+++ b/runtime/doc/russian.txt
@@ -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
diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt
index ea47050d3..de12c32f7 100644
--- a/runtime/doc/sign.txt
+++ b/runtime/doc/sign.txt
@@ -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
diff --git a/runtime/doc/sponsor.txt b/runtime/doc/sponsor.txt
index d77f4e841..170643ae8 100644
--- a/runtime/doc/sponsor.txt
+++ b/runtime/doc/sponsor.txt
@@ -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:
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 7431960ef..f69f0e6ff 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -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*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 515ceaed3..41fca5ffa 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -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).
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt
index 597664f4a..1abfba91a 100644
--- a/runtime/doc/tips.txt
+++ b/runtime/doc/tips.txt
@@ -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
diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt
index a1258b7d1..a8990c0f3 100644
--- a/runtime/doc/uganda.txt
+++ b/runtime/doc/uganda.txt
@@ -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
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
index fde879d44..e1f65858d 100644
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -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
diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt
index 2b3dd788a..e782754c9 100644
--- a/runtime/doc/usr_02.txt
+++ b/runtime/doc/usr_02.txt
@@ -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
diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt
index 9f15540bc..b082f83cb 100644
--- a/runtime/doc/usr_03.txt
+++ b/runtime/doc/usr_03.txt
@@ -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
diff --git a/runtime/doc/usr_08.txt b/runtime/doc/usr_08.txt
index cdb157e10..20de736dd 100644
--- a/runtime/doc/usr_08.txt
+++ b/runtime/doc/usr_08.txt
@@ -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:
+-------------------------------------------+
diff --git a/runtime/doc/usr_09.txt b/runtime/doc/usr_09.txt
index fcfbcb65a..0c7a0418d 100644
--- a/runtime/doc/usr_09.txt
+++ b/runtime/doc/usr_09.txt
@@ -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
diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt
index b094a7296..3e7de4b54 100644
--- a/runtime/doc/usr_10.txt
+++ b/runtime/doc/usr_10.txt
@@ -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
diff --git a/runtime/doc/usr_25.txt b/runtime/doc/usr_25.txt
index a1e887afb..998cc1a25 100644
--- a/runtime/doc/usr_25.txt
+++ b/runtime/doc/usr_25.txt
@@ -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
diff --git a/runtime/doc/usr_26.txt b/runtime/doc/usr_26.txt
index ca78681ad..c2159714a 100644
--- a/runtime/doc/usr_26.txt
+++ b/runtime/doc/usr_26.txt
@@ -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
diff --git a/runtime/doc/usr_29.txt b/runtime/doc/usr_29.txt
index b3a1d51eb..aa05560da 100644
--- a/runtime/doc/usr_29.txt
+++ b/runtime/doc/usr_29.txt
@@ -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
diff --git a/runtime/doc/usr_32.txt b/runtime/doc/usr_32.txt
index 055a5add3..4b243fb27 100644
--- a/runtime/doc/usr_32.txt
+++ b/runtime/doc/usr_32.txt
@@ -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
diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt
index 5370a30da..3b0cb0498 100644
--- a/runtime/doc/usr_42.txt
+++ b/runtime/doc/usr_42.txt
@@ -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
diff --git a/runtime/doc/usr_44.txt b/runtime/doc/usr_44.txt
index e5b0fa95d..48b4b92fc 100644
--- a/runtime/doc/usr_44.txt
+++ b/runtime/doc/usr_44.txt
@@ -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
diff --git a/runtime/doc/usr_90.txt b/runtime/doc/usr_90.txt
index 65aad26c8..7334b451f 100644
--- a/runtime/doc/usr_90.txt
+++ b/runtime/doc/usr_90.txt
@@ -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
diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt
index 9fe133c49..ff42aa96a 100644
--- a/runtime/doc/usr_toc.txt
+++ b/runtime/doc/usr_toc.txt
@@ -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
diff --git a/runtime/doc/version5.txt b/runtime/doc/version5.txt
index bc0628e5a..503cde476 100644
--- a/runtime/doc/version5.txt
+++ b/runtime/doc/version5.txt
@@ -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.
diff --git a/runtime/doc/version6.txt b/runtime/doc/version6.txt
index 9dda5777a..9d33aa6f4 100644
--- a/runtime/doc/version6.txt
+++ b/runtime/doc/version6.txt
@@ -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
diff --git a/runtime/doc/vim2html.pl b/runtime/doc/vim2html.pl
index ddb1c4623..d51f60709 100644
--- a/runtime/doc/vim2html.pl
+++ b/runtime/doc/vim2html.pl
@@ -182,7 +182,6 @@ EOF
}
-
sub writeCSS
{
open( CSS, ">vim-stylesheet.css" ) || die "Couldn't write stylesheet: $!\n";
diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt
index e588d954b..ef4a0a708 100644
--- a/runtime/doc/visual.txt
+++ b/runtime/doc/visual.txt
@@ -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
diff --git a/runtime/doc/xxd-it.1 b/runtime/doc/xxd-it.1
index 82f77cc89..41298495a 100755
--- a/runtime/doc/xxd-it.1
+++ b/runtime/doc/xxd-it.1
@@ -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
diff --git a/runtime/doc/xxd-pl.UTF-8.1 b/runtime/doc/xxd-pl.UTF-8.1
index 624de29de..669ffc2ea 100644
--- a/runtime/doc/xxd-pl.UTF-8.1
+++ b/runtime/doc/xxd-pl.UTF-8.1
@@ -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
diff --git a/runtime/doc/xxd-ru.UTF-8.1 b/runtime/doc/xxd-ru.UTF-8.1
index ce75f8304..647845bab 100644
--- a/runtime/doc/xxd-ru.UTF-8.1
+++ b/runtime/doc/xxd-ru.UTF-8.1
@@ -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
diff --git a/runtime/ftplugin/ada.vim b/runtime/ftplugin/ada.vim
index 13fa8f93f..688cf97f7 100644
--- a/runtime/ftplugin/ada.vim
+++ b/runtime/ftplugin/ada.vim
@@ -1,223 +1,190 @@
-" 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
index 000000000..973e342b9
--- /dev/null
+++ b/runtime/ftplugin/bst.vim
@@ -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
index 000000000..443ea68d2
--- /dev/null
+++ b/runtime/ftplugin/cobol.vim
@@ -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
diff --git a/runtime/ftplugin/debchangelog.vim b/runtime/ftplugin/debchangelog.vim
index 167f56c73..a3079d198 100644
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -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
index 000000000..ddb40f928
--- /dev/null
+++ b/runtime/ftplugin/hamster.vim
@@ -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 \)
diff --git a/runtime/ftplugin/haskell.vim b/runtime/ftplugin/haskell.vim
index a16dadb00..f5a3a807a 100644
--- a/runtime/ftplugin/haskell.vim
+++ b/runtime/ftplugin/haskell.vim
@@ -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
diff --git a/runtime/ftplugin/mail.vim b/runtime/ftplugin/mail.vim
index 16bf19758..34e1d3c22 100644
--- a/runtime/ftplugin/mail.vim
+++ b/runtime/ftplugin/mail.vim
@@ -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
diff --git a/runtime/ftplugin/make.vim b/runtime/ftplugin/make.vim
index a947be1ad..38ee030f5 100644
--- a/runtime/ftplugin/make.vim
+++ b/runtime/ftplugin/make.vim
@@ -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
diff --git a/runtime/ftplugin/ocaml.vim b/runtime/ftplugin/ocaml.vim
index 0b9819a9b..10ead8a1e 100644
--- a/runtime/ftplugin/ocaml.vim
+++ b/runtime/ftplugin/ocaml.vim
@@ -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)):
diff --git a/runtime/indent/ada.vim b/runtime/indent/ada.vim
index 8cf915dc4..f2fc1ab4b 100644
--- a/runtime/indent/ada.vim
+++ b/runtime/indent/ada.vim
@@ -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
diff --git a/runtime/indent/eruby.vim b/runtime/indent/eruby.vim
index ab950b659..d621bfa08 100644
--- a/runtime/indent/eruby.vim
+++ b/runtime/indent/eruby.vim
@@ -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:
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index be3440955..6f016ad16 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -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
index 000000000..8da9fe3a5
--- /dev/null
+++ b/runtime/indent/htmldjango.vim
@@ -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
index 000000000..6f7069e94
--- /dev/null
+++ b/runtime/indent/jsp.vim
@@ -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
+
+
diff --git a/runtime/indent/ocaml.vim b/runtime/indent/ocaml.vim
index 1893d84a8..5c267af8b 100644
--- a/runtime/indent/ocaml.vim
+++ b/runtime/indent/ocaml.vim
@@ -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)
diff --git a/runtime/indent/python.vim b/runtime/indent/python.vim
index 3e14afc99..0c04e8110 100644
--- a/runtime/indent/python.vim
+++ b/runtime/indent/python.vim
@@ -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
diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim
index 3a2837e04..824635bc5 100644
--- a/runtime/indent/ruby.vim
+++ b/runtime/indent/ruby.vim
@@ -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:
diff --git a/runtime/indent/vhdl.vim b/runtime/indent/vhdl.vim
index c6f01988d..d288be4ce 100644
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -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
index 000000000..bb789a9af
--- /dev/null
+++ b/runtime/keymap/bulgarian-bds.vim
@@ -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
index 000000000..feec587b7
--- /dev/null
+++ b/runtime/keymap/bulgarian-phonetic.vim
@@ -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
index 000000000..bf22d80ec
--- /dev/null
+++ b/runtime/keymap/thaana.vim
@@ -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
index 000000000..b17be6dae
--- /dev/null
+++ b/runtime/keymap/vietnamese-viqr_utf-8.vim
@@ -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
index 000000000..23f668ced
--- /dev/null
+++ b/runtime/lang/menu_sl_si.cp1250.vim
@@ -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ž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" Angleški\ "en"
+ menutrans Set\ language\ to\ "en_au" Angleški\ "en_au"
+ menutrans Set\ language\ to\ "en_ca" Angleški\ "en_ca"
+ menutrans Set\ language\ to\ "en_gb" Angleški\ "en_gb"
+ menutrans Set\ language\ to\ "en_nz" Angleški\ "en_nz"
+ menutrans Set\ language\ to\ "en_us" Angleški\ "en_us"
+ menutrans Set\ language\ to\ "sl" Slovenski\ "sl"
+ menutrans Set\ language\ to\ "de" Nemški\ "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ži\ vrstico\ s\ kazalèkom<Tab>zv " kjer je kazalec
+ menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Pokaži\ 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ši\ zvitek<Tab>zd
+ menutrans Delete\ &All\ Folds<Tab>zD Izbriši\ vse\ zvitke<Tab>zD
+ " moving around in folds
+ menutrans Fold\ column\ &width Širina\ 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š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<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ž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"
+" }}}
diff --git a/runtime/lang/menu_sl_si.latin2.vim b/runtime/lang/menu_sl_si.latin2.vim
new file mode 100644
index 000000000..57d6c89de
--- /dev/null
+++ b/runtime/lang/menu_sl_si.latin2.vim
@@ -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"
+" }}}
diff --git a/runtime/lang/menu_slovak_slovak_republic.1250.vim b/runtime/lang/menu_slovak_slovak_republic.1250.vim
index 950aea94d..1df513de9 100644
--- a/runtime/lang/menu_slovak_slovak_republic.1250.vim
+++ b/runtime/lang/menu_slovak_slovak_republic.1250.vim
@@ -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")
diff --git a/runtime/plugin/README.txt b/runtime/plugin/README.txt
index cb87ed9ec..37e22e57c 100644
--- a/runtime/plugin/README.txt
+++ b/runtime/plugin/README.txt
@@ -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).
diff --git a/runtime/plugin/vimballPlugin.vim b/runtime/plugin/vimballPlugin.vim
index 95c06c3ec..9b3b4d318 100644
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -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
diff --git a/runtime/plugin/zipPlugin.vim b/runtime/plugin/zipPlugin.vim
index 20319a328..69e98bd66 100644
--- a/runtime/plugin/zipPlugin.vim
+++ b/runtime/plugin/zipPlugin.vim
@@ -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,
@@ -12,10 +12,16 @@
" 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
diff --git a/runtime/spell/da/main.aap b/runtime/spell/da/main.aap
index 65e1a2f7d..4c371b246 100644
--- a/runtime/spell/da/main.aap
+++ b/runtime/spell/da/main.aap
@@ -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'):
diff --git a/runtime/spell/pl/main.aap b/runtime/spell/pl/main.aap
index eb21c5e48..74cd1d58b 100644
--- a/runtime/spell/pl/main.aap
+++ b/runtime/spell/pl/main.aap
@@ -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
diff --git a/runtime/spell/pt/pt_PT.diff b/runtime/spell/pt/pt_PT.diff
index 653a2d2de..cb287d1e7 100644
--- a/runtime/spell/pt/pt_PT.diff
+++ b/runtime/spell/pt/pt_PT.diff
@@ -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ÚÜ
diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim
index a2a28bfd7..06383188a 100644
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -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>
diff --git a/runtime/syntax/amiga.vim b/runtime/syntax/amiga.vim
index d35f0561c..e70f995f6 100644
--- a/runtime/syntax/amiga.vim
+++ b/runtime/syntax/amiga.vim
@@ -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\+\>"
diff --git a/runtime/syntax/aspvbs.vim b/runtime/syntax/aspvbs.vim
index 74bf2a15e..e73d67491 100644
--- a/runtime/syntax/aspvbs.vim
+++ b/runtime/syntax/aspvbs.vim
@@ -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
index 000000000..47210f55b
--- /dev/null
+++ b/runtime/syntax/autoit.vim
@@ -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
diff --git a/runtime/syntax/automake.vim b/runtime/syntax/automake.vim
index d0877a5bd..b2dd0f930 100644
--- a/runtime/syntax/automake.vim
+++ b/runtime/syntax/automake.vim
@@ -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
diff --git a/runtime/syntax/b.vim b/runtime/syntax/b.vim
index e97669175..7f6c4e880 100644
--- a/runtime/syntax/b.vim
+++ b/runtime/syntax/b.vim
@@ -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
index 000000000..afbae1a7d
--- /dev/null
+++ b/runtime/syntax/bzr.vim
@@ -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"
diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim
index a39fbd80e..7164e14ed 100644
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -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
index 000000000..3e84751a9
--- /dev/null
+++ b/runtime/syntax/cmusrc.vim
@@ -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
diff --git a/runtime/syntax/csh.vim b/runtime/syntax/csh.vim
index be8bfc2ad..39603fa15 100644
--- a/runtime/syntax/csh.vim
+++ b/runtime/syntax/csh.vim
@@ -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
diff --git a/runtime/syntax/dcl.vim b/runtime/syntax/dcl.vim
index 77515bc5f..b051b08cf 100644
--- a/runtime/syntax/dcl.vim
+++ b/runtime/syntax/dcl.vim
@@ -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
diff --git a/runtime/syntax/desc.vim b/runtime/syntax/desc.vim
index a454fb055..ca47176ff 100644
--- a/runtime/syntax/desc.vim
+++ b/runtime/syntax/desc.vim
@@ -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
diff --git a/runtime/syntax/elmfilt.vim b/runtime/syntax/elmfilt.vim
index 05e8cb8e9..0afa1694c 100644
--- a/runtime/syntax/elmfilt.vim
+++ b/runtime/syntax/elmfilt.vim
@@ -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.
diff --git a/runtime/syntax/eruby.vim b/runtime/syntax/eruby.vim
index 971417c39..3aedc6cfd 100644
--- a/runtime/syntax/eruby.vim
+++ b/runtime/syntax/eruby.vim
@@ -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
diff --git a/runtime/syntax/foxpro.vim b/runtime/syntax/foxpro.vim
index 8fabd2325..ca5d7e2f9 100644
--- a/runtime/syntax/foxpro.vim
+++ b/runtime/syntax/foxpro.vim
@@ -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
diff --git a/runtime/syntax/fvwm.vim b/runtime/syntax/fvwm.vim
index ff1b78399..43b7abcfc 100644
--- a/runtime/syntax/fvwm.vim
+++ b/runtime/syntax/fvwm.vim
@@ -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
index 000000000..bd52300ca
--- /dev/null
+++ b/runtime/syntax/hamster.vim
@@ -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
diff --git a/runtime/syntax/ia64.vim b/runtime/syntax/ia64.vim
index d6292ce63..f0d510b94 100644
--- a/runtime/syntax/ia64.vim
+++ b/runtime/syntax/ia64.vim
@@ -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
index 000000000..75e59419b
--- /dev/null
+++ b/runtime/syntax/ibasic.vim
@@ -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
index 000000000..2b7bc3b41
--- /dev/null
+++ b/runtime/syntax/initng.vim
@@ -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"
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index a1b9e157a..ba8975bc9 100644
--- a/runtime/syntax/javascript.vim
+++ b/runtime/syntax/javascript.vim
@@ -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
diff --git a/runtime/syntax/lua.vim b/runtime/syntax/lua.vim
index 7d72603bf..c40c6285c 100644
--- a/runtime/syntax/lua.vim
+++ b/runtime/syntax/lua.vim
@@ -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
diff --git a/runtime/syntax/lynx.vim b/runtime/syntax/lynx.vim
index 471d708a0..2e37ff64c 100644
--- a/runtime/syntax/lynx.vim
+++ b/runtime/syntax/lynx.vim
@@ -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
diff --git a/runtime/syntax/make.vim b/runtime/syntax/make.vim
index 4d3b0df45..5e72f4e69 100644
--- a/runtime/syntax/make.vim
+++ b/runtime/syntax/make.vim
@@ -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
diff --git a/runtime/syntax/maple.vim b/runtime/syntax/maple.vim
index e21dc125c..37abf16fa 100644
--- a/runtime/syntax/maple.vim
+++ b/runtime/syntax/maple.vim
@@ -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 ":="
diff --git a/runtime/syntax/masm.vim b/runtime/syntax/masm.vim
index e11a0293a..d7c1e7ea1 100644
--- a/runtime/syntax/masm.vim
+++ b/runtime/syntax/masm.vim
@@ -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
diff --git a/runtime/syntax/muttrc.vim b/runtime/syntax/muttrc.vim
index cc77711a3..fb88f6afd 100644
--- a/runtime/syntax/muttrc.vim
+++ b/runtime/syntax/muttrc.vim
@@ -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
diff --git a/runtime/syntax/named.vim b/runtime/syntax/named.vim
index 6ba564a29..faec5f68e 100644
--- a/runtime/syntax/named.vim
+++ b/runtime/syntax/named.vim
@@ -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
diff --git a/runtime/syntax/netrw.vim b/runtime/syntax/netrw.vim
index 8dee30383..e2baac888 100644
--- a/runtime/syntax/netrw.vim
+++ b/runtime/syntax/netrw.vim
@@ -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
diff --git a/runtime/syntax/objc.vim b/runtime/syntax/objc.vim
index 3aa1177b2..c575cf2ad 100644
--- a/runtime/syntax/objc.vim
+++ b/runtime/syntax/objc.vim
@@ -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
diff --git a/runtime/syntax/ocaml.vim b/runtime/syntax/ocaml.vim
index cdef8c38b..27eb3907e 100644
--- a/runtime/syntax/ocaml.vim
+++ b/runtime/syntax/ocaml.vim
@@ -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
diff --git a/runtime/syntax/php.vim b/runtime/syntax/php.vim
index 46b547b41..4bcff1341 100644
--- a/runtime/syntax/php.vim
+++ b/runtime/syntax/php.vim
@@ -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
index 000000000..9e6ff1df9
--- /dev/null
+++ b/runtime/syntax/privoxy.vim
@@ -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
diff --git a/runtime/syntax/remind.vim b/runtime/syntax/remind.vim
index 55d583ec3..001868e15 100644
--- a/runtime/syntax/remind.vim
+++ b/runtime/syntax/remind.vim
@@ -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
diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim
index 94434aed3..c45aae2a1 100644
--- a/runtime/syntax/ruby.vim
+++ b/runtime/syntax/ruby.vim
@@ -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
index 000000000..bb201ca00
--- /dev/null
+++ b/runtime/syntax/sd.vim
@@ -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"
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index 2c53f9fa4..4edff0461 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -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
diff --git a/runtime/syntax/tcsh.vim b/runtime/syntax/tcsh.vim
index 12411e89b..83649a751 100644
--- a/runtime/syntax/tcsh.vim
+++ b/runtime/syntax/tcsh.vim
@@ -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
diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim
index 6452e725e..442cdf232 100644
--- a/runtime/syntax/tex.vim
+++ b/runtime/syntax/tex.vim
@@ -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 "\(``\|''\|,,\)"
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 244e0b73e..d5694dae6 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -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 "[- -]"
" 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
diff --git a/runtime/syntax/xdefaults.vim b/runtime/syntax/xdefaults.vim
index 64d3b6953..cd3fed4a6 100644
--- a/runtime/syntax/xdefaults.vim
+++ b/runtime/syntax/xdefaults.vim
@@ -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
index 000000000..baaef66b3
--- /dev/null
+++ b/runtime/tutor/tutor.cs
@@ -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
index 000000000..93fd7b7b2
--- /dev/null
+++ b/runtime/tutor/tutor.cs.cp1250
@@ -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ì øiok.
+
+ 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 øiok 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.utf-8 b/runtime/tutor/tutor.cs.utf-8
new file mode 100644
index 000000000..c880d6df5
--- /dev/null
+++ b/runtime/tutor/tutor.cs.utf-8
@@ -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
index 000000000..84e6bd421
--- /dev/null
+++ b/runtime/tutor/tutor.hu
@@ -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
index 000000000..b64155ff7
--- /dev/null
+++ b/runtime/tutor/tutor.hu.utf-8
@@ -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.it b/runtime/tutor/tutor.it
index d2a465ede..b1f6798d0 100644
--- a/runtime/tutor/tutor.it
+++ b/runtime/tutor/tutor.it
@@ -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 è molto utile nel "debug" di un programma con parentesi errate!
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 è molto utile nel "debug" di un programma con parentesi errate!
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 è molto utile nel "debug" di un programma con parentesi errate!
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 è inserito a partire da dove si trova il cursore.
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ì di battere i , l'ultimo carattere, il testo da aggiungere,
- 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ì di battere i , l'ultimo carattere, il testo da aggiungere,
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
index 000000000..0e6802d40
--- /dev/null
+++ b/runtime/tutor/tutor.tr.utf-8
@@ -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
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/GvimExt/GvimExt.reg b/src/GvimExt/GvimExt.reg
index 2b80956d8..ed0f5af1a 100644
--- a/src/GvimExt/GvimExt.reg
+++ b/src/GvimExt/GvimExt.reg
@@ -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"
diff --git a/src/if_xcmdsrv.c b/src/if_xcmdsrv.c
index ef6e25741..3774ff421 100644
--- a/src/if_xcmdsrv.c
+++ b/src/if_xcmdsrv.c
@@ -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
diff --git a/src/keymap.h b/src/keymap.h
index 34521e403..376ac9c00 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -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 */
diff --git a/src/move.c b/src/move.c
index c0bbac265..f21f5e9f6 100644
--- a/src/move.c
+++ b/src/move.c
@@ -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
)
{
diff --git a/src/os_vms.c b/src/os_vms.c
index f87a1cd5d..a612d8104 100644
--- a/src/os_vms.c
+++ b/src/os_vms.c
@@ -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:
diff --git a/src/po/README_mvc.txt b/src/po/README_mvc.txt
index cd107debf..293edf2d4 100644
--- a/src/po/README_mvc.txt
+++ b/src/po/README_mvc.txt
@@ -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.
diff --git a/src/po/de.po b/src/po/de.po
index 43fbbe78d..171ddca24 100644
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -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"
diff --git a/src/po/pl.UTF-8.po b/src/po/pl.UTF-8.po
index 302ff8c3a..75270caed 100644
--- a/src/po/pl.UTF-8.po
+++ b/src/po/pl.UTF-8.po
@@ -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"
@@ -619,6 +622,10 @@ 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:"
@@ -5423,6 +5445,13 @@ msgstr ""
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"
msgstr ""
"\n"
@@ -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"
diff --git a/src/po/pl.cp1250.po b/src/po/pl.cp1250.po
index e10e74541..c67f748c2 100644
--- a/src/po/pl.cp1250.po
+++ b/src/po/pl.cp1250.po
@@ -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ê 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"
@@ -619,6 +622,10 @@ 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:"
@@ -5423,6 +5445,13 @@ msgstr ""
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"
msgstr ""
"\n"
@@ -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"
diff --git a/src/proto/charset.pro b/src/proto/charset.pro
index a6f480262..4b6890d18 100644
--- a/src/proto/charset.pro
+++ b/src/proto/charset.pro
@@ -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 : */
diff --git a/src/proto/diff.pro b/src/proto/diff.pro
index 65b978fe9..e45127ad0 100644
--- a/src/proto/diff.pro
+++ b/src/proto/diff.pro
@@ -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 : */
diff --git a/src/proto/ex_eval.pro b/src/proto/ex_eval.pro
index 20601f8af..8fb234283 100644
--- a/src/proto/ex_eval.pro
+++ b/src/proto/ex_eval.pro
@@ -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 : */
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index 6dd06ff02..f5feb201f 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -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 : */
diff --git a/src/proto/fold.pro b/src/proto/fold.pro
index 85510932f..3318bbde7 100644
--- a/src/proto/fold.pro
+++ b/src/proto/fold.pro
@@ -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 : */
diff --git a/src/proto/gui.pro b/src/proto/gui.pro
index aeabd42cd..322dc7955 100644
--- a/src/proto/gui.pro
+++ b/src/proto/gui.pro
@@ -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 : */
diff --git a/src/proto/gui_gtk_x11.pro b/src/proto/gui_gtk_x11.pro
index deb8039be..87ff6da40 100644
--- a/src/proto/gui_gtk_x11.pro
+++ b/src/proto/gui_gtk_x11.pro
@@ -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 : */
diff --git a/src/proto/gui_xmdlg.pro b/src/proto/gui_xmdlg.pro
index dc6655a15..4f88c2ff1 100644
--- a/src/proto/gui_xmdlg.pro
+++ b/src/proto/gui_xmdlg.pro
@@ -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 : */
diff --git a/src/proto/hashtab.pro b/src/proto/hashtab.pro
index 90abb9f0b..e3c22b726 100644
--- a/src/proto/hashtab.pro
+++ b/src/proto/hashtab.pro
@@ -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 : */
diff --git a/src/proto/if_tcl.pro b/src/proto/if_tcl.pro
index 2af917429..0679ed41a 100644
--- a/src/proto/if_tcl.pro
+++ b/src/proto/if_tcl.pro
@@ -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 : */
diff --git a/src/proto/main.pro b/src/proto/main.pro
index 93a312f24..2ecce7955 100644
--- a/src/proto/main.pro
+++ b/src/proto/main.pro
@@ -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 : */
diff --git a/src/proto/mark.pro b/src/proto/mark.pro
index fe4403188..13e186899 100644
--- a/src/proto/mark.pro
+++ b/src/proto/mark.pro
@@ -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 : */
diff --git a/src/proto/memfile.pro b/src/proto/memfile.pro
index 6c4329a18..3983b4799 100644
--- a/src/proto/memfile.pro
+++ b/src/proto/memfile.pro
@@ -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 : */
diff --git a/src/proto/message.pro b/src/proto/message.pro
index e6bd3e9e2..cff7d6b50 100644
--- a/src/proto/message.pro
+++ b/src/proto/message.pro
@@ -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 : */
diff --git a/src/proto/netbeans.pro b/src/proto/netbeans.pro
index 71a5ec459..75d01494a 100644
--- a/src/proto/netbeans.pro
+++ b/src/proto/netbeans.pro
@@ -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 : */
diff --git a/src/proto/normal.pro b/src/proto/normal.pro
index 8280e45d9..55e81635e 100644
--- a/src/proto/normal.pro
+++ b/src/proto/normal.pro
@@ -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 : */
diff --git a/src/proto/option.pro b/src/proto/option.pro
index cf31dca7d..bb50ef14a 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -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 : */
diff --git a/src/proto/os_riscos.pro b/src/proto/os_riscos.pro
index ec8055b43..9ea4cd55f 100644
--- a/src/proto/os_riscos.pro
+++ b/src/proto/os_riscos.pro
@@ -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 : */
diff --git a/src/proto/os_vms.pro b/src/proto/os_vms.pro
index 667f7ab3c..2ed6394eb 100644
--- a/src/proto/os_vms.pro
+++ b/src/proto/os_vms.pro
@@ -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 : */
diff --git a/src/proto/os_win16.pro b/src/proto/os_win16.pro
index 4bfd9b32f..31fa72c05 100644
--- a/src/proto/os_win16.pro
+++ b/src/proto/os_win16.pro
@@ -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 : */
diff --git a/src/proto/popupmnu.pro b/src/proto/popupmnu.pro
index 5427dad83..74a53e2f0 100644
--- a/src/proto/popupmnu.pro
+++ b/src/proto/popupmnu.pro
@@ -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 : */
diff --git a/src/proto/regexp.pro b/src/proto/regexp.pro
index 27597b2ef..df2fde40c 100644
--- a/src/proto/regexp.pro
+++ b/src/proto/regexp.pro
@@ -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 : */
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index d1e5ef72c..fecf4e05a 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -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 : */
diff --git a/src/proto/syntax.pro b/src/proto/syntax.pro
index ad442e66f..c33a890d2 100644
--- a/src/proto/syntax.pro
+++ b/src/proto/syntax.pro
@@ -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 : */
diff --git a/src/proto/version.pro b/src/proto/version.pro
index 00ca91663..3f371f9b8 100644
--- a/src/proto/version.pro
+++ b/src/proto/version.pro
@@ -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 : */
diff --git a/src/proto/window.pro b/src/proto/window.pro
index ad40a527c..45a90b82a 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -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 : */
diff --git a/src/proto/workshop.pro b/src/proto/workshop.pro
index c72e215f4..426fded0b 100644
--- a/src/proto/workshop.pro
+++ b/src/proto/workshop.pro
@@ -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 : */
diff --git a/src/testdir/test55.ok b/src/testdir/test55.ok
index 1f52f2955..da8300290 100644
--- a/src/testdir/test55.ok
+++ b/src/testdir/test55.ok
@@ -105,3 +105,7 @@ caught a:000[3]
['aa', '', 'bb', 'cc', '']
['a', 'b', 'c']
['', 'a', '', 'b', '', 'c', '']
+1
+1
+0
+0
diff --git a/src/vim16.def b/src/vim16.def
index 452325cb2..c32529d4c 100644
--- a/src/vim16.def
+++ b/src/vim16.def
@@ -1,5 +1,5 @@
CODE PRELOAD EXECUTEONLY
DATA MULTIPLE SHARED
-DESCRIPTION 'Vim 7.0'
+DESCRIPTION 'Vim 7.1a'
STACKSIZE 16000
HEAPSIZE 10000
diff --git a/src/vimrun.c b/src/vimrun.c
index fed5076a5..c423e6cc5 100644
--- a/src/vimrun.c
+++ b/src/vimrun.c
@@ -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)