summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@zimbu.org>2010-05-14 23:24:24 +0200
committerBram Moolenaar <bram@zimbu.org>2010-05-14 23:24:24 +0200
commit7923d76778ea3bf36799d24f9bb6f0f1e4feb391 (patch)
tree092aad63363264edefdd6549bf1d40fa4c410972
parent7a1e9b58e2bf639813ef3f2d08f42cfa305951b5 (diff)
downloadvim-7923d76778ea3bf36799d24f9bb6f0f1e4feb391.tar.gz
Updated runtime files.
-rw-r--r--runtime/autoload/ccomplete.vim4
-rw-r--r--runtime/autoload/netrw.vim1051
-rw-r--r--runtime/autoload/sqlcomplete.vim69
-rw-r--r--runtime/autoload/vimball.vim6
-rw-r--r--runtime/autoload/zip.vim18
-rw-r--r--runtime/doc/autocmd.txt2
-rw-r--r--runtime/doc/change.txt4
-rw-r--r--runtime/doc/cmdline.txt3
-rw-r--r--runtime/doc/digraph.txt2
-rw-r--r--runtime/doc/eval.txt24
-rw-r--r--runtime/doc/fold.txt9
-rw-r--r--runtime/doc/gui.txt6
-rw-r--r--runtime/doc/indent.txt4
-rw-r--r--runtime/doc/motion.txt5
-rw-r--r--runtime/doc/options.txt10
-rw-r--r--runtime/doc/pi_netrw.txt101
-rw-r--r--runtime/doc/pi_vimball.txt18
-rw-r--r--runtime/doc/pi_zip.txt14
-rw-r--r--runtime/doc/sign.txt4
-rw-r--r--runtime/doc/spell.txt9
-rw-r--r--runtime/doc/syntax.txt14
-rw-r--r--runtime/doc/tags17
-rw-r--r--runtime/doc/todo.txt158
-rw-r--r--runtime/doc/usr_27.txt4
-rw-r--r--runtime/doc/various.txt2
-rw-r--r--runtime/doc/version7.txt36
-rw-r--r--runtime/doc/windows.txt6
-rw-r--r--runtime/filetype.vim17
-rw-r--r--runtime/ftplugin/debchangelog.vim45
-rw-r--r--runtime/ftplugin/debcontrol.vim10
-rw-r--r--runtime/indent/chaiscript.vim50
-rw-r--r--runtime/indent/perl6.vim136
-rw-r--r--runtime/keymap/bulgarian-bds.vim44
-rw-r--r--runtime/keymap/bulgarian-phonetic.vim48
-rw-r--r--runtime/lang/menu_sr.utf-8.vim2
-rw-r--r--runtime/lang/menu_sr_rs.ascii.vim258
-rw-r--r--runtime/lang/menu_sr_rs.iso_8859-2.vim259
-rw-r--r--runtime/lang/menu_sr_rs.iso_8859-5.vim259
-rw-r--r--runtime/lang/menu_sr_rs.utf-8.vim261
-rw-r--r--runtime/lang/menu_sr_yu.ascii.vim259
-rw-r--r--runtime/lang/menu_sr_yu.iso_8859-2.vim260
-rw-r--r--runtime/lang/menu_sr_yu.iso_8859-5.vim260
-rw-r--r--runtime/lang/menu_sr_yu.utf-8.vim262
-rw-r--r--runtime/plugin/netrwPlugin.vim10
-rw-r--r--runtime/plugin/vimballPlugin.vim6
-rw-r--r--runtime/plugin/zipPlugin.vim2
-rw-r--r--runtime/spell/bg/main.aap6
-rw-r--r--runtime/spell/br/br_FR.diff13
-rw-r--r--runtime/spell/br/main.aap86
-rw-r--r--runtime/spell/ca/main.aap4
-rw-r--r--runtime/spell/cy/main.aap6
-rw-r--r--runtime/spell/de/main.aap4
-rw-r--r--runtime/spell/eo/main.aap2
-rw-r--r--runtime/spell/es/main.aap2
-rw-r--r--runtime/spell/ku/main.aap6
-rw-r--r--runtime/spell/lv/main.aap6
-rw-r--r--runtime/spell/main.aap4
-rw-r--r--runtime/spell/ms/main.aap4
-rw-r--r--runtime/spell/pt/main.aap6
-rw-r--r--runtime/syntax/asm.vim17
-rw-r--r--runtime/syntax/cabal.vim131
-rw-r--r--runtime/syntax/chaiscript.vim94
-rw-r--r--runtime/syntax/debchangelog.vim6
-rw-r--r--runtime/syntax/debcontrol.vim16
-rw-r--r--runtime/syntax/debsources.vim8
-rw-r--r--runtime/syntax/java.vim69
-rw-r--r--runtime/syntax/javascript.vim14
-rw-r--r--runtime/syntax/lhaskell.vim5
-rw-r--r--runtime/syntax/maple.vim6
-rw-r--r--runtime/syntax/mib.vim8
-rw-r--r--runtime/syntax/mysql.vim6
-rw-r--r--runtime/syntax/obj.vim95
-rw-r--r--runtime/syntax/perl.vim718
-rw-r--r--runtime/syntax/perl6.vim2249
-rw-r--r--runtime/syntax/rhelp.vim61
-rw-r--r--runtime/syntax/sh.vim8
-rw-r--r--runtime/syntax/sisu.vim168
-rw-r--r--runtime/syntax/svg.vim15
-rw-r--r--runtime/syntax/tex.vim6
-rw-r--r--runtime/syntax/xs.vim69
80 files changed, 5680 insertions, 2286 deletions
diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim
index 6850e19a..12fc92df 100644
--- a/runtime/autoload/ccomplete.vim
+++ b/runtime/autoload/ccomplete.vim
@@ -1,7 +1,7 @@
" Vim completion script
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2007 Aug 30
+" Last Change: 2010 Mar 23
" This function is used for the 'omnifunc' option.
@@ -161,7 +161,7 @@ function! ccomplete#Complete(findstart, base)
let res = [{'match': match, 'tagline' : '', 'kind' : kind, 'info' : line}]
else
" Completing "var.", "var.something", etc.
- let res = s:Nextitem(strpart(line, 0, col), items[-1], 0, 1)
+ let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1)
endif
endif
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index c1b178d1..70b146d6 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
-" Date: Dec 28, 2009
-" Version: 136
+" Date: May 14, 2010
+" Version: 138
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2009 Charles E. Campbell, Jr. {{{1
@@ -22,7 +22,7 @@
if &cp || exists("g:loaded_netrw")
finish
endif
-let g:loaded_netrw = "v136"
+let g:loaded_netrw = "v138"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of netrw needs vim 7.2"
@@ -266,7 +266,7 @@ call s:NetrwInit("g:netrw_rmf_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm
" Default values - s ---------- {{{3
" g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename
call s:NetrwInit("g:netrw_sepchr" , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>")
-call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent " : "")
+call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent keepj " : "keepj ")
call s:NetrwInit("g:netrw_sort_by" , "name") " alternatives: date , size
call s:NetrwInit("g:netrw_sort_options" , "")
call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse (z y x ...)
@@ -286,11 +286,16 @@ call s:NetrwInit("g:netrw_xstrlen",0)
call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.")
call s:NetrwInit("g:netrw_use_errorwindow",1)
call s:NetrwInit("g:netrw_win95ftp",1)
-call s:NetrwInit("g:netrw_winsize","")
+call s:NetrwInit("g:netrw_winsize",25)
" ---------------------------------------------------------------------
" Default values for netrw's script variables: {{{2
call s:NetrwInit("g:netrw_fname_escape",' ?&;%')
-call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$')
+if has("win32") || has("win95") || has("win64") || has("win16")
+ call s:NetrwInit("g:netrw_glob_escape",'[]*?`{$')
+else
+ call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$\')
+endif
+call s:NetrwInit("g:netrw_menu_escape",'./&? \')
call s:NetrwInit("g:netrw_tmpfile_escape",' &;')
call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
@@ -329,6 +334,7 @@ fun! s:NetrwOptionSave(vt)
endif
let {a:vt}netrw_aikeep = &l:ai
let {a:vt}netrw_awkeep = &l:aw
+ let {a:vt}netrw_bombkeep = &l:bomb
let {a:vt}netrw_cikeep = &l:ci
let {a:vt}netrw_cinkeep = &l:cin
let {a:vt}netrw_cinokeep = &l:cino
@@ -340,6 +346,7 @@ fun! s:NetrwOptionSave(vt)
let {a:vt}netrw_fokeep = &l:fo " formatoptions
let {a:vt}netrw_gdkeep = &l:gd " gdefault
let {a:vt}netrw_hidkeep = &l:hidden
+ let {a:vt}netrw_imkeep = &l:im
let {a:vt}netrw_magickeep = &l:magic
let {a:vt}netrw_repkeep = &l:report
let {a:vt}netrw_spellkeep = &l:spell
@@ -375,7 +382,7 @@ fun! s:NetrwOptionRestore(vt)
" call Decho("exe keepjumps lcd ".fnameescape(curdir)) " NOTE: was g:netrw_fname_escape for some reason
try
if !exists("&l:acd") && !&l:acd
- exe 'keepjumps lcd '.fnameescape(curdir)
+ exe 'keepj lcd '.fnameescape(curdir)
endif
catch /^Vim\%((\a\+)\)\=:E472/
call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".curdir."> (permissions?)",61)
@@ -385,6 +392,7 @@ fun! s:NetrwOptionRestore(vt)
endif
if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif
if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif
+ if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif
if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif
if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif
if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif
@@ -397,6 +405,7 @@ fun! s:NetrwOptionRestore(vt)
if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif
if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif
if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif
+ if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif
if exists("{a:vt}netrw_magic") |let &l:magic = {a:vt}netrw_magic |unlet {a:vt}netrw_magic |endif
if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif
if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif
@@ -436,7 +445,7 @@ fun! s:NetrwSafeOptions()
setlocal com=
setlocal cpo-=aA
if exists("&acd") | setlocal noacd | endif
- setlocal nocin noai noci magic nospell nohid wig= noaw
+ setlocal nocin noai nobomb noci magic nospell nohid wig= noaw noim
setlocal fo=nroql2
setlocal tw=0
setlocal report=10000
@@ -444,9 +453,11 @@ fun! s:NetrwSafeOptions()
if g:netrw_use_noswf && has("win32") && !has("win95")
setlocal noswf
endif
+ call s:NetrwCursorline()
" allow the user to override safe options
if &ft == "netrw"
+" call Decho("do any netrw FileType autocmds")
silent keepalt keepjumps doau FileType netrw
endif
@@ -526,6 +537,7 @@ fun! netrw#NetRead(mode,...)
" NetRead: save options {{{3
call s:NetrwOptionSave("w:")
call s:NetrwSafeOptions()
+ call s:RestoreCursorline()
" NetRead: interpret mode into a readcmd {{{3
if a:mode == 0 " read remote file before current line
@@ -622,7 +634,7 @@ fun! netrw#NetRead(mode,...)
" call Decho("checking if NetrwBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">")
if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://'
" call Decho("yes, choice matches '^.*[\/]$'")
- keepjumps call s:NetrwBrowse(0,choice)
+ keepj call s:NetrwBrowse(0,choice)
" call Dret("netrw#NetRead :3 getcwd<".getcwd().">")
return
endif
@@ -669,10 +681,10 @@ fun! netrw#NetRead(mode,...)
call s:SaveBufVars()|new|call s:RestoreBufVars()
let filtbuf= bufnr("%")
setlocal ff=unix
- put =g:netrw_ftpmode
+ keepj put =g:netrw_ftpmode
" call Decho("filter input: ".getline(line("$")))
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline(line("$")))
endif
call setline(line("$")+1,'get "'.netrw_fname.'" '.tmpfile)
@@ -711,32 +723,32 @@ fun! netrw#NetRead(mode,...)
let filtbuf= bufnr("%")
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
+ keepj put ='open '.g:netrw_machine.' '.g:netrw_port
" call Decho("filter input: ".getline('.'))
else
- put ='open '.g:netrw_machine
+ keepj put ='open '.g:netrw_machine
" call Decho("filter input: ".getline('.'))
endif
if exists("g:netrw_ftp") && g:netrw_ftp == 1
- put =g:netrw_uid
+ keepj put =g:netrw_uid
" call Decho("filter input: ".getline('.'))
- put ='\"'.s:netrw_passwd.'\"'
+ keepj put ='\"'.s:netrw_passwd.'\"'
" call Decho("filter input: ".getline('.'))
else
- put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
" call Decho("filter input: ".getline('.'))
endif
if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
- put =g:netrw_ftpmode
+ keepj put =g:netrw_ftpmode
" call Decho("filter input: ".getline('.'))
endif
if exists("g:netrw_ftpextracmd")
put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('.'))
endif
- put ='get \"'.netrw_fname.'\" '.tmpfile
+ keepj put ='get \"'.netrw_fname.'\" '.tmpfile
" call Decho("filter input: ".getline('.'))
" perform ftp:
@@ -830,16 +842,16 @@ fun! netrw#NetRead(mode,...)
new
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
+ keepj put ='open '.g:netrw_machine.' '.g:netrw_port
else
- put ='open '.g:netrw_machine
+ keepj put ='open '.g:netrw_machine
endif
- put ='user '.g:netrw_uid.' '.s:netrw_passwd
- put ='get '.netrw_fname.' '.tmpfile
- put ='quit'
+ keepj put ='user '.g:netrw_uid.' '.s:netrw_passwd
+ keepj put ='get '.netrw_fname.' '.tmpfile
+ keepj put ='quit'
" perform cadaver operation:
- norm! 1Gdd
+ keepj norm! 1Gdd
" call Decho("executing: %!".g:netrw_dav_cmd)
exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
bd!
@@ -947,16 +959,16 @@ fun! netrw#NetWrite(...) range
" (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! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
- silent exe "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
+ exe "silent keepj w! ".fnameescape(v:cmdarg)." ".fnameescape(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! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile))
- silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)
+ exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)
else
" write (selected portion of) file to temporary
" call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
- silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
+ exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
endif
if curbufname == ""
@@ -1072,10 +1084,10 @@ fun! netrw#NetWrite(...) range
" call Decho("filter input window#".winnr())
setlocal ff=unix
- put =g:netrw_ftpmode
+ keepj put =g:netrw_ftpmode
" call Decho("filter input: ".getline('$'))
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline("$"))
endif
call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"')
@@ -1119,28 +1131,28 @@ fun! netrw#NetWrite(...) range
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
+ keepj put ='open '.g:netrw_machine.' '.g:netrw_port
" call Decho("filter input: ".getline('.'))
else
- put ='open '.g:netrw_machine
+ keepj put ='open '.g:netrw_machine
" call Decho("filter input: ".getline('.'))
endif
if exists("g:netrw_ftp") && g:netrw_ftp == 1
- put =g:netrw_uid
+ keepj put =g:netrw_uid
" call Decho("filter input: ".getline('.'))
- put ='\"'.s:netrw_passwd.'\"'
+ keepj put ='\"'.s:netrw_passwd.'\"'
" call Decho("filter input: ".getline('.'))
else
- put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
" call Decho("filter input: ".getline('.'))
endif
- put =g:netrw_ftpmode
+ keepj put =g:netrw_ftpmode
" call Decho("filter input: ".getline('$'))
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline("$"))
endif
- put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"'
+ keepj put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"'
" call Decho("filter input: ".getline('.'))
" save choice/id/password for future use
let b:netrw_lastfile = choice
@@ -1149,7 +1161,7 @@ fun! netrw#NetWrite(...) range
" -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password
- norm! 1Gdd
+ keepj norm! 1Gdd
" call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
@@ -1203,17 +1215,17 @@ fun! netrw#NetWrite(...) range
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
+ keepj put ='open '.g:netrw_machine.' '.g:netrw_port
else
- put ='open '.g:netrw_machine
+ keepj put ='open '.g:netrw_machine
endif
if exists("g:netrw_uid") && exists("s:netrw_passwd")
- put ='user '.g:netrw_uid.' '.s:netrw_passwd
+ keepj put ='user '.g:netrw_uid.' '.s:netrw_passwd
endif
- put ='put '.tmpfile.' '.netrw_fname
+ keepj put ='put '.tmpfile.' '.netrw_fname
" perform cadaver operation:
- norm! 1Gdd
+ keepj norm! 1Gdd
" call Decho("executing: %!".g:netrw_dav_cmd)
exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
@@ -1382,7 +1394,7 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
" rename buffer back to remote filename
" call Decho("exe silent! keepalt file ".fnameescape(rfile))
- exe "silent! keepalt file ".fnameescape(rfile)
+ exe "sil! keepalt file ".fnameescape(rfile)
filetype detect
" call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
let line1 = 1
@@ -1669,7 +1681,7 @@ if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
if method == 3 " ftp (no <.netrc>)
let fourblanklines= line2 - 3
if fourblanklines >= line1
- exe "silent ".fourblanklines.",".line2."g/^\s*$/d"
+ exe "sil keepj ".fourblanklines.",".line2."g/^\s*$/d"
call histdel("/",-1)
endif
endif
@@ -1693,7 +1705,7 @@ fun! NetUserPass(...)
let g:netrw_uid= input('Enter username: ')
endif
else " from command line
-" call Dfunc("NetUserPass(a:1<".a:1.">) {")
+" call Dfunc("NetUserPass(a:1<".a:1.">)")
let g:netrw_uid= a:1
endif
@@ -1763,19 +1775,67 @@ fun! s:BrowserMaps(islocal)
nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr>
nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(1)<cr>
+ inoremap <buffer> <silent> <cr> <c-o>:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
+ inoremap <buffer> <silent> - <c-o>:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
+ inoremap <buffer> <silent> a <c-o>:call <SID>NetrwHide(1)<cr>
+ inoremap <buffer> <silent> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
+ inoremap <buffer> <silent> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
+ inoremap <buffer> <silent> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
+ inoremap <buffer> <silent> mf <c-o>:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
+ inoremap <buffer> <silent> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
+ inoremap <buffer> <silent> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
+ inoremap <buffer> <silent> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
+ inoremap <buffer> <silent> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
+ inoremap <buffer> <silent> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
+ inoremap <buffer> <silent> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
+ inoremap <buffer> <silent> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
+ inoremap <buffer> <silent> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(1)<cr>
+ inoremap <buffer> <silent> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
+ inoremap <buffer> <silent> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
+ inoremap <buffer> <silent> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
+ inoremap <buffer> <silent> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> gh <c-o>:<c-u>call <SID>NetrwHidden(1)<cr>
+ inoremap <buffer> <silent> gp <c-o>:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> c <c-o>:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> C <c-o>:let g:netrw_chgwin= winnr()<cr>
+ inoremap <buffer> <silent> d <c-o>:call <SID>NetrwMakeDir("")<cr>
+ inoremap <buffer> <silent> i <c-o>:call <SID>NetrwListStyle(1)<cr>
+ inoremap <buffer> <silent> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr>
+ inoremap <buffer> <silent> o <c-o>:call <SID>NetrwSplit(3)<cr>
+ inoremap <buffer> <silent> O <c-o>:call <SID>NetrwObtain(1)<cr>
+ inoremap <buffer> <silent> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
+ inoremap <buffer> <silent> P <c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
+ inoremap <buffer> <silent> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> qf <c-o>:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
+ inoremap <buffer> <silent> r <c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
+ inoremap <buffer> <silent> s <c-o>:call <SID>NetrwSortStyle(1)<cr>
+ inoremap <buffer> <silent> S <c-o>:call <SID>NetSortSequence(1)<cr>
+ inoremap <buffer> <silent> t <c-o>:call <SID>NetrwSplit(4)<cr>
+ inoremap <buffer> <silent> T <c-o>:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
+ inoremap <buffer> <silent> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
+ inoremap <buffer> <silent> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
+ inoremap <buffer> <silent> v <c-o>:call <SID>NetrwSplit(5)<cr>
+ inoremap <buffer> <silent> x <c-o>:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
+ inoremap <buffer> <silent> % <c-o>:call <SID>NetrwOpenFile(1)<cr>
if !hasmapto('<Plug>NetrwHideEdit')
nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
+ imap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
endif
nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr>
if !hasmapto('<Plug>NetrwRefresh')
nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
+ imap <buffer> <unique> <c-l> <Plug>NetrwRefresh
endif
nnoremap <buffer> <silent> <Plug>NetrwRefresh :call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
if s:didstarstar || !mapcheck("<s-down>","n")
nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
+ inoremap <buffer> <silent> <s-down> :Nexplore<cr>
endif
if s:didstarstar || !mapcheck("<s-up>","n")
nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
+ inoremap <buffer> <silent> <s-up> :Pexplore<cr>
endif
let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape)
if g:netrw_mousemaps == 1
@@ -1784,14 +1844,22 @@ fun! s:BrowserMaps(islocal)
nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+ inoremap <buffer> <silent> <leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(1)<cr>
+ inoremap <buffer> <silent> <middlemouse> <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
+ inoremap <buffer> <silent> <s-leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
+ exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
endif
exe 'nnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
- exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
exe 'nnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
- exe 'vnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
exe 'nnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
- exe 'vnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetrwMakeDir("")<cr>'
+ exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+ exe 'vnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+ exe 'vnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
+ exe 'inoremap <buffer> <silent> <del> <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+ exe 'inoremap <buffer> <silent> D <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+ exe 'inoremap <buffer> <silent> R <c-o>:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
+ exe 'inoremap <buffer> <silent> <Leader>m <c-o>:call <SID>NetrwMakeDir("")<cr>'
nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
else " remote
@@ -1840,12 +1908,57 @@ fun! s:BrowserMaps(islocal)
nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr>
nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr>
+ inoremap <buffer> <silent> <cr> <c-o>:call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
+ inoremap <buffer> <silent> <c-l> <c-o>:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
+ inoremap <buffer> <silent> - <c-o>:exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
+ inoremap <buffer> <silent> a <c-o>:call <SID>NetrwHide(0)<cr>
+ inoremap <buffer> <silent> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(0)<cr>
+ inoremap <buffer> <silent> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(0)<cr>
+ inoremap <buffer> <silent> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(0)<cr>
+ inoremap <buffer> <silent> mf <c-o>:<c-u>call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
+ inoremap <buffer> <silent> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(0)<cr>
+ inoremap <buffer> <silent> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(0)<cr>
+ inoremap <buffer> <silent> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(0)<cr>
+ inoremap <buffer> <silent> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(0)<cr>
+ inoremap <buffer> <silent> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(0)<cr>
+ inoremap <buffer> <silent> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(0)<cr>
+ inoremap <buffer> <silent> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(0)<cr>
+ inoremap <buffer> <silent> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
+ inoremap <buffer> <silent> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
+ inoremap <buffer> <silent> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(0)<cr>
+ inoremap <buffer> <silent> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
+ inoremap <buffer> <silent> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
+ inoremap <buffer> <silent> gh <c-o>:<c-u>call <SID>NetrwHidden(0)<cr>
+ inoremap <buffer> <silent> gp <c-o>:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> C <c-o>:let g:netrw_chgwin= winnr()<cr>
+ inoremap <buffer> <silent> i <c-o>:call <SID>NetrwListStyle(0)<cr>
+ inoremap <buffer> <silent> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr>
+ inoremap <buffer> <silent> o <c-o>:call <SID>NetrwSplit(0)<cr>
+ inoremap <buffer> <silent> O <c-o>:call <SID>NetrwObtain(0)<cr>
+ inoremap <buffer> <silent> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
+ inoremap <buffer> <silent> P <c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
+ inoremap <buffer> <silent> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> qf <c-o>:<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
+ inoremap <buffer> <silent> r <c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
+ inoremap <buffer> <silent> s <c-o>:call <SID>NetrwSortStyle(0)<cr>
+ inoremap <buffer> <silent> S <c-o>:call <SID>NetSortSequence(0)<cr>
+ inoremap <buffer> <silent> t <c-o>:call <SID>NetrwSplit(1)<cr>
+ inoremap <buffer> <silent> T <c-o>:call <SID>NetrwSplit(1)<bar>norm! gT<cr>
+ inoremap <buffer> <silent> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
+ inoremap <buffer> <silent> v <c-o>:call <SID>NetrwSplit(2)<cr>
+ inoremap <buffer> <silent> x <c-o>:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
+ inoremap <buffer> <silent> % <c-o>:call <SID>NetrwOpenFile(0)<cr>
if !hasmapto('<Plug>NetrwHideEdit')
nmap <buffer> <c-h> <Plug>NetrwHideEdit
+ imap <buffer> <c-h> <Plug>NetrwHideEdit
endif
nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr>
if !hasmapto('<Plug>NetrwRefresh')
nmap <buffer> <c-l> <Plug>NetrwRefresh
+ imap <buffer> <c-l> <Plug>NetrwRefresh
endif
let mapsafepath = escape(s:path, s:netrw_map_escape)
@@ -1858,15 +1971,24 @@ fun! s:BrowserMaps(islocal)
nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ inoremap <buffer> <silent> <leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(0)<cr>
+ inoremap <buffer> <silent> <middlemouse> <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
+ inoremap <buffer> <silent> <s-leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
+ exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
endif
exe 'nnoremap <buffer> <silent> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ exe 'nnoremap <buffer> <silent> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
+ exe 'nnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ exe 'nnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
- exe 'nnoremap <buffer> <silent> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
- exe 'nnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
- exe 'vnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
- exe 'nnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
- exe 'vnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ exe 'vnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ exe 'vnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ exe 'inoremap <buffer> <silent> <del> <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ exe 'inoremap <buffer> <silent> d <c-o>:call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
+ exe 'inoremap <buffer> <silent> D <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+ exe 'inoremap <buffer> <silent> R <c-o>:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
+ inoremap <buffer> <F1> <c-o>:he netrw-quickhelp<cr>
endif
call s:SetRexDir(a:islocal,b:netrw_curdir)
" call Dret("s:BrowserMaps")
@@ -1895,7 +2017,7 @@ endfun
" 5: (user: <U>) go down (next) bookmark
" 6: (user: <mB>) delete bookmark
fun! s:NetrwBookHistHandler(chg,curdir)
-" call Dfunc("NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax)
+" call Dfunc("s:NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax)
if a:chg == 0
" bookmark the current directory
@@ -1978,12 +2100,12 @@ fun! s:NetrwBookHistHandler(chg,curdir)
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
setlocal ma noro
" call Decho("setlocal ma noro")
- %d
+ keepj %d
setlocal nomod
" call Decho("setlocal nomod")
endif
" " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
- exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
+ exe "keepj e! ".fnameescape(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"
@@ -1998,13 +2120,13 @@ fun! s:NetrwBookHistHandler(chg,curdir)
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
setlocal ma noro
" call Decho("setlocal ma noro")
- %d
+ keepj %d
" call Decho("removed all lines from buffer (%d)")
setlocal nomod
" call Decho("setlocal nomod")
endif
" call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
- exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
+ exe "keepj e! ".fnameescape(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
@@ -2024,7 +2146,7 @@ fun! s:NetrwBookHistHandler(chg,curdir)
call remove(g:netrw_bookmarklist,v:count-1)
endif
call s:NetrwBookmarkMenu()
-" call Dret("NetrwBookHistHandler")
+" call Dret("s:NetrwBookHistHandler")
endfun
" ---------------------------------------------------------------------
@@ -2077,28 +2199,28 @@ fun! s:NetrwBookHistSave()
call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'")
let cnt= cnt + 1
endwhile
- exe "silent! w! ".savefile
+ exe "sil! w! ".savefile
- silent %d
+ sil keepj %d
if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
" merge and write .netrwbook
let savefile= s:NetrwHome()."/.netrwbook"
if filereadable(savefile)
let booklist= deepcopy(g:netrw_bookmarklist)
- exe "silent so ".savefile
+ exe "sil keepj so ".savefile
for bdm in booklist
if index(g:netrw_bookmarklist,bdm) == -1
call add(g:netrw_bookmarklist,bdm)
endif
endfor
call sort(g:netrw_bookmarklist)
- exe "silent! w! ".savefile
+ exe "sil! w! ".savefile
endif
" construct and save .netrwbook
call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist))
- exe "silent! w! ".savefile
+ exe "sil! w! ".savefile
endif
let bgone= bufnr("%")
q!
@@ -2114,13 +2236,14 @@ endfun
" with the requested remote hostname first.
fun! s:NetrwBrowse(islocal,dirname)
if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
-" call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">")
+" call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr())
" call Decho("tab#".tabpagenr()." win#".winnr())
" call Dredir("ls!")
if !exists("s:netrw_initbookhist")
call s:NetrwBookHistRead()
endif
" call FOTEST(7)
+"call Decho("COMBAK#01 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" simplify the dirname (especially for ".."s in dirnames)
if a:dirname !~ '^\a\+://'
@@ -2129,6 +2252,7 @@ fun! s:NetrwBrowse(islocal,dirname)
let dirname= a:dirname
endif
" call FOTEST(8)
+"call Decho("COMBAK#02 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
if exists("s:netrw_skipbrowse")
unlet s:netrw_skipbrowse
@@ -2149,6 +2273,7 @@ fun! s:NetrwBrowse(islocal,dirname)
call s:NetrwOptionSave("w:")
" call FOTEST(9)
+"call Decho("COMBAK#03 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" re-instate any marked files
if exists("s:netrwmarkfilelist_{bufnr('%')}")
@@ -2156,11 +2281,12 @@ fun! s:NetrwBrowse(islocal,dirname)
exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
endif
" call FOTEST(10)
+"call Decho("COMBAK#04 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
" call Decho("handle w:netrw_acdkeep:")
" call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
- exe 'keepjumps lcd '.fnameescape(dirname)
+ exe 'keepj lcd '.fnameescape(dirname)
call s:NetrwSafeOptions()
" call Decho("getcwd<".getcwd().">")
@@ -2176,19 +2302,19 @@ fun! s:NetrwBrowse(islocal,dirname)
call s:RemotePathAnalysis(dirname)
" remote-read the requested file into current buffer {{{3
- mark '
+ keepj mark '
call s:NetrwEnew(dirname)
call s:NetrwSafeOptions()
setlocal ma noro
" call Decho("setlocal ma noro")
let b:netrw_curdir= dirname
" call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
- exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
- exe "silent keepalt doau BufReadPre ".fnameescape(s:fname)
+ exe "sil! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
+ exe "sil keepalt doau BufReadPre ".fnameescape(s:fname)
silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz'
" netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
- exe "silent keepalt doau BufReadPost ".fnameescape(s:fname)
+ exe "sil keepalt doau BufReadPost ".fnameescape(s:fname)
endif
" save certain window-oriented variables into buffer-oriented variables {{{3
@@ -2201,6 +2327,7 @@ fun! s:NetrwBrowse(islocal,dirname)
return
endif
" call FOTEST(11)
+"call Decho("COMBAK#05 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
call s:UseBufWinVars()
@@ -2213,6 +2340,7 @@ fun! s:NetrwBrowse(islocal,dirname)
" set up menu {{{3
call s:NetrwMenu(1)
" call FOTEST(12)
+"call Decho("COMBAK#06 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" set up buffer {{{3
let reusing= s:NetrwGetBuffer(a:islocal,dirname)
@@ -2233,9 +2361,10 @@ fun! s:NetrwBrowse(islocal,dirname)
return
endif
"" call FOTEST(13) " PROBLEM WITH LISTING
+"call Decho("COMBAK#07 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" set b:netrw_curdir to the new directory name {{{3
-" call Decho("set b:netrw_curdir to the new directory name:")
+" call Decho("set b:netrw_curdir to the new directory name: (buf#".bufnr("%").")")
let b:netrw_curdir= dirname
if b:netrw_curdir =~ '[/\\]$'
let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
@@ -2255,6 +2384,7 @@ fun! s:NetrwBrowse(islocal,dirname)
endif
" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
"" call FOTEST(14) " PROBLEM WITH LISTING
+"call Decho("COMBAK#08 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" ------------
" (local only) {{{3
@@ -2272,7 +2402,7 @@ fun! s:NetrwBrowse(islocal,dirname)
if !exists("&l:acd") || !&l:acd
" call Decho('exe keepjumps lcd '.fnameescape(b:netrw_curdir))
try
- exe 'keepjumps lcd '.fnameescape(b:netrw_curdir)
+ exe 'keepj lcd '.fnameescape(b:netrw_curdir)
catch /^Vim\%((\a\+)\)\=:E472/
call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".b:netrw_curdir."> (permissions?)",61)
if exists("w:netrw_prvdir")
@@ -2327,6 +2457,7 @@ fun! s:NetrwBrowse(islocal,dirname)
" call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)")
endif " (additional remote handling)
"" call FOTEST(15) " PROBLEM WITH LISTING
+"call Decho("COMBAK#09 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" -----------------------
" Directory Listing: {{{3
@@ -2335,6 +2466,7 @@ fun! s:NetrwBrowse(islocal,dirname)
"" call FOTEST(16) " PROBLEM WITH LISTING
call s:PerformListing(a:islocal)
" call FOTEST(17)
+"call Decho("COMBAK#10 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
" The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
" installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
@@ -2445,21 +2577,29 @@ fun! s:NetrwGetBuffer(islocal,dirname)
" call Decho(" handling approx match: bufnum#".bufnum."<".bufname(bufnum)."> approx-dirname<".dirname.">")
let ibuf = 1
let buflast = bufnr("$")
-" call Decho(" findbuf2: buflast=".buflast)
+" call Decho(" findbuf2: buflast=bufnr($)=".buflast)
while ibuf <= buflast
let bname= substitute(bufname(ibuf),'\\','/','g')
let bname= substitute(bname,'.\zs/$','','')
-" call Decho(" findbuf3: while [ibuf=",ibuf."]<=[buflast=".buflast."]: dirname<".dirname."> bufname(".ibuf.")<".bname.">")
- if bname != '' && dirname =~ '/'.bname.'/\=$' && dirname !~ '^/'
-" call Decho(" findbuf3: passes test 1 : dirname<".dirname.'> =~ /'.bname.'/\=$ && dirname !~ ^/')
+" call Decho(" findbuf3: while [ibuf=",ibuf."]<=[buflast=".buflast."]: dirname<".dirname."> bname=bufname(".ibuf.")<".bname.">")
+ if bname != '' && dirname =~ '/'.bname.'/\=$' && dirname !~ '^/'
+ " bname is not empty
+ " dirname ends with bname,
+ " dirname doesn't start with /, so its not a absolute path
+" call Decho(" findbuf3a: passes test 1 : dirname<".dirname.'> =~ /'.bname.'/\=$ && dirname !~ ^/')
break
endif
- if bname =~ '^'.dirname.'/\=$'
-" call Decho(' findbuf3: passes test 2 : bname<'.bname.'>=~^'.dirname.'/\=$')
+ if bname =~ '^'.dirname.'/\=$'
+ " bname begins with dirname
+" call Decho(' findbuf3b: passes test 2 : bname<'.bname.'>=~^'.dirname.'/\=$')
break
endif
if dirname =~ '^'.bname.'/$'
-" call Decho(' findbuf3: passes test 3 : dirname<'.dirname.'>=~^'.bname.'/$')
+" call Decho(' findbuf3c: passes test 3 : dirname<'.dirname.'>=~^'.bname.'/$')
+ break
+ endif
+ if bname != '' && dirname =~ '/'.bname.'$' && bname == bufname("%") && line("$") == 1
+" call Decho(' findbuf3d: passes test 4 : dirname<'.dirname.'>=~ /'.bname.'$')
break
endif
let ibuf= ibuf + 1
@@ -2474,9 +2614,9 @@ fun! s:NetrwGetBuffer(islocal,dirname)
endif
" get enew buffer and name it -or- re-use buffer {{{3
-" call Decho("--get enew buffer and name it OR re-use buffer-- (bufnum=".bufnum.")")
- mark '
+ keepj mark '
if bufnum < 0 || !bufexists(bufnum)
+" call Decho("--get enew buffer and name it (bufexists([bufnum=".bufnum."])=".bufexists(bufnum).")")
call s:NetrwEnew(dirname)
" call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)")
" name the buffer
@@ -2490,7 +2630,8 @@ fun! s:NetrwGetBuffer(islocal,dirname)
endif
let w:netrw_treebufnr= bufnr("%")
" call Decho(" exe silent! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum))
- exe 'silent! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
+ exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
+ set bt=nofile noswf
nnoremap <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr>
nnoremap <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr>
nnoremap <silent> <buffer> [[ :silent call <SID>TreeListMove('[')<cr>
@@ -2499,15 +2640,16 @@ fun! s:NetrwGetBuffer(islocal,dirname)
else
" let v:errmsg= "" " Decho
let escdirname= fnameescape(dirname)
-" call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
+" call Decho(" errmsg<".v:errmsg."> bufnr(escdirname<".escdirname.">)=".bufnr(escdirname)." bufname()<".bufname(bufnr(escdirname)).">")
" call Decho(' exe silent! keepalt file '.escdirname)
- exe 'silent! keepalt file '.escdirname
+" let v:errmsg= "" " Decho
+ exe 'sil! keepalt file '.escdirname
" call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
endif
" call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">")
else " Re-use the buffer
-" call Decho("--re-use buffer#".bufnum.": --")
+" call Decho("--re-use buffer#".bufnum." (bufexists([bufnum=".bufnum."])=".bufexists(bufnum).")")
let eikeep= &ei
set ei=all
if getline(2) =~ '^" Netrw Directory Listing'
@@ -2519,7 +2661,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
endif
if bufname("%") == '.'
" call Decho("exe silent! keepalt file ".fnameescape(getcwd()))
- exe "silent! keepalt file ".fnameescape(getcwd())
+ exe "sil! keepalt file ".fnameescape(getcwd())
endif
let &ei= eikeep
if line("$") <= 1
@@ -2529,7 +2671,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
" call Decho("--re-use tree listing--")
" call Decho(" clear buffer<".expand("%")."> with :%d")
- silent %d
+ sil keepj %d
call s:NetrwListSettings(a:islocal)
" call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
return 0
@@ -2544,7 +2686,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
" slow 0 D D Deleting a buffer implies it will not be re-used (slow)
" med 1 D H
" fast 2 H H
-" call Decho("--do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc--")
+" call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--")
let fname= expand("%")
call s:NetrwListSettings(a:islocal)
" call Decho("exe keepalt file ".fnameescape(fname))
@@ -2553,7 +2695,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
" delete all lines from buffer {{{3
" call Decho("--delete all lines from buffer--")
" call Decho(" clear buffer<".expand("%")."> with :%d")
- keepalt silent! %d
+ sil! keepalt keepj %d
" call Dret("s:NetrwGetBuffer 0 : buf#".bufnr("%"))
return 0
@@ -2595,12 +2737,12 @@ fun! s:NetrwGetWord()
if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt
" Active Banner support
" call Decho("active banner handling")
- norm! 0
+ keepj norm! 0
let dirname= "./"
let curline= getline('.')
if curline =~ '"\s*Sorted by\s'
- norm s
+ keepj norm s
let s:netrw_skipbrowse= 1
echo 'Pressing "s" also works'
@@ -2609,27 +2751,27 @@ fun! s:NetrwGetWord()
echo 'Press "S" to edit sorting sequence'
elseif curline =~ '"\s*Quick Help:'
- norm ?
+ keepj norm ?
let s:netrw_skipbrowse= 1
echo 'Pressing "?" also works'
elseif curline =~ '"\s*\%(Hiding\|Showing\):'
- norm a
+ keepj norm a
let s:netrw_skipbrowse= 1
echo 'Pressing "a" also works'
elseif line("$") > w:netrw_bannercnt
- exe 'silent keepjumps '.w:netrw_bannercnt
+ exe 'sil keepj '.w:netrw_bannercnt
endif
elseif w:netrw_liststyle == s:THINLIST
" call Decho("thin column handling")
- norm! 0
+ keepj norm! 0
let dirname= getline('.')
elseif w:netrw_liststyle == s:LONGLIST
" call Decho("long column handling")
- norm! 0
+ keepj norm! 0
let dirname= substitute(getline('.'),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e')
elseif w:netrw_liststyle == s:TREELIST
@@ -2652,18 +2794,18 @@ fun! s:NetrwGetWord()
" call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart." bannercnt=".w:netrw_bannercnt)
" call Decho("1: dirname<".dirname.">")
if filestart == 0
- norm! 0ma
+ keepj norm! 0ma
else
call cursor(line("."),filestart+1)
- norm! ma
+ keepj norm! ma
endif
let rega= @a
let eofname= filestart + b:netrw_cpf + 1
if eofname <= col("$")
call cursor(line("."),filestart+b:netrw_cpf+1)
- norm! "ay`a
+ keepj norm! "ay`a
else
- norm! "ay$
+ keepj norm! "ay$
endif
let dirname = @a
let @a = rega
@@ -2683,7 +2825,7 @@ fun! s:NetrwGetWord()
endfun
" ---------------------------------------------------------------------
-" s:NetrwListSettings: {{{2
+" s:NetrwListSettings: make standard settings for a netrw listing {{{2
fun! s:NetrwListSettings(islocal)
" call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")")
let fname= bufname("%")
@@ -2749,35 +2891,23 @@ fun! s:NetrwListStyle(islocal)
" clear buffer - this will cause NetrwBrowse/LocalBrowseCheck to do a refresh
" call Decho("clear buffer<".expand("%")."> with :%d")
- %d
+ keepj %d
+ " following prevents tree listing buffer from being marked "modified"
+ setlocal nomod
" refresh the listing
+" call Decho("refresh the listing")
let svpos= netrw#NetrwSavePosn()
call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
call netrw#NetrwRestorePosn(svpos)
- if w:netrw_liststyle != s:WIDELIST
- if g:netrw_cursorline == 2
- setlocal cursorline
- let &cursorcolumn= s:netrw_usercuc
- elseif g:netrw_cursorline
- setlocal cursorline
-" call Decho("setlocal cursorline")
- endif
- else
- if g:netrw_cursorline == 2
- setlocal cursorline cursorcolumn
-" call Decho("setlocal cursorline cursorcolumn")
- elseif g:netrw_cursorline
- let &cursorline= s:netrw_usercul
- endif
- endif
+ call s:NetrwCursorline()
" keep cursor on the filename
- silent keepjumps $
+ sil keepj $
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 "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
endif
" call Dret("NetrwListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
@@ -2797,11 +2927,11 @@ fun! s:NetrwBannerCtrl(islocal)
" keep cursor on the filename
let fname= s:NetrwGetWord()
- silent keepjumps $
+ sil keepj $
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 "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
endif
" call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner)
endfun
@@ -2821,8 +2951,8 @@ fun! s:NetrwBookmarkMenu()
if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
if exists("g:NetrwTopLvlMenu")
" call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)")
- exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
- exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete'
+ exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
+ exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete'
endif
if !exists("s:netrw_initbookhist")
call s:NetrwBookHistRead()
@@ -2833,13 +2963,13 @@ fun! s:NetrwBookmarkMenu()
let cnt= 1
for bmd in g:netrw_bookmarklist
" call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.' :e '.bmd)
- let bmd= escape(bmd,'. ')
+ let bmd= escape(bmd,g:netrw_menu_escape)
" show bookmarks for goto menu
- exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>"
+ exe 'sil! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>"
" show bookmarks for deletion menu
- exe 'silent! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB"
+ exe 'sil! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB"
let cnt= cnt + 1
endfor
@@ -2853,9 +2983,9 @@ fun! s:NetrwBookmarkMenu()
let histcnt = histcnt + 1
let priority = g:netrw_dirhist_cnt + histcnt
if exists("g:netrw_dirhist_{cnt}")
- let histdir= escape(g:netrw_dirhist_{cnt},'./&? ')
+ let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape)
" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir)
- exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>"
+ exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>"
endif
let first = 0
let cnt = ( cnt - 1 ) % g:netrw_dirhistmax
@@ -2886,26 +3016,17 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
return
endif
- " check if the status bar was clicked on instead of a file/directory name
- call feedkeys("\<LeftMouse>")
- let c= getchar()
- let mouse_lnum = v:mouse_lnum
- let wlastline = line('w$')
- let lastline = line('$')
-" call Decho("v:mouse_lnum=".mouse_lnum." line(w$)=".wlastline." line($)=".lastline)
- if mouse_lnum == wlastline + 1 || v:mouse_win != winnr()
-" call Decho("appears to be a status bar leftmouse click")
- " appears to be a status bar leftmouse click
- return
- endif
-
call s:NetrwOptionSave("s:")
call s:NetrwSafeOptions()
let nbcd_curpos = netrw#NetrwSavePosn()
let s:nbcd_curpos_{bufnr('%')} = nbcd_curpos
- let dirname = substitute(b:netrw_curdir,'\\','/','ge')
- let newdir = a:newdir
- let dolockout = 0
+ if (has("win32") || has("win95") || has("win64") || has("win16"))
+ let dirname = substitute(b:netrw_curdir,'\\','/','ge')
+ else
+ let dirname= b:netrw_curdir
+ endif
+ let newdir = a:newdir
+ let dolockout = 0
" set up o/s-dependent directory recognition pattern
if has("amiga")
@@ -3028,7 +3149,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" call Decho("clear buffer<".expand("%")."> with :%d")
setlocal noro ma
" call Decho("setlocal noro ma")
- keepjumps %d
+ keepj %d
endif
if has("amiga")
@@ -3064,7 +3185,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" call Decho("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
+ keepj %d
endif
let treedir = s:NetrwTreeDir()
let s:treecurpos = nbcd_curpos
@@ -3107,7 +3228,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
call remove(w:netrw_treedict,treedir)
" call Decho("removed entry<".treedir."> from treedict")
" call Decho("yielding treedict<".string(w:netrw_treedict).">")
- let dirname = w:netrw_treetop
+ let dirname= w:netrw_treetop
else
" go down one directory
let dirname= substitute(treedir,'/*$','/','')
@@ -3204,6 +3325,11 @@ fun! netrw#NetrwBrowseX(fname,remote)
endif
else
let fname= a:fname
+ " special ~ handler for local
+ if fname =~ '^\~' && expand("$HOME") != ""
+" call Decho('invoking special ~ handler')
+ let fname= substitute(fname,'^\~',expand("$HOME"),'')
+ endif
endif
" call Decho("fname<".fname.">")
" call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
@@ -3270,17 +3396,17 @@ fun! netrw#NetrwBrowseX(fname,remote)
elseif has("unix") && executable("gnome-open") && !s:haskdeinit
" call Decho("exe silent !gnome-open ".shellescape(fname,1)." ".redir)
- exe "silent !gnome-open ".shellescape(fname,1).redir
+ exe "sil !gnome-open ".shellescape(fname,1).redir
let ret= v:shell_error
elseif has("unix") && executable("kfmclient") && s:haskdeinit
" call Decho("exe silent !kfmclient exec ".shellescape(fname,1)." ".redir)
- exe "silent !kfmclient exec ".shellescape(fname,1)." ".redir
+ exe "sil !kfmclient exec ".shellescape(fname,1)." ".redir
let ret= v:shell_error
elseif has("macunix") && executable("open")
" call Decho("exe silent !open ".shellescape(fname,1)." ".redir)
- exe "silent !open ".shellescape(fname,1)." ".redir
+ exe "sil !open ".shellescape(fname,1)." ".redir
let ret= v:shell_error
else
@@ -3311,7 +3437,7 @@ fun! netrw#NetrwBrowseX(fname,remote)
if g:netrw_use_noswf
setlocal noswf
endif
- exe "norm! \<c-o>"
+ exe "keepj norm! \<c-o>"
" redraw!
endif
@@ -3381,19 +3507,19 @@ fun! netrw#Explore(indx,dosplit,style,...)
let b:netrw_curdir= getcwd()
" call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)")
endif
- let curdir = b:netrw_curdir
+ let curdir = simplify(b:netrw_curdir)
let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
" call Decho("curdir<".curdir."> curfiledir<".curfiledir.">")
" call FOTEST(1)
" save registers
- silent! let keepregstar = @*
- silent! let keepregplus = @+
- silent! let keepregslash= @/
+ sil! let keepregstar = @*
+ sil! let keepregplus = @+
+ sil! let keepregslash= @/
" if dosplit or file has been modified
if a:dosplit || &modified || a:style == 6
-" call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style)
+" call Decho("case dosplit=".a:dosplit." modified=".&modified." a:style=".a:style.": dosplit or file has been modified")
call s:SaveWinVars()
let winsize= g:netrw_winsize
if a:indx > 0
@@ -3431,35 +3557,53 @@ fun! netrw#Explore(indx,dosplit,style,...)
call s:RestoreBufVars()
endif
call s:RestoreWinVars()
+" else " Decho
+" call Decho("case a:dosplit=".a:dosplit." AND modified=".&modified." AND a:style=".a:style." is not 6")
endif
- norm! 0
+ keepj norm! 0
" call FOTEST(2)
if a:0 > 0
-" call Decho("case [a:0=".a:0."]>0: a:1<".a:1.">")
+" call Decho("case [a:0=".a:0."] > 0: 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("case a:1: ~ and unix or cygwin")
+ let dirname= simplify(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()
+" call Decho("case a:1: .")
+ let dirname= simplify(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()").")")
elseif a:1 =~ '\$'
- let dirname= expand(a:1)
+" call Decho("case a:1: $")
+ let dirname= simplify(expand(a:1))
" call Decho("using user-specified dirname<".dirname."> with $env-var")
+ elseif a:1 !~ '^\*/'
+" call Decho("case a:1: other, not pattern or filepattern")
+ let dirname= simplify(a:1)
+" call Decho("using user-specified dirname<".dirname.">")
else
+" call Decho("case a:1: pattern or filepattern")
let dirname= a:1
-" call Decho("using user-specified dirname<".dirname.">")
endif
else
" clear explore
+" call Decho("case a:0=".a:0.": clearing Explore list")
call s:NetrwClearExplore()
" call Dret("netrw#Explore : cleared list")
return
endif
+
" call FOTEST(3)
+" call Decho("dirname<".dirname.">")
+ if dirname =~ '\.\./\=$'
+ let dirname= simplify(fnamemodify(dirname,':p:h'))
+ elseif dirname =~ '\.\.' || dirname == '.'
+ let dirname= simplify(fnamemodify(dirname,':p'))
+ endif
+" call Decho("dirname<".dirname."> (after simplify)")
if dirname =~ '/\*\*/'
" handle .../**/.../filepat
@@ -3524,9 +3668,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
" call Decho("curdir<".curdir.">")
if has("win32") || has("win95") || has("win64") || has("win16")
- call search('\<'.substitute(curdir,'^.*[/\\]','','e').'\>','cW')
+ keepj call search('\<'.substitute(curdir,'^.*[/\\]','','e').'\>','cW')
else
- call search('\<'.substitute(curdir,'^.*/','','e').'\>','cW')
+ keepj call search('\<'.substitute(curdir,'^.*/','','e').'\>','cW')
endif
" starpat=1: Explore *//pattern (current directory only search for files containing pattern)
@@ -3557,9 +3701,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
" call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")")
if !exists("w:netrw_explore_list") " sanity check
call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
- silent! let @* = keepregstar
- silent! let @+ = keepregstar
- silent! let @/ = keepregslash
+ sil! let @* = keepregstar
+ sil! let @+ = keepregstar
+ sil! let @/ = keepregslash
" call Dret("netrw#Explore")
return
endif
@@ -3580,9 +3724,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
" call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")")
if !exists("w:netrw_explore_list") " sanity check
call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
- silent! let @* = keepregstar
- silent! let @+ = keepregstar
- silent! let @/ = keepregslash
+ sil! let @* = keepregstar
+ sil! let @+ = keepregstar
+ sil! let @/ = keepregslash
" call Dret("netrw#Explore")
return
endif
@@ -3615,7 +3759,7 @@ fun! netrw#Explore(indx,dosplit,style,...)
" call Decho("starpat=".starpat.": build *//pattern list")
" call Decho("pattern<".pattern.">")
try
- exe "noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
+ exe "keepj noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
catch /^Vim\%((\a\+)\)\=:E480/
call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
" call Dret("netrw#Explore : unable to find pattern<".pattern.">")
@@ -3628,7 +3772,7 @@ fun! netrw#Explore(indx,dosplit,style,...)
" starpat=2: Explore **//pattern (recursive descent search for files containing pattern)
" call Decho("starpat=".starpat.": build **//pattern list")
try
- exe "silent noautocmd vimgrep /".pattern."/gj "."**/*"
+ exe "sil keepj noautocmd 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
@@ -3665,9 +3809,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
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
+ sil! let @* = keepregstar
+ sil! let @+ = keepregstar
+ sil! let @/ = keepregslash
" call Dret("netrw#Explore : no files matched")
return
endif
@@ -3696,9 +3840,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
let w:netrw_liststyle= g:netrw_liststyle
endif
if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST
- call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
+ keepj call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
else
- call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
+ keepj call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
endif
let w:netrw_explore_mtchcnt = indx + 1
let w:netrw_explore_bufnr = bufnr("%")
@@ -3711,9 +3855,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
if !exists("g:netrw_quiet")
call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
endif
- silent! let @* = keepregstar
- silent! let @+ = keepregstar
- silent! let @/ = keepregslash
+ sil! let @* = keepregstar
+ sil! let @+ = keepregstar
+ sil! let @/ = keepregslash
" call Dret("netrw#Explore : missing +path_extra")
return
endif
@@ -3721,8 +3865,8 @@ fun! netrw#Explore(indx,dosplit,style,...)
else
" call Decho("default 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
+ sil! unlet w:netrw_treedict
+ sil! unlet w:netrw_treetop
endif
let newdir= dirname
if !exists("b:netrw_curdir")
@@ -3778,9 +3922,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
endif
" call FOTEST(6)
- silent! let @* = keepregstar
- silent! let @+ = keepregstar
- silent! let @/ = keepregslash
+ sil! let @* = keepregstar
+ sil! let @+ = keepregstar
+ sil! let @/ = keepregslash
" call Dret("netrw#Explore : @/<".@/.">")
endfun
@@ -3843,7 +3987,7 @@ fun! s:NetrwHide(islocal)
" switch between show-all/show-not-hidden/show-hidden
let g:netrw_hide=(g:netrw_hide+1)%3
- exe "norm! 0"
+ exe "keepj norm! 0"
if g:netrw_hide && g:netrw_list_hide == ""
call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49)
" call Dret("NetrwHide")
@@ -3917,6 +4061,25 @@ endfun
" s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
fun! s:NetrwLeftmouse(islocal)
" call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
+
+ " check if the status bar was clicked on instead of a file/directory name
+ call feedkeys("\<LeftMouse>")
+ let c= getchar()
+ let mouse_lnum = v:mouse_lnum
+ let wlastline = line('w$')
+ let lastline = line('$')
+" call Decho("v:mouse_lnum=".mouse_lnum." line(w$)=".wlastline." line($)=".lastline." v:mouse_win=".v:mouse_win." winnr#".winnr())
+" call Decho("v:mouse_col =".v:mouse_col." col=".col(".")." wincol =".wincol()." winwidth =".winwidth(0))
+ if mouse_lnum >= wlastline + 1 || v:mouse_win != winnr()
+ " appears to be a status bar leftmouse click
+" call Dret("s:NetrwLeftmouse : detected a status bar leftmouse click")
+ return
+ endif
+ if v:mouse_col != col('.')
+" call Dret("s:NetrwLeftmouse : detected a vertical separator bar leftmouse click")
+ return
+ endif
+
if a:islocal
if exists("b:netrw_curdir")
call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
@@ -3955,15 +4118,15 @@ fun! s:NetrwListHide()
" Prune the list by hiding any files which match
if g:netrw_hide == 1
" call Decho("hiding<".hide."> listhide<".listhide.">")
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
+ exe 'sil keepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
elseif g:netrw_hide == 2
" call Decho("showing<".hide."> listhide<".listhide.">")
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
+ exe 'sil keepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
endif
endwhile
if g:netrw_hide == 2
- exe 'silent keepjumps '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
+ exe 'sil keepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
+ exe 'sil keepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
endif
" call Dret("NetrwListHide")
@@ -3985,7 +4148,7 @@ fun! s:NetrwHideEdit(islocal)
" call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
" refresh the listing
- silent call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./"))
+ silent keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./"))
" restore cursor position
call netrw#NetrwRestorePosn(svpos)
@@ -4057,12 +4220,12 @@ fun! s:NetrwMakeDir(usrhost)
call mkdir(fullnewdir,"p")
else
let netrw_origdir= s:NetrwGetcwd(1)
- exe 'keepjumps lcd '.fnameescape(b:netrw_curdir)
+ exe 'keepj lcd '.fnameescape(b:netrw_curdir)
" call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">")
" call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1))
- exe "silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)
+ exe "sil! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)
if !g:netrw_keepdir
- exe 'keepjumps lcd '.fnameescape(netrw_origdir)
+ exe 'keepj lcd '.fnameescape(netrw_origdir)
" call Decho("netrw_keepdir=".g:netrw_keepdir.": keepjumps lcd ".fnameescape(netrw_origdir)." getcwd<".getcwd().">")
endif
endif
@@ -4084,7 +4247,7 @@ fun! s:NetrwMakeDir(usrhost)
let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd)
let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname
" call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname,1))
- exe "silent! !".mkdircmd." ".shellescape(newdirname,1)
+ exe "sil! !".mkdircmd." ".shellescape(newdirname,1)
if v:shell_error == 0
" refresh listing
let svpos= netrw#NetrwSavePosn()
@@ -4330,10 +4493,10 @@ fun! s:NetrwMarkFileCopy(islocal)
if exists("*mkdir")
call mkdir(tmpdir)
else
- exe "silent! !".g:netrw_local_mkdir.' '.shellescape(tmpdir,1)
+ exe "sil! !".g:netrw_local_mkdir.' '.shellescape(tmpdir,1)
endif
if isdirectory(tmpdir)
- exe "keepjumps lcd ".fnameescape(tmpdir)
+ exe "keepj lcd ".fnameescape(tmpdir)
call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
call s:NetrwUpload(localfiles,s:netrwmftgt)
@@ -4341,10 +4504,10 @@ fun! s:NetrwMarkFileCopy(islocal)
for fname in s:netrwmarkfilelist_{bufnr('%')}
call s:NetrwDelete(fname)
endfor
- exe "keepjumps lcd ".fnameescape(curdir)
- exe "silent !".g:netrw_local_rmdir." ".shellescape(tmpdir,1)
+ exe "keepj lcd ".fnameescape(curdir)
+ exe "sil !".g:netrw_local_rmdir." ".shellescape(tmpdir,1)
else
- exe "keepjumps lcd ".fnameescape(curdir)
+ exe "keepj lcd ".fnameescape(curdir)
endif
endif
endif
@@ -4570,7 +4733,7 @@ fun! s:NetrwMarkFileGrep(islocal)
" use vimgrep for both local and remote
" call Decho("exe vimgrep".pat." ".netrwmarkfilelist)
try
- exe "noautocmd vimgrep".pat." ".netrwmarkfilelist
+ exe "keepj noautocmd vimgrep".pat." ".netrwmarkfilelist
catch /^Vim\%((\a\+)\)\=:E480/
call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
" call Dret("s:NetrwMarkFileGrep : unable to find pattern<".pattern.">")
@@ -4750,33 +4913,33 @@ fun! s:NetrwMarkFileRegexp(islocal)
" convert displayed listing into a filelist
let eikeep = &ei
let areg = @a
- silent %y a
+ sil keepj %y a
set ei=all ma
" call Decho("set ei=all ma")
1split
call s:NetrwEnew()
call s:NetrwSafeOptions()
- silent norm! "ap
- 2
+ sil keepj norm! "ap
+ keepj 2
let bannercnt= search('^" =====','W')
- exe "silent 1,".bannercnt."d"
+ exe "sil keepj 1,".bannercnt."d"
set bt=nofile
if g:netrw_liststyle == s:LONGLIST
- silent %s/\s\{2,}\S.*$//e
+ sil keepj %s/\s\{2,}\S.*$//e
call histdel("/",-1)
elseif g:netrw_liststyle == s:WIDELIST
- silent %s/\s\{2,}/\r/ge
+ sil keepj %s/\s\{2,}/\r/ge
call histdel("/",-1)
elseif g:netrw_liststyle == s:TREELIST
- silent %s/^| //e
- silent! g/^ .*$/d
+ sil keepj %s/^| //e
+ sil! keepj g/^ .*$/d
call histdel("/",-1)
call histdel("/",-1)
endif
" convert regexp into the more usual glob-style format
let regexp= substitute(regexp,'\*','.*','g')
" call Decho("regexp<".regexp.">")
- exe "silent! v/".escape(regexp,'/')."/d"
+ exe "sil! keepj v/".escape(regexp,'/')."/d"
call histdel("/",-1)
let filelist= getline(1,line("$"))
q!
@@ -4847,7 +5010,7 @@ fun! s:NetrwMarkFileTag(islocal)
e tags
let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','')
" call Decho("curdir<".curdir."> path<".path.">")
- exe '%s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e'
+ exe 'keepj %s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e'
call histdel("/",-1)
wq!
endif
@@ -4914,7 +5077,7 @@ fun! s:NetrwMarkFileTgt(islocal)
call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
call netrw#NetrwRestorePosn(svpos)
if !hadtgt
- norm! j
+ sil! keepj norm! j
endif
" call Dret("s:NetrwMarkFileTgt : netrwmftgt<".(exists("s:netrwmftgt")? s:netrwmftgt : "").">")
@@ -5042,55 +5205,55 @@ fun! s:NetrwMenu(domenu)
if !exists("s:netrw_menu_enabled") && a:domenu
" call Decho("initialize menu")
let s:netrw_menu_enabled= 1
- exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>'
- exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :'
- exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -'
- exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x'
- exe 'silent! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb mb'
- exe 'silent! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u u'
- exe 'silent! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U U'
- exe 'silent! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb qb'
- exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'." \<c-h>'"
- exe 'silent! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S S'
- exe 'silent! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh gh"
- exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>"
- exe 'silent! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>"
- exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D'
- exe 'silent! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr> '."\<cr>"
- exe 'silent! menu '.g:NetrwMenuPriority.'.11.2 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directory<tab>p p'
- exe 'silent! menu '.g:NetrwMenuPriority.'.11.3 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ Window<tab>P P'
- exe 'silent! menu '.g:NetrwMenuPriority.'.11.4 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Window<tab>o o'
- exe 'silent! menu '.g:NetrwMenuPriority.'.11.5 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Window<tab>v v'
- exe 'silent! menu '.g:NetrwMenuPriority.'.12.1 '.g:NetrwTopLvlMenu.'Explore.Directory\ Name :Explore '
- exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */ :Explore */'
- exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/ :Explore **/'
- exe 'silent! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *// :Explore *//'
- exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **// :Explore **//'
- exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore :Nexplore<cr>'
- exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore :Pexplore<cr>'
- exe 'silent! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d d'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.1 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ File<tab>mf mf'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.2 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexp<tab>mr mr'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.3 '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Control<tab>a a'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.4 '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Target<tab>mc mc'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.5 '.g:NetrwTopLvlMenu.'Marked\ Files.Delete<tab>D D'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.6 '.g:NetrwTopLvlMenu.'Marked\ Files.Diff<tab>md md'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.7 '.g:NetrwTopLvlMenu.'Marked\ Files.Edit<tab>me me'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.8 '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmd<tab>mx mx'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.9 '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Target<tab>mm mm'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.Obtain<tab>O O'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Print<tab>mp mp'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.Replace<tab>R R'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Target<tab>mt mt'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.Tag<tab>mT mT'
- exe 'silent! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompress<tab>mz mz'
- exe 'silent! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O O'
- exe 'silent! menu '.g:NetrwMenuPriority.'.16.1 '.g:NetrwTopLvlMenu.'Style.Listing\ Style\ (thin-long-wide-tree)<tab>i i'
- exe 'silent! menu '.g:NetrwMenuPriority.'.16.2 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show<tab>a a'
- exe 'silent! menu '.g:NetrwMenuPriority.'.16.3 '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order<tab>'."r r"
- exe 'silent! menu '.g:NetrwMenuPriority.'.16.4 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s s'
- exe 'silent! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R'
- exe 'silent! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c c'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb mb'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u u'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U U'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb qb'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'." \<c-h>'"
+ exe 'sil! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S S'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh gh"
+ exe 'sil! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>"
+ exe 'sil! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>"
+ exe 'sil! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr> '."\<cr>"
+ exe 'sil! menu '.g:NetrwMenuPriority.'.11.2 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directory<tab>p p'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.11.3 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ Window<tab>P P'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.11.4 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Window<tab>o o'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.11.5 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Window<tab>v v'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.12.1 '.g:NetrwTopLvlMenu.'Explore.Directory\ Name :Explore '
+ exe 'sil! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */ :Explore */'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/ :Explore **/'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *// :Explore *//'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **// :Explore **//'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore :Nexplore<cr>'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore :Pexplore<cr>'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d d'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.1 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ File<tab>mf mf'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.2 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexp<tab>mr mr'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.3 '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Control<tab>a a'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.4 '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Target<tab>mc mc'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.5 '.g:NetrwTopLvlMenu.'Marked\ Files.Delete<tab>D D'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.6 '.g:NetrwTopLvlMenu.'Marked\ Files.Diff<tab>md md'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.7 '.g:NetrwTopLvlMenu.'Marked\ Files.Edit<tab>me me'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.8 '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmd<tab>mx mx'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.9 '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Target<tab>mm mm'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.Obtain<tab>O O'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Print<tab>mp mp'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.Replace<tab>R R'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Target<tab>mt mt'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.Tag<tab>mT mT'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompress<tab>mz mz'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O O'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.16.1 '.g:NetrwTopLvlMenu.'Style.Listing\ Style\ (thin-long-wide-tree)<tab>i i'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.16.2 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show<tab>a a'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.16.3 '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order<tab>'."r r"
+ exe 'sil! menu '.g:NetrwMenuPriority.'.16.4 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s s'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R'
+ exe 'sil! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c c'
call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4, 8.2.x
let s:netrw_menucnt= 28
@@ -5102,9 +5265,9 @@ fun! s:NetrwMenu(domenu)
if s:netrwcnt <= 1
" call Decho("clear menus")
- exe 'silent! unmenu '.g:NetrwTopLvlMenu
+ exe 'sil! unmenu '.g:NetrwTopLvlMenu
" call Decho('exe silent! unmenu '.g:NetrwTopLvlMenu.'*')
- silent! unlet s:netrw_menu_enabled
+ sil! unlet s:netrw_menu_enabled
endif
endif
" call Dret("NetrwMenu")
@@ -5214,7 +5377,7 @@ fun! netrw#NetrwObtain(islocal,fname,...)
let tmpbufnr= bufnr("%")
setlocal ff=unix
if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
- put =g:netrw_ftpmode
+ keepj put =g:netrw_ftpmode
" call Decho("filter input: ".getline('$'))
endif
@@ -5224,7 +5387,7 @@ fun! netrw#NetrwObtain(islocal,fname,...)
endif
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('$'))
endif
for fname in fnamelist
@@ -5254,44 +5417,44 @@ fun! netrw#NetrwObtain(islocal,fname,...)
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
+ keepj put ='open '.g:netrw_machine.' '.g:netrw_port
" call Decho("filter input: ".getline('$'))
else
- put ='open '.g:netrw_machine
+ keepj put ='open '.g:netrw_machine
" call Decho("filter input: ".getline('$'))
endif
if exists("g:netrw_ftp") && g:netrw_ftp == 1
- put =g:netrw_uid
+ keepj put =g:netrw_uid
" call Decho("filter input: ".getline('$'))
- put ='\"'.s:netrw_passwd.'\"'
+ keepj put ='\"'.s:netrw_passwd.'\"'
" call Decho("filter input: ".getline('$'))
else
- put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
" call Decho("filter input: ".getline('$'))
endif
if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
- put =g:netrw_ftpmode
+ keepj put =g:netrw_ftpmode
" call Decho("filter input: ".getline('$'))
endif
if exists("b:netrw_fname") && b:netrw_fname != ""
- call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
+ keepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
" call Decho("filter input: ".getline('$'))
endif
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('$'))
endif
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('$'))
endif
for fname in fnamelist
- call setline(line("$")+1,'get "'.fname.'"')
+ keepj call setline(line("$")+1,'get "'.fname.'"')
endfor
" call Decho("filter input: ".getline('$'))
@@ -5299,7 +5462,7 @@ fun! netrw#NetrwObtain(islocal,fname,...)
" -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password
- norm! 1Gdd
+ keepj norm! 1Gdd
" call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
@@ -5502,25 +5665,25 @@ fun! s:NetrwUpload(fname,tgt,...)
if b:netrw_method == 2
" handle uploading a list of files via ftp+.netrc
let netrw_fname = b:netrw_fname
- silent keepjumps new
+ sil keepj new
" call Decho("filter input window#".winnr())
- put =g:netrw_ftpmode
+ keepj put =g:netrw_ftpmode
" call Decho("filter input: ".getline('$'))
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('$'))
endif
- call setline(line("$")+1,'lcd "'.fromdir.'"')
+ keepj call setline(line("$")+1,'lcd "'.fromdir.'"')
" call Decho("filter input: ".getline('$'))
- call setline(line("$")+1,'cd "'.tgtdir.'"')
+ keepj call setline(line("$")+1,'cd "'.tgtdir.'"')
" call Decho("filter input: ".getline('$'))
for fname in a:fname
- call setline(line("$")+1,'put "'.fname.'"')
+ keepj call setline(line("$")+1,'put "'.fname.'"')
" call Decho("filter input: ".getline('$'))
endfor
@@ -5533,7 +5696,7 @@ fun! s:NetrwUpload(fname,tgt,...)
exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
endif
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
- silent g/Local directory now/d
+ sil keepj g/Local directory now/d
call histdel("/",-1)
if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
call netrw#ErrorMsg(s:ERROR,getline(1),14)
@@ -5549,38 +5712,38 @@ fun! s:NetrwUpload(fname,tgt,...)
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
+ keepj put ='open '.g:netrw_machine.' '.g:netrw_port
" call Decho("filter input: ".getline('$'))
else
- put ='open '.g:netrw_machine
+ keepj put ='open '.g:netrw_machine
" call Decho("filter input: ".getline('$'))
endif
if exists("g:netrw_ftp") && g:netrw_ftp == 1
- put =g:netrw_uid
+ keepj put =g:netrw_uid
" call Decho("filter input: ".getline('$'))
- call setline(line("$")+1,'"'.s:netrw_passwd.'"')
+ keepj call setline(line("$")+1,'"'.s:netrw_passwd.'"')
" call Decho("filter input: ".getline('$'))
else
- put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
" call Decho("filter input: ".getline('$'))
endif
- call setline(line("$")+1,'lcd "'.fromdir.'"')
+ keepj call setline(line("$")+1,'lcd "'.fromdir.'"')
" call Decho("filter input: ".getline('$'))
if exists("b:netrw_fname") && b:netrw_fname != ""
- call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
+ keepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
" call Decho("filter input: ".getline('$'))
endif
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('$'))
endif
for fname in a:fname
- call setline(line("$")+1,'put "'.fname.'"')
+ keepj call setline(line("$")+1,'put "'.fname.'"')
" call Decho("filter input: ".getline('$'))
endfor
@@ -5588,11 +5751,11 @@ fun! s:NetrwUpload(fname,tgt,...)
" -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password
- norm! 1Gdd
+ keepj norm! 1Gdd
" call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n")
exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
- silent g/Local directory now/d
+ sil keepj g/Local directory now/d
call histdel("/",-1)
if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
let debugkeep= &debug
@@ -5623,7 +5786,14 @@ fun! s:NetrwPreview(path) range
call s:NetrwSafeOptions()
if has("quickfix")
if !isdirectory(a:path)
- exe (g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path)
+ if g:netrw_preview && !g:netrw_alto
+ let pvhkeep= &pvh
+ let &pvh = winwidth(0) - g:netrw_winsize
+ endif
+ exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path)
+ if exists("pvhkeep")
+ let &pvh= pvhkeep
+ endif
elseif !exists("g:netrw_quiet")
call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38)
endif
@@ -5644,7 +5814,7 @@ fun! s:NetrwRefresh(islocal,dirname)
setlocal ma noro
" call Decho("setlocal ma noro")
" call Decho("clear buffer<".expand("%")."> with :%d")
- %d
+ keepj %d
if a:islocal
call netrw#LocalBrowseCheck(a:dirname)
else
@@ -5744,17 +5914,17 @@ fun! s:NetrwSetSort()
if seq == '*'
let starpriority= spriority
else
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/'
+ exe 'sil keepj '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/'
call histdel("/",-1)
" sometimes multiple sorting patterns will match the same file or directory.
" The following substitute is intended to remove the excess matches.
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e'
+ exe 'sil keepj '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e'
call histdel("/",-1)
endif
let priority = priority + 1
endwhile
if exists("starpriority")
- exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/'
+ exe 'sil keepj '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/'
call histdel("/",-1)
endif
@@ -5764,7 +5934,7 @@ fun! s:NetrwSetSort()
" priority pattern needs to be retained. So, at this point, these excess
" priority prefixes need to be removed, but not directories that happen to
" be just digits themselves.
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e'
+ exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e'
call histdel("/",-1)
" call Dret("SetSort")
@@ -5778,7 +5948,7 @@ fun! s:NetrwSortStyle(islocal)
let svpos= netrw#NetrwSavePosn()
let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'
- norm! 0
+ keepj norm! 0
call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
call netrw#NetrwRestorePosn(svpos)
@@ -5923,7 +6093,7 @@ fun! s:NetrwTreeDir()
" call Decho("user attempted to close treeroot")
" now force a refresh
" call Decho("clear buffer<".expand("%")."> with :%d")
- keepjumps %d
+ keepj %d
" call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
return b:netrw_curdir
endif
@@ -6004,7 +6174,7 @@ fun! s:NetrwTreeDisplay(dir,depth)
call s:NetrwTreeDisplay(direntry.'/',depth)
else
" call Decho("<".entry."> is not a key in treedict (no subtree)")
- call setline(line("$")+1,depth.entry)
+ keepj call setline(line("$")+1,depth.entry)
endif
endfor
" call Dret("NetrwTreeDisplay")
@@ -6038,7 +6208,7 @@ fun! s:NetrwTreeListing(dirname)
" 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("w:treedict[".a:dirname."]= ".w:netrw_treedict[a:dirname])
+" call Decho("w:treedict[".a:dirname."]= ".string(w:netrw_treedict[a:dirname]))
exe "silent! keepjumps ".w:netrw_bannercnt.",$d"
" if past banner, record word
@@ -6070,7 +6240,7 @@ fun! s:NetrwWideListing()
" call Decho("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'
+ exe 'sil keepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
call histdel("/",-1)
else
" call Dret("NetrwWideListing")
@@ -6087,7 +6257,7 @@ fun! s:NetrwWideListing()
" call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
" make wide display
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
+ exe 'sil keepj '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
call histdel("/",-1)
let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
let newcolstart = w:netrw_bannercnt + fpc
@@ -6099,15 +6269,15 @@ fun! s:NetrwWideListing()
let newcolqty= newcolend - newcolstart
exe newcolstart
if newcolqty == 0
- exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
+ exe "sil keepj norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
else
- exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
+ exe "sil keepj norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
endif
- exe "silent keepjumps ".newcolstart.','.newcolend.'d'
- exe 'silent keepjumps '.w:netrw_bannercnt
+ exe "sil keepj ".newcolstart.','.newcolend.'d'
+ exe 'sil keepj '.w:netrw_bannercnt
endwhile
silent! let @*= keepregstar
- exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
+ exe "sil keepj ".w:netrw_bannercnt.',$s/\s\+$//e'
call histdel("/",-1)
setlocal noma nomod ro
" call Dret("NetrwWideListing")
@@ -6118,7 +6288,7 @@ endfun
" ---------------------------------------------------------------------
" s:PerformListing: {{{2
fun! s:PerformListing(islocal)
-" call Dfunc("s:PerformListing(islocal=".a:islocal.") buf(%)=".bufnr("%")."<".bufname("%").">")
+" call Dfunc("s:PerformListing(islocal=".a:islocal.") bufnr(%)=".bufnr("%")."<".bufname("%").">")
call s:NetrwSafeOptions()
setlocal noro ma
@@ -6132,7 +6302,7 @@ fun! s:PerformListing(islocal)
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
" force a refresh for tree listings
" call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d")
- keepjumps %d
+ keepj %d
endif
" save current directory on directory history list
@@ -6141,14 +6311,14 @@ fun! s:PerformListing(islocal)
" Set up the banner {{{3
if g:netrw_banner
" call Decho("set up banner")
- keepjumps put ='\" ============================================================================'
- keepjumps put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')'
- keepjumps put ='\" '.b:netrw_curdir
- keepjumps 1d
+ keepj put ='\" ============================================================================'
+ keepj put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')'
+ keepj put ='\" '.b:netrw_curdir
+ keepj 1d
let w:netrw_bannercnt= 3
- exe "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
else
- keepjumps 1
+ keepj 1
let w:netrw_bannercnt= 1
endif
@@ -6163,33 +6333,33 @@ fun! s:PerformListing(islocal)
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
+ keepj put ='\" Sorted by '.sortby
+ keepj 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
+ keepj put ='\" Sorted by '.sortby
let w:netrw_bannercnt= w:netrw_bannercnt + 1
endif
- exe "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
endif
" show copy/move target, if any
if g:netrw_banner
if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
" call Decho("show copy/move target<".s:netrwmftgt.">")
- keepjumps put =''
+ keepj put =''
if s:netrwmftgt_islocal
- call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (local)')
+ keepj call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (local)')
else
- call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
+ keepj call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
endif
let w:netrw_bannercnt= w:netrw_bannercnt + 1
else
" call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
endif
- exe "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
endif
" Hiding... -or- Showing... {{{3
@@ -6197,22 +6367,22 @@ fun! s:PerformListing(islocal)
" call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)")
if g:netrw_list_hide != "" && g:netrw_hide
if g:netrw_hide == 1
- keepjumps put ='\" Hiding: '.g:netrw_list_hide
+ keepj put ='\" Hiding: '.g:netrw_list_hide
else
- keepjumps put ='\" Showing: '.g:netrw_list_hide
+ keepj put ='\" Showing: '.g:netrw_list_hide
endif
let w:netrw_bannercnt= w:netrw_bannercnt + 1
endif
exe "keepjumps ".w:netrw_bannercnt
- keepjumps put ='\" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec'
- keepjumps put ='\" ============================================================================'
+ keepj put ='\" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec'
+ keepj put ='\" ============================================================================'
let w:netrw_bannercnt= w:netrw_bannercnt + 2
endif
" bannercnt should index the line just after the banner
if g:netrw_banner
let w:netrw_bannercnt= w:netrw_bannercnt + 1
- exe "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
" call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
endif
@@ -6252,15 +6422,15 @@ fun! s:PerformListing(islocal)
" 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'.' '.g:netrw_sort_options
+ exe 'sil keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
else
" reverse direction sorting
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
+ exe 'sil keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
endif
endif
" remove priority pattern prefix
" call Decho("remove priority pattern prefix")
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
+ exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
call histdel("/",-1)
elseif a:islocal
@@ -6268,12 +6438,12 @@ fun! s:PerformListing(islocal)
" 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'.' '.g:netrw_sort_options
+ exe 'sil keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
else
" call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
+ exe 'sil keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
endif
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+ exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
call histdel("/",-1)
endif
endif
@@ -6281,7 +6451,7 @@ fun! s:PerformListing(islocal)
elseif g:netrw_sort_direction =~ 'r'
" call Decho('reverse the sorted listing')
if !g:netrw_banner || w:netrw_bannercnt < line('$')
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
+ exe 'sil keepj '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
call histdel("/",-1)
endif
endif
@@ -6295,8 +6465,8 @@ fun! s:PerformListing(islocal)
if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner)
" place cursor on the top-left corner of the file listing
" call Decho("place cursor on top-left corner of file listing")
- exe 'silent keepjumps '.w:netrw_bannercnt
- norm! 0
+ exe 'sil keepj '.w:netrw_bannercnt
+ keepj norm! 0
endif
" record previous current directory
@@ -6416,43 +6586,43 @@ fun! s:NetrwRemoteListing()
endif
" call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)")
call s:NetrwRemoteFtpCmd(s:path,listcmd)
-" exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))'
+" exe "keepj ".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
+ exe "keepj ".w:netrw_bannercnt
" cleanup
if g:netrw_ftp_browse_reject != ""
- exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
+ exe "sil! keepj g/".g:netrw_ftp_browse_reject."/keepj d"
call histdel("/",-1)
endif
- silent! keepjumps %s/\r$//e
+ sil! keepj %s/\r$//e
call histdel("/",-1)
" if there's no ../ listed, then put ./ and ../ in
let line1= line(".")
- exe "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
let line2= search('^\.\.\/\%(\s\|$\)','cnW')
if line2 == 0
" call Decho("netrw is putting ./ and ../ into listing")
- keepjumps put='../'
- keepjumps put='./'
+ keepj put='../'
+ keepj put='./'
endif
- exe "keepjumps ".line1
+ exe "keepj ".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\+//'
+ exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
call histdel("/",-1)
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'
+ exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
+ exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
+ exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
call histdel("/",-1)
call histdel("/",-1)
call histdel("/",-1)
@@ -6468,23 +6638,23 @@ fun! s:NetrwRemoteListing()
" call Decho("1: exe silent r! ".shellescape(listcmd.s:path, 1))
exe "silent r! ".listcmd.shellescape(s:path, 1)
" 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
+ keepj g/^Listing directory/keepj d
+ keepj g/^d[-rwx][-rwx][-rwx]/keepj s+$+/+e
+ sil keepj g/^l[-rwx][-rwx][-rwx]/keepj s+$+@+e
call histdel("/",-1)
call histdel("/",-1)
call histdel("/",-1)
if g:netrw_liststyle != s:LONGLIST
- g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e
+ keepj g/^[dlsp-][-rwx][-rwx][-rwx]/keepj s/^.*\s\(\S\+\)$/\1/e
call histdel("/",-1)
endif
else
if s:path == ""
" call Decho("2: exe silent r! ".listcmd)
- exe "silent r! ".listcmd
+ exe "sil r! ".listcmd
else
" call Decho("3: exe silent r! ".listcmd.' '.shellescape(s:path,1))
- exe "silent r! ".listcmd.' '.shellescape(s:path,1)
+ exe "sil r! ".listcmd.' '.shellescape(s:path,1)
" call Decho("listcmd<".listcmd."> path<".s:path.">")
endif
endif
@@ -6492,7 +6662,7 @@ fun! s:NetrwRemoteListing()
" 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"
+ exe "sil! g/".g:netrw_ssh_browse_reject."/keepjumps d"
call histdel("/",-1)
endif
endif
@@ -6503,33 +6673,33 @@ fun! s:NetrwRemoteListing()
if s:method == "ftp"
" cleanup
- exe "keepjumps ".w:netrw_bannercnt
+ exe "keepj ".w:netrw_bannercnt
while getline('.') =~ g:netrw_ftp_browse_reject
- keepjumps d
+ keepj d
endwhile
" if there's no ../ listed, then put ./ and ../ in
let line1= line(".")
- keepjumps 1
- silent keepjumps call search('^\.\.\/\%(\s\|$\)','W')
+ keepj 1
+ sil keepj call search('^\.\.\/\%(\s\|$\)','W')
let line2= line(".")
if line2 == 0
- exe 'keepjumps '.w:netrw_bannercnt."put='./'"
+ exe 'keepj '.w:netrw_bannercnt."put='./'"
if b:netrw_curdir != '/'
- exe 'keepjumps '.w:netrw_bannercnt."put='../'"
+ exe 'keepj '.w:netrw_bannercnt."put='../'"
endif
endif
- exe "keepjumps ".line1
+ exe "keepj ".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/'
+ exe 'sil! keepj '.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
+ exe 'sil keepj '.w:netrw_bannercnt.',$s/ -> .*$//e'
+ exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
+ exe 'sil keepj '.w:netrw_bannercnt
call histdel("/",-1)
call histdel("/",-1)
call histdel("/",-1)
@@ -6537,7 +6707,7 @@ fun! s:NetrwRemoteListing()
endif
" if exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") " Decho
-" exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))'
+" exe "keepj ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))'
" endif " Decho
" call Dret("s:NetrwRemoteListing")
endfun
@@ -6729,10 +6899,10 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
if w:netrw_method == 2 || w:netrw_method == 5
" ftp + <.netrc>: Method #2
if a:path != ""
- put ='cd \"'.a:path.'\"'
+ keepj put ='cd \"'.a:path.'\"'
endif
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('.'))
endif
call setline(line("$")+1,a:listcmd)
@@ -6750,26 +6920,26 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
" ftp + machine,id,passwd,filename: Method #3
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
+ keepj put ='open '.g:netrw_machine.' '.g:netrw_port
else
- put ='open '.g:netrw_machine
+ keepj put ='open '.g:netrw_machine
endif
if exists("g:netrw_ftp") && g:netrw_ftp == 1
- put =g:netrw_uid
- put ='\"'.s:netrw_passwd.'\"'
+ keepj put =g:netrw_uid
+ keepj put ='\"'.s:netrw_passwd.'\"'
else
- put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
endif
if a:path != ""
- put ='cd \"'.a:path.'\"'
+ keepj put ='cd \"'.a:path.'\"'
endif
if exists("g:netrw_ftpextracmd")
- put =g:netrw_ftpextracmd
+ keepj put =g:netrw_ftpextracmd
" call Decho("filter input: ".getline('.'))
endif
- call setline(line("$")+1,a:listcmd)
+ keepj call setline(line("$")+1,a:listcmd)
" perform ftp:
" -i : turns off interactive prompting from ftp
@@ -6786,29 +6956,29 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
" cleanup for Windows
if has("win32") || has("win95") || has("win64") || has("win16")
- silent! keepjumps %s/\r$//e
+ sil! keepj %s/\r$//e
call histdel("/",-1)
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/$/@/
+ sil! keepj g/d\%([-r][-w][-x]\)\{3}/keepj s@$@/@
+ sil! keepj g/l\%([-r][-w][-x]\)\{3}/keepj s/$/@/
call histdel("/",-1)
call histdel("/",-1)
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'
+ exe "sil! keepj ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
call histdel("/",-1)
endif
endif
" ftp's listing doesn't seem to include ./ or ../
if !search('^\.\/$\|\s\.\/$','wn')
- exe 'keepjumps '.w:netrw_bannercnt
- put ='./'
+ exe 'keepj '.w:netrw_bannercnt
+ keepj put ='./'
endif
if !search('^\.\.\/$\|\s\.\.\/$','wn')
- exe 'keepjumps '.w:netrw_bannercnt
- put ='../'
+ exe 'keepj '.w:netrw_bannercnt
+ keepj put ='../'
endif
" restore settings
@@ -6861,7 +7031,7 @@ fun! s:NetrwRemoteRename(usrhost,path) range
" attempt to rename files/directories
while ctr <= a:lastline
- exe "keepjumps ".ctr
+ exe "keepj ".ctr
let oldname= s:NetrwGetWord()
" call Decho("oldname<".oldname.">")
@@ -7061,7 +7231,7 @@ fun! s:LocalListing()
let ft = strpart("000000000000000000",1,18-strlen(t)).t
" call Decho("exe keepjumps put ='".ft.'/'.filename."'")
let ftpfile= ft.'/'.pfile
- keepjumps silent! put=ftpfile
+ sil! keepj put=ftpfile
elseif g:netrw_sort_by =~ "^s"
" sort by size (handles file sizes up to 1 quintillion bytes, US)
@@ -7070,18 +7240,18 @@ fun! s:LocalListing()
let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz
" call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
let fszpfile= fsz.'/'.pfile
- keepjumps silent! put =fszpfile
+ sil! keepj put =fszpfile
else
" sort by name
" call Decho("exe keepjumps put ='".pfile."'")
- keepjumps silent! put=pfile
+ sil! keepj put=pfile
endif
endwhile
" cleanup any windows mess at end-of-line
- silent! keepjumps g/^$/d
- silent! keepjumps %s/\r$//e
+ sil! keepj g/^$/d
+ sil! keepj %s/\r$//e
call histdel("/",-1)
exe "setlocal ts=".g:netrw_maxfilenamelen
" call Decho("setlocal ts=".g:netrw_maxfilenamelen)
@@ -7132,7 +7302,7 @@ fun! s:LocalBrowseShellCmdRefresh()
if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1
" wipe out any non-displaying netrw buffer
" call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">")
- exe "silent! bd ".fnameescape(ibuf)
+ exe "sil! bd ".fnameescape(ibuf)
call remove(s:netrw_browselist,ibl)
" call Decho("browselist=".string(s:netrw_browselist))
continue
@@ -7179,7 +7349,7 @@ fun! s:NetrwLocalRm(path) range
let ctr = a:firstline
while ctr <= a:lastline
- exe "keepjumps ".ctr
+ exe "keepj ".ctr
" sanity checks
if line(".") < w:netrw_bannercnt
@@ -7219,7 +7389,7 @@ fun! s:NetrwLocalRmFile(path,fname,all)
let all= a:all
let ok = ""
- norm! 0
+ keepj norm! 0
let rmfile= s:ComposePath(a:path,a:fname)
" call Decho("rmfile<".rmfile.">")
@@ -7331,7 +7501,7 @@ fun! s:NetrwLocalRename(path) range
" attempt to rename files/directories
while ctr <= a:lastline
- exe "keepjumps ".ctr
+ exe "keepj ".ctr
" sanity checks
if line(".") < w:netrw_bannercnt
@@ -7344,7 +7514,7 @@ fun! s:NetrwLocalRename(path) range
continue
endif
- norm! 0
+ keepj norm! 0
let oldname= s:ComposePath(a:path,curword)
" call Decho("oldname<".oldname.">")
@@ -7464,7 +7634,7 @@ fun! netrw#ErrorMsg(level,msg,errnum)
" call Decho("setlocal ma noro")
setlocal ma noro
call setline(line("$")+1,level.a:msg)
- $
+ keepj $
else
" call Decho("create a NetrwMessage buffer window")
bo 1split
@@ -7521,7 +7691,7 @@ fun! netrw#NetrwRestorePosn(...)
" restore window
if exists("w:netrw_winnr")
" call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w")
- exe "silent! ".w:netrw_winnr."wincmd w"
+ exe "sil! ".w:netrw_winnr."wincmd w"
endif
if v:shell_error == 0
" as suggested by Bram M: redraw on no error
@@ -7532,13 +7702,13 @@ fun! netrw#NetrwRestorePosn(...)
" restore top-of-screen line
if exists("w:netrw_hline")
" call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z")
- exe "norm! ".w:netrw_hline."G0z\<CR>"
+ exe "keepj norm! ".w:netrw_hline."G0z\<CR>"
endif
" restore position
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>"
+ exe "keepj norm! ".w:netrw_line."G0".w:netrw_col."\<bar>"
endif
let &ei= eikeep
@@ -7556,7 +7726,7 @@ fun! netrw#NetrwSavePosn()
" call Decho("currently, win#".w:netrw_winnr." line#".w:netrw_line." col#".w:netrw_col)
" Save top-of-screen line
- norm! H0
+ keepj norm! H0
let w:netrw_hline= line(".")
" set up string holding position parameters
@@ -7747,7 +7917,7 @@ fun! s:NetrwBMShow()
if bmshowfuncs != []
let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','')
if bmshowfunc =~ '^call.*BMShow()'
- exe "silent! ".bmshowfunc
+ exe "sil! ".bmshowfunc
endif
endif
endif
@@ -7755,6 +7925,47 @@ fun! s:NetrwBMShow()
endfun
" ---------------------------------------------------------------------
+" s:NetrwCursorline: {{{2
+fun! s:NetrwCursorline()
+ if !exists("w:netrw_liststyle")
+ let w:netrw_liststyle= g:netrw_liststyle
+ endif
+" call Dfunc("s:NetrwCursorline() liststyle=".w:netrw_liststyle." g:netrw_cursorline=".g:netrw_cursorline." s:netrw_usercuc=".s:netrw_usercuc." s:netrw_usercul=".s:netrw_usercul)
+ "
+ if w:netrw_liststyle != s:WIDELIST
+ " thin-long-tree listings
+ if g:netrw_cursorline == 2
+ setlocal cursorline
+ let &l:cursorcolumn= s:netrw_usercuc
+" call Decho("setlocal cursorline (cursorcolumn is ".((s:netrw_usercuc)? "on" : "off").")")
+ elseif g:netrw_cursorline
+ setlocal cursorline
+" call Decho("setlocal cursorline")
+ endif
+
+ else
+ " wide listings
+ if g:netrw_cursorline == 2
+ setlocal cursorline cursorcolumn
+" call Decho("setlocal cursorline cursorcolumn")
+ elseif g:netrw_cursorline
+ let &l:cursorline= s:netrw_usercul
+" call Decho("cursorline is ".((s:netrw_usercul)? "on" : "off").")")
+ endif
+ endif
+" call Dret("s:NetrwCursorline : l:cursorline=".&l:cursorline." l:cursorcolumn=".&l:cursorcolumn)
+endfun
+
+" ---------------------------------------------------------------------
+" s:RestoreCursorline: restores cursorline/cursorcolumn to original user settings {{{2
+fun! s:RestoreCursorline()
+" call Dfunc("s:RestoreCursorline() currently, cul=".&l:cursorline." cuc=".&l:cursorcolumn." win#".winnr()." buf#".bufnr("%"))
+ let &l:cursorline = s:netrw_usercul
+ let &l:cursorcolumn = s:netrw_usercuc
+" call Dret("s:RestoreCursorline : restored cul=".&l:cursorline." cuc=".&l:cursorcolumn)
+endfun
+
+" ---------------------------------------------------------------------
" s:NetrwDelete: Deletes a file. {{{2
" Uses Steve Hall's idea to insure that Windows paths stay
" acceptable. No effect on Unix paths.
@@ -7788,10 +7999,11 @@ endfun
" ---------------------------------------------------------------------
" s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
fun! s:NetrwEnew(...)
-" call Dfunc("s:NetrwEnew() a:0=".a:0)
+" call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$"))
" call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">")
" grab a function-local-variable copy of buffer variables
+" call Decho("make function-local copy of netrw 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
@@ -7811,10 +8023,12 @@ fun! s:NetrwEnew(...)
call s:NetrwOptionRestore("w:")
" call Decho("generate a buffer with keepjumps keepalt enew!")
- keepjumps keepalt enew!
+ keepj keepalt enew!
+" call Decho("bufnr($)=".bufnr("$"))
call s:NetrwOptionSave("w:")
" copy function-local-variables to buffer variable equivalents
+" call Decho("copy function-local variables back to buffer netrw variables")
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
@@ -7837,10 +8051,11 @@ fun! s:NetrwEnew(...)
if b:netrw_curdir =~ '/$'
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
file NetrwTreeListing
+ set bt=nowrite noswf
nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr>
nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr>
else
- exe "silent! keepalt file ".fnameescape(b:netrw_curdir)
+ exe "sil! keepalt file ".fnameescape(b:netrw_curdir)
endif
endif
endif
@@ -8095,10 +8310,10 @@ fun! s:Strlen(x)
" preceded by lam, one otherwise, etc.)
" (comment from TM, solution from me)
let modkeep= &mod
- exe "norm! o\<esc>"
+ exe "keepj norm! o\<esc>"
call setline(line("."),a:x)
let ret= virtcol("$") - 1
- d
+ keepj d
let &mod= modkeep
else
@@ -8127,17 +8342,17 @@ fun! s:TreeListMove(dir)
if curline !~ '/$'
" call Decho('regfile')
if a:dir == '[' && prvline != ''
- norm! 0
+ keepj norm! 0
let nl = search('^'.indentm1.'[^|]','bWe') " search backwards from regular file
" call Decho("regfile srch back: ".nl)
elseif a:dir == ']' && nxtline != ''
- norm! $
+ keepj norm! $
let nl = search('^'.indentm1.'[^|]','We') " search forwards from regular file
" call Decho("regfile srch fwd: ".nl)
endif
elseif a:dir == '[' && prvline != ''
- norm! 0
+ keepj norm! 0
let curline= line(".")
let nl = search('^'.curindent.'[^|]','bWe') " search backwards From directory, same indentation
" call Decho("dir srch back ind: ".nl)
@@ -8149,7 +8364,7 @@ fun! s:TreeListMove(dir)
endif
elseif a:dir == ']' && nxtline != ''
- norm! $
+ keepj norm! $
let curline = line(".")
let nl = search('^'.curindent.'[^|]','We') " search forwards from directory, same indentation
" call Decho("dir srch fwd ind: ".nl)
diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim
index aae92e61..2d88862a 100644
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,14 +1,23 @@
" Vim OMNI completion script for SQL
" Language: SQL
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
-" Version: 7.0
-" Last Change: 2009 Jan 04
+" Version: 9.0
+" Last Change: 2010 Apr 20
" Usage: For detailed help
" ":help sql.txt"
" or ":help ft-sql-omni"
" or read $VIMRUNTIME/doc/sql.txt
" History
+" Version 9.0
+" This change removes some of the support for tables with spaces in their
+" names in order to simplify the regexes used to pull out query table
+" aliases for more robust table name and column name code completion.
+" Full support for "table names with spaces" can be added in again
+" after 7.3.
+" Version 8.0
+" Incorrectly re-executed the g:ftplugin_sql_omni_key_right and g:ftplugin_sql_omni_key_left
+" when drilling in and out of a column list for a table.
" Version 7.0
" Better handling of object names
" Version 6.0
@@ -250,7 +259,7 @@ function! sqlcomplete#Complete(findstart, base)
" 1. Check if the dbext plugin has the option turned
" on to even allow owners
" 2. Based on 1, if the user is showing a table list
- " and the DrillIntoTable (using <C-Right>) then
+ " and the DrillIntoTable (using <Right>) then
" this will be owner.table. In this case, we can
" check to see the table.column exists in the
" cached table list. If it does, then we have
@@ -390,13 +399,14 @@ function! sqlcomplete#DrillIntoTable()
call sqlcomplete#Map('column')
" C-Y, makes the currently highlighted entry active
" and trigger the omni popup to be redisplayed
- call feedkeys("\<C-Y>\<C-X>\<C-O>")
+ call feedkeys("\<C-Y>\<C-X>\<C-O>", 'n')
else
- if has('win32')
- " If the popup is not visible, simple perform the normal
- " <C-Right> behaviour
- exec "normal! \<C-Right>"
- endif
+ " If the popup is not visible, simple perform the normal
+ " key behaviour.
+ " Must use exec since they key must be preceeded by "\"
+ " or feedkeys will simply push each character of the string
+ " rather than the "key press".
+ exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_right.'", "n")'
endif
return ""
endfunction
@@ -408,11 +418,12 @@ function! sqlcomplete#DrillOutOfColumns()
" Trigger the omni popup to be redisplayed
call feedkeys("\<C-X>\<C-O>")
else
- if has('win32')
- " If the popup is not visible, simple perform the normal
- " <C-Left> behaviour
- exec "normal! \<C-Left>"
- endif
+ " If the popup is not visible, simple perform the normal
+ " key behaviour.
+ " Must use exec since they key must be preceeded by "\"
+ " or feedkeys will simply push each character of the string
+ " rather than the "key press".
+ exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_left.'", "n")'
endif
return ""
endfunction
@@ -609,7 +620,7 @@ function! s:SQLCGetColumns(table_name, list_type)
" Search backwards to the beginning of the statement
" and do NOT wrap
" exec 'silent! normal! v?\<\(select\|update\|delete\|;\)\>'."\n".'"yy'
- exec 'silent! normal! ?\<\(select\|update\|delete\|;\)\>'."\n"
+ exec 'silent! normal! ?\<\c\(select\|update\|delete\|;\)\>'."\n"
" Start characterwise visual mode
" Advance right one character
@@ -618,27 +629,38 @@ function! s:SQLCGetColumns(table_name, list_type)
" 2. A ; at the end of a line (the delimiter)
" 3. The end of the file (incase no delimiter)
" Yank the visually selected text into the "y register.
- exec 'silent! normal! vl/\(\<select\>\|\<update\>\|\<delete\>\|;\s*$\|\%$\)'."\n".'"yy'
+ exec 'silent! normal! vl/\c\(\<select\>\|\<update\>\|\<delete\>\|;\s*$\|\%$\)'."\n".'"yy'
let query = @y
let query = substitute(query, "\n", ' ', 'g')
let found = 0
- " if query =~? '^\(select\|update\|delete\)'
- if query =~? '^\(select\)'
+ " if query =~? '^\c\(select\)'
+ if query =~? '^\(select\|update\|delete\)'
let found = 1
" \(\(\<\w\+\>\)\.\)\? -
- " 'from.\{-}' - Starting at the from clause
+ " '\c\(from\|join\|,\).\{-}' - Starting at the from clause (case insensitive)
" '\zs\(\(\<\w\+\>\)\.\)\?' - Get the owner name (optional)
" '\<\w\+\>\ze' - Get the table name
" '\s\+\<'.table_name.'\>' - Followed by the alias
" '\s*\.\@!.*' - Cannot be followed by a .
" '\(\<where\>\|$\)' - Must be followed by a WHERE clause
" '.*' - Exclude the rest of the line in the match
+ " let table_name_new = matchstr(@y,
+ " \ '\c\(from\|join\|,\).\{-}'.
+ " \ '\zs\(\("\|\[\)\?.\{-}\("\|\]\)\.\)\?'.
+ " \ '\("\|\[\)\?.\{-}\("\|\]\)\?\ze'.
+ " \ '\s\+\%(as\s\+\)\?\<'.
+ " \ matchstr(table_name, '.\{-}\ze\.\?$').
+ " \ '\>'.
+ " \ '\s*\.\@!.*'.
+ " \ '\(\<where\>\|$\)'.
+ " \ '.*'
+ " \ )
let table_name_new = matchstr(@y,
- \ 'from.\{-}'.
- \ '\zs\(\("\|\[\)\?.\{-}\("\|\]\)\.\)\?'.
- \ '\("\|\[\)\?.\{-}\("\|\]\)\ze'.
+ \ '\c\(\<from\>\|\<join\>\|,\)\s*'.
+ \ '\zs\(\("\|\[\)\?\w\+\("\|\]\)\?\.\)\?'.
+ \ '\("\|\[\)\?\w\+\("\|\]\)\?\ze'.
\ '\s\+\%(as\s\+\)\?\<'.
\ matchstr(table_name, '.\{-}\ze\.\?$').
\ '\>'.
@@ -649,7 +671,7 @@ function! s:SQLCGetColumns(table_name, list_type)
if table_name_new != ''
let table_alias = table_name
- let table_name = table_name_new
+ let table_name = matchstr( table_name_new, '^\(.*\.\)\?\zs.*\ze' )
let list_idx = index(s:tbl_name, table_name, 0, &ignorecase)
if list_idx > -1
@@ -717,4 +739,3 @@ function! s:SQLCGetColumns(table_name, list_type)
return table_cols
endfunction
-
diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim
index b97c3a53..13e82ac4 100644
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
" vimball.vim : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr.
-" Date: Dec 28, 2009
-" Version: 30
+" Date: Apr 12, 2010
+" Version: 31
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -14,7 +14,7 @@
if &cp || exists("g:loaded_vimball")
finish
endif
-let g:loaded_vimball = "v30"
+let g:loaded_vimball = "v31"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of vimball needs vim 7.2"
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index af56944c..a55f1dcc 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,7 +1,7 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
-" Date: Jul 30, 2008
-" Version: 22
+" Date: Apr 12, 2010
+" Version: 23
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1
@@ -16,13 +16,19 @@
" ---------------------------------------------------------------------
" Load Once: {{{1
-let s:keepcpo= &cpo
-set cpo&vim
-if &cp || exists("g:loaded_zip") || v:version < 700
+if &cp || exists("g:loaded_zip")
+ finish
+endif
+let g:loaded_zip= "v23"
+if v:version < 702
+ echohl WarningMsg
+ echo "***warning*** this version of zip needs vim 7.2"
+ echohl Normal
finish
endif
+let s:keepcpo= &cpo
+set cpo&vim
-let g:loaded_zip = "v22"
let s:zipfile_escape = ' ?&;\'
let s:ERROR = 2
let s:WARNING = 1
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index d1e53c4a..72cf61f3 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt* For Vim version 7.2. Last change: 2009 Nov 25
+*autocmd.txt* For Vim version 7.2. Last change: 2010 May 14
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index f493e10e..99ad7765 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 7.2. Last change: 2009 Nov 11
+*change.txt* For Vim version 7.2. Last change: 2010 Mar 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -585,7 +585,7 @@ For other systems the tmpnam() library function is used.
":&r". See |:s_flags| for [flags].
*&*
-& Synonym for ":s//~/" (repeat last substitute). Note
+& Synonym for ":s" (repeat last substitute). Note
that the flags are not remembered, thus it might
actually work differently. You can use ":&&" to keep
the flags.
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index b98ded16..3088ea1f 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt* For Vim version 7.2. Last change: 2009 Oct 25
+*cmdline.txt* For Vim version 7.2. Last change: 2010 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -522,6 +522,7 @@ followed by another Vim command:
:registers
:read !
:scscope
+ :sign
:tcl
:tcldo
:tclfile
diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt
index 65261b72..8440a777 100644
--- a/runtime/doc/digraph.txt
+++ b/runtime/doc/digraph.txt
@@ -1,4 +1,4 @@
-*digraph.txt* For Vim version 7.2. Last change: 2008 Aug 06
+*digraph.txt* For Vim version 7.2. Last change: 2010 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index ec372d1d..1e7d6f34 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.2. Last change: 2010 Mar 10
+*eval.txt* For Vim version 7.2. Last change: 2010 May 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -67,7 +67,7 @@ the Number. Examples: >
Number 123 --> String "123"
Number 0 --> String "0"
Number -1 --> String "-1"
-
+ *octal*
Conversion from a String to a Number is done by converting the first digits
to a number. Hexadecimal "0xf9" and Octal "017" numbers are recognized. If
the String doesn't start with digits, the result is zero. Examples: >
@@ -1020,7 +1020,9 @@ A string constant accepts these special characters:
\t tab <Tab>
\\ backslash
\" double quote
-\<xxx> Special key named "xxx". e.g. "\<C-W>" for CTRL-W.
+\<xxx> Special key named "xxx". e.g. "\<C-W>" for CTRL-W. This is for use
+ in mappings, the 0x80 byte is escaped. Don't use <Char-xxxx> to get a
+ utf-8 character, use \uxxxx as mentioned above.
Note that "\xff" is stored as the byte 255, which may be invalid in some
encodings. Use "\u00ff" to store character 255 according to the current value
@@ -4944,6 +4946,8 @@ setqflist({list} [, {action}]) *setqflist()*
item will not be handled as an error line.
If both "pattern" and "lnum" are present then "pattern" will
be used.
+ If you supply an empty {list}, the quickfix list will be
+ cleared.
Note that the list is not exactly the same as what
|getqflist()| returns.
@@ -6828,14 +6832,16 @@ This would call the function "my_func_whizz(parameter)".
<
*:exe* *:execute*
:exe[cute] {expr1} .. Executes the string that results from the evaluation
- of {expr1} as an Ex command. Multiple arguments are
- concatenated, with a space in between. {expr1} is
- used as the processed command, command line editing
- keys are not recognized.
+ of {expr1} as an Ex command.
+ Multiple arguments are concatenated, with a space in
+ between. To avoid the extra space use the "."
+ operator to concatenate strings into one argument.
+ {expr1} is used as the processed command, command line
+ editing keys are not recognized.
Cannot be followed by a comment.
Examples: >
- :execute "buffer " nextbuf
- :execute "normal " count . "w"
+ :execute "buffer" nextbuf
+ :execute "normal" count . "w"
<
":execute" can be used to append a command to commands
that don't accept a '|'. Example: >
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index 60704c59..cf920968 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -1,4 +1,4 @@
-*fold.txt* For Vim version 7.2. Last change: 2010 Feb 21
+*fold.txt* For Vim version 7.2. Last change: 2010 May 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -127,6 +127,9 @@ fold level. But note that foldlevel() may return -1 if the level is not known
yet. And it returns the level at the start of the line, while a fold might
end in that line.
+It may happened that folds are not updated properly. You can use |zx| or |zX|
+to force updating folds.
+
SYNTAX *fold-syntax*
@@ -352,9 +355,13 @@ zv View cursor line: Open just enough folds to make the line in
*zx*
zx Update folds: Undo manually opened and closed folds: re-apply
'foldlevel', then do "zv": View cursor line.
+ Also forces recomputing folds. This is useful when using
+ 'foldexpr' and the buffer is changed in a way that results in
+ folds not to be updated properly.
*zX*
zX Undo manually opened and closed folds: re-apply 'foldlevel'.
+ Also forces recomputing folds, like |zx|.
*zm*
zm Fold more: Subtract one from 'foldlevel'. If 'foldlevel' was
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index 09a833b4..6243e10f 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt* For Vim version 7.2. Last change: 2009 Jan 22
+*gui.txt* For Vim version 7.2. Last change: 2010 May 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -556,7 +556,7 @@ some modes:
mode inserted appended ~
Normal nothing nothing
Visual <C-C> <C-\><C-G>
- Insert <C-O>
+ Insert <C-\><C-O>
Cmdline <C-C> <C-\><C-G>
Op-pending <C-C> <C-\><C-G>
@@ -571,7 +571,7 @@ is equal to: >
:nmenu File.Next :next^M
:vmenu File.Next ^C:next^M^\^G
- :imenu File.Next ^O:next^M
+ :imenu File.Next ^\^O:next^M
:cmenu File.Next ^C:next^M^\^G
:omenu File.Next ^C:next^M^\^G
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 33593cca..ac64f047 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt* For Vim version 7.2. Last change: 2010 Jan 27
+*indent.txt* For Vim version 7.2. Last change: 2010 Mar 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -447,7 +447,7 @@ assume a 'shiftwidth' of 4.
The defaults, spelled out in full, are:
cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0,
- /0,(2s,us,U0,w0,W0,m0,j0,)20,*30,#0
+ /0,(2s,us,U0,w0,W0,m0,j0,)20,*70,#0
Vim puts a line in column 1 if:
- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 0b5afe70..d6d2ab91 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt* For Vim version 7.2. Last change: 2009 Sep 15
+*motion.txt* For Vim version 7.2. Last change: 2010 May 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -315,6 +315,7 @@ _ <underscore> [count] - 1 lines downward, on the first non-blank
G Goto line [count], default last line, on the first
non-blank character |linewise|. If 'startofline' not
set, keep the same column.
+ G is a one of |jump-motions|.
*<C-End>*
<C-End> Goto line [count], default last line, on the last
@@ -328,6 +329,8 @@ gg Goto line [count], default first line, on the first
:[range] Set the cursor on the last line number in [range].
[range] can also be just one line number, e.g., ":1"
or ":'m".
+ In contrast with |G| this command does not modify the
+ |jumplist|.
*N%*
{count}% Go to {count} percentage in the file, on the first
non-blank in the line |linewise|. To compute the new
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index e1786133..33093b22 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 7.2. Last change: 2010 Jan 06
+*options.txt* For Vim version 7.2. Last change: 2010 May 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -40,6 +40,7 @@ achieve special effects. These options come in three forms:
:se[t] no{option} Toggle option: Reset, switch it off.
+ *:set-!* *:set-inv*
:se[t] {option}! or
:se[t] inv{option} Toggle option: Invert value. {not in Vi}
@@ -696,8 +697,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'autochdir' 'acd' boolean (default off)
global
{not in Vi}
- {only available when compiled with the
- |+netbeans_intg| or |+sun_workshop| feature}
+ {only available when compiled with it, use
+ exists("+autochdir") to check}
When on, Vim will change the current working directory whenever you
open a file, switch buffers, delete a buffer or open/close a window.
It will change to the directory containing the file which was opened
@@ -5708,7 +5709,8 @@ A jump table for the options with a short description can be found at |Q_op|.
in a file and echoed to the screen. If the 'shell' option is "csh" or
"tcsh" after initializations, the default becomes "|& tee". If the
'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes
- "2>&1| tee". This means that stderr is also included.
+ "2>&1| tee". This means that stderr is also included. Before using
+ the 'shell' option a path is removed, thus "/bin/sh" uses "sh".
The initialization of this option is done after reading the ".vimrc"
and the other initializations, so that when the 'shell' option is set
there, the 'shellpipe' option changes automatically, unless it was
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 7635af28..9f0955b1 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt* For Vim version 7.2. Last change: 2009 Dec 28
+*pi_netrw.txt* For Vim version 7.2. Last change: 2010 May 14
-----------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell, Jr.
@@ -6,7 +6,7 @@
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
-Copyright: Copyright (C) 2009 Charles E Campbell, Jr *netrw-copyright*
+Copyright: Copyright (C) 1999-2010 Charles E Campbell, Jr *netrw-copyright*
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, netrw.vim,
@@ -19,9 +19,9 @@ Copyright: Copyright (C) 2009 Charles E Campbell, Jr *netrw-copyright*
use of this software.
-*dav* *ftp* *netrw-file* *Nread* *rcp* *scp*
-*davs* *http* *netrw.vim* *Nsource* *rsync* *sftp*
-*fetch* *netrw* *network* *Nwrite*
+ *dav* *ftp* *netrw-file* *rcp* *scp*
+ *davs* *http* *netrw.vim* *rsync* *sftp*
+ *fetch* *netrw* *network*
==============================================================================
1. Contents *netrw-contents* {{{1
@@ -158,7 +158,7 @@ There are more protocols supported by netrw than just scp and ftp, too: see the
next section, |netrw-externapp|, on how to use these external applications with
netrw and vim.
-PREVENTING LOADING
+PREVENTING LOADING *netrw-noload*
If you want to use plugins, but for some reason don't wish to use netrw, then
you need to avoid loading both the plugin and the autoload portions of netrw.
@@ -169,7 +169,7 @@ You may do so by placing the following two lines in your <.vimrc>: >
<
==============================================================================
-3. Netrw Reference *netrw-ref* {{{1
+3. Netrw Reference *netrw-ref* {{{1
Netrw supports several protocols in addition to scp and ftp as mentioned
in |netrw-start|. These include dav, fetch, http,... well, just look
@@ -642,18 +642,22 @@ Nread as shown in |netrw-transparent| (ie. simply use >
instead, as appropriate) -- see |netrw-urls|. In the explanations
below, a {netfile} is an url to a remote file.
+ *:Nwrite* *:Nw*
:[range]Nw[rite] Write the specified lines to the current
file as specified in b:netrw_lastfile.
+ (related: |netrw-nwrite|)
:[range]Nw[rite] {netfile} [{netfile}]...
Write the specified lines to the {netfile}.
+ *:Nread* *:Nr*
:Nr[ead] Read the lines from the file specified in b:netrw_lastfile
- into the current buffer.
+ into the current buffer. (related: |netrw-nread|)
:Nr[ead] {netfile} {netfile}...
Read the {netfile} after the current line.
+ *:Nsource* *:Ns*
:Ns[ource] {netfile}
Source the {netfile}.
To start up vim using a remote .vimrc, one may use
@@ -661,20 +665,24 @@ below, a {netfile} is an url to a remote file.
vim -u NORC -N
--cmd "runtime plugin/netrwPlugin.vim"
--cmd "source scp://HOSTNAME/.vimrc"
-< *netrw-uidpass*
-:call NetUserPass()
+< (related: |netrw-source|)
+
+:call NetUserPass() *NetUserPass()*
If g:netrw_uid and s:netrw_passwd don't exist,
this function will query the user for them.
+ (related: |netrw-userpass|)
:call NetUserPass("userid")
This call will set the g:netrw_uid and, if
the password doesn't exist, will query the user for it.
+ (related: |netrw-userpass|)
:call NetUserPass("userid","passwd")
This call will set both the g:netrw_uid and s:netrw_passwd.
The user-id and password are used by ftp transfers. One may
effectively remove the user-id and password by using empty
strings (ie. "").
+ (related: |netrw-userpass|)
:NetrwSettings This command is described in |netrw-settings| -- used to
display netrw settings and change netrw behavior.
@@ -688,9 +696,7 @@ below, a {netfile} is an url to a remote file.
The <netrw.vim> script provides several variables which act as options to
affect <netrw.vim>'s file transfer behavior. These variables typically may be
set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|)
-
>
-
-------------
Netrw Options
-------------
@@ -1025,6 +1031,8 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
to the netrw browser window. See |g:netrw_retmap|.
<s-leftmouse> (gvim only) like mf, will mark files
+ (to disable mouse buttons while browsing: |g:netrw_mousemaps|)
+
*netrw-quickcom* *netrw-quickcoms*
QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2
:NetrwClean[!] ...........................................|netrw-clean|
@@ -1202,7 +1210,7 @@ Related Topics:
|netrw-qb| how to list bookmarks
-CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* {{{2
+CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* {{{2
Every time you change to a new directory (new for the current session),
netrw will save the directory in a recently-visited directory history
@@ -2022,7 +2030,8 @@ your browsing preferences. (see also: |netrw-settings|)
unix or g:netrw_cygwin set: : "ls -tlF"
otherwise "dir"
- *g:netrw_glob_escape* ='[]*?`{~$'
+ *g:netrw_glob_escape* ='[]*?`{~$' (unix)
+ ='[]*?`{$' (windows
These characters in directory names are
escaped before applying glob()
@@ -2293,6 +2302,18 @@ the browser (where the cursor will remain) and the file (see |:pedit|).
By default, the split will be taken horizontally; one may use vertical
splitting if one has set |g:netrw_preview| first.
+An interesting set of netrw settings is: >
+
+ let g:netrw_preview = 1
+ let g:netrw_liststyle = 3
+ let g:netrw_winsize = 30
+
+These will:
+ 1. Make vertical splitting the default for previewing files
+ 2. Make the default listing style "tree"
+ 3. When a vertical preview window is opened, the directory listing
+ will use only 30 columns; the rest of the window is used for the
+ preview window.
PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2
@@ -2597,6 +2618,29 @@ Associated setting variables: |g:netrw_chgwin|
Multibyte encodings use two (or more) bytes per character.
You may need to change |g:netrw_sepchr| and/or |g:netrw_xstrlen|.
+ *netrw-p13*
+ P13. I'm a Windows + putty + ssh user, and when I attempt to browse,
+ the directories are missing trailing "/"s so netrw treats them
+ as file transfers instead of as attempts to browse
+ subdirectories. How may I fix this?
+
+ (mikeyao) If you want to use vim via ssh and putty under Windows,
+ try combining the use of pscp/psftp with plink. pscp/psftp will
+ be used to connect and plink will be used to execute commands on
+ the server, for example: list files and directory using 'ls'.
+
+ These are the settings I use to do this:
+>
+ " list files, it's the key setting, if you haven't set,
+ " you will get a blank buffer
+ let g:netrw_list_cmd = "plink HOSTNAME ls -Fa"
+ " if you haven't add putty directory in system path, you should
+ " specify scp/sftp command. For examples:
+ "let g:netrw_sftp_cmd = "d:\\dev\\putty\\PSFTP.exe"
+ "let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe"
+<
+
+
==============================================================================
11. Debugging Netrw Itself *netrw-debug* {{{1
@@ -2651,6 +2695,35 @@ which is loaded automatically at startup (assuming :set nocp).
==============================================================================
12. History *netrw-history* {{{1
+ v138: May 01, 2010 * added the bomb setting to the Save-Set-Restore
+ option handling (for Tony M)
+ * (Bram Moolenaar) netrw optionally sets cursorline
+ (and sometimes cursorcolumn) for its display.
+ This option setting was leaking through with
+ remote file handling.
+ v137: Dec 28, 2009 * modified the preview window handling for
+ vertically split windows. The preview
+ window will take up all but g:netrw_winsize
+ columns of the original window; those
+ g:netrw_winsize columns will be used for
+ the netrw listing.
+ * (Simon Dambe) removed "~" from
+ |g:netrw_glob_escape| under Windows
+ * (Bram Moolenaar) modified test for status bar
+ click with leftmouse. Moved code to
+ s:NetrwLeftmouse().
+ Feb 24, 2010 * (for Jean Johner) added insert-mode maps; one
+ can get into insert mode with netrw via
+ ctrl-o :e .
+ Mar 15, 2010 * (Dominique Pellé) Directory with backslashes such
+ as foo\bar were not being entered/left properly
+ Mar 15, 2010 * Using :Explore .. and causing two FocusGained
+ events caused the directory to change. Fixed.
+ Mar 22, 2010 * Last fix caused problems for *//pat and */filepat
+ searches.
+ Mar 30, 2010 * With :set hidden and changing listing styles 8
+ times, the tree listing buffer was being marked
+ as modified upon exit. Fixed.
v136: Jan 14, 2009 * extended |g:Netrw_funcref| to also handle lists
of function references
Jan 14, 2009 * (reported by Marvin Renich) with spell check
diff --git a/runtime/doc/pi_vimball.txt b/runtime/doc/pi_vimball.txt
index 885131e2..a1a32549 100644
--- a/runtime/doc/pi_vimball.txt
+++ b/runtime/doc/pi_vimball.txt
@@ -1,4 +1,4 @@
-*pi_vimball.txt* For Vim version 7.2. Last change: 2009 Dec 28
+*pi_vimball.txt* For Vim version 7.2. Last change: 2010 Apr 12
----------------
Vimball Archiver
@@ -156,6 +156,22 @@ PREVENTING LOADING
let g:loaded_vimballPlugin= 1
let g:loaded_vimball = 1
<
+WINDOWS *vimball-windows*
+
+ Many vimball files are compressed with gzip. Windows, unfortunately,
+ does not come provided with a tool to decompress gzip'ped files.
+ Fortunately, there are a number of tools available for Windows users
+ to un-gzip files:
+>
+ Item Tool/Suite Free Website
+ ---- ---------- ---- -------
+ 7zip tool y http://www.7-zip.org/
+ Winzip tool n http://www.winzip.com/downwz.htm
+ unxutils suite y http://unxutils.sourceforge.net/
+ cygwin suite y http://www.cygwin.com/
+ GnuWin32 suite y http://gnuwin32.sourceforge.net/
+ MinGW suite y http://www.mingw.org/
+<
==============================================================================
4. Vimball History *vimball-history* {{{1
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index 5c5cf863..3775712f 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -1,4 +1,4 @@
-*pi_zip.txt* For Vim version 7.2. Last change: 2008 Jul 30
+*pi_zip.txt* For Vim version 7.2. Last change: 2010 Apr 12
+====================+
| Zip File Interface |
@@ -6,7 +6,7 @@
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
-Copyright: Copyright (C) 2005-2008 Charles E Campbell, Jr *zip-copyright*
+Copyright: Copyright (C) 2005-2009 Charles E Campbell, Jr *zip-copyright*
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,
@@ -60,6 +60,16 @@ Copyright: Copyright (C) 2005-2008 Charles E Campbell, Jr *zip-copyright*
file; by default: >
let g:zip_zipcmd= "zip"
<
+ PREVENTING LOADING~
+
+ If for some reason you do not wish to use vim to examine zipped files,
+ you may put the following two variables into your <.vimrc> to prevent
+ the tar plugin from loading: >
+
+ let g:loaded_zipPlugin= 1
+ let g:loaded_zip = 1
+<
+<
==============================================================================
3. Additional Extensions *zip-extension*
diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt
index 8e08ed57..5eb8b122 100644
--- a/runtime/doc/sign.txt
+++ b/runtime/doc/sign.txt
@@ -1,4 +1,4 @@
-*sign.txt* For Vim version 7.2. Last change: 2006 Apr 24
+*sign.txt* For Vim version 7.2. Last change: 2010 May 07
VIM REFERENCE MANUAL by Gordon Prieur
@@ -53,7 +53,7 @@ disappears again. The color of the column is set with the SignColumn group
==============================================================================
2. Commands *sign-commands* *:sig* *:sign*
-Here is an example that places a sign piet, displayed with the text ">>", in
+Here is an example that places a sign "piet", displayed with the text ">>", in
line 23 of the current file: >
:sign define piet text=>> texthl=Search
:exe ":sign place 2 line=23 name=piet file=" . expand("%:p")
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 8a559dde..dc022459 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt* For Vim version 7.2. Last change: 2009 Oct 28
+*spell.txt* For Vim version 7.2. Last change: 2010 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -468,8 +468,11 @@ Vim uses a binary file format for spelling. This greatly speeds up loading
the word list and keeps it small.
*.aff* *.dic* *Myspell*
You can create a Vim spell file from the .aff and .dic files that Myspell
-uses. Myspell is used by OpenOffice.org and Mozilla. You should be able to
-find them here:
+uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt
+files are zip files which contain the .aff and .dic files. You should be able
+to find them here:
+ http://extensions.services.openoffice.org/dictionary
+The older, OpenOffice 2 files may be used if this doesn't work:
http://wiki.services.openoffice.org/wiki/Dictionaries
You can also use a plain word list. The results are the same, the choice
depends on what word lists you can find.
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 4b92ac14..c80c5c3a 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt* For Vim version 7.2. Last change: 2009 Dec 19
+*syntax.txt* For Vim version 7.2. Last change: 2010 May 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3871,13 +3871,19 @@ This will open a new window containing all highlight group names, displayed
in their own color.
*:colo* *:colorscheme* *E185*
+:colo[rscheme] Output the name of the currently active color scheme.
+ This is basically the same as >
+ :echo g:colors_name
+< In case g:colors_name has not been defined :colo will
+ output "default". When compiled without the |+eval|
+ feature it will output "unknown".
+
:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath'
for the file "colors/{name}.vim. The first one that
is found is loaded.
To see the name of the currently active color scheme: >
- :echo g:colors_name
-< When using the default colors you will get an E121
- error.
+ :colo
+< The name is also stored in the g:colors_name variable.
Doesn't work recursively, thus you can't use
":colorscheme" in a color scheme script.
After the color scheme has been loaded the
diff --git a/runtime/doc/tags b/runtime/doc/tags
index dd806fca..990fc206 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1767,6 +1767,12 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:Nexplore pi_netrw.txt /*:Nexplore*
:Next editing.txt /*:Next*
:NoMatchParen pi_paren.txt /*:NoMatchParen*
+:Nr pi_netrw.txt /*:Nr*
+:Nread pi_netrw.txt /*:Nread*
+:Ns pi_netrw.txt /*:Ns*
+:Nsource pi_netrw.txt /*:Nsource*
+:Nw pi_netrw.txt /*:Nw*
+:Nwrite pi_netrw.txt /*:Nwrite*
:P various.txt /*:P*
:Pexplore pi_netrw.txt /*:Pexplore*
:Print various.txt /*:Print*
@@ -2614,6 +2620,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:search-args tagsrch.txt /*:search-args*
:set options.txt /*:set*
:set+= options.txt /*:set+=*
+:set-! options.txt /*:set-!*
:set-& options.txt /*:set-&*
:set-&vi options.txt /*:set-&vi*
:set-&vim options.txt /*:set-&vim*
@@ -2621,6 +2628,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:set-args options.txt /*:set-args*
:set-browse options.txt /*:set-browse*
:set-default options.txt /*:set-default*
+:set-inv options.txt /*:set-inv*
:set-termcap options.txt /*:set-termcap*
:set-verbose options.txt /*:set-verbose*
:set^= options.txt /*:set^=*
@@ -4235,13 +4243,11 @@ N: cmdline.txt /*N:*
N<Del> various.txt /*N<Del>*
NL-used-for-Nul pattern.txt /*NL-used-for-Nul*
NetBSD-backspace options.txt /*NetBSD-backspace*
+NetUserPass() pi_netrw.txt /*NetUserPass()*
Normal intro.txt /*Normal*
Normal-mode intro.txt /*Normal-mode*
-Nread pi_netrw.txt /*Nread*
-Nsource pi_netrw.txt /*Nsource*
Number eval.txt /*Number*
Nvi intro.txt /*Nvi*
-Nwrite pi_netrw.txt /*Nwrite*
O insert.txt /*O*
OS/2 os_os2.txt /*OS\/2*
OS2 os_os2.txt /*OS2*
@@ -6620,6 +6626,7 @@ netrw-mx pi_netrw.txt /*netrw-mx*
netrw-mz pi_netrw.txt /*netrw-mz*
netrw-netrc pi_netrw.txt /*netrw-netrc*
netrw-nexplore pi_netrw.txt /*netrw-nexplore*
+netrw-noload pi_netrw.txt /*netrw-noload*
netrw-nread pi_netrw.txt /*netrw-nread*
netrw-nwrite pi_netrw.txt /*netrw-nwrite*
netrw-o pi_netrw.txt /*netrw-o*
@@ -6629,6 +6636,7 @@ netrw-p1 pi_netrw.txt /*netrw-p1*
netrw-p10 pi_netrw.txt /*netrw-p10*
netrw-p11 pi_netrw.txt /*netrw-p11*
netrw-p12 pi_netrw.txt /*netrw-p12*
+netrw-p13 pi_netrw.txt /*netrw-p13*
netrw-p2 pi_netrw.txt /*netrw-p2*
netrw-p3 pi_netrw.txt /*netrw-p3*
netrw-p4 pi_netrw.txt /*netrw-p4*
@@ -6679,7 +6687,6 @@ netrw-texplore pi_netrw.txt /*netrw-texplore*
netrw-todo pi_netrw.txt /*netrw-todo*
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*
@@ -6792,6 +6799,7 @@ object-select motion.txt /*object-select*
objects index.txt /*objects*
obtaining-exted netbeans.txt /*obtaining-exted*
ocaml.vim syntax.txt /*ocaml.vim*
+octal eval.txt /*octal*
oldfiles-variable eval.txt /*oldfiles-variable*
ole-activation if_ole.txt /*ole-activation*
ole-eval if_ole.txt /*ole-eval*
@@ -8072,6 +8080,7 @@ vimball-extract pi_vimball.txt /*vimball-extract*
vimball-history pi_vimball.txt /*vimball-history*
vimball-intro pi_vimball.txt /*vimball-intro*
vimball-manual pi_vimball.txt /*vimball-manual*
+vimball-windows pi_vimball.txt /*vimball-windows*
vimdev intro.txt /*vimdev*
vimdiff diff.txt /*vimdiff*
vimfiles options.txt /*vimfiles*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 8b0ce31b..2becf873 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 7.2. Last change: 2010 Mar 17
+*todo.txt* For Vim version 7.2. Last change: 2010 May 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,20 +30,59 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
-":s" summary in :folddo is not correct. (Jean Johner, 2010 Feb 20)
-Patch from Lech Lorens, 2010 Mar 13.
+Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6)
-Vim tries to set the background or foreground color in a terminal to -1.
-(Graywh) Appears to happen with ":hi Normal ctermbg=NONE".
-Possible solution from Matt Wozniski, 2010 Mar 17.
+E315 when trying to change a file in FileChangedRO autocommand event.
+(Dominique Pelle, 2010 Apr 30)
+
+When directory "/tmp/tags" contains "tags1" and "tags2", setting 'tags' to
+"/tmp/tags/*" doesn't pick up these files. (Simon Ruggier, 2010 Mar 17)
+
+":command Print echo 'print'" works, but ":Print" doesn't. Builtin Print
+should be overruled. (Aaron Thoma)
+
+Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
+^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer?
+
+Have a look at patch to enable screen access from Python. (Marko Mahnic, 2010
+Apr 12)
+
+Problem producing tags file when hebrew.frx is present. It has a BOM.
+Results in E670. (Tony Mechelynck, 2010 May 2)
+
+'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
+
+":helpgrep" does not put the cursor in the correct column when preceded by
+accented character. (Tony Mechelynck, 2010 Apr 15)
+
+Better Czech keymap. (Stepnem, 2010 May 4) Use if no response from Jiri
+Tobisek.
+
+Use Dutch spell files from:
+http://extensions.services.openoffice.org/en/project/dict-nl
+Looks like this is newer than the new wordlist for Dutch:
+http://www.opentaal.org/bestanden/1_10/nl_NL-Pack
Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11)
-Additional info by Dominique Pelle.
+Additional info by Dominique Pelle. (also on 2010 Apr 10)
+
+"make install" installs some of the .info files on Unix.
+(James Vega, 2010 Mar 30)
+
+Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29)
+Looks like only bash can do it. (Yakov Lerner)
+
+8 Add an event like CursorHold that is triggered repeatedly, not just once
+ after typing something.
+Need for CursorHold that retriggers. Use a key that doesn't do anything, or a
+function that resets did_cursorhold.
I often see pasted text (from Firefox, to Vim in xterm) appear twice.
Also, Vim in xterm sometimes loses copy/paste ability (probably after running
an external command).
+Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20)
+
Problem with transparent cmdline. Also: Terminal title is wrong with
non-ASCII character. (Lily White, 2010 Mar 7)
@@ -59,15 +98,12 @@ Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
Find tail? Might have a / in argument. Find space? Might have space in
path.
-Patch to support netbeans in Unix console Vim. (Xavier de Gaye, 2009 Apr 26)
-Now with Mercurial repository (2010 Jan 2)
-
-Crash when assigning s: to variable, pointer becomes invalid later.
-(Yukihiro Nakadaira, 2009 Oct 12, confirmed by Dominique Pelle)
-
Test 69 breaks on MS-Windows, both 32 and 64 builds. (George Reilly, 2010 Feb
26)
+":function f(x) keepjumps" creates a function where every command is executed
+like it has ":keepjumps" before it.
+
Coverity: ask someone to create new user: Dominique.
look into reported defects: http://scan.coverity.com/rung2.html
@@ -78,20 +114,16 @@ Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8)
Support .xz with the xz program, like with lzma.
-Perl runtime files update. (Andy Lester, 2009 Aug 25)
-
-Gvimext patch to support wide file names. (Szabolcs Horvat 2008 Sep 10)
-
Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26)
-Patch to support :browse for more commands. (Lech Lorens, 2009 Jul 18)
+Undo problem: line not removed as expected when using setline() from Insert
+mode. (Israel Chauca, 2010 May 13, more in second msg)
+Break undo when CTRL-R = changes the text? Or save more lines?
Change to C syntax folding to make it work much faster, but a bit less
reliable. (Lech Lorens, 2009 Nov 9) Enable with an option?
Most time is spent in in_id_list().
-New wordlist for Dutch: http://www.opentaal.org/bestanden/1_10/nl_NL-Pack
-
Check for unused functions, idea:
http://blog.flameeyes.eu/2008/01/17/today-how-to-identify-unused-exported-functions-and-variables
@@ -102,17 +134,17 @@ When a:base in 'completefunc' starts with a number it's passed as a number,
not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a
string value.
+There is no command line completion for ":lmap".
+
Reproducible crash in syntax HL. (George Reilly, Dominique Pelle, 2009 May 9)
Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
-Patch to add diff functionality to 2html.vim. (Christian Brabandt, 2009 Dec
-15)
-
For running gvim on an USB stick: avoid the OLE registration. Use a command
line argument -noregister.
-submatch() may remove backslash. (Sergey Goldgaber, 2009 Jul 6)
+When a mapping exists both for insert mode and lang-insert mode, the last one
+doesn't work. (Tyru, 2010 May 6) Or is this intended?
Still a problem with ":make" in the wrong directory. Caused by ":bufdo".
(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15.
@@ -148,10 +180,6 @@ Needs more work.
Problem with <script> mappings (Andy Wokula, 2009 Mar 8)
-Patch to support netbeans for Mac. (Kazuki Sakamoto, 2009 Jun 25)
-
-Patch to support clipboard for Mac terminal. (Jjgod Jiang, 2009 Aug 1)
-
When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a
few control characters in the output. (Dale Wiles, 2009 May 28)
@@ -161,21 +189,27 @@ few control characters in the output. (Dale Wiles, 2009 May 28)
Status line containing winnr() isn't updated when splitting the window (Clark
J. Wang, 2009 Mar 31)
+When $VIMRUNTIME is set in .vimrc, need to reload lang files. Already done
+for GTK, how about others? (Ron Aaron, 2010 Apr 10)
+
Patch for vertical line at certain column position, 'guidecolumn' option.
(Pankaj Garg, 2009 Apr 14, aka Lone, Apr 15)
Update 2009 May 2, 'margincolumn'
-Alternative patch. (2010 Feb 2, Gregor Uhlenheuer)
+Alternative patch. (2010 Feb 2, Gregor Uhlenheuer, update Apr 18 2010)
+Fix by Lech Lorens, Apr 19
Add different highlighting for a fold line depending on the fold level.
Patch. (Noel Henson, 2009 Sep 13)
+Motif: Build on Ubuntu can't enter any text in dialog text fields.
+
When 'ft' changes redraw custom status line.
":tab split fname" doesn't set the alternate file in the original window,
because win_valid() always returns FALSE. Below win_new_tabpage() in
ex_docmd.c.
-Space before comma in function defenition not allowed: "function x(a , b)"
+Space before comma in function definition not allowed: "function x(a , b)"
Give a more appropriate error message. Add a remark to the docs.
string_convert() should be able to convert between utf-8 and utf-16le. Used
@@ -297,6 +331,10 @@ Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
Allow patches to add something to version.c, like with an official patch, so
that :version output shows which patches have been applied.
+Bug: in Ex mode (after "Q") backslash before line break, when yanked into a
+register and executed, results in <Nul>: instead of line break.
+(Konrad Schwarz, 2010 Apr 16)
+
Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23)
Now at: http://vimgadgets.sourceforge.net/liblinebreak/
@@ -402,12 +440,6 @@ command is not executed. Fix by Ian Kelling?
":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim
Chase) Fix by Ian Kelling, 2008 Jul 14.
-":colorscheme" without arguments should echo the current color scheme name.
-
-After using ":recover" or recovering a file in another way, ":x" doesn't save
-what you see. Mark the buffer as modified? Only when the text is actually
-different from the original file?
-
Use "\U12345678" for 32 bit Unicode characters? (Tony Mechelynck, 2009
Apr 6) Or use "\u(123456)", similar to Perl.
@@ -420,6 +452,7 @@ Patch for colorscheme submenu. (Juergen Kraemer, 2008 Aug 20)
Patch for Python 3 support. (Roland Puntaier, 2009 Sep 22)
Includes changes for omnicompletion.
Needs to be tested.
+Update 2010 Apr 20
8 Some file systems are case-sensitive, some are not. Turn
CASE_INSENSITIVE_FILENAME into an option, at least for completion.
@@ -453,7 +486,6 @@ Patch from Vladimir Vichniakov, 2007 Apr 24.
Should clean up the whole function. Also allow modifiers like <S-Char-32>?
find_special_key() also has this problem.
-Problem with 'langmap' parsing. (James Vega, 2008 Jan 27)
Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
2008 May 14)
@@ -496,10 +528,6 @@ Mar 5) Alternative: Kazuki Sakamoto, Mar 7.
Mac: trouble compiling with Motif, requires --disable-darwin. (Raf, 2008 Aug
1) Reply by Ben Schmidt.
-":emenu" works with the translated menu name. Should also work with the
-untranslated name. Would need to store both the English and the translated
-name. Patch by Bjorn Winckler, 2008 Mar 30.
-
C't: On utf-8 system, editing file with umlaut through Gnome results in URL
with %nn%nn, which is taken as two characters instead of one.
Try to reproduce at work.
@@ -732,12 +760,6 @@ Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape()
only takes 'shellslash' into account.
-When file b is a link to file a and editing b twice you get the correct
-warning for existing swap file, but when trying to recover it doesn't find the
-swapfile. (Matt Wozniski, 2008 Aug 5) Patch by Ian Kelling, 2008 Aug 11.
-Another patch by James Vega, 2008 Aug 20, again 2008 Sep 3.
-Also solves: Problem finding swap file for recovery. (Gautam Iyer, 2006 May 16)
-
Pressing the 'pastetoggle' key doesn't update the statusline. (Jan Christoph
Ebersbach, 2008 Feb 1)
@@ -1126,20 +1148,50 @@ Patch for adding "J" flag to 'cinoptions': placement of jump label.
Vim 7.3:
- Use latest autoconf (2.65)
- Use NSIS 2.45, it includes Windows 7 support.
+ Include "RequestExecutionLevel highest"
+ Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi
+- Supply a 64 bit version of gvimext.dll for 64 bit windows.
+ http://code.google.com/p/vim-win3264/
+ Gvim can be 32 bit.
- Include all files in distro, no "extra" and "lang" package.
- Create Mercurial repository.
- Easier/standard way to disable default plugins.
- Add patch for 'relativenumber' option? Markus Heidelberg, 2008 Jun 27.
+ Update 2010 May 2.
+8 Persistent undo: store undo in a file. Patch by Jordan Lewis, 2009 Feb
+ 20. Repost 2009 Nov 16.
+ -> disable by default and add remark that it's new and may fail.
+ Testing remarks by Christian Brabandt, 2010 May 1:
+ - doesn't work well with symlinks (Jordan will look into it)
+ - old undo files tend to pile up
+ - :rundo should output a message (Jordan will fix this)
+ Older ideas:
+ Use timestamps, so that a version a certain time ago can be found and info
+ before some time/date can be flushed. 'undopersist' gives maximum time to
+ keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and
+ extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
- Add blowfish encryption. Openssl has an implementation. Also by Paul
Kocher (LGPL), close to original. Mohsin also has some ideas.
Take four bytes and turn them into unsigned to avoid byte-order problems.
Need to buffer up to 7 bytes to align on 8 byte boundaries.
- Patch from Moshin, 2010 Mar 15.
+ Patch from Moshin: 2010 May 8, addition May 9.
+- Patch to support netbeans in Unix console Vim. (Xavier de Gaye, 2009 Apr
+ 26) Now with Mercurial repository (2010 Jan 2)
- ":{range}source": source the lines from the current file.
You can already yank lines and use :@" to execute them.
Most of do_source() would not be used, need a new function.
It's easy when not doing breakpoints or profiling.
- Patch for Lisp support with ECL (Mikael Jansson, 2008 Oct 25)
+- Gvimext patch to support wide file names. (Szabolcs Horvat 2008 Sep 10)
+- Patch to support netbeans for Mac. (Kazuki Sakamoto, 2009 Jun 25)
+- Patch to support clipboard for Mac terminal. (Jjgod Jiang, 2009 Aug 1)
+- Patch to support :browse for more commands. (Lech Lorens, 2009 Jul 18)
+- Patch to add diff functionality to 2html.vim. (Christian Brabandt, 2009 Dec
+ 15)
+- After using ":recover" or recovering a file in another way, ":x" doesn't
+ save what you see. Mark the buffer as modified? Only when the text is
+ actually different from the original file.
+- Add fixes for 7.2 to version7.txt
More patches:
@@ -2161,6 +2213,7 @@ Most interesting new features to be added when all bugs have been fixed:
http://vimshell.wana.at
- Add Lua interface? (Wolfgang Oertl) patch by Luis Carvalho, 2008 Sep 5
Patch for Make_ming.mak from Paul Moore (2008 Sep 1)
+ http://vim-iflua.googlecode.com/files/vim72-lua-0.7.patch.gz
8 Add a command to jump to a certain kind of tag. Allow the user to specify
values for the optional fields. E.g., ":tag size type=m".
Also allow specifying the file and command, so that the result of
@@ -3225,8 +3278,6 @@ Autocommands:
8 Use another option than 'updatetime' for the CursorHold event. The two
things are unrelated for the user (but the implementation is more
difficult).
-8 Add an event like CursorHold that is triggered repeatedly, not just once
- after typing something.
7 Add autocommand event for when a buffer cannot be abandoned. So that the
user can define the action taking (autowrite, dialog, fail) based on the
kind of file. (Yakov Lerner) Or is BufLeave sufficient?
@@ -3964,13 +4015,6 @@ Undo:
storing the differences.
8 Search for pattern in undo tree, showing when it happened and the text
state, so that you can jump to it.
-- Persistent undo: store undo in a file. Patch by Jordan Lewis, 2009 Feb
- 20. Repost 2009 Nov 16.
- Older ideas:
- Use timestamps, so that a version a certain time ago can be found and info
- before some time/date can be flushed. 'undopersist' gives maximum time to
- keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and
- extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
- Make it possible to undo all the commands from a mapping, including a
trailing unfinished command, e.g. for ":map K iX^[r".
- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt
index f06515d1..a78d3e73 100644
--- a/runtime/doc/usr_27.txt
+++ b/runtime/doc/usr_27.txt
@@ -1,4 +1,4 @@
-*usr_27.txt* For Vim version 7.2. Last change: 2007 Nov 10
+*usr_27.txt* For Vim version 7.2. Last change: 2010 Mar 28
VIM USER MANUAL - by Bram Moolenaar
@@ -40,7 +40,7 @@ matches.)
:set noignorecase
-But lets keep it set, and search for "INCLUDE". It will match exactly the
+But let's keep it set, and search for "INCLUDE". It will match exactly the
same text as "include" did. Now set the 'smartcase' option: >
:set ignorecase smartcase
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index d2605224..6ec6eccb 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt* For Vim version 7.2. Last change: 2009 Nov 11
+*various.txt* For Vim version 7.2. Last change: 2010 May 13
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 6fe116af..7784075d 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt* For Vim version 7.2. Last change: 2009 Dec 02
+*version7.txt* For Vim version 7.2. Last change: 2010 May 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -56,6 +56,11 @@ Changed |changed-7.2|
Added |added-7.2|
Fixed |fixed-7.2|
+VERSION 7.3 |version-7.3|
+Changed |changed-7.3|
+Added |added-7.3|
+Fixed |fixed-7.3|
+
==============================================================================
INCOMPATIBLE CHANGES *incompatible-7*
@@ -7142,5 +7147,34 @@ Pelle)
Mac: Could not build with Perl interface.
+==============================================================================
+VERSION 7.3 *version-7.3*
+
+This section is about improvements made between version 7.2 and 7.3.
+
+This is a bug-fix release and there are a few new features.
+
+
+Changed *changed-7.3*
+-------
+
+The extra and language files are no longer distributed separately.
+The files for all systems are included in one distribution.
+
+
+Added *added-7.3*
+-----
+
+New syntax files:
+
+New spell files:
+
+Breton. (Dominique Pelle)
+
+
+Fixed *fixed-7.3*
+-----
+
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index 040bc88d..20e3dad7 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt* For Vim version 7.2. Last change: 2009 Sep 23
+*windows.txt* For Vim version 7.2. Last change: 2010 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -467,11 +467,11 @@ CTRL-W = Make all windows (almost) equally high and wide, but use
:res[ize] -N *:res* *:resize* *CTRL-W_-*
CTRL-W - Decrease current window height by N (default 1).
- If used after 'vertical': decrease width by N.
+ If used after |:vertical|: decrease width by N.
:res[ize] +N *CTRL-W_+*
CTRL-W + Increase current window height by N (default 1).
- If used after 'vertical': increase width by N.
+ If used after |:vertical|: increase width by N.
:res[ize] [N]
CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 140f0c56..1705fdc5 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2010 Feb 24
+" Last Change: 2010 May 14
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -324,6 +324,9 @@ au BufNewFile,BufRead */.calendar/*,
" C#
au BufNewFile,BufRead *.cs setf cs
+" Cabal
+au BufNewFile,BufRead *.cabal setf cabal
+
" Cdrdao TOC
au BufNewFile,BufRead *.toc setf cdrtoc
@@ -333,6 +336,9 @@ au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.
" Cfengine
au BufNewFile,BufRead cfengine.conf setf cfengine
+" ChaiScript
+au BufRead,BufNewFile *.chai setf chaiscript
+
" Comshare Dimension Definition Language
au BufNewFile,BufRead *.cdl setf cdl
@@ -764,7 +770,7 @@ au BufNewFile,BufRead *.haml setf haml
au BufNewFile,BufRead *.hsc,*.hsm setf hamster
" Haskell
-au BufNewFile,BufRead *.hs setf haskell
+au BufNewFile,BufRead *.hs,*.hs-boot setf haskell
au BufNewFile,BufRead *.lhs setf lhaskell
au BufNewFile,BufRead *.chs setf chaskell
@@ -1381,6 +1387,10 @@ au BufNewFile,BufRead *.g setf pccts
" PPWizard
au BufNewFile,BufRead *.it,*.ih setf ppwiz
+" Obj 3D file format
+" TODO: is there a way to avoid MS-Windows Object files?
+au BufNewFile,BufRead *.obj setf obj
+
" Oracle Pro*C/C++
au BufNewFile,BufRead *.pc setf proc
@@ -1938,6 +1948,9 @@ au BufNewFile,BufRead *.sdc setf sdc
" Sudoers
au BufNewFile,BufRead /etc/sudoers,sudoers.tmp setf sudoers
+" SVG (Scalable Vector Graphics)
+au BufNewFile,BufRead *.svg setf svg
+
" If the file has an extension of 't' and is in a directory 't' then it is
" almost certainly a Perl test file.
" If the first line starts with '#' and contains 'perl' it's probably a Perl
diff --git a/runtime/ftplugin/debchangelog.vim b/runtime/ftplugin/debchangelog.vim
index 00a025b4..cd21e93d 100644
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -1,14 +1,14 @@
" Vim filetype plugin file (GUI menu, folding and completion)
-" Language: Debian Changelog
-" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
-" Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de>
-" Stefano Zacchiroli <zack@debian.org>
-" Last Change: 2008-03-08
-" License: GNU GPL, version 2.0 or later
-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debchangelog.vim;hb=debian
+" Language: Debian Changelog
+" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de>
+" Stefano Zacchiroli <zack@debian.org>
+" Last Change: 2010-04-29
+" License: GNU GPL, version 2.0 or later
+" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/ftplugin/debchangelog.vim
" Bug completion requires apt-listbugs installed for Debian packages or
-" python-launchpad-bugs installed for Ubuntu packages
+" python-launchpadlib installed for Ubuntu packages
if exists("b:did_ftplugin")
finish
@@ -329,17 +329,26 @@ fun! DebCompleteBugs(findstart, base)
python << EOF
import vim
try:
- from launchpadbugs import connector
- buglist = connector.ConnectBugList()
- bl = list(buglist('https://bugs.launchpad.net/ubuntu/+source/%s' % vim.eval('pkgsrc')))
- bl.sort(None, int)
- liststr = '['
- for bug in bl:
- liststr += "'#%d - %s'," % (int(bug), bug.summary.replace('\'', '\'\''))
- liststr += ']'
- vim.command('silent let bug_lines = %s' % liststr)
+ from launchpadlib.launchpad import Launchpad
+ from lazr.restfulclient.errors import HTTPError
+ # login anonymously
+ lp = Launchpad.login_anonymously('debchangelog.vim', 'production')
+ ubuntu = lp.distributions['ubuntu']
+ try:
+ sp = ubuntu.getSourcePackage(name=vim.eval('pkgsrc'))
+ status = ('New', 'Incomplete', 'Confirmed', 'Triaged',
+ 'In Progress', 'Fix Committed')
+ tasklist = sp.searchTasks(status=status, order_by='id')
+ liststr = '['
+ for task in tasklist:
+ bug = task.bug
+ liststr += "'#%d - %s'," % (bug.id, bug.title.replace('\'', '\'\''))
+ liststr += ']'
+ vim.command('silent let bug_lines = %s' % liststr.encode('utf-8'))
+ except HTTPError:
+ pass
except ImportError:
- vim.command('echoerr \'python-launchpad-bugs needs to be installed to use Launchpad bug completion\'')
+ vim.command('echoerr \'python-launchpadlib >= 1.5.4 needs to be installed to use Launchpad bug completion\'')
EOF
else
if ! filereadable('/usr/sbin/apt-listbugs')
diff --git a/runtime/ftplugin/debcontrol.vim b/runtime/ftplugin/debcontrol.vim
index 2fb2ee7d..7871d989 100644
--- a/runtime/ftplugin/debcontrol.vim
+++ b/runtime/ftplugin/debcontrol.vim
@@ -1,9 +1,9 @@
" Vim filetype plugin file (GUI menu and folding)
-" Language: Debian control files
-" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
-" Former Maintainer: Pierre Habouzit <madcoder@debian.org>
-" Last Change: 2008-03-08
-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
+" Language: Debian control files
+" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Former Maintainer: Pierre Habouzit <madcoder@debian.org>
+" Last Change: 2008-03-08
+" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/ftplugin/debcontrol.vim
" Do these settings once per buffer
if exists("b:did_ftplugin")
diff --git a/runtime/indent/chaiscript.vim b/runtime/indent/chaiscript.vim
new file mode 100644
index 00000000..247e1a6e
--- /dev/null
+++ b/runtime/indent/chaiscript.vim
@@ -0,0 +1,50 @@
+" Vim indent file
+" Language: ChaiScript
+" Maintainer: Jason Turner <lefticus 'at' gmail com>
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetChaiScriptIndent()
+setlocal autoindent
+
+" Only define the function once.
+if exists("*GetChaiScriptIndent")
+ finish
+endif
+
+function! GetChaiScriptIndent()
+ " Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+
+ " Hit the start of the file, use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ " Add a 'shiftwidth' after lines that start a block:
+ " lines containing a {
+ let ind = indent(lnum)
+ let flag = 0
+ let prevline = getline(lnum)
+ if prevline =~ '^.*{.*'
+ let ind = ind + &shiftwidth
+ let flag = 1
+ endif
+
+ " Subtract a 'shiftwidth' after lines containing a { followed by a }
+ " to keep it balanced
+ if flag == 1 && prevline =~ '.*{.*}.*'
+ let ind = ind - &shiftwidth
+ endif
+
+ " Subtract a 'shiftwidth' on lines ending with }
+ if getline(v:lnum) =~ '^\s*\%(}\)'
+ let ind = ind - &shiftwidth
+ endif
+
+ return ind
+endfunction
diff --git a/runtime/indent/perl6.vim b/runtime/indent/perl6.vim
new file mode 100644
index 00000000..75159e3a
--- /dev/null
+++ b/runtime/indent/perl6.vim
@@ -0,0 +1,136 @@
+" Vim indent file
+" Language: Perl 6
+" Maintainer: Andy Lester <andy@petdance.com>
+" URL: http://github.com/petdance/vim-perl/tree/master
+" Last Change: 2009-07-04
+" Contributors: Andy Lester <andy@petdance.com>
+" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+"
+" Adapted from Perl indent file by Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+
+" Suggestions and improvements by :
+" Aaron J. Sherman (use syntax for hints)
+" Artem Chuprina (play nice with folding)
+" TODO:
+" This file still relies on stuff from the Perl 5 syntax file, which Perl 6
+" does not use.
+"
+" Things that are not or not properly indented (yet) :
+" - Continued statements
+" print "foo",
+" "bar";
+" print "foo"
+" if bar();
+" - Multiline regular expressions (m//x)
+" (The following probably needs modifying the perl syntax file)
+" - qw() lists
+" - Heredocs with terminators that don't match \I\i*
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" Is syntax highlighting active ?
+let b:indent_use_syntax = has("syntax")
+
+setlocal indentexpr=GetPerl6Indent()
+
+" we reset it first because the Perl 5 indent file might have been loaded due
+" to a .pl/pm file extension, and indent files don't clean up afterwards
+setlocal indentkeys&
+
+setlocal indentkeys+=0=,0),0],0>,0»,0=or,0=and
+if !b:indent_use_syntax
+ setlocal indentkeys+=0=EO
+endif
+
+" Only define the function once.
+if exists("*GetPerl6Indent")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+function GetPerl6Indent()
+
+ " Get the line to be indented
+ let cline = getline(v:lnum)
+
+ " Indent POD markers to column 0
+ if cline =~ '^\s*=\L\@!'
+ return 0
+ endif
+
+ " Don't reindent coments on first column
+ if cline =~ '^#'
+ return 0
+ endif
+
+ " Get current syntax item at the line's first char
+ let csynid = ''
+ if b:indent_use_syntax
+ let csynid = synIDattr(synID(v:lnum,1,0),"name")
+ endif
+
+ " Don't reindent POD and heredocs
+ if csynid =~ "^p6Pod"
+ return indent(v:lnum)
+ endif
+
+
+ " Now get the indent of the previous perl line.
+
+ " Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+ " Hit the start of the file, use zero indent.
+ if lnum == 0
+ return 0
+ endif
+ let line = getline(lnum)
+ let ind = indent(lnum)
+ " Skip heredocs, POD, and comments on 1st column
+ if b:indent_use_syntax
+ let skippin = 2
+ while skippin
+ let synid = synIDattr(synID(lnum,1,0),"name")
+ if (synid =~ "^p6Pod" || synid =~ "p6Comment")
+ let lnum = prevnonblank(lnum - 1)
+ if lnum == 0
+ return 0
+ endif
+ let line = getline(lnum)
+ let ind = indent(lnum)
+ let skippin = 1
+ else
+ let skippin = 0
+ endif
+ endwhile
+ endif
+
+ if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
+ let ind = ind + &sw
+ endif
+ if cline =~ '^\s*[)}\]»>]'
+ let ind = ind - &sw
+ endif
+
+ " Indent lines that begin with 'or' or 'and'
+ if cline =~ '^\s*\(or\|and\)\>'
+ if line !~ '^\s*\(or\|and\)\>'
+ let ind = ind + &sw
+ endif
+ elseif line =~ '^\s*\(or\|and\)\>'
+ let ind = ind - &sw
+ endif
+
+ return ind
+
+endfunction
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
diff --git a/runtime/keymap/bulgarian-bds.vim b/runtime/keymap/bulgarian-bds.vim
index bf837c86..3377edbb 100644
--- a/runtime/keymap/bulgarian-bds.vim
+++ b/runtime/keymap/bulgarian-bds.vim
@@ -1,14 +1,14 @@
" Vim keymap file for Bulgarian and Russian characters, "bds" layout.
" Most of it can be used with both utf-8 and cp1251 file encodings, except
-" the accented vowels which can only be stored in utf-8.
+" the accented characters which can only be stored in utf-8.
" This file itself is in utf-8.
" Maintainer: Boyko Bantchev <boykobb@gmail.com>
" URI: http://www.math.bas.bg/bantchev/vim/bulgarian-bds.vim
-" Last Changed: 2008 June 28
+" Last Changed: 2010 May 4
" This keymap corresponds to what is called Bulgarian standard typewriter
-" keyboard layout (BDS, БДС).
+" keyboard layout, or "БДС".
"
" Note that, in addition to the Bulgarian alphabet, the BDS layout prescribes
" the presence of the following characters:
@@ -17,7 +17,7 @@
" without having to leave Cyrillic mode.
"
" Some punctuation characters present in ascii are mapped in BDS to keys
-" different from the ones they occupy in the qwerty layout, because the latter
+" different from the ones they occupy in the QWERTY layout, because the latter
" keys are used to type other characters.
"
" In this keymap, also defined (besides BDS) are:
@@ -28,12 +28,16 @@
" — The quotation marks „ “ ” ‘ ’ (used in the Bulgarian and English
" quotation styles), as well as « » (Russian quotation style).
" — The characters §, №, – (en-dash), — (em-dash), …, •, ·, ±, °, ¬,
-" ¤, and €.
+" ¤, €, ‰, †, ‡, and ¶.
"
-" The keymap also defines key combinations for accented vowels in Bulgarian.
+" The keymap also defines key combinations for grave and acute accents.
+" (Grave accent is used in Bulgarian, acute in Russian, but both accents
+" apply to other languages as well.)
"
" For details of what key or key combination maps to what character, please
-" see below the map table itself.
+" see below the map itself.
+"
+" See also http://www.math.bas.bg/bantchev/vim/kbdbul.html (in Bulgarian).
scriptencoding utf-8
@@ -139,21 +143,13 @@ q , COMMA
~~ ¬ NOT SIGN
@@ ¤ CURRENCY SIGN
$$ € EURO SIGN
+%% ‰ PER MILLE SIGN
++| † DAGGER
+++ ‡ DOUBLE DAGGER
+|| ¶ PILCROW SIGN
-" accented vowels cannot map onto cp1251 – use utf-8 file encoding
-`D А̀ CYRILLIC CAPITAL LETTER A + GRAVE ACCENT (COMPOSED)
-`d а̀ CYRILLIC SMALL LETTER A + GRAVE ACCENT (COMPOSED)
-`E Ѐ CYRILLIC CAPITAL LETTER IE + GRAVE ACCENT (COMPOSED)
-`e ѐ CYRILLIC SMALL LETTER IE + GRAVE ACCENT (COMPOSED)
-`R Ѝ CYRILLIC CAPITAL LETTER I + GRAVE ACCENT (COMPOSED)
-`r ѝ CYRILLIC SMALL LETTER I + GRAVE ACCENT (COMPOSED)
-`F О̀ CYRILLIC CAPITAL LETTER O + GRAVE ACCENT (COMPOSED)
-`f о̀ CYRILLIC SMALL LETTER O + GRAVE ACCENT (COMPOSED)
-`W У̀ CYRILLIC CAPITAL LETTER U + GRAVE ACCENT (COMPOSED)
-`w у̀ CYRILLIC SMALL LETTER U + GRAVE ACCENT (COMPOSED)
-`C Ъ̀ CYRILLIC CAPITAL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
-`c ъ̀ CYRILLIC SMALL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
-`Z Ю̀ CYRILLIC CAPITAL LETTER YU + GRAVE ACCENT (COMPOSED)
-`z ю̀ CYRILLIC SMALL LETTER YU + GRAVE ACCENT (COMPOSED)
-`S Я̀ CYRILLIC CAPITAL LETTER YA + GRAVE ACCENT (COMPOSED)
-`s я̀ CYRILLIC SMALL LETTER YA + GRAVE ACCENT (COMPOSED)
+" Accented characters cannot map onto cp1251 – use utf-8 file encoding.
+" To apply an accent to a letter, type the corresponding key combination
+" to the immediate right of that letter.
+^` <char-0x300> COMBINING GRAVE ACCENT
+^' <char-0x301> COMBINING ACUTE ACCENT
diff --git a/runtime/keymap/bulgarian-phonetic.vim b/runtime/keymap/bulgarian-phonetic.vim
index bac2e7eb..eab2f15e 100644
--- a/runtime/keymap/bulgarian-phonetic.vim
+++ b/runtime/keymap/bulgarian-phonetic.vim
@@ -5,15 +5,13 @@
" Maintainer: Boyko Bantchev <boykobb@gmail.com>
" URI: http://www.math.bas.bg/bantchev/vim/bulgarian-phonetic.vim
-" Last Changed: 2008 June 28
-
-" For a rationale for the layout and additional info on typing in Bulgarian
-" using Unicode Cyrillic please see:
+" Last Changed: 2010 May 4
" This keymap corresponds to what is called "phonetic layout" in Bulgaria:
-" Cyrillic letters tend to be mapped to their Latin homophones, if present.
-" Most keys corresponding to punctuation characters are left unmapped, so
-" they retain their usual (qwerty) meanings in Cyrillic typing.
+" Cyrillic letters tend to be mapped to their Latin homophones wherever
+" there are ones. Most keys corresponding to punctuation characters are
+" left unmapped, so they retain their usual (QWERTY) meanings when typing
+" Cyrillic.
"
" In addition to the Bulgarian alphabet, the keymap makes accessible the
" following characters:
@@ -24,12 +22,16 @@
" — The quotation marks „ “ ” ‘ ’ (used in the Bulgarian and English
" quotation styles), as well as « » (Russian quotation style).
" — The characters §, №, – (en-dash), — (em-dash), …, •, ·, ±, °, ¬,
-" ¤, and €.
+" ¤, €, ‰, †, ‡, and ¶.
"
-" The keymap also defines key combinations for accented vowels in Bulgarian.
+" The keymap also defines key combinations for grave and acute accents.
+" (Grave accent is used in Bulgarian, acute in Russian, but both accents
+" apply to other languages as well.)
"
" For details of what key or key combination maps to what character, please
-" see below the map table itself.
+" see below the map itself.
+"
+" See also http://www.math.bas.bg/bantchev/vim/kbdbul.html (in Bulgarian).
scriptencoding utf-8
@@ -121,21 +123,13 @@ q я CYRILLIC SMALL LETTER YA
~~ ¬ NOT SIGN
@@ ¤ CURRENCY SIGN
$$ € EURO SIGN
+%% ‰ PER MILLE SIGN
++| † DAGGER
+++ ‡ DOUBLE DAGGER
+|| ¶ PILCROW SIGN
-" accented vowels cannot map onto cp1251 – use utf-8 file encoding
-'A А̀ CYRILLIC CAPITAL LETTER A + GRAVE ACCENT (COMPOSED)
-'a а̀ CYRILLIC SMALL LETTER A + GRAVE ACCENT (COMPOSED)
-'E Ѐ CYRILLIC CAPITAL LETTER IE + GRAVE ACCENT (COMPOSED)
-'e ѐ CYRILLIC SMALL LETTER IE + GRAVE ACCENT (COMPOSED)
-'I Ѝ CYRILLIC CAPITAL LETTER I + GRAVE ACCENT (COMPOSED)
-'i ѝ CYRILLIC SMALL LETTER I + GRAVE ACCENT (COMPOSED)
-'O О̀ CYRILLIC CAPITAL LETTER O + GRAVE ACCENT (COMPOSED)
-'o о̀ CYRILLIC SMALL LETTER O + GRAVE ACCENT (COMPOSED)
-'U У̀ CYRILLIC CAPITAL LETTER U + GRAVE ACCENT (COMPOSED)
-'u у̀ CYRILLIC SMALL LETTER U + GRAVE ACCENT (COMPOSED)
-'Y Ъ̀ CYRILLIC CAPITAL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
-'y ъ̀ CYRILLIC SMALL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
-'| Ю̀ CYRILLIC CAPITAL LETTER YU + GRAVE ACCENT (COMPOSED)
-'\\ ю̀ CYRILLIC SMALL LETTER YU + GRAVE ACCENT (COMPOSED)
-'Q Я̀ CYRILLIC CAPITAL LETTER YA + GRAVE ACCENT (COMPOSED)
-'q я̀ CYRILLIC SMALL LETTER YA + GRAVE ACCENT (COMPOSED)
+" Accented characters cannot map onto cp1251 – use utf-8 file encoding.
+" To apply an accent to a letter, type the corresponding key combination
+" to the immediate right of that letter.
+^` <char-0x300> COMBINING GRAVE ACCENT
+^' <char-0x301> COMBINING ACUTE ACCENT
diff --git a/runtime/lang/menu_sr.utf-8.vim b/runtime/lang/menu_sr.utf-8.vim
index 915c31a5..4d278f99 100644
--- a/runtime/lang/menu_sr.utf-8.vim
+++ b/runtime/lang/menu_sr.utf-8.vim
@@ -1,3 +1,3 @@
" Menu Translations: Serbian
-source <sfile>:p:h/menu_sr_yu.utf-8.vim
+source <sfile>:p:h/menu_sr_rs.utf-8.vim
diff --git a/runtime/lang/menu_sr_rs.ascii.vim b/runtime/lang/menu_sr_rs.ascii.vim
new file mode 100644
index 00000000..14a90260
--- /dev/null
+++ b/runtime/lang/menu_sr_rs.ascii.vim
@@ -0,0 +1,258 @@
+" Menu Translations: Serbian
+" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+" Last Change: Fri, 30 May 2003 12:15:30 -0400
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+ finish
+endif
+let did_menu_trans = 1
+
+" Help menu
+menutrans &Help Pomo&c
+menutrans &Overview<Tab><F1> &Pregled<Tab><F1>
+menutrans &User\ Manual &Uputstvo\ za\ korisnike
+menutrans &How-to\ links &Kako\ da\.\.\.
+menutrans &Find &Nadji
+menutrans &Credits &Zasluge
+menutrans Co&pying P&reuzimanje
+menutrans O&rphans &Sirocici
+menutrans &Version &Verzija
+menutrans &About &O\ programu
+
+" File menu
+menutrans &File &Datoteka
+menutrans &Open\.\.\.<Tab>:e &Otvori\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
+menutrans &New<Tab>:enew &Nova<Tab>:enew
+menutrans &Close<Tab>:close &Zatvori<Tab>:close
+menutrans &Save<Tab>:w &Sacuvaj<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav Sacuvaj\ &kao\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\.
+menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
+menutrans &Print Sta&mpaj
+menutrans Sa&ve-Exit<Tab>:wqa Sacuvaj\ i\ za&vrsi<Tab>:wqa
+menutrans E&xit<Tab>:qa K&raj<Tab>:qa
+
+" Edit menu
+menutrans &Edit &Uredjivanje
+menutrans &Undo<Tab>u &Vrati<Tab>u
+menutrans &Redo<Tab>^R &Povrati<Tab>^R
+menutrans Rep&eat<Tab>\. P&onovi<Tab>\.
+menutrans Cu&t<Tab>"+x Ise&ci<Tab>"+x
+menutrans &Copy<Tab>"+y &Kopiraj<Tab>"+y
+menutrans &Paste<Tab>"+gP &Ubaci<Tab>"+gP
+menutrans &Paste<Tab>"+P &Ubaci<Tab>"+gP
+menutrans Put\ &Before<Tab>[p Stavi\ pre&d<Tab>[p
+menutrans Put\ &After<Tab>]p Stavi\ &iza<Tab>]p
+menutrans &Delete<Tab>x Iz&brisi<Tab>x
+menutrans &Select\ all<Tab>ggVG Izaberi\ sv&e<Tab>ggVG
+menutrans &Find\.\.\. &Nadji\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\. Nadji\ i\ &zameni\.\.\.
+menutrans Settings\ &Window P&rozor\ podesavanja
+menutrans &Global\ Settings Op&sta\ podesavanja
+menutrans F&ile\ Settings Podesavanja\ za\ da&toteke
+menutrans &Shiftwidth &Pomeraj
+menutrans Soft\ &Tabstop &Meka\ tabulacija
+menutrans Te&xt\ Width\.\.\. &Sirina\ teksta\.\.\.
+menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\.
+menutrans C&olor\ Scheme Bo&je
+menutrans &Keymap Pres&likavanje\ tastature
+menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\.
+
+" Edit/Global Settings
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \velicinu\ &slova\ (da/ne)<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ pratecu\ &zagradu\ (da/ne)<Tab>:set\ sm!
+menutrans &Context\ lines Vidljivi\ &redovi
+menutrans &Virtual\ Edit Virtuelno\ &uredjivanje
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Rezim\ u&nosa\ (da/ne)<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
+menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\.
+menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne)
+menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne)
+menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne)
+menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
+
+" Edit/Global Settings/Virtual Edit
+menutrans Never Nikad
+menutrans Block\ Selection Izbor\ bloka
+menutrans Insert\ mode Rezim\ unosa
+menutrans Block\ and\ Insert Blok\ i\ unos
+menutrans Always Uvek
+
+" Edit/File Settings
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! Rezim\ &liste\ (da/ne)<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Prelomi\ &na\ rec\ (da/ne)<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai! Auto-&uvlacenje\ (da/ne)<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin! &Ce-uvlacenje\ (da/ne)<Tab>:set\ cin!
+
+" Edit/Keymap
+menutrans None Nijedan
+
+" Tools menu
+menutrans &Tools &Alatke
+menutrans &Jump\ to\ this\ tag<Tab>g^] Skoci\ na\ &ovu\ oznaku<Tab>g^]
+menutrans Jump\ &back<Tab>^T Skoci\ &natrag<Tab>^T
+menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka
+menutrans &Folding &Podvijanje
+menutrans Create\ &Fold<Tab>zf S&tvori\ podvijutak<Tab>zf
+menutrans &Delete\ Fold<Tab>zd O&brisi\ podvijutak<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD Obrisi\ sve\ po&dvijutke<Tab>zD
+menutrans Fold\ column\ &width Sirina\ &reda\ podvijutka
+menutrans &Diff &Uporedjivanje
+menutrans &Make<Tab>:make 'mak&e'<Tab>:make
+menutrans &List\ Errors<Tab>:cl Spisak\ &gresaka<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! Sp&isak\ poruka<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn S&ledeca\ greska<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp Pre&thodna\ greska<Tab>:cp
+menutrans &Older\ List<Tab>:cold Stari\ spisa&k<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew No&vi\ spisak<Tab>:cnew
+menutrans Error\ &Window Prozor\ sa\ g&reskama
+menutrans &Set\ Compiler I&zaberi\ prevodioca
+menutrans &Convert\ to\ HEX<Tab>:%!xxd Pretvori\ u\ &HEKS<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
+
+" Tools/Folding
+menutrans &Enable/Disable\ folds<Tab>zi &Omoguci/prekini\ podvijanje<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv &Pokazi\ red\ sa\ kursorom<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Pokazi\ &samo\ red\ sa\ kursorom<Tab>zMzx
+menutrans C&lose\ more\ folds<Tab>zm &Zatvori\ vise\ podvijutaka<Tab>zm
+menutrans &Close\ all\ folds<Tab>zM Zatvori\ s&ve\ podvijutke<Tab>zM
+menutrans O&pen\ more\ folds<Tab>zr Otvori\ vis&e\ podvijutaka<Tab>zr
+menutrans &Open\ all\ folds<Tab>zR O&tvori\ sve\ podvijutke<Tab>zR
+menutrans Fold\ Met&hod &Nacin\ podvijanja
+
+" Tools/Folding/Fold Method
+menutrans M&anual &Rucno
+menutrans I&ndent &Uvucenost
+menutrans E&xpression &Izraz
+menutrans S&yntax &Sintaksa
+"menutrans &Diff
+menutrans Ma&rker &Oznaka
+
+" Tools/Diff
+menutrans &Update &Azuriraj
+menutrans &Get\ Block &Prihvati\ izmenu
+menutrans &Put\ Block Pre&baci\ izmenu
+
+" Tools/Error Window
+menutrans &Update<Tab>:cwin &Azuriraj<Tab>:cwin
+menutrans &Open<Tab>:copen &Otvori<Tab>:copen
+menutrans &Close<Tab>:cclose &Zatvori<Tab>:cclose
+
+" Bufers menu
+menutrans &Buffers &Baferi
+menutrans &Refresh\ menu &Azuriraj
+menutrans Delete &Obrisi
+menutrans &Alternate A&lternativni
+menutrans &Next &Sledeci
+menutrans &Previous &Prethodni
+menutrans [No\ File] [Nema\ datoteke]
+
+" Window menu
+menutrans &Window &Prozor
+menutrans &New<Tab>^Wn &Novi<Tab>^Wn
+menutrans S&plit<Tab>^Ws &Podeli<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ Podeli\ sa\ &alternativnim<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv Podeli\ &uspravno<Tab>^Wv
+menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka
+menutrans &Close<Tab>^Wc &Zatvori<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo Zatvori\ &ostale<Tab>^Wo
+"menutrans Ne&xt<Tab>^Ww &Sledeci<Tab>^Ww
+"menutrans P&revious<Tab>^WW P&rethodni<Tab>^WW
+menutrans Move\ &To Pre&mesti
+menutrans Rotate\ &Up<Tab>^WR &Kruzno\ nagore<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr Kruzno\ nadol&e<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W= &Iste\ velicine<Tab>^W=
+menutrans &Max\ Height<Tab>^W_ Maksimalna\ &visina<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_ Minima&lna\ visina<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| Maksimalna\ &sirina<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| Minimalna\ si&rina<Tab>^W1\|
+
+" Window/Move To
+menutrans &Top<Tab>^WK &Vrh<Tab>^WK
+menutrans &Bottom<Tab>^WJ &Podnozje<Tab>^WJ
+menutrans &Left\ side<Tab>^WH U&levo<Tab>^WH
+menutrans &Right\ side<Tab>^WL U&desno<Tab>^WL
+
+" The popup menu
+menutrans &Undo &Vrati
+menutrans Cu&t &Iseci
+menutrans &Copy &Kopiraj
+menutrans &Paste &Ubaci
+menutrans &Delete I&zbrisi
+menutrans Select\ Blockwise Biraj\ &pravougaono
+menutrans Select\ &Word Izaberi\ &rec
+menutrans Select\ &Line Izaberi\ r&ed
+menutrans Select\ &Block Izaberi\ &blok
+menutrans Select\ &All Izaberi\ &sve
+
+" The GUI toolbar
+if has("toolbar")
+ if exists("*Do_toolbar_tmenu")
+ delfun Do_toolbar_tmenu
+ endif
+ fun Do_toolbar_tmenu()
+ tmenu ToolBar.Open Ucitaj
+ tmenu ToolBar.Save Sacuvaj
+ tmenu ToolBar.SaveAll Sacuvaj sve
+ tmenu ToolBar.Print Stampaj
+ tmenu ToolBar.Undo Vrati
+ tmenu ToolBar.Redo Povrati
+ tmenu ToolBar.Cut Iseci
+ tmenu ToolBar.Copy Kopiraj
+ tmenu ToolBar.Paste Ubaci
+ tmenu ToolBar.Find Nadji
+ tmenu ToolBar.FindNext Nadji sledeci
+ tmenu ToolBar.FindPrev Nadji prethodni
+ tmenu ToolBar.Replace Zameni
+ tmenu ToolBar.New Novi
+ tmenu ToolBar.WinSplit Podeli prozor
+ tmenu ToolBar.WinMax Maksimalna visina
+ tmenu ToolBar.WinMin Minimalna visina
+ tmenu ToolBar.WinVSplit Podeli uspravno
+ tmenu ToolBar.WinMaxWidth Maksimalna sirina
+ tmenu ToolBar.WinMinWidth Minimalna sirina
+ tmenu ToolBar.WinClose Zatvori prozor
+ tmenu ToolBar.LoadSesn Ucitaj seansu
+ tmenu ToolBar.SaveSesn Sacuvaj seansu
+ tmenu ToolBar.RunScript Izvrsi spis
+ tmenu ToolBar.Make 'make'
+ tmenu ToolBar.Shell Operativno okruzenje
+ tmenu ToolBar.RunCtags Napravi oznake
+ tmenu ToolBar.TagJump Idi na oznaku
+ tmenu ToolBar.Help Pomoc
+ tmenu ToolBar.FindHelp Nadji objasnjenje
+ endfun
+endif
+
+" Syntax menu
+menutrans &Syntax &Sintaksa
+menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija
+menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo
+menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takodje
+menutrans &Off &Iskljuceno
+menutrans &Manual &Rucno
+menutrans A&utomatic &Automatski
+menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku
+menutrans Co&lor\ test Provera\ &boja
+menutrans &Highlight\ test Provera\ isti&canja
+menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML
+
+" dialog texts
+let menutrans_help_dialog = "Unesite naredbu ili rec cije pojasnjenje trazite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog rezima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
+
+let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
+
+let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
+
+let g:menutrans_textwidth_dialog = "Unesite novu sirinu teksta (0 sprecava prelom)"
+
+let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
+
+let menutrans_no_file = "[Nema datoteke]"
diff --git a/runtime/lang/menu_sr_rs.iso_8859-2.vim b/runtime/lang/menu_sr_rs.iso_8859-2.vim
new file mode 100644
index 00000000..992124c8
--- /dev/null
+++ b/runtime/lang/menu_sr_rs.iso_8859-2.vim
@@ -0,0 +1,259 @@
+" Menu Translations: Serbian
+" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+" Last Change: Fri, 30 May 2003 12:04:48 -0400
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+ finish
+endif
+let did_menu_trans = 1
+scriptencoding iso8859-2
+
+" Help menu
+menutrans &Help Pomo&
+menutrans &Overview<Tab><F1> &Pregled<Tab><F1>
+menutrans &User\ Manual &Uputstvo\ za\ korisnike
+menutrans &How-to\ links &Kako\ da\.\.\.
+menutrans &Find &Nai
+menutrans &Credits &Zasluge
+menutrans Co&pying P&reuzimanje
+menutrans O&rphans &Siroii
+menutrans &Version &Verzija
+menutrans &About &O\ programu
+
+" File menu
+menutrans &File &Datoteka
+menutrans &Open\.\.\.<Tab>:e &Otvori\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
+menutrans &New<Tab>:enew &Nova<Tab>:enew
+menutrans &Close<Tab>:close &Zatvori<Tab>:close
+menutrans &Save<Tab>:w &Sauvaj<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav Sauvaj\ &kao\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\.
+menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
+menutrans &Print ta&mpaj
+menutrans Sa&ve-Exit<Tab>:wqa Sauvaj\ i\ za&vri<Tab>:wqa
+menutrans E&xit<Tab>:qa K&raj<Tab>:qa
+
+" Edit menu
+menutrans &Edit &Ureivanje
+menutrans &Undo<Tab>u &Vrati<Tab>u
+menutrans &Redo<Tab>^R &Povrati<Tab>^R
+menutrans Rep&eat<Tab>\. P&onovi<Tab>\.
+menutrans Cu&t<Tab>"+x Ise&ci<Tab>"+x
+menutrans &Copy<Tab>"+y &Kopiraj<Tab>"+y
+menutrans &Paste<Tab>"+gP &Ubaci<Tab>"+gP
+menutrans &Paste<Tab>"+P &Ubaci<Tab>"+gP
+menutrans Put\ &Before<Tab>[p Stavi\ pre&d<Tab>[p
+menutrans Put\ &After<Tab>]p Stavi\ &iza<Tab>]p
+menutrans &Delete<Tab>x Iz&brii<Tab>x
+menutrans &Select\ all<Tab>ggVG Izaberi\ sv&e<Tab>ggVG
+menutrans &Find\.\.\. &Nai\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\. Nai\ i\ &zameni\.\.\.
+menutrans Settings\ &Window P&rozor\ podeavanja
+menutrans &Global\ Settings Op&ta\ podeavanja
+menutrans F&ile\ Settings Podeavanja\ za\ da&toteke
+menutrans &Shiftwidth &Pomeraj
+menutrans Soft\ &Tabstop &Meka\ tabulacija
+menutrans Te&xt\ Width\.\.\. &irina\ teksta\.\.\.
+menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\.
+menutrans C&olor\ Scheme Bo&je
+menutrans &Keymap Pres&likavanje\ tastature
+menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\.
+
+" Edit/Global Settings
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \veliinu\ &slova\ (da/ne)<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ prateu\ &zagradu\ (da/ne)<Tab>:set\ sm!
+menutrans &Context\ lines Vidljivi\ &redovi
+menutrans &Virtual\ Edit Virtuelno\ &ureivanje
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Reim\ u&nosa\ (da/ne)<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
+menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\.
+menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne)
+menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne)
+menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne)
+menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
+
+" Edit/Global Settings/Virtual Edit
+menutrans Never Nikad
+menutrans Block\ Selection Izbor\ bloka
+menutrans Insert\ mode Reim\ unosa
+menutrans Block\ and\ Insert Blok\ i\ unos
+menutrans Always Uvek
+
+" Edit/File Settings
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! Reim\ &liste\ (da/ne)<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Prelomi\ &na\ re\ (da/ne)<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai! Auto-&uvlaenje\ (da/ne)<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin! &Ce-uvlaenje\ (da/ne)<Tab>:set\ cin!
+
+" Edit/Keymap
+menutrans None Nijedan
+
+" Tools menu
+menutrans &Tools &Alatke
+menutrans &Jump\ to\ this\ tag<Tab>g^] Skoi\ na\ &ovu\ oznaku<Tab>g^]
+menutrans Jump\ &back<Tab>^T Skoi\ &natrag<Tab>^T
+menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka
+menutrans &Folding &Podvijanje
+menutrans Create\ &Fold<Tab>zf S&tvori\ podvijutak<Tab>zf
+menutrans &Delete\ Fold<Tab>zd O&brii\ podvijutak<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD Obrii\ sve\ po&dvijutke<Tab>zD
+menutrans Fold\ column\ &width irina\ &reda\ podvijutka
+menutrans &Diff &Uporeivanje
+menutrans &Make<Tab>:make 'mak&e'<Tab>:make
+menutrans &List\ Errors<Tab>:cl Spisak\ &greaka<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! Sp&isak\ poruka<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn S&ledea\ greka<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp Pre&thodna\ greka<Tab>:cp
+menutrans &Older\ List<Tab>:cold Stari\ spisa&k<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew No&vi\ spisak<Tab>:cnew
+menutrans Error\ &Window Prozor\ sa\ g&rekama
+menutrans &Set\ Compiler I&zaberi\ prevodioca
+menutrans &Convert\ to\ HEX<Tab>:%!xxd Pretvori\ u\ &HEKS<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
+
+" Tools/Folding
+menutrans &Enable/Disable\ folds<Tab>zi &Omogui/prekini\ podvijanje<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv &Pokai\ red\ sa\ kursorom<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Pokai\ &samo\ red\ sa\ kursorom<Tab>zMzx
+menutrans C&lose\ more\ folds<Tab>zm &Zatvori\ vie\ podvijutaka<Tab>zm
+menutrans &Close\ all\ folds<Tab>zM Zatvori\ s&ve\ podvijutke<Tab>zM
+menutrans O&pen\ more\ folds<Tab>zr Otvori\ vi&e\ podvijutaka<Tab>zr
+menutrans &Open\ all\ folds<Tab>zR O&tvori\ sve\ podvijutke<Tab>zR
+menutrans Fold\ Met&hod &Nain\ podvijanja
+
+" Tools/Folding/Fold Method
+menutrans M&anual &Runo
+menutrans I&ndent &Uvuenost
+menutrans E&xpression &Izraz
+menutrans S&yntax &Sintaksa
+"menutrans &Diff
+menutrans Ma&rker &Oznaka
+
+" Tools/Diff
+menutrans &Update &Auriraj
+menutrans &Get\ Block &Prihvati\ izmenu
+menutrans &Put\ Block Pre&baci\ izmenu
+
+" Tools/Error Window
+menutrans &Update<Tab>:cwin &Auriraj<Tab>:cwin
+menutrans &Open<Tab>:copen &Otvori<Tab>:copen
+menutrans &Close<Tab>:cclose &Zatvori<Tab>:cclose
+
+" Bufers menu
+menutrans &Buffers &Baferi
+menutrans &Refresh\ menu &Auriraj
+menutrans Delete &Obrii
+menutrans &Alternate A&lternativni
+menutrans &Next &Sledei
+menutrans &Previous &Prethodni
+menutrans [No\ File] [Nema\ datoteke]
+
+" Window menu
+menutrans &Window &Prozor
+menutrans &New<Tab>^Wn &Novi<Tab>^Wn
+menutrans S&plit<Tab>^Ws &Podeli<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ Podeli\ sa\ &alternativnim<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv Podeli\ &uspravno<Tab>^Wv
+menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka
+menutrans &Close<Tab>^Wc &Zatvori<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo Zatvori\ &ostale<Tab>^Wo
+"menutrans Ne&xt<Tab>^Ww &Sledei<Tab>^Ww
+"menutrans P&revious<Tab>^WW P&rethodni<Tab>^WW
+menutrans Move\ &To Pre&mesti
+menutrans Rotate\ &Up<Tab>^WR &Kruno\ nagore<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr Kruno\ nadol&e<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W= &Iste\ veliine<Tab>^W=
+menutrans &Max\ Height<Tab>^W_ Maksimalna\ &visina<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_ Minima&lna\ visina<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| Maksimalna\ &irina<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| Minimalna\ i&rina<Tab>^W1\|
+
+" Window/Move To
+menutrans &Top<Tab>^WK &Vrh<Tab>^WK
+menutrans &Bottom<Tab>^WJ &Podnoje<Tab>^WJ
+menutrans &Left\ side<Tab>^WH U&levo<Tab>^WH
+menutrans &Right\ side<Tab>^WL U&desno<Tab>^WL
+
+" The popup menu
+menutrans &Undo &Vrati
+menutrans Cu&t &Iseci
+menutrans &Copy &Kopiraj
+menutrans &Paste &Ubaci
+menutrans &Delete I&zbrii
+menutrans Select\ Blockwise Biraj\ &pravougaono
+menutrans Select\ &Word Izaberi\ &re
+menutrans Select\ &Line Izaberi\ r&ed
+menutrans Select\ &Block Izaberi\ &blok
+menutrans Select\ &All Izaberi\ &sve
+
+" The GUI toolbar
+if has("toolbar")
+ if exists("*Do_toolbar_tmenu")
+ delfun Do_toolbar_tmenu
+ endif
+ fun Do_toolbar_tmenu()
+ tmenu ToolBar.Open Uitaj
+ tmenu ToolBar.Save Sauvaj
+ tmenu ToolBar.SaveAll Sauvaj sve
+ tmenu ToolBar.Print tampaj
+ tmenu ToolBar.Undo Vrati
+ tmenu ToolBar.Redo Povrati
+ tmenu ToolBar.Cut Iseci
+ tmenu ToolBar.Copy Kopiraj
+ tmenu ToolBar.Paste Ubaci
+ tmenu ToolBar.Find Nai
+ tmenu ToolBar.FindNext Nai sledei
+ tmenu ToolBar.FindPrev Nai prethodni
+ tmenu ToolBar.Replace Zameni
+ tmenu ToolBar.New Novi
+ tmenu ToolBar.WinSplit Podeli prozor
+ tmenu ToolBar.WinMax Maksimalna visina
+ tmenu ToolBar.WinMin Minimalna visina
+ tmenu ToolBar.WinVSplit Podeli uspravno
+ tmenu ToolBar.WinMaxWidth Maksimalna irina
+ tmenu ToolBar.WinMinWidth Minimalna irina
+ tmenu ToolBar.WinClose Zatvori prozor
+ tmenu ToolBar.LoadSesn Uitaj seansu
+ tmenu ToolBar.SaveSesn Sauvaj seansu
+ tmenu ToolBar.RunScript Izvri spis
+ tmenu ToolBar.Make 'make'
+ tmenu ToolBar.Shell Operativno okruenje
+ tmenu ToolBar.RunCtags Napravi oznake
+ tmenu ToolBar.TagJump Idi na oznaku
+ tmenu ToolBar.Help Pomo
+ tmenu ToolBar.FindHelp Nai objanjenje
+ endfun
+endif
+
+" Syntax menu
+menutrans &Syntax &Sintaksa
+menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija
+menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo
+menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takoe
+menutrans &Off &Iskljueno
+menutrans &Manual &Runo
+menutrans A&utomatic &Automatski
+menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku
+menutrans Co&lor\ test Provera\ &boja
+menutrans &Highlight\ test Provera\ isti&canja
+menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML
+
+" dialog texts
+let menutrans_help_dialog = "Unesite naredbu ili re ije pojanjenje traite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog reima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
+
+let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
+
+let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
+
+let g:menutrans_textwidth_dialog = "Unesite novu irinu teksta (0 spreava prelom)"
+
+let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
+
+let menutrans_no_file = "[Nema datoteke]"
diff --git a/runtime/lang/menu_sr_rs.iso_8859-5.vim b/runtime/lang/menu_sr_rs.iso_8859-5.vim
new file mode 100644
index 00000000..e4d322dc
--- /dev/null
+++ b/runtime/lang/menu_sr_rs.iso_8859-5.vim
@@ -0,0 +1,259 @@
+" Menu Translations: Serbian
+" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+" Last Change: Fri, 30 May 2003 12:02:07 -0400
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+ finish
+endif
+let did_menu_trans = 1
+scriptencoding iso8859-5
+
+" Help menu
+menutrans &Help &
+menutrans &Overview<Tab><F1> &<Tab><F1>
+menutrans &User\ Manual &\ \
+menutrans &How-to\ links &\ \.\.\.
+menutrans &Find &
+menutrans &Credits &
+menutrans Co&pying &
+menutrans O&rphans &
+menutrans &Version &
+menutrans &About &\
+
+" File menu
+menutrans &File &
+menutrans &Open\.\.\.<Tab>:e &\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp &-\.\.\.<Tab>:sp
+menutrans &New<Tab>:enew &<Tab>:enew
+menutrans &Close<Tab>:close &<Tab>:close
+menutrans &Save<Tab>:w &<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav \ &\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ with\.\.\. \ \ &\ \.\.\.
+menutrans Split\ Patched\ &By\.\.\. &\ \ \ \.\.\.
+menutrans &Print &
+menutrans Sa&ve-Exit<Tab>:wqa \ \ &<Tab>:wqa
+menutrans E&xit<Tab>:qa &<Tab>:qa
+
+" Edit menu
+menutrans &Edit &
+menutrans &Undo<Tab>u &<Tab>u
+menutrans &Redo<Tab>^R &<Tab>^R
+menutrans Rep&eat<Tab>\. &<Tab>\.
+menutrans Cu&t<Tab>"+x &<Tab>"+x
+menutrans &Copy<Tab>"+y &<Tab>"+y
+menutrans &Paste<Tab>"+gP &<Tab>"+gP
+menutrans &Paste<Tab>"+P &<Tab>"+gP
+menutrans Put\ &Before<Tab>[p \ &<Tab>[p
+menutrans Put\ &After<Tab>]p \ &<Tab>]p
+menutrans &Delete<Tab>x &<Tab>x
+menutrans &Select\ all<Tab>ggVG \ &<Tab>ggVG
+menutrans &Find\.\.\. &\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\. \ \ &\.\.\.
+menutrans Settings\ &Window &\
+menutrans &Global\ Settings &\
+menutrans F&ile\ Settings \ \ &
+menutrans &Shiftwidth &
+menutrans Soft\ &Tabstop &\
+menutrans Te&xt\ Width\.\.\. &\ \.\.\.
+menutrans &File\ Format\.\.\. &\ \.\.\.
+menutrans C&olor\ Scheme &
+menutrans &Keymap &\
+menutrans Select\ Fo&nt\.\.\. \ &\.\.\.
+
+" Edit/Global Settings
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! \ &\ (/)<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic! \ \\ &\ (/)<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm! \ \ &\ (/)<Tab>:set\ sm!
+menutrans &Context\ lines \ &
+menutrans &Virtual\ Edit \ &
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! \ &\ (/)<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ \ (/)<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. \ &\.\.\.
+menutrans Ta&g\ Files\.\.\. &\ \.\.\.
+menutrans Toggle\ &Toolbar \ \ &\ (/)
+menutrans Toggle\ &Bottom\ Scrollbar \ &\ \ (/)
+menutrans Toggle\ &Left\ Scrollbar &\ \ \ (/)
+menutrans Toggle\ &Right\ Scrollbar &\ \ \ (/)
+
+" Edit/Global Settings/Virtual Edit
+menutrans Never
+menutrans Block\ Selection \
+menutrans Insert\ mode \
+menutrans Block\ and\ Insert \ \
+menutrans Always
+
+" Edit/File Settings
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! \ &\ (/)<Tab>:set\ nu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! \ &\ (/)<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! \ &\ (/)<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! \ &\ \ (/)<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et! \ \ &\ (/)<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai! -&\ (/)<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin! &-\ (/)<Tab>:set\ cin!
+
+" Edit/Keymap
+menutrans None
+
+" Tools menu
+menutrans &Tools &
+menutrans &Jump\ to\ this\ tag<Tab>g^] \ \ &\ <Tab>g^]
+menutrans Jump\ &back<Tab>^T \ &<Tab>^T
+menutrans Build\ &Tags\ File \ &\
+menutrans &Folding &
+menutrans Create\ &Fold<Tab>zf &\ <Tab>zf
+menutrans &Delete\ Fold<Tab>zd &\ <Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD \ \ &<Tab>zD
+menutrans Fold\ column\ &width \ &\
+menutrans &Diff &
+menutrans &Make<Tab>:make 'mak&'<Tab>:make
+menutrans &List\ Errors<Tab>:cl \ &<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! &\ <Tab>:cl!
+menutrans &Next\ Error<Tab>:cn &\ <Tab>:cn
+menutrans &Previous\ Error<Tab>:cp &\ <Tab>:cp
+menutrans &Older\ List<Tab>:cold \ &<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew &\ <Tab>:cnew
+menutrans Error\ &Window \ \ &
+menutrans &Set\ Compiler &\
+menutrans &Convert\ to\ HEX<Tab>:%!xxd \ \ &ŵ<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r &\ \ \ <Tab>:%!xxd\ -r
+
+" Tools/Folding
+menutrans &Enable/Disable\ folds<Tab>zi &/\ <Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv &\ \ \ <Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx \ &\ \ \ <Tab>zMzx
+menutrans C&lose\ more\ folds<Tab>zm &\ \ <Tab>zm
+menutrans &Close\ all\ folds<Tab>zM \ &\ <Tab>zM
+menutrans O&pen\ more\ folds<Tab>zr \ &\ <Tab>zr
+menutrans &Open\ all\ folds<Tab>zR &\ \ <Tab>zR
+menutrans Fold\ Met&hod &\
+
+" Tools/Folding/Fold Method
+menutrans M&anual &
+menutrans I&ndent &
+menutrans E&xpression &
+menutrans S&yntax &
+"menutrans &Diff
+menutrans Ma&rker &
+
+" Tools/Diff
+menutrans &Update &
+menutrans &Get\ Block &\
+menutrans &Put\ Block &\
+
+" Tools/Error Window
+menutrans &Update<Tab>:cwin &<Tab>:cwin
+menutrans &Open<Tab>:copen &<Tab>:copen
+menutrans &Close<Tab>:cclose &<Tab>:cclose
+
+" Bufers menu
+menutrans &Buffers &
+menutrans &Refresh\ menu &
+menutrans Delete &
+menutrans &Alternate &
+menutrans &Next &
+menutrans &Previous &
+menutrans [No\ File] [\ ]
+
+" Window menu
+menutrans &Window &
+menutrans &New<Tab>^Wn &<Tab>^Wn
+menutrans S&plit<Tab>^Ws &<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ \ \ &<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv \ &<Tab>^Wv
+menutrans Split\ File\ E&xplorer \ \ \ &
+menutrans &Close<Tab>^Wc &<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo \ &<Tab>^Wo
+"menutrans Ne&xt<Tab>^Ww &<Tab>^Ww
+"menutrans P&revious<Tab>^WW &<Tab>^WW
+menutrans Move\ &To &
+menutrans Rotate\ &Up<Tab>^WR &\ <Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr \ &<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W= &\ <Tab>^W=
+menutrans &Max\ Height<Tab>^W_ \ &<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_ &\ <Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| \ &<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| \ &<Tab>^W1\|
+
+" Window/Move To
+menutrans &Top<Tab>^WK &<Tab>^WK
+menutrans &Bottom<Tab>^WJ &<Tab>^WJ
+menutrans &Left\ side<Tab>^WH &<Tab>^WH
+menutrans &Right\ side<Tab>^WL &<Tab>^WL
+
+" The popup menu
+menutrans &Undo &
+menutrans Cu&t &
+menutrans &Copy &
+menutrans &Paste &
+menutrans &Delete &
+menutrans Select\ Blockwise \ &
+menutrans Select\ &Word \ &
+menutrans Select\ &Line \ &
+menutrans Select\ &Block \ &
+menutrans Select\ &All \ &
+
+" The GUI toolbar
+if has("toolbar")
+ if exists("*Do_toolbar_tmenu")
+ delfun Do_toolbar_tmenu
+ endif
+ fun Do_toolbar_tmenu()
+ tmenu ToolBar.Open
+ tmenu ToolBar.Save
+ tmenu ToolBar.SaveAll
+ tmenu ToolBar.Print
+ tmenu ToolBar.Undo
+ tmenu ToolBar.Redo
+ tmenu ToolBar.Cut
+ tmenu ToolBar.Copy
+ tmenu ToolBar.Paste
+ tmenu ToolBar.Find
+ tmenu ToolBar.FindNext
+ tmenu ToolBar.FindPrev
+ tmenu ToolBar.Replace
+ tmenu ToolBar.New
+ tmenu ToolBar.WinSplit
+ tmenu ToolBar.WinMax
+ tmenu ToolBar.WinMin
+ tmenu ToolBar.WinVSplit
+ tmenu ToolBar.WinMaxWidth
+ tmenu ToolBar.WinMinWidth
+ tmenu ToolBar.WinClose
+ tmenu ToolBar.LoadSesn
+ tmenu ToolBar.SaveSesn
+ tmenu ToolBar.RunScript
+ tmenu ToolBar.Make 'make'
+ tmenu ToolBar.Shell
+ tmenu ToolBar.RunCtags
+ tmenu ToolBar.TagJump
+ tmenu ToolBar.Help
+ tmenu ToolBar.FindHelp
+ endfun
+endif
+
+" Syntax menu
+menutrans &Syntax &
+menutrans &Show\ filetypes\ in\ menu \ 'filetype'\ \ &
+menutrans Set\ '&syntax'\ only &\ 'syntax'\
+menutrans Set\ '&filetype'\ too \ 'filetype'\ &
+menutrans &Off &
+menutrans &Manual &
+menutrans A&utomatic &
+menutrans on/off\ for\ &This\ file /\ \ \ &
+menutrans Co&lor\ test \ &
+menutrans &Highlight\ test \ &
+menutrans &Convert\ to\ HTML \ &\ HTML
+
+" dialog texts
+let menutrans_help_dialog = " :\n\n i_ (. i_CTRL-X)\n c_ (. _<Del>)\n ' (. 'shiftwidth')"
+
+let g:menutrans_path_dialog = " \n ."
+
+let g:menutrans_tags_dialog = " \n ."
+
+let g:menutrans_textwidth_dialog = " (0 )"
+
+let g:menutrans_fileformat_dialog = " "
+
+let menutrans_no_file = "[ ]"
diff --git a/runtime/lang/menu_sr_rs.utf-8.vim b/runtime/lang/menu_sr_rs.utf-8.vim
new file mode 100644
index 00000000..85f1491d
--- /dev/null
+++ b/runtime/lang/menu_sr_rs.utf-8.vim
@@ -0,0 +1,261 @@
+" Menu Translations: Serbian
+" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+" Last Change: Fri, 30 May 2003 10:17:39 Eastern Daylight Time
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+ finish
+endif
+let did_menu_trans = 1
+scriptencoding utf-8
+
+" Help menu
+menutrans &Help Помо&ћ
+menutrans &Overview<Tab><F1> &Преглед<Tab><F1>
+menutrans &User\ Manual &Упутство\ за\ кориснике
+menutrans &How-to\ links &Како\ да\.\.\.
+menutrans &Find &Нађи
+menutrans &Credits &Заслуге
+menutrans Co&pying П&реузимање
+menutrans O&rphans &Сирочићи
+menutrans &Version &Верзија
+menutrans &About &О\ програму
+
+" File menu
+menutrans &File &Датотека
+menutrans &Open\.\.\.<Tab>:e &Отвори\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp &Подели-отвори\.\.\.<Tab>:sp
+menutrans &New<Tab>:enew &Нова<Tab>:enew
+menutrans &Close<Tab>:close &Затвори<Tab>:close
+menutrans &Save<Tab>:w &Сачувај<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav Сачувај\ &као\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ with\.\.\. Подели\ и\ &упореди\ са\.\.\.
+menutrans Split\ Patched\ &By\.\.\. По&дели\ и\ преправи\ са\.\.\.
+menutrans &Print Шта&мпај
+menutrans Sa&ve-Exit<Tab>:wqa Сачувај\ и\ за&врши<Tab>:wqa
+menutrans E&xit<Tab>:qa К&рај<Tab>:qa
+
+" Edit menu
+menutrans &Edit &Уређивање
+menutrans &Undo<Tab>u &Врати<Tab>u
+menutrans &Redo<Tab>^R &Поврати<Tab>^R
+menutrans Rep&eat<Tab>\. П&онови<Tab>\.
+menutrans Cu&t<Tab>"+x Исе&ци<Tab>"+x
+menutrans &Copy<Tab>"+y &Копирај<Tab>"+y
+menutrans &Paste<Tab>"+gP &Убаци<Tab>"+gP
+menutrans &Paste<Tab>"+P &Убаци<Tab>"+gP
+menutrans Put\ &Before<Tab>[p Стави\ пре&д<Tab>[p
+menutrans Put\ &After<Tab>]p Стави\ &иза<Tab>]p
+menutrans &Delete<Tab>x Из&бриши<Tab>x
+menutrans &Select\ all<Tab>ggVG Изабери\ св&е<Tab>ggVG
+menutrans &Find\.\.\. &Нађи\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\. Нађи\ и\ &замени\.\.\.
+menutrans Settings\ &Window П&розор\ подешавања
+menutrans &Global\ Settings Оп&шта\ подешавања
+menutrans F&ile\ Settings Подешавања\ за\ да&тотеке
+menutrans &Shiftwidth &Померај
+menutrans Soft\ &Tabstop &Мека\ табулација
+menutrans Te&xt\ Width\.\.\. &Ширина\ текста\.\.\.
+menutrans &File\ Format\.\.\. &Врста\ датотеке\.\.\.
+menutrans C&olor\ Scheme Бо&је
+menutrans &Keymap Прес&ликавање\ тастатуре
+menutrans Select\ Fo&nt\.\.\. Избор\ &фонта\.\.\.
+
+" Edit/Global Settings
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Нагласи\ &образце\ (да/не)<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Занемари\ \величину\ &слова\ (да/не)<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm! Провери\ пратећу\ &заграду\ (да/не)<Tab>:set\ sm!
+menutrans &Context\ lines Видљиви\ &редови
+menutrans &Virtual\ Edit Виртуелно\ &уређивање
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Режим\ у&носа\ (да/не)<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ сагласно\ (да/не)<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. Путања\ &претраге\.\.\.
+menutrans Ta&g\ Files\.\.\. &Датотеке\ ознака\.\.\.
+menutrans Toggle\ &Toolbar Линија\ са\ &алаткама\ (да/не)
+menutrans Toggle\ &Bottom\ Scrollbar Доња\ л&инија\ клизања\ (да/не)
+menutrans Toggle\ &Left\ Scrollbar &Лева\ линија\ клизања\ (да/не)
+menutrans Toggle\ &Right\ Scrollbar &Десна\ линија\ клизања\ (да/не)
+
+" Edit/Global Settings/Virtual Edit
+menutrans Never Никад
+menutrans Block\ Selection Избор\ блока
+menutrans Insert\ mode Режим\ уноса
+menutrans Block\ and\ Insert Блок\ и\ унос
+menutrans Always Увек
+
+" Edit/File Settings
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Редни\ &бројеви\ (да/не)<Tab>:set\ nu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! Режим\ &листе\ (да/не)<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Обавијање\ &редова\ (да/не)<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Преломи\ &на\ реч\ (да/не)<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et! Размаци\ уместо\ &табулације\ (да/не)<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai! Ауто-&увлачење\ (да/не)<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin! &Це-увлачење\ (да/не)<Tab>:set\ cin!
+
+" Edit/Keymap
+menutrans None Ниједан
+
+" Tools menu
+menutrans &Tools &Алатке
+menutrans &Jump\ to\ this\ tag<Tab>g^] Скочи\ на\ &ову\ ознаку<Tab>g^]
+menutrans Jump\ &back<Tab>^T Скочи\ &натраг<Tab>^T
+menutrans Build\ &Tags\ File Изгради\ &датотеку\ ознака
+menutrans &Folding &Подвијање
+menutrans Create\ &Fold<Tab>zf С&твори\ подвијутак<Tab>zf
+menutrans &Delete\ Fold<Tab>zd О&бриши\ подвијутак<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD Обриши\ све\ по&двијутке<Tab>zD
+menutrans Fold\ column\ &width Ширина\ &реда\ подвијутка
+menutrans &Diff &Упоређивање
+menutrans &Make<Tab>:make 'mak&е'<Tab>:make
+menutrans &List\ Errors<Tab>:cl Списак\ &грешака<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! Сп&исак\ порука<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn С&ледећа\ грешка<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp Пре&тходна\ грешка<Tab>:cp
+menutrans &Older\ List<Tab>:cold Стари\ списа&к<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew Но&ви\ списак<Tab>:cnew
+menutrans Error\ &Window Прозор\ са\ г&решкама
+menutrans &Set\ Compiler И&забери\ преводиоца
+menutrans &Convert\ to\ HEX<Tab>:%!xxd Претвори\ у\ &ХЕКС<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r Вр&ати\ у\ првобитан\ облик<Tab>:%!xxd\ -r
+
+" Tools/Folding
+menutrans &Enable/Disable\ folds<Tab>zi &Омогући/прекини\ подвијање<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv &Покажи\ ред\ са\ курсором<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Покажи\ &само\ ред\ са\ курсором<Tab>zMzx
+menutrans C&lose\ more\ folds<Tab>zm &Затвори\ више\ подвијутака<Tab>zm
+menutrans &Close\ all\ folds<Tab>zM Затвори\ с&ве\ подвијутке<Tab>zM
+menutrans O&pen\ more\ folds<Tab>zr Отвори\ виш&е\ подвијутака<Tab>zr
+menutrans &Open\ all\ folds<Tab>zR О&твори\ све\ подвијутке<Tab>zR
+menutrans Fold\ Met&hod &Начин\ подвијања
+
+" Tools/Folding/Fold Method
+menutrans M&anual &Ручно
+menutrans I&ndent &Увученост
+menutrans E&xpression &Израз
+menutrans S&yntax &Синтакса
+"menutrans &Diff
+menutrans Ma&rker &Ознака
+
+" Tools/Diff
+menutrans &Update &Ажурирај
+menutrans &Get\ Block &Прихвати\ измену
+menutrans &Put\ Block Пре&баци\ измену
+
+" Tools/Error Window
+menutrans &Update<Tab>:cwin &Ажурирај<Tab>:cwin
+menutrans &Open<Tab>:copen &Отвори<Tab>:copen
+menutrans &Close<Tab>:cclose &Затвори<Tab>:cclose
+
+" Bufers menu
+menutrans &Buffers &Бафери
+menutrans &Refresh\ menu &Ажурирај
+menutrans Delete &Обриши
+menutrans &Alternate А&лтернативни
+menutrans &Next &Следећи
+menutrans &Previous &Претходни
+menutrans [No\ File] [Нема\ датотеке]
+
+" Window menu
+menutrans &Window &Прозор
+menutrans &New<Tab>^Wn &Нови<Tab>^Wn
+menutrans S&plit<Tab>^Ws &Подели<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ Подели\ са\ &алтернативним<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv Подели\ &усправно<Tab>^Wv
+menutrans Split\ File\ E&xplorer Подели\ за\ преглед\ &датотека
+menutrans &Close<Tab>^Wc &Затвори<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo Затвори\ &остале<Tab>^Wo
+"menutrans Ne&xt<Tab>^Ww &Следећи<Tab>^Ww
+"menutrans P&revious<Tab>^WW П&ретходни<Tab>^WW
+menutrans Move\ &To Пре&мести
+menutrans Rotate\ &Up<Tab>^WR &Кружно\ нагоре<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr Кружно\ надол&е<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W= &Исте\ величине<Tab>^W=
+menutrans &Max\ Height<Tab>^W_ Максимална\ &висина<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_ Минима&лна\ висина<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| Максимална\ &ширина<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| Минимална\ ши&рина<Tab>^W1\|
+
+" Window/Move To
+menutrans &Top<Tab>^WK &Врх<Tab>^WK
+menutrans &Bottom<Tab>^WJ &Подножје<Tab>^WJ
+menutrans &Left\ side<Tab>^WH У&лево<Tab>^WH
+menutrans &Right\ side<Tab>^WL У&десно<Tab>^WL
+
+" The popup menu
+menutrans &Undo &Врати
+menutrans Cu&t &Исеци
+menutrans &Copy &Копирај
+menutrans &Paste &Убаци
+menutrans &Delete И&збриши
+menutrans Select\ Blockwise Бирај\ &правоугаоно
+menutrans Select\ &Word Изабери\ &реч
+menutrans Select\ &Line Изабери\ р&ед
+menutrans Select\ &Block Изабери\ &блок
+menutrans Select\ &All Изабери\ &све
+
+" The GUI toolbar
+if has("toolbar")
+ if exists("*Do_toolbar_tmenu")
+ delfun Do_toolbar_tmenu
+ endif
+ fun Do_toolbar_tmenu()
+ tmenu ToolBar.Open Учитај
+ tmenu ToolBar.Save Сачувај
+ tmenu ToolBar.SaveAll Сачувај све
+ tmenu ToolBar.Print Штампај
+ tmenu ToolBar.Undo Врати
+ tmenu ToolBar.Redo Поврати
+ tmenu ToolBar.Cut Исеци
+ tmenu ToolBar.Copy Копирај
+ tmenu ToolBar.Paste Убаци
+ tmenu ToolBar.Find Нађи
+ tmenu ToolBar.FindNext Нађи следећи
+ tmenu ToolBar.FindPrev Нађи претходни
+ tmenu ToolBar.Replace Замени
+ tmenu ToolBar.New Нови
+ tmenu ToolBar.WinSplit Подели прозор
+ tmenu ToolBar.WinMax Максимална висина
+ tmenu ToolBar.WinMin Минимална висина
+ tmenu ToolBar.WinVSplit Подели усправно
+ tmenu ToolBar.WinMaxWidth Максимална ширина
+ tmenu ToolBar.WinMinWidth Минимална ширина
+ tmenu ToolBar.WinClose Затвори прозор
+ tmenu ToolBar.LoadSesn Учитај сеансу
+ tmenu ToolBar.SaveSesn Сачувај сеансу
+ tmenu ToolBar.RunScript Изврши спис
+ tmenu ToolBar.Make 'make'
+ tmenu ToolBar.Shell Оперативно окружење
+ tmenu ToolBar.RunCtags Направи ознаке
+ tmenu ToolBar.TagJump Иди на ознаку
+ tmenu ToolBar.Help Помоћ
+ tmenu ToolBar.FindHelp Нађи објашњење
+ endfun
+endif
+
+" Syntax menu
+menutrans &Syntax &Синтакса
+menutrans &Show\ filetypes\ in\ menu Избор\ 'filetype'\ из\ &менија
+menutrans Set\ '&syntax'\ only Поде&си\ 'syntax'\ само
+menutrans Set\ '&filetype'\ too Подеси\ 'filetype'\ &такође
+menutrans &Off &Искључено
+menutrans &Manual &Ручно
+menutrans A&utomatic &Аутоматски
+menutrans on/off\ for\ &This\ file Да/не\ за\ ову\ &датотеку
+menutrans Co&lor\ test Провера\ &боја
+menutrans &Highlight\ test Провера\ исти&цања
+menutrans &Convert\ to\ HTML Претвори\ &у\ HTML
+
+" dialog texts
+let menutrans_help_dialog = "Унесите наредбу или реч чије појашњење тражите:\n\nДодајте i_ за наредбе уноса (нпр. i_CTRL-X)\nДодајте c_ за наредбе командног режима (нпр. с_<Del>)\nДодајте ' за имена опција (нпр. 'shiftwidth')"
+
+let g:menutrans_path_dialog = "Унесите пут претраге за датотеке\nРаздвојите зарезима имена директоријума."
+
+let g:menutrans_tags_dialog = "Унесите имена датотека са ознакама\nРаздвојите зарезима имена."
+
+let g:menutrans_textwidth_dialog = "Унесите нову ширину текста (0 спречава прелом)"
+
+let g:menutrans_fileformat_dialog = "Изаберите врсту датотеке"
+
+let menutrans_no_file = "[Нема датотеке]"
+
+" vim: tw=0 keymap=serbian
diff --git a/runtime/lang/menu_sr_yu.ascii.vim b/runtime/lang/menu_sr_yu.ascii.vim
index 14a90260..9d908874 100644
--- a/runtime/lang/menu_sr_yu.ascii.vim
+++ b/runtime/lang/menu_sr_yu.ascii.vim
@@ -1,258 +1,3 @@
-" Menu Translations: Serbian
-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
-" Last Change: Fri, 30 May 2003 12:15:30 -0400
+" Menu Translations: Serbian
-" Quit when menu translations have already been done.
-if exists("did_menu_trans")
- finish
-endif
-let did_menu_trans = 1
-
-" Help menu
-menutrans &Help Pomo&c
-menutrans &Overview<Tab><F1> &Pregled<Tab><F1>
-menutrans &User\ Manual &Uputstvo\ za\ korisnike
-menutrans &How-to\ links &Kako\ da\.\.\.
-menutrans &Find &Nadji
-menutrans &Credits &Zasluge
-menutrans Co&pying P&reuzimanje
-menutrans O&rphans &Sirocici
-menutrans &Version &Verzija
-menutrans &About &O\ programu
-
-" File menu
-menutrans &File &Datoteka
-menutrans &Open\.\.\.<Tab>:e &Otvori\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
-menutrans &New<Tab>:enew &Nova<Tab>:enew
-menutrans &Close<Tab>:close &Zatvori<Tab>:close
-menutrans &Save<Tab>:w &Sacuvaj<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav Sacuvaj\ &kao\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\.
-menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
-menutrans &Print Sta&mpaj
-menutrans Sa&ve-Exit<Tab>:wqa Sacuvaj\ i\ za&vrsi<Tab>:wqa
-menutrans E&xit<Tab>:qa K&raj<Tab>:qa
-
-" Edit menu
-menutrans &Edit &Uredjivanje
-menutrans &Undo<Tab>u &Vrati<Tab>u
-menutrans &Redo<Tab>^R &Povrati<Tab>^R
-menutrans Rep&eat<Tab>\. P&onovi<Tab>\.
-menutrans Cu&t<Tab>"+x Ise&ci<Tab>"+x
-menutrans &Copy<Tab>"+y &Kopiraj<Tab>"+y
-menutrans &Paste<Tab>"+gP &Ubaci<Tab>"+gP
-menutrans &Paste<Tab>"+P &Ubaci<Tab>"+gP
-menutrans Put\ &Before<Tab>[p Stavi\ pre&d<Tab>[p
-menutrans Put\ &After<Tab>]p Stavi\ &iza<Tab>]p
-menutrans &Delete<Tab>x Iz&brisi<Tab>x
-menutrans &Select\ all<Tab>ggVG Izaberi\ sv&e<Tab>ggVG
-menutrans &Find\.\.\. &Nadji\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\. Nadji\ i\ &zameni\.\.\.
-menutrans Settings\ &Window P&rozor\ podesavanja
-menutrans &Global\ Settings Op&sta\ podesavanja
-menutrans F&ile\ Settings Podesavanja\ za\ da&toteke
-menutrans &Shiftwidth &Pomeraj
-menutrans Soft\ &Tabstop &Meka\ tabulacija
-menutrans Te&xt\ Width\.\.\. &Sirina\ teksta\.\.\.
-menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\.
-menutrans C&olor\ Scheme Bo&je
-menutrans &Keymap Pres&likavanje\ tastature
-menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\.
-
-" Edit/Global Settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \velicinu\ &slova\ (da/ne)<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ pratecu\ &zagradu\ (da/ne)<Tab>:set\ sm!
-menutrans &Context\ lines Vidljivi\ &redovi
-menutrans &Virtual\ Edit Virtuelno\ &uredjivanje
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Rezim\ u&nosa\ (da/ne)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
-menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\.
-menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne)
-menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne)
-menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne)
-menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
-
-" Edit/Global Settings/Virtual Edit
-menutrans Never Nikad
-menutrans Block\ Selection Izbor\ bloka
-menutrans Insert\ mode Rezim\ unosa
-menutrans Block\ and\ Insert Blok\ i\ unos
-menutrans Always Uvek
-
-" Edit/File Settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list! Rezim\ &liste\ (da/ne)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Prelomi\ &na\ rec\ (da/ne)<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai! Auto-&uvlacenje\ (da/ne)<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin! &Ce-uvlacenje\ (da/ne)<Tab>:set\ cin!
-
-" Edit/Keymap
-menutrans None Nijedan
-
-" Tools menu
-menutrans &Tools &Alatke
-menutrans &Jump\ to\ this\ tag<Tab>g^] Skoci\ na\ &ovu\ oznaku<Tab>g^]
-menutrans Jump\ &back<Tab>^T Skoci\ &natrag<Tab>^T
-menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka
-menutrans &Folding &Podvijanje
-menutrans Create\ &Fold<Tab>zf S&tvori\ podvijutak<Tab>zf
-menutrans &Delete\ Fold<Tab>zd O&brisi\ podvijutak<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD Obrisi\ sve\ po&dvijutke<Tab>zD
-menutrans Fold\ column\ &width Sirina\ &reda\ podvijutka
-menutrans &Diff &Uporedjivanje
-menutrans &Make<Tab>:make 'mak&e'<Tab>:make
-menutrans &List\ Errors<Tab>:cl Spisak\ &gresaka<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl! Sp&isak\ poruka<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn S&ledeca\ greska<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp Pre&thodna\ greska<Tab>:cp
-menutrans &Older\ List<Tab>:cold Stari\ spisa&k<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew No&vi\ spisak<Tab>:cnew
-menutrans Error\ &Window Prozor\ sa\ g&reskama
-menutrans &Set\ Compiler I&zaberi\ prevodioca
-menutrans &Convert\ to\ HEX<Tab>:%!xxd Pretvori\ u\ &HEKS<Tab>:%!xxd
-menutrans Conve&rt\ back<Tab>:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
-
-" Tools/Folding
-menutrans &Enable/Disable\ folds<Tab>zi &Omoguci/prekini\ podvijanje<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv &Pokazi\ red\ sa\ kursorom<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Pokazi\ &samo\ red\ sa\ kursorom<Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm &Zatvori\ vise\ podvijutaka<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM Zatvori\ s&ve\ podvijutke<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr Otvori\ vis&e\ podvijutaka<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR O&tvori\ sve\ podvijutke<Tab>zR
-menutrans Fold\ Met&hod &Nacin\ podvijanja
-
-" Tools/Folding/Fold Method
-menutrans M&anual &Rucno
-menutrans I&ndent &Uvucenost
-menutrans E&xpression &Izraz
-menutrans S&yntax &Sintaksa
-"menutrans &Diff
-menutrans Ma&rker &Oznaka
-
-" Tools/Diff
-menutrans &Update &Azuriraj
-menutrans &Get\ Block &Prihvati\ izmenu
-menutrans &Put\ Block Pre&baci\ izmenu
-
-" Tools/Error Window
-menutrans &Update<Tab>:cwin &Azuriraj<Tab>:cwin
-menutrans &Open<Tab>:copen &Otvori<Tab>:copen
-menutrans &Close<Tab>:cclose &Zatvori<Tab>:cclose
-
-" Bufers menu
-menutrans &Buffers &Baferi
-menutrans &Refresh\ menu &Azuriraj
-menutrans Delete &Obrisi
-menutrans &Alternate A&lternativni
-menutrans &Next &Sledeci
-menutrans &Previous &Prethodni
-menutrans [No\ File] [Nema\ datoteke]
-
-" Window menu
-menutrans &Window &Prozor
-menutrans &New<Tab>^Wn &Novi<Tab>^Wn
-menutrans S&plit<Tab>^Ws &Podeli<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^ Podeli\ sa\ &alternativnim<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv Podeli\ &uspravno<Tab>^Wv
-menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka
-menutrans &Close<Tab>^Wc &Zatvori<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo Zatvori\ &ostale<Tab>^Wo
-"menutrans Ne&xt<Tab>^Ww &Sledeci<Tab>^Ww
-"menutrans P&revious<Tab>^WW P&rethodni<Tab>^WW
-menutrans Move\ &To Pre&mesti
-menutrans Rotate\ &Up<Tab>^WR &Kruzno\ nagore<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr Kruzno\ nadol&e<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W= &Iste\ velicine<Tab>^W=
-menutrans &Max\ Height<Tab>^W_ Maksimalna\ &visina<Tab>^W_
-menutrans M&in\ Height<Tab>^W1_ Minima&lna\ visina<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\| Maksimalna\ &sirina<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\| Minimalna\ si&rina<Tab>^W1\|
-
-" Window/Move To
-menutrans &Top<Tab>^WK &Vrh<Tab>^WK
-menutrans &Bottom<Tab>^WJ &Podnozje<Tab>^WJ
-menutrans &Left\ side<Tab>^WH U&levo<Tab>^WH
-menutrans &Right\ side<Tab>^WL U&desno<Tab>^WL
-
-" The popup menu
-menutrans &Undo &Vrati
-menutrans Cu&t &Iseci
-menutrans &Copy &Kopiraj
-menutrans &Paste &Ubaci
-menutrans &Delete I&zbrisi
-menutrans Select\ Blockwise Biraj\ &pravougaono
-menutrans Select\ &Word Izaberi\ &rec
-menutrans Select\ &Line Izaberi\ r&ed
-menutrans Select\ &Block Izaberi\ &blok
-menutrans Select\ &All Izaberi\ &sve
-
-" The GUI toolbar
-if has("toolbar")
- if exists("*Do_toolbar_tmenu")
- delfun Do_toolbar_tmenu
- endif
- fun Do_toolbar_tmenu()
- tmenu ToolBar.Open Ucitaj
- tmenu ToolBar.Save Sacuvaj
- tmenu ToolBar.SaveAll Sacuvaj sve
- tmenu ToolBar.Print Stampaj
- tmenu ToolBar.Undo Vrati
- tmenu ToolBar.Redo Povrati
- tmenu ToolBar.Cut Iseci
- tmenu ToolBar.Copy Kopiraj
- tmenu ToolBar.Paste Ubaci
- tmenu ToolBar.Find Nadji
- tmenu ToolBar.FindNext Nadji sledeci
- tmenu ToolBar.FindPrev Nadji prethodni
- tmenu ToolBar.Replace Zameni
- tmenu ToolBar.New Novi
- tmenu ToolBar.WinSplit Podeli prozor
- tmenu ToolBar.WinMax Maksimalna visina
- tmenu ToolBar.WinMin Minimalna visina
- tmenu ToolBar.WinVSplit Podeli uspravno
- tmenu ToolBar.WinMaxWidth Maksimalna sirina
- tmenu ToolBar.WinMinWidth Minimalna sirina
- tmenu ToolBar.WinClose Zatvori prozor
- tmenu ToolBar.LoadSesn Ucitaj seansu
- tmenu ToolBar.SaveSesn Sacuvaj seansu
- tmenu ToolBar.RunScript Izvrsi spis
- tmenu ToolBar.Make 'make'
- tmenu ToolBar.Shell Operativno okruzenje
- tmenu ToolBar.RunCtags Napravi oznake
- tmenu ToolBar.TagJump Idi na oznaku
- tmenu ToolBar.Help Pomoc
- tmenu ToolBar.FindHelp Nadji objasnjenje
- endfun
-endif
-
-" Syntax menu
-menutrans &Syntax &Sintaksa
-menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija
-menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo
-menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takodje
-menutrans &Off &Iskljuceno
-menutrans &Manual &Rucno
-menutrans A&utomatic &Automatski
-menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku
-menutrans Co&lor\ test Provera\ &boja
-menutrans &Highlight\ test Provera\ isti&canja
-menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML
-
-" dialog texts
-let menutrans_help_dialog = "Unesite naredbu ili rec cije pojasnjenje trazite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog rezima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
-
-let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
-
-let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
-
-let g:menutrans_textwidth_dialog = "Unesite novu sirinu teksta (0 sprecava prelom)"
-
-let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
-
-let menutrans_no_file = "[Nema datoteke]"
+source <sfile>:p:h/menu_sr_rs.ascii.vim
diff --git a/runtime/lang/menu_sr_yu.iso_8859-2.vim b/runtime/lang/menu_sr_yu.iso_8859-2.vim
index 992124c8..98b209e2 100644
--- a/runtime/lang/menu_sr_yu.iso_8859-2.vim
+++ b/runtime/lang/menu_sr_yu.iso_8859-2.vim
@@ -1,259 +1,3 @@
-" Menu Translations: Serbian
-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
-" Last Change: Fri, 30 May 2003 12:04:48 -0400
+" Menu Translations: Serbian
-" Quit when menu translations have already been done.
-if exists("did_menu_trans")
- finish
-endif
-let did_menu_trans = 1
-scriptencoding iso8859-2
-
-" Help menu
-menutrans &Help Pomo&
-menutrans &Overview<Tab><F1> &Pregled<Tab><F1>
-menutrans &User\ Manual &Uputstvo\ za\ korisnike
-menutrans &How-to\ links &Kako\ da\.\.\.
-menutrans &Find &Nai
-menutrans &Credits &Zasluge
-menutrans Co&pying P&reuzimanje
-menutrans O&rphans &Siroii
-menutrans &Version &Verzija
-menutrans &About &O\ programu
-
-" File menu
-menutrans &File &Datoteka
-menutrans &Open\.\.\.<Tab>:e &Otvori\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
-menutrans &New<Tab>:enew &Nova<Tab>:enew
-menutrans &Close<Tab>:close &Zatvori<Tab>:close
-menutrans &Save<Tab>:w &Sauvaj<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav Sauvaj\ &kao\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\.
-menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
-menutrans &Print ta&mpaj
-menutrans Sa&ve-Exit<Tab>:wqa Sauvaj\ i\ za&vri<Tab>:wqa
-menutrans E&xit<Tab>:qa K&raj<Tab>:qa
-
-" Edit menu
-menutrans &Edit &Ureivanje
-menutrans &Undo<Tab>u &Vrati<Tab>u
-menutrans &Redo<Tab>^R &Povrati<Tab>^R
-menutrans Rep&eat<Tab>\. P&onovi<Tab>\.
-menutrans Cu&t<Tab>"+x Ise&ci<Tab>"+x
-menutrans &Copy<Tab>"+y &Kopiraj<Tab>"+y
-menutrans &Paste<Tab>"+gP &Ubaci<Tab>"+gP
-menutrans &Paste<Tab>"+P &Ubaci<Tab>"+gP
-menutrans Put\ &Before<Tab>[p Stavi\ pre&d<Tab>[p
-menutrans Put\ &After<Tab>]p Stavi\ &iza<Tab>]p
-menutrans &Delete<Tab>x Iz&brii<Tab>x
-menutrans &Select\ all<Tab>ggVG Izaberi\ sv&e<Tab>ggVG
-menutrans &Find\.\.\. &Nai\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\. Nai\ i\ &zameni\.\.\.
-menutrans Settings\ &Window P&rozor\ podeavanja
-menutrans &Global\ Settings Op&ta\ podeavanja
-menutrans F&ile\ Settings Podeavanja\ za\ da&toteke
-menutrans &Shiftwidth &Pomeraj
-menutrans Soft\ &Tabstop &Meka\ tabulacija
-menutrans Te&xt\ Width\.\.\. &irina\ teksta\.\.\.
-menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\.
-menutrans C&olor\ Scheme Bo&je
-menutrans &Keymap Pres&likavanje\ tastature
-menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\.
-
-" Edit/Global Settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \veliinu\ &slova\ (da/ne)<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ prateu\ &zagradu\ (da/ne)<Tab>:set\ sm!
-menutrans &Context\ lines Vidljivi\ &redovi
-menutrans &Virtual\ Edit Virtuelno\ &ureivanje
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Reim\ u&nosa\ (da/ne)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
-menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\.
-menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne)
-menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne)
-menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne)
-menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
-
-" Edit/Global Settings/Virtual Edit
-menutrans Never Nikad
-menutrans Block\ Selection Izbor\ bloka
-menutrans Insert\ mode Reim\ unosa
-menutrans Block\ and\ Insert Blok\ i\ unos
-menutrans Always Uvek
-
-" Edit/File Settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list! Reim\ &liste\ (da/ne)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Prelomi\ &na\ re\ (da/ne)<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai! Auto-&uvlaenje\ (da/ne)<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin! &Ce-uvlaenje\ (da/ne)<Tab>:set\ cin!
-
-" Edit/Keymap
-menutrans None Nijedan
-
-" Tools menu
-menutrans &Tools &Alatke
-menutrans &Jump\ to\ this\ tag<Tab>g^] Skoi\ na\ &ovu\ oznaku<Tab>g^]
-menutrans Jump\ &back<Tab>^T Skoi\ &natrag<Tab>^T
-menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka
-menutrans &Folding &Podvijanje
-menutrans Create\ &Fold<Tab>zf S&tvori\ podvijutak<Tab>zf
-menutrans &Delete\ Fold<Tab>zd O&brii\ podvijutak<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD Obrii\ sve\ po&dvijutke<Tab>zD
-menutrans Fold\ column\ &width irina\ &reda\ podvijutka
-menutrans &Diff &Uporeivanje
-menutrans &Make<Tab>:make 'mak&e'<Tab>:make
-menutrans &List\ Errors<Tab>:cl Spisak\ &greaka<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl! Sp&isak\ poruka<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn S&ledea\ greka<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp Pre&thodna\ greka<Tab>:cp
-menutrans &Older\ List<Tab>:cold Stari\ spisa&k<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew No&vi\ spisak<Tab>:cnew
-menutrans Error\ &Window Prozor\ sa\ g&rekama
-menutrans &Set\ Compiler I&zaberi\ prevodioca
-menutrans &Convert\ to\ HEX<Tab>:%!xxd Pretvori\ u\ &HEKS<Tab>:%!xxd
-menutrans Conve&rt\ back<Tab>:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
-
-" Tools/Folding
-menutrans &Enable/Disable\ folds<Tab>zi &Omogui/prekini\ podvijanje<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv &Pokai\ red\ sa\ kursorom<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Pokai\ &samo\ red\ sa\ kursorom<Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm &Zatvori\ vie\ podvijutaka<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM Zatvori\ s&ve\ podvijutke<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr Otvori\ vi&e\ podvijutaka<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR O&tvori\ sve\ podvijutke<Tab>zR
-menutrans Fold\ Met&hod &Nain\ podvijanja
-
-" Tools/Folding/Fold Method
-menutrans M&anual &Runo
-menutrans I&ndent &Uvuenost
-menutrans E&xpression &Izraz
-menutrans S&yntax &Sintaksa
-"menutrans &Diff
-menutrans Ma&rker &Oznaka
-
-" Tools/Diff
-menutrans &Update &Auriraj
-menutrans &Get\ Block &Prihvati\ izmenu
-menutrans &Put\ Block Pre&baci\ izmenu
-
-" Tools/Error Window
-menutrans &Update<Tab>:cwin &Auriraj<Tab>:cwin
-menutrans &Open<Tab>:copen &Otvori<Tab>:copen
-menutrans &Close<Tab>:cclose &Zatvori<Tab>:cclose
-
-" Bufers menu
-menutrans &Buffers &Baferi
-menutrans &Refresh\ menu &Auriraj
-menutrans Delete &Obrii
-menutrans &Alternate A&lternativni
-menutrans &Next &Sledei
-menutrans &Previous &Prethodni
-menutrans [No\ File] [Nema\ datoteke]
-
-" Window menu
-menutrans &Window &Prozor
-menutrans &New<Tab>^Wn &Novi<Tab>^Wn
-menutrans S&plit<Tab>^Ws &Podeli<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^ Podeli\ sa\ &alternativnim<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv Podeli\ &uspravno<Tab>^Wv
-menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka
-menutrans &Close<Tab>^Wc &Zatvori<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo Zatvori\ &ostale<Tab>^Wo
-"menutrans Ne&xt<Tab>^Ww &Sledei<Tab>^Ww
-"menutrans P&revious<Tab>^WW P&rethodni<Tab>^WW
-menutrans Move\ &To Pre&mesti
-menutrans Rotate\ &Up<Tab>^WR &Kruno\ nagore<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr Kruno\ nadol&e<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W= &Iste\ veliine<Tab>^W=
-menutrans &Max\ Height<Tab>^W_ Maksimalna\ &visina<Tab>^W_
-menutrans M&in\ Height<Tab>^W1_ Minima&lna\ visina<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\| Maksimalna\ &irina<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\| Minimalna\ i&rina<Tab>^W1\|
-
-" Window/Move To
-menutrans &Top<Tab>^WK &Vrh<Tab>^WK
-menutrans &Bottom<Tab>^WJ &Podnoje<Tab>^WJ
-menutrans &Left\ side<Tab>^WH U&levo<Tab>^WH
-menutrans &Right\ side<Tab>^WL U&desno<Tab>^WL
-
-" The popup menu
-menutrans &Undo &Vrati
-menutrans Cu&t &Iseci
-menutrans &Copy &Kopiraj
-menutrans &Paste &Ubaci
-menutrans &Delete I&zbrii
-menutrans Select\ Blockwise Biraj\ &pravougaono
-menutrans Select\ &Word Izaberi\ &re
-menutrans Select\ &Line Izaberi\ r&ed
-menutrans Select\ &Block Izaberi\ &blok
-menutrans Select\ &All Izaberi\ &sve
-
-" The GUI toolbar
-if has("toolbar")
- if exists("*Do_toolbar_tmenu")
- delfun Do_toolbar_tmenu
- endif
- fun Do_toolbar_tmenu()
- tmenu ToolBar.Open Uitaj
- tmenu ToolBar.Save Sauvaj
- tmenu ToolBar.SaveAll Sauvaj sve
- tmenu ToolBar.Print tampaj
- tmenu ToolBar.Undo Vrati
- tmenu ToolBar.Redo Povrati
- tmenu ToolBar.Cut Iseci
- tmenu ToolBar.Copy Kopiraj
- tmenu ToolBar.Paste Ubaci
- tmenu ToolBar.Find Nai
- tmenu ToolBar.FindNext Nai sledei
- tmenu ToolBar.FindPrev Nai prethodni
- tmenu ToolBar.Replace Zameni
- tmenu ToolBar.New Novi
- tmenu ToolBar.WinSplit Podeli prozor
- tmenu ToolBar.WinMax Maksimalna visina
- tmenu ToolBar.WinMin Minimalna visina
- tmenu ToolBar.WinVSplit Podeli uspravno
- tmenu ToolBar.WinMaxWidth Maksimalna irina
- tmenu ToolBar.WinMinWidth Minimalna irina
- tmenu ToolBar.WinClose Zatvori prozor
- tmenu ToolBar.LoadSesn Uitaj seansu
- tmenu ToolBar.SaveSesn Sauvaj seansu
- tmenu ToolBar.RunScript Izvri spis
- tmenu ToolBar.Make 'make'
- tmenu ToolBar.Shell Operativno okruenje
- tmenu ToolBar.RunCtags Napravi oznake
- tmenu ToolBar.TagJump Idi na oznaku
- tmenu ToolBar.Help Pomo
- tmenu ToolBar.FindHelp Nai objanjenje
- endfun
-endif
-
-" Syntax menu
-menutrans &Syntax &Sintaksa
-menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija
-menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo
-menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takoe
-menutrans &Off &Iskljueno
-menutrans &Manual &Runo
-menutrans A&utomatic &Automatski
-menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku
-menutrans Co&lor\ test Provera\ &boja
-menutrans &Highlight\ test Provera\ isti&canja
-menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML
-
-" dialog texts
-let menutrans_help_dialog = "Unesite naredbu ili re ije pojanjenje traite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog reima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
-
-let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
-
-let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
-
-let g:menutrans_textwidth_dialog = "Unesite novu irinu teksta (0 spreava prelom)"
-
-let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
-
-let menutrans_no_file = "[Nema datoteke]"
+source <sfile>:p:h/menu_sr_rs.iso_8859-2.vim
diff --git a/runtime/lang/menu_sr_yu.iso_8859-5.vim b/runtime/lang/menu_sr_yu.iso_8859-5.vim
index e4d322dc..f0aef773 100644
--- a/runtime/lang/menu_sr_yu.iso_8859-5.vim
+++ b/runtime/lang/menu_sr_yu.iso_8859-5.vim
@@ -1,259 +1,3 @@
-" Menu Translations: Serbian
-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
-" Last Change: Fri, 30 May 2003 12:02:07 -0400
+" Menu Translations: Serbian
-" Quit when menu translations have already been done.
-if exists("did_menu_trans")
- finish
-endif
-let did_menu_trans = 1
-scriptencoding iso8859-5
-
-" Help menu
-menutrans &Help &
-menutrans &Overview<Tab><F1> &<Tab><F1>
-menutrans &User\ Manual &\ \
-menutrans &How-to\ links &\ \.\.\.
-menutrans &Find &
-menutrans &Credits &
-menutrans Co&pying &
-menutrans O&rphans &
-menutrans &Version &
-menutrans &About &\
-
-" File menu
-menutrans &File &
-menutrans &Open\.\.\.<Tab>:e &\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp &-\.\.\.<Tab>:sp
-menutrans &New<Tab>:enew &<Tab>:enew
-menutrans &Close<Tab>:close &<Tab>:close
-menutrans &Save<Tab>:w &<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav \ &\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\. \ \ &\ \.\.\.
-menutrans Split\ Patched\ &By\.\.\. &\ \ \ \.\.\.
-menutrans &Print &
-menutrans Sa&ve-Exit<Tab>:wqa \ \ &<Tab>:wqa
-menutrans E&xit<Tab>:qa &<Tab>:qa
-
-" Edit menu
-menutrans &Edit &
-menutrans &Undo<Tab>u &<Tab>u
-menutrans &Redo<Tab>^R &<Tab>^R
-menutrans Rep&eat<Tab>\. &<Tab>\.
-menutrans Cu&t<Tab>"+x &<Tab>"+x
-menutrans &Copy<Tab>"+y &<Tab>"+y
-menutrans &Paste<Tab>"+gP &<Tab>"+gP
-menutrans &Paste<Tab>"+P &<Tab>"+gP
-menutrans Put\ &Before<Tab>[p \ &<Tab>[p
-menutrans Put\ &After<Tab>]p \ &<Tab>]p
-menutrans &Delete<Tab>x &<Tab>x
-menutrans &Select\ all<Tab>ggVG \ &<Tab>ggVG
-menutrans &Find\.\.\. &\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\. \ \ &\.\.\.
-menutrans Settings\ &Window &\
-menutrans &Global\ Settings &\
-menutrans F&ile\ Settings \ \ &
-menutrans &Shiftwidth &
-menutrans Soft\ &Tabstop &\
-menutrans Te&xt\ Width\.\.\. &\ \.\.\.
-menutrans &File\ Format\.\.\. &\ \.\.\.
-menutrans C&olor\ Scheme &
-menutrans &Keymap &\
-menutrans Select\ Fo&nt\.\.\. \ &\.\.\.
-
-" Edit/Global Settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! \ &\ (/)<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! \ \\ &\ (/)<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm! \ \ &\ (/)<Tab>:set\ sm!
-menutrans &Context\ lines \ &
-menutrans &Virtual\ Edit \ &
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! \ &\ (/)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ \ (/)<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\. \ &\.\.\.
-menutrans Ta&g\ Files\.\.\. &\ \.\.\.
-menutrans Toggle\ &Toolbar \ \ &\ (/)
-menutrans Toggle\ &Bottom\ Scrollbar \ &\ \ (/)
-menutrans Toggle\ &Left\ Scrollbar &\ \ \ (/)
-menutrans Toggle\ &Right\ Scrollbar &\ \ \ (/)
-
-" Edit/Global Settings/Virtual Edit
-menutrans Never
-menutrans Block\ Selection \
-menutrans Insert\ mode \
-menutrans Block\ and\ Insert \ \
-menutrans Always
-
-" Edit/File Settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! \ &\ (/)<Tab>:set\ nu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list! \ &\ (/)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! \ &\ (/)<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! \ &\ \ (/)<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et! \ \ &\ (/)<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai! -&\ (/)<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin! &-\ (/)<Tab>:set\ cin!
-
-" Edit/Keymap
-menutrans None
-
-" Tools menu
-menutrans &Tools &
-menutrans &Jump\ to\ this\ tag<Tab>g^] \ \ &\ <Tab>g^]
-menutrans Jump\ &back<Tab>^T \ &<Tab>^T
-menutrans Build\ &Tags\ File \ &\
-menutrans &Folding &
-menutrans Create\ &Fold<Tab>zf &\ <Tab>zf
-menutrans &Delete\ Fold<Tab>zd &\ <Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD \ \ &<Tab>zD
-menutrans Fold\ column\ &width \ &\
-menutrans &Diff &
-menutrans &Make<Tab>:make 'mak&'<Tab>:make
-menutrans &List\ Errors<Tab>:cl \ &<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl! &\ <Tab>:cl!
-menutrans &Next\ Error<Tab>:cn &\ <Tab>:cn
-menutrans &Previous\ Error<Tab>:cp &\ <Tab>:cp
-menutrans &Older\ List<Tab>:cold \ &<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew &\ <Tab>:cnew
-menutrans Error\ &Window \ \ &
-menutrans &Set\ Compiler &\
-menutrans &Convert\ to\ HEX<Tab>:%!xxd \ \ &ŵ<Tab>:%!xxd
-menutrans Conve&rt\ back<Tab>:%!xxd\ -r &\ \ \ <Tab>:%!xxd\ -r
-
-" Tools/Folding
-menutrans &Enable/Disable\ folds<Tab>zi &/\ <Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv &\ \ \ <Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx \ &\ \ \ <Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm &\ \ <Tab>zm
-menutrans &Close\ all\ folds<Tab>zM \ &\ <Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr \ &\ <Tab>zr
-menutrans &Open\ all\ folds<Tab>zR &\ \ <Tab>zR
-menutrans Fold\ Met&hod &\
-
-" Tools/Folding/Fold Method
-menutrans M&anual &
-menutrans I&ndent &
-menutrans E&xpression &
-menutrans S&yntax &
-"menutrans &Diff
-menutrans Ma&rker &
-
-" Tools/Diff
-menutrans &Update &
-menutrans &Get\ Block &\
-menutrans &Put\ Block &\
-
-" Tools/Error Window
-menutrans &Update<Tab>:cwin &<Tab>:cwin
-menutrans &Open<Tab>:copen &<Tab>:copen
-menutrans &Close<Tab>:cclose &<Tab>:cclose
-
-" Bufers menu
-menutrans &Buffers &
-menutrans &Refresh\ menu &
-menutrans Delete &
-menutrans &Alternate &
-menutrans &Next &
-menutrans &Previous &
-menutrans [No\ File] [\ ]
-
-" Window menu
-menutrans &Window &
-menutrans &New<Tab>^Wn &<Tab>^Wn
-menutrans S&plit<Tab>^Ws &<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^ \ \ &<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv \ &<Tab>^Wv
-menutrans Split\ File\ E&xplorer \ \ \ &
-menutrans &Close<Tab>^Wc &<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo \ &<Tab>^Wo
-"menutrans Ne&xt<Tab>^Ww &<Tab>^Ww
-"menutrans P&revious<Tab>^WW &<Tab>^WW
-menutrans Move\ &To &
-menutrans Rotate\ &Up<Tab>^WR &\ <Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr \ &<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W= &\ <Tab>^W=
-menutrans &Max\ Height<Tab>^W_ \ &<Tab>^W_
-menutrans M&in\ Height<Tab>^W1_ &\ <Tab>^W1_
-menutrans Max\ &Width<Tab>^W\| \ &<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\| \ &<Tab>^W1\|
-
-" Window/Move To
-menutrans &Top<Tab>^WK &<Tab>^WK
-menutrans &Bottom<Tab>^WJ &<Tab>^WJ
-menutrans &Left\ side<Tab>^WH &<Tab>^WH
-menutrans &Right\ side<Tab>^WL &<Tab>^WL
-
-" The popup menu
-menutrans &Undo &
-menutrans Cu&t &
-menutrans &Copy &
-menutrans &Paste &
-menutrans &Delete &
-menutrans Select\ Blockwise \ &
-menutrans Select\ &Word \ &
-menutrans Select\ &Line \ &
-menutrans Select\ &Block \ &
-menutrans Select\ &All \ &
-
-" The GUI toolbar
-if has("toolbar")
- if exists("*Do_toolbar_tmenu")
- delfun Do_toolbar_tmenu
- endif
- fun Do_toolbar_tmenu()
- tmenu ToolBar.Open
- tmenu ToolBar.Save
- tmenu ToolBar.SaveAll
- tmenu ToolBar.Print
- tmenu ToolBar.Undo
- tmenu ToolBar.Redo
- tmenu ToolBar.Cut
- tmenu ToolBar.Copy
- tmenu ToolBar.Paste
- tmenu ToolBar.Find
- tmenu ToolBar.FindNext
- tmenu ToolBar.FindPrev
- tmenu ToolBar.Replace
- tmenu ToolBar.New
- tmenu ToolBar.WinSplit
- tmenu ToolBar.WinMax
- tmenu ToolBar.WinMin
- tmenu ToolBar.WinVSplit
- tmenu ToolBar.WinMaxWidth
- tmenu ToolBar.WinMinWidth
- tmenu ToolBar.WinClose
- tmenu ToolBar.LoadSesn
- tmenu ToolBar.SaveSesn
- tmenu ToolBar.RunScript
- tmenu ToolBar.Make 'make'
- tmenu ToolBar.Shell
- tmenu ToolBar.RunCtags
- tmenu ToolBar.TagJump
- tmenu ToolBar.Help
- tmenu ToolBar.FindHelp
- endfun
-endif
-
-" Syntax menu
-menutrans &Syntax &
-menutrans &Show\ filetypes\ in\ menu \ 'filetype'\ \ &
-menutrans Set\ '&syntax'\ only &\ 'syntax'\
-menutrans Set\ '&filetype'\ too \ 'filetype'\ &
-menutrans &Off &
-menutrans &Manual &
-menutrans A&utomatic &
-menutrans on/off\ for\ &This\ file /\ \ \ &
-menutrans Co&lor\ test \ &
-menutrans &Highlight\ test \ &
-menutrans &Convert\ to\ HTML \ &\ HTML
-
-" dialog texts
-let menutrans_help_dialog = " :\n\n i_ (. i_CTRL-X)\n c_ (. _<Del>)\n ' (. 'shiftwidth')"
-
-let g:menutrans_path_dialog = " \n ."
-
-let g:menutrans_tags_dialog = " \n ."
-
-let g:menutrans_textwidth_dialog = " (0 )"
-
-let g:menutrans_fileformat_dialog = " "
-
-let menutrans_no_file = "[ ]"
+source <sfile>:p:h/menu_sr_rs.iso_8859-5.vim
diff --git a/runtime/lang/menu_sr_yu.utf-8.vim b/runtime/lang/menu_sr_yu.utf-8.vim
index 73356638..4d278f99 100644
--- a/runtime/lang/menu_sr_yu.utf-8.vim
+++ b/runtime/lang/menu_sr_yu.utf-8.vim
@@ -1,261 +1,3 @@
-" Menu Translations: Serbian
-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
-" Last Change: Fri, 30 May 2003 10:17:39 Eastern Daylight Time
+" Menu Translations: Serbian
-" Quit when menu translations have already been done.
-if exists("did_menu_trans")
- finish
-endif
-let did_menu_trans = 1
-scriptencoding utf-8
-
-" Help menu
-menutrans &Help Помо&ћ
-menutrans &Overview<Tab><F1> &Преглед<Tab><F1>
-menutrans &User\ Manual &Упутство\ за\ кориснике
-menutrans &How-to\ links &Како\ да\.\.\.
-menutrans &Find &Нађи
-menutrans &Credits &Заслуге
-menutrans Co&pying П&реузимање
-menutrans O&rphans &Сирочићи
-menutrans &Version &Верзија
-menutrans &About &О\ програму
-
-" File menu
-menutrans &File &Датотека
-menutrans &Open\.\.\.<Tab>:e &Отвори\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp &Подели-отвори\.\.\.<Tab>:sp
-menutrans &New<Tab>:enew &Нова<Tab>:enew
-menutrans &Close<Tab>:close &Затвори<Tab>:close
-menutrans &Save<Tab>:w &Сачувај<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav Сачувај\ &као\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\. Подели\ и\ &упореди\ са\.\.\.
-menutrans Split\ Patched\ &By\.\.\. По&дели\ и\ преправи\ са\.\.\.
-menutrans &Print Шта&мпај
-menutrans Sa&ve-Exit<Tab>:wqa Сачувај\ и\ за&врши<Tab>:wqa
-menutrans E&xit<Tab>:qa К&рај<Tab>:qa
-
-" Edit menu
-menutrans &Edit &Уређивање
-menutrans &Undo<Tab>u &Врати<Tab>u
-menutrans &Redo<Tab>^R &Поврати<Tab>^R
-menutrans Rep&eat<Tab>\. П&онови<Tab>\.
-menutrans Cu&t<Tab>"+x Исе&ци<Tab>"+x
-menutrans &Copy<Tab>"+y &Копирај<Tab>"+y
-menutrans &Paste<Tab>"+gP &Убаци<Tab>"+gP
-menutrans &Paste<Tab>"+P &Убаци<Tab>"+gP
-menutrans Put\ &Before<Tab>[p Стави\ пре&д<Tab>[p
-menutrans Put\ &After<Tab>]p Стави\ &иза<Tab>]p
-menutrans &Delete<Tab>x Из&бриши<Tab>x
-menutrans &Select\ all<Tab>ggVG Изабери\ св&е<Tab>ggVG
-menutrans &Find\.\.\. &Нађи\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\. Нађи\ и\ &замени\.\.\.
-menutrans Settings\ &Window П&розор\ подешавања
-menutrans &Global\ Settings Оп&шта\ подешавања
-menutrans F&ile\ Settings Подешавања\ за\ да&тотеке
-menutrans &Shiftwidth &Померај
-menutrans Soft\ &Tabstop &Мека\ табулација
-menutrans Te&xt\ Width\.\.\. &Ширина\ текста\.\.\.
-menutrans &File\ Format\.\.\. &Врста\ датотеке\.\.\.
-menutrans C&olor\ Scheme Бо&је
-menutrans &Keymap Прес&ликавање\ тастатуре
-menutrans Select\ Fo&nt\.\.\. Избор\ &фонта\.\.\.
-
-" Edit/Global Settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Нагласи\ &образце\ (да/не)<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Занемари\ \величину\ &слова\ (да/не)<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm! Провери\ пратећу\ &заграду\ (да/не)<Tab>:set\ sm!
-menutrans &Context\ lines Видљиви\ &редови
-menutrans &Virtual\ Edit Виртуелно\ &уређивање
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Режим\ у&носа\ (да/не)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! '&Vi'\ сагласно\ (да/не)<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\. Путања\ &претраге\.\.\.
-menutrans Ta&g\ Files\.\.\. &Датотеке\ ознака\.\.\.
-menutrans Toggle\ &Toolbar Линија\ са\ &алаткама\ (да/не)
-menutrans Toggle\ &Bottom\ Scrollbar Доња\ л&инија\ клизања\ (да/не)
-menutrans Toggle\ &Left\ Scrollbar &Лева\ линија\ клизања\ (да/не)
-menutrans Toggle\ &Right\ Scrollbar &Десна\ линија\ клизања\ (да/не)
-
-" Edit/Global Settings/Virtual Edit
-menutrans Never Никад
-menutrans Block\ Selection Избор\ блока
-menutrans Insert\ mode Режим\ уноса
-menutrans Block\ and\ Insert Блок\ и\ унос
-menutrans Always Увек
-
-" Edit/File Settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Редни\ &бројеви\ (да/не)<Tab>:set\ nu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list! Режим\ &листе\ (да/не)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Обавијање\ &редова\ (да/не)<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Преломи\ &на\ реч\ (да/не)<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et! Размаци\ уместо\ &табулације\ (да/не)<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai! Ауто-&увлачење\ (да/не)<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin! &Це-увлачење\ (да/не)<Tab>:set\ cin!
-
-" Edit/Keymap
-menutrans None Ниједан
-
-" Tools menu
-menutrans &Tools &Алатке
-menutrans &Jump\ to\ this\ tag<Tab>g^] Скочи\ на\ &ову\ ознаку<Tab>g^]
-menutrans Jump\ &back<Tab>^T Скочи\ &натраг<Tab>^T
-menutrans Build\ &Tags\ File Изгради\ &датотеку\ ознака
-menutrans &Folding &Подвијање
-menutrans Create\ &Fold<Tab>zf С&твори\ подвијутак<Tab>zf
-menutrans &Delete\ Fold<Tab>zd О&бриши\ подвијутак<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD Обриши\ све\ по&двијутке<Tab>zD
-menutrans Fold\ column\ &width Ширина\ &реда\ подвијутка
-menutrans &Diff &Упоређивање
-menutrans &Make<Tab>:make 'mak&е'<Tab>:make
-menutrans &List\ Errors<Tab>:cl Списак\ &грешака<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl! Сп&исак\ порука<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn С&ледећа\ грешка<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp Пре&тходна\ грешка<Tab>:cp
-menutrans &Older\ List<Tab>:cold Стари\ списа&к<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew Но&ви\ списак<Tab>:cnew
-menutrans Error\ &Window Прозор\ са\ г&решкама
-menutrans &Set\ Compiler И&забери\ преводиоца
-menutrans &Convert\ to\ HEX<Tab>:%!xxd Претвори\ у\ &ХЕКС<Tab>:%!xxd
-menutrans Conve&rt\ back<Tab>:%!xxd\ -r Вр&ати\ у\ првобитан\ облик<Tab>:%!xxd\ -r
-
-" Tools/Folding
-menutrans &Enable/Disable\ folds<Tab>zi &Омогући/прекини\ подвијање<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv &Покажи\ ред\ са\ курсором<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Покажи\ &само\ ред\ са\ курсором<Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm &Затвори\ више\ подвијутака<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM Затвори\ с&ве\ подвијутке<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr Отвори\ виш&е\ подвијутака<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR О&твори\ све\ подвијутке<Tab>zR
-menutrans Fold\ Met&hod &Начин\ подвијања
-
-" Tools/Folding/Fold Method
-menutrans M&anual &Ручно
-menutrans I&ndent &Увученост
-menutrans E&xpression &Израз
-menutrans S&yntax &Синтакса
-"menutrans &Diff
-menutrans Ma&rker &Ознака
-
-" Tools/Diff
-menutrans &Update &Ажурирај
-menutrans &Get\ Block &Прихвати\ измену
-menutrans &Put\ Block Пре&баци\ измену
-
-" Tools/Error Window
-menutrans &Update<Tab>:cwin &Ажурирај<Tab>:cwin
-menutrans &Open<Tab>:copen &Отвори<Tab>:copen
-menutrans &Close<Tab>:cclose &Затвори<Tab>:cclose
-
-" Bufers menu
-menutrans &Buffers &Бафери
-menutrans &Refresh\ menu &Ажурирај
-menutrans Delete &Обриши
-menutrans &Alternate А&лтернативни
-menutrans &Next &Следећи
-menutrans &Previous &Претходни
-menutrans [No\ File] [Нема\ датотеке]
-
-" Window menu
-menutrans &Window &Прозор
-menutrans &New<Tab>^Wn &Нови<Tab>^Wn
-menutrans S&plit<Tab>^Ws &Подели<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^ Подели\ са\ &алтернативним<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv Подели\ &усправно<Tab>^Wv
-menutrans Split\ File\ E&xplorer Подели\ за\ преглед\ &датотека
-menutrans &Close<Tab>^Wc &Затвори<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo Затвори\ &остале<Tab>^Wo
-"menutrans Ne&xt<Tab>^Ww &Следећи<Tab>^Ww
-"menutrans P&revious<Tab>^WW П&ретходни<Tab>^WW
-menutrans Move\ &To Пре&мести
-menutrans Rotate\ &Up<Tab>^WR &Кружно\ нагоре<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr Кружно\ надол&е<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W= &Исте\ величине<Tab>^W=
-menutrans &Max\ Height<Tab>^W_ Максимална\ &висина<Tab>^W_
-menutrans M&in\ Height<Tab>^W1_ Минима&лна\ висина<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\| Максимална\ &ширина<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\| Минимална\ ши&рина<Tab>^W1\|
-
-" Window/Move To
-menutrans &Top<Tab>^WK &Врх<Tab>^WK
-menutrans &Bottom<Tab>^WJ &Подножје<Tab>^WJ
-menutrans &Left\ side<Tab>^WH У&лево<Tab>^WH
-menutrans &Right\ side<Tab>^WL У&десно<Tab>^WL
-
-" The popup menu
-menutrans &Undo &Врати
-menutrans Cu&t &Исеци
-menutrans &Copy &Копирај
-menutrans &Paste &Убаци
-menutrans &Delete И&збриши
-menutrans Select\ Blockwise Бирај\ &правоугаоно
-menutrans Select\ &Word Изабери\ &реч
-menutrans Select\ &Line Изабери\ р&ед
-menutrans Select\ &Block Изабери\ &блок
-menutrans Select\ &All Изабери\ &све
-
-" The GUI toolbar
-if has("toolbar")
- if exists("*Do_toolbar_tmenu")
- delfun Do_toolbar_tmenu
- endif
- fun Do_toolbar_tmenu()
- tmenu ToolBar.Open Учитај
- tmenu ToolBar.Save Сачувај
- tmenu ToolBar.SaveAll Сачувај све
- tmenu ToolBar.Print Штампај
- tmenu ToolBar.Undo Врати
- tmenu ToolBar.Redo Поврати
- tmenu ToolBar.Cut Исеци
- tmenu ToolBar.Copy Копирај
- tmenu ToolBar.Paste Убаци
- tmenu ToolBar.Find Нађи
- tmenu ToolBar.FindNext Нађи следећи
- tmenu ToolBar.FindPrev Нађи претходни
- tmenu ToolBar.Replace Замени
- tmenu ToolBar.New Нови
- tmenu ToolBar.WinSplit Подели прозор
- tmenu ToolBar.WinMax Максимална висина
- tmenu ToolBar.WinMin Минимална висина
- tmenu ToolBar.WinVSplit Подели усправно
- tmenu ToolBar.WinMaxWidth Максимална ширина
- tmenu ToolBar.WinMinWidth Минимална ширина
- tmenu ToolBar.WinClose Затвори прозор
- tmenu ToolBar.LoadSesn Учитај сеансу
- tmenu ToolBar.SaveSesn Сачувај сеансу
- tmenu ToolBar.RunScript Изврши спис
- tmenu ToolBar.Make 'make'
- tmenu ToolBar.Shell Оперативно окружење
- tmenu ToolBar.RunCtags Направи ознаке
- tmenu ToolBar.TagJump Иди на ознаку
- tmenu ToolBar.Help Помоћ
- tmenu ToolBar.FindHelp Нађи објашњење
- endfun
-endif
-
-" Syntax menu
-menutrans &Syntax &Синтакса
-menutrans &Show\ filetypes\ in\ menu Избор\ 'filetype'\ из\ &менија
-menutrans Set\ '&syntax'\ only Поде&си\ 'syntax'\ само
-menutrans Set\ '&filetype'\ too Подеси\ 'filetype'\ &такође
-menutrans &Off &Искључено
-menutrans &Manual &Ручно
-menutrans A&utomatic &Аутоматски
-menutrans on/off\ for\ &This\ file Да/не\ за\ ову\ &датотеку
-menutrans Co&lor\ test Провера\ &боја
-menutrans &Highlight\ test Провера\ исти&цања
-menutrans &Convert\ to\ HTML Претвори\ &у\ HTML
-
-" dialog texts
-let menutrans_help_dialog = "Унесите наредбу или реч чије појашњење тражите:\n\nДодајте i_ за наредбе уноса (нпр. i_CTRL-X)\nДодајте c_ за наредбе командног режима (нпр. с_<Del>)\nДодајте ' за имена опција (нпр. 'shiftwidth')"
-
-let g:menutrans_path_dialog = "Унесите пут претраге за датотеке\nРаздвојите зарезима имена директоријума."
-
-let g:menutrans_tags_dialog = "Унесите имена датотека са ознакама\nРаздвојите зарезима имена."
-
-let g:menutrans_textwidth_dialog = "Унесите нову ширину текста (0 спречава прелом)"
-
-let g:menutrans_fileformat_dialog = "Изаберите врсту датотеке"
-
-let menutrans_no_file = "[Нема датотеке]"
-
-" vim: tw=0 keymap=serbcyril-US
+source <sfile>:p:h/menu_sr_rs.utf-8.vim
diff --git a/runtime/plugin/netrwPlugin.vim b/runtime/plugin/netrwPlugin.vim
index 13798b03..f9689649 100644
--- a/runtime/plugin/netrwPlugin.vim
+++ b/runtime/plugin/netrwPlugin.vim
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_netrwPlugin")
finish
endif
-let g:loaded_netrwPlugin = "v136"
+let g:loaded_netrwPlugin = "v138"
if v:version < 702
echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
finish
@@ -35,6 +35,7 @@ set cpo&vim
augroup FileExplorer
au!
au BufEnter * silent! call s:LocalBrowse(expand("<amatch>"))
+ au VimEnter * silent! call s:VimEnter(expand("<amatch>"))
if has("win32") || has("win95") || has("win64") || has("win16")
au BufEnter .* silent! call s:LocalBrowse(expand("<amatch>"))
endif
@@ -109,6 +110,13 @@ fun! s:LocalBrowse(dirname)
endfun
" ---------------------------------------------------------------------
+" s:VimEnter: {{{2
+fun! s:VimEnter(dirname)
+ windo if a:dirname != expand("%")|call s:LocalBrowse(expand("%:p"))|endif
+ 1wincmd w
+endfun
+
+" ---------------------------------------------------------------------
" NetrwStatusLine: {{{1
fun! NetrwStatusLine()
" let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr("%")." Xline#".w:netrw_explore_line." line#".line(".")
diff --git a/runtime/plugin/vimballPlugin.vim b/runtime/plugin/vimballPlugin.vim
index 1192a6b8..c5acc7c4 100644
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -1,6 +1,6 @@
" vimballPlugin : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr.
-" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
+" Copyright: (c) 2004-2010 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.
@@ -16,7 +16,7 @@
if &cp || exists("g:loaded_vimballPlugin")
finish
endif
-let g:loaded_vimballPlugin = "v30"
+let g:loaded_vimballPlugin = "v31"
let s:keepcpo = &cpo
set cpo&vim
@@ -27,7 +27,7 @@ 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#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))|call vimball#Vimball(1)
-au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ff=unix|endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
+au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ma ff=unix noma |endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
" =====================================================================
" Restoration And Modelines: {{{1
diff --git a/runtime/plugin/zipPlugin.vim b/runtime/plugin/zipPlugin.vim
index b80ecc61..ff3825e9 100644
--- a/runtime/plugin/zipPlugin.vim
+++ b/runtime/plugin/zipPlugin.vim
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zipPlugin")
finish
endif
-let g:loaded_zipPlugin = "v22"
+let g:loaded_zipPlugin = "v23"
let s:keepcpo = &cpo
set cpo&vim
diff --git a/runtime/spell/bg/main.aap b/runtime/spell/bg/main.aap
index 2ccea86c..bb34b9a7 100644
--- a/runtime/spell/bg/main.aap
+++ b/runtime/spell/bg/main.aap
@@ -34,9 +34,9 @@ bg_BG.aff bg_BG.dic: {buildcheck=}
:fetch bg_BG.zip
:sys $UNZIP bg_BG.zip
:delete bg_BG.zip
- :sys $VIM bg_BG.aff -e -c "set ff=unix" -c update -c q
- :sys $VIM bg_BG.dic -e -c "set ff=unix" -c update -c q
- :sys $VIM README_bg_BG.txt -e -c "set ff=unix" -c update -c q
+ :sys $VIM bg_BG.aff -u NONE -e -c "set ff=unix" -c update -c q
+ :sys $VIM bg_BG.dic -u NONE -e -c "set ff=unix" -c update -c q
+ :sys $VIM README_bg_BG.txt -u NONE -e -c "set ff=unix" -c update -c q
@if not os.path.exists('bg_BG.orig.aff'):
:copy bg_BG.aff bg_BG.orig.aff
@if not os.path.exists('bg_BG.orig.dic'):
diff --git a/runtime/spell/br/br_FR.diff b/runtime/spell/br/br_FR.diff
new file mode 100644
index 00000000..e2ec7104
--- /dev/null
+++ b/runtime/spell/br/br_FR.diff
@@ -0,0 +1,13 @@
+*** br_FR.orig.aff 2010-04-14 18:44:36.365731271 +0200
+--- br_FR.aff 2010-04-14 18:43:31.069137439 +0200
+***************
+*** 9,14 ****
+--- 9,16 ----
+ SET UTF-8
+ TRY esiaùnñrtolcdugmphbyfvkwzESIAÙNÑRTOLCDUGMPHBYFVKWZ'
+
++ MIDWORD '
++
+ PFX m Y 1
+ PFX m 0 m' [aehiouy]
+
diff --git a/runtime/spell/br/main.aap b/runtime/spell/br/main.aap
new file mode 100644
index 00000000..1ca5935a
--- /dev/null
+++ b/runtime/spell/br/main.aap
@@ -0,0 +1,86 @@
+# Aap recipe for Breton Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = br_FR.aff br_FR.dic
+
+all: $SPELLDIR/br.latin1.spl $SPELLDIR/br.utf-8.spl ../README_br.txt
+
+$SPELLDIR/br.latin1.spl : $FILES
+ :sys $VIM -u NONE -e -c "set enc=latin1"
+ -c "mkspell! $SPELLDIR/br br_FR" -c q
+
+$SPELLDIR/br.utf-8.spl : $FILES
+ :sys $VIM -u NONE -e -c "set enc=UTF-8"
+ -c "mkspell! $SPELLDIR/br br_FR" -c q
+
+../README_br.txt : package-description.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://extensions.services.openoffice.org/e-files/2207/3
+:attr {fetch = $OODIR/%file%} dict-br_0.3.oxt
+
+# 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.
+br_FR.aff br_FR.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch dict-br_0.3.oxt
+ :sys $UNZIP dict-br_0.3.oxt
+ :delete dict-br_0.3.oxt
+ :copy dictionaries/br_FR.aff br_FR.aff
+ :copy dictionaries/br_FR.dic br_FR.dic
+ # The br_FR.aff file contains a BOM, remove it.
+ :sys $VIM -u NONE -e -c "set enc=utf-8"
+ -c "e br_FR.aff"
+ -c "set nobomb ff=unix"
+ -c "update" -c q
+ :sys $VIM -u NONE -e -c "set enc=utf-8"
+ -c "e br_FR.dic"
+ -c "set nobomb ff=unix"
+ -c "update" -c q
+ @if not os.path.exists('br_FR.orig.aff'):
+ :copy br_FR.aff br_FR.orig.aff
+ @if os.path.exists('br_FR.diff'):
+ :sys patch <br_FR.diff
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 dictionaries/br_FR.aff br_FR.aff >br_FR.diff
+ :sys {force} diff -a -C 1 dictionaries/br_FR.dic br_FR.dic >>br_FR.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch dict-br_0.3.oxt
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../dict-br_0.3.oxt
+ :sys {force} diff ../dictionaries/br_FR.aff br_FR.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy br_FR.aff ../br_FR.new.aff
+ :sys {force} diff ../dictionaries/br_FR.dic br_FR.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy br_FR.dic ../br_FR.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete dict-br_0.3.oxt
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/ca/main.aap b/runtime/spell/ca/main.aap
index 2182f291..8ba8c1a0 100644
--- a/runtime/spell/ca/main.aap
+++ b/runtime/spell/ca/main.aap
@@ -36,8 +36,8 @@ ca_ES.aff ca_ES.dic: {buildcheck=}
:fetch ca_ES.zip
:sys $UNZIP ca_ES.zip
:delete ca_ES.zip
- :sys $VIM ca_ES.aff -c "set ff=unix" -c "update" -c q
- :sys $VIM ca_ES.dic -c "set ff=unix" -c "update" -c q
+ :sys $VIM ca_ES.aff -u NONE -c "set ff=unix" -c "update" -c q
+ :sys $VIM ca_ES.dic -u NONE -c "set ff=unix" -c "update" -c q
@if not os.path.exists('ca_ES.orig.aff'):
:copy ca_ES.aff ca_ES.orig.aff
@if not os.path.exists('ca_ES.orig.dic'):
diff --git a/runtime/spell/cy/main.aap b/runtime/spell/cy/main.aap
index ce6cb840..1c1d20d9 100644
--- a/runtime/spell/cy/main.aap
+++ b/runtime/spell/cy/main.aap
@@ -36,9 +36,9 @@ cy_GB.aff cy_GB.dic: {buildcheck=}
:fetch cy_GB.zip
:sys $UNZIP cy_GB.zip
:delete cy_GB.zip
- :sys $VIM cy_GB.aff -e -c "set ff=unix" -c update -c q
- :sys $VIM cy_GB.dic -e -c "set ff=unix" -c update -c q
- :sys $VIM README_cy_GB.txt -e -c "set ff=unix" -c update -c q
+ :sys $VIM cy_GB.aff -u NONE -e -c "set ff=unix" -c update -c q
+ :sys $VIM cy_GB.dic -u NONE -e -c "set ff=unix" -c update -c q
+ :sys $VIM README_cy_GB.txt -u NONE -e -c "set ff=unix" -c update -c q
@if not os.path.exists('cy_GB.orig.aff'):
:copy cy_GB.aff cy_GB.orig.aff
@if not os.path.exists('cy_GB.orig.dic'):
diff --git a/runtime/spell/de/main.aap b/runtime/spell/de/main.aap
index b4cf3211..015b9576 100644
--- a/runtime/spell/de/main.aap
+++ b/runtime/spell/de/main.aap
@@ -133,7 +133,7 @@ de_AT.aff de_AT.dic: {buildcheck=}
:print >>de_AT.dic
# delete the first line, the word count
- :sys $VIM de_DE.dic -e -c 1delete -c wq
+ :sys $VIM -u NONE de_DE.dic -e -c 1delete -c wq
:cat de_DE.dic >>de_AT.dic
:delete de_DE.dic
:move de_DE.aff de_AT.aff
@@ -195,7 +195,7 @@ check:
:sys $UNZIP ../$ZIPFILE_AT
:print >>de_AT.dic
# delete the first line, the word count
- :sys ../$VIM de_DE.dic -e -c 1delete -c wq
+ :sys ../$VIM -u NONE de_DE.dic -e -c 1delete -c wq
:cat de_DE.dic >>de_AT.dic
:delete de_DE.dic
:move de_DE.aff de_AT.aff
diff --git a/runtime/spell/eo/main.aap b/runtime/spell/eo/main.aap
index 19b7555a..282b5b73 100644
--- a/runtime/spell/eo/main.aap
+++ b/runtime/spell/eo/main.aap
@@ -22,7 +22,7 @@ $SPELLDIR/eo.utf-8.spl : $FILES
../README_eo.txt : README_eo_l3.txt
:copy $source $target
# fix missing newline
- :sys $VIM $target -e -c "set ff=unix" -c wq
+ :sys $VIM -u NONE -e -c "set ff=unix" -c wq $target
#
# Fetching the files from OpenOffice.org.
diff --git a/runtime/spell/es/main.aap b/runtime/spell/es/main.aap
index 3a03bffe..2421837c 100644
--- a/runtime/spell/es/main.aap
+++ b/runtime/spell/es/main.aap
@@ -63,7 +63,7 @@ es_MX.aff es_MX.dic: {buildcheck=}
:print No copyright information for es_MX wordlist >! README_es_MX.txt
:sys $UNZIP $ZIPFILE_MX
:delete $ZIPFILE_MX
- :sys $VIM -e -c "set ff=unix | wq" es_MX.dic
+ :sys $VIM -u NONE -e -c "set ff=unix | wq" es_MX.dic
@if not os.path.exists('es_MX.orig.aff'):
:copy es_MX.aff es_MX.orig.aff
@if not os.path.exists('es_MX.orig.dic'):
diff --git a/runtime/spell/ku/main.aap b/runtime/spell/ku/main.aap
index 200fb2f1..987e6dbe 100644
--- a/runtime/spell/ku/main.aap
+++ b/runtime/spell/ku/main.aap
@@ -36,9 +36,9 @@ ku_TR.aff ku_TR.dic: {buildcheck=}
:fetch ku_TR.zip
:sys $UNZIP ku_TR.zip
:delete ku_TR.zip
- :sys $VIM ku_TR.aff -e -c "set ff=unix" -c update -c q
- :sys $VIM ku_TR.dic -e -c "set ff=unix" -c update -c q
- :sys $VIM README_ku_TR.txt -e -c "set ff=unix" -c update -c q
+ :sys $VIM ku_TR.aff -u NONE -e -c "set ff=unix" -c update -c q
+ :sys $VIM ku_TR.dic -u NONE -e -c "set ff=unix" -c update -c q
+ :sys $VIM README_ku_TR.txt -u NONE -e -c "set ff=unix" -c update -c q
@if not os.path.exists('ku_TR.orig.aff'):
:copy ku_TR.aff ku_TR.orig.aff
@if not os.path.exists('ku_TR.orig.dic'):
diff --git a/runtime/spell/lv/main.aap b/runtime/spell/lv/main.aap
index 10cacd82..460bd2b1 100644
--- a/runtime/spell/lv/main.aap
+++ b/runtime/spell/lv/main.aap
@@ -37,9 +37,9 @@ lv_LV.aff lv_LV.dic: {buildcheck=}
:sys $UNZIP lv_LV.zip
:delete lv_LV.zip
:delete changelog.txt gpl.txt lin-lv_LV_add.sh win-lv_LV_add.bat
- :sys $VIM lv_LV.aff -e -N -c "%s/\r//" -c update -c q
- :sys $VIM lv_LV.dic -e -N -c "%s/\r//" -c update -c q
- :sys $VIM README_lv_LV.txt -e -c "set ff=unix" -c update -c q
+ :sys $VIM lv_LV.aff -u NONE -e -N -c "%s/\r//" -c update -c q
+ :sys $VIM lv_LV.dic -u NONE -e -N -c "%s/\r//" -c update -c q
+ :sys $VIM README_lv_LV.txt -u NONE -e -c "set ff=unix" -c update -c q
@if not os.path.exists('lv_LV.orig.aff'):
:copy lv_LV.aff lv_LV.orig.aff
@if not os.path.exists('lv_LV.orig.dic'):
diff --git a/runtime/spell/main.aap b/runtime/spell/main.aap
index a0e1fe3a..269c710b 100644
--- a/runtime/spell/main.aap
+++ b/runtime/spell/main.aap
@@ -5,8 +5,8 @@
# aap diff create all the diff files
# "hu" is at the end, because it takes a very long time.
-LANG = af am bg ca cs cy da de el en eo es fr fo ga gd gl he hr id it ku
- la lt lv mg mi ms nb nl nn ny pl pt ro ru rw sk sl sv sw
+LANG = af am bg br ca cs cy da de el en eo es fr fo ga gd gl he hr id it
+ ku la lt lv mg mi ms nb nl nn ny pl pt ro ru rw sk sl sv sw
tet th tl tn uk yi zu hu
# TODO:
diff --git a/runtime/spell/ms/main.aap b/runtime/spell/ms/main.aap
index 5716b3b6..09bb3d15 100644
--- a/runtime/spell/ms/main.aap
+++ b/runtime/spell/ms/main.aap
@@ -36,8 +36,8 @@ ms_MY.aff ms_MY.dic: {buildcheck=}
:fetch ms_MY.zip
:sys $UNZIP ms_MY.zip
:delete ms_MY.zip
- :sys $VIM ms_MY.aff -e -c "set ff=unix" -c update -c q
- :sys $VIM ms_MY.dic -e -c "set ff=unix" -c update -c q
+ :sys $VIM ms_MY.aff -u NONE -e -c "set ff=unix" -c update -c q
+ :sys $VIM ms_MY.dic -u NONE -e -c "set ff=unix" -c update -c q
@if not os.path.exists('ms_MY.orig.aff'):
:copy ms_MY.aff ms_MY.orig.aff
@if not os.path.exists('ms_MY.orig.dic'):
diff --git a/runtime/spell/pt/main.aap b/runtime/spell/pt/main.aap
index b2ad65bf..3d08faf6 100644
--- a/runtime/spell/pt/main.aap
+++ b/runtime/spell/pt/main.aap
@@ -67,13 +67,13 @@ pt_BR.aff pt_BR.dic: {buildcheck=}
:fetch $BR_FNAME
:sys $UNZIP $BR_FNAME
:delete $BR_FNAME
- :sys $VIM README_pt_BR.TXT -e -c "set ff=unix" -c update -c q
+ :sys $VIM README_pt_BR.TXT -u NONE -e -c "set ff=unix" -c update -c q
:move README_pt_BR.TXT README_pt_BR.txt
# Vim seems to ignore the dots from the word list.
# Removing words with dot to avoid misbehaviour.
- :sys $VIM pt_BR.dic -e -c "set ff=unix" -c "/\./d" -c update -c q
- :sys $VIM pt_BR.aff -e -c "set ff=unix" -c update -c q
+ :sys $VIM pt_BR.dic -u NONE -e -c "set ff=unix" -c "/\./d" -c update -c q
+ :sys $VIM pt_BR.aff -u NONE -e -c "set ff=unix" -c update -c q
@if not os.path.exists('pt_BR.orig.aff'):
:copy pt_BR.aff pt_BR.orig.aff
@if not os.path.exists('pt_BR.orig.dic'):
diff --git a/runtime/syntax/asm.vim b/runtime/syntax/asm.vim
index 40756de9..6b8ce1ed 100644
--- a/runtime/syntax/asm.vim
+++ b/runtime/syntax/asm.vim
@@ -3,7 +3,9 @@
" Maintainer: Erik Wognsen <erik.wognsen@gmail.com>
" Previous maintainer:
" Kevin Dahlhausen <kdahlhaus@yahoo.com>
-" Last Change: 2010 Jan 9
+" Last Change: 2010 Apr 18
+
+" Thanks to Ori Avtalion for feedback on the comment markers!
" For version 5.x: Clear all syntax items
" For version 6.0 and later: Quit when a syntax file was already loaded
@@ -45,8 +47,16 @@ syn match octNumber "0[0-7][0-7]\+"
syn match hexNumber "0[xX][0-9a-fA-F]\+"
syn match binNumber "0[bB][0-1]*"
-syn match asmComment "#.*"
-syn region asmComment start="/\*" end="\*/"
+syn keyword asmTodo contained TODO
+
+" GAS supports various comment markers as described here:
+" http://sourceware.org/binutils/docs-2.19/as/Comments.html
+" I have commented out the ARM comment marker "@" by default as I think more
+" people are using "@" with the .type directive. See
+" http://sourceware.org/binutils/docs-2.19/as/Type.html
+syn region asmComment start="/\*" end="\*/" contains=asmTodo
+syn match asmComment "[#;!|].*" contains=asmTodo
+" syn match asmComment "@.*" contains=asmTodo
syn match asmInclude "\.include"
syn match asmCond "\.if"
@@ -75,6 +85,7 @@ if version >= 508 || !exists("did_asm_syntax_inits")
HiLink asmSection Special
HiLink asmLabel Label
HiLink asmComment Comment
+ HiLink asmTodo Todo
HiLink asmDirective Statement
HiLink asmInclude Include
diff --git a/runtime/syntax/cabal.vim b/runtime/syntax/cabal.vim
new file mode 100644
index 00000000..2a92aa83
--- /dev/null
+++ b/runtime/syntax/cabal.vim
@@ -0,0 +1,131 @@
+" Vim syntax file
+" Language: Haskell Cabal Build file
+" Maintainer: Vincent Berthoux <twinside@gmail.com>
+" File Types: .cabal
+" v1.3: Updated to the last version of cabal
+" Added more highlighting for cabal function, true/false
+" and version number. Also added missing comment highlighting.
+" Cabal known compiler are highlighted too.
+"
+" V1.2: Added cpp-options which was missing. Feature implemented
+" by GHC, found with a GHC warning, but undocumented.
+" Whatever...
+"
+" v1.1: Fixed operator problems and added ftdetect file
+" (thanks to Sebastian Schwarz)
+"
+" v1.0: Cabal syntax in vimball format
+" (thanks to Magnus Therning)
+
+" 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 keyword cabalCategory Library library Executable executable Flag flag
+syn keyword cabalCategory source-repository Source-Repository
+
+syn keyword cabalConditional if else
+syn match cabalOperator "&&\|||\|!\|==\|>=\|<="
+syn keyword cabalFunction os arche impl flag
+syn match cabalComment /--.*$/
+syn match cabalVersion "\d\+\(.\(\d\)\+\)\+"
+
+syn match cabalTruth "\ctrue"
+syn match cabalTruth "\cfalse"
+
+syn match cabalCompiler "\cghc"
+syn match cabalCompiler "\cnhc"
+syn match cabalCompiler "\cyhc"
+syn match cabalCompiler "\chugs"
+syn match cabalCompiler "\chbc"
+syn match cabalCompiler "\chelium"
+syn match cabalCompiler "\cjhc"
+syn match cabalCompiler "\clhc"
+
+
+syn match cabalStatement "\cauthor"
+syn match cabalStatement "\cbranch"
+syn match cabalStatement "\cbug-reports"
+syn match cabalStatement "\cbuild-depends"
+syn match cabalStatement "\cbuild-tools"
+syn match cabalStatement "\cbuild-type"
+syn match cabalStatement "\cbuildable"
+syn match cabalStatement "\cc-sources"
+syn match cabalStatement "\ccabal-version"
+syn match cabalStatement "\ccategory"
+syn match cabalStatement "\ccc-options"
+syn match cabalStatement "\ccopyright"
+syn match cabalStatement "\ccpp-options"
+syn match cabalStatement "\cdata-dir"
+syn match cabalStatement "\cdata-files"
+syn match cabalStatement "\cdefault"
+syn match cabalStatement "\cdescription"
+syn match cabalStatement "\cexecutable"
+syn match cabalStatement "\cexposed-modules"
+syn match cabalStatement "\cexposed"
+syn match cabalStatement "\cextensions"
+syn match cabalStatement "\cextra-lib-dirs"
+syn match cabalStatement "\cextra-libraries"
+syn match cabalStatement "\cextra-source-files"
+syn match cabalStatement "\cextra-tmp-files"
+syn match cabalStatement "\cfor example"
+syn match cabalStatement "\cframeworks"
+syn match cabalStatement "\cghc-options"
+syn match cabalStatement "\cghc-prof-options"
+syn match cabalStatement "\cghc-shared-options"
+syn match cabalStatement "\chomepage"
+syn match cabalStatement "\chs-source-dirs"
+syn match cabalStatement "\chugs-options"
+syn match cabalStatement "\cinclude-dirs"
+syn match cabalStatement "\cincludes"
+syn match cabalStatement "\cinstall-includes"
+syn match cabalStatement "\cld-options"
+syn match cabalStatement "\clicense-file"
+syn match cabalStatement "\clicense"
+syn match cabalStatement "\clocation"
+syn match cabalStatement "\cmain-is"
+syn match cabalStatement "\cmaintainer"
+syn match cabalStatement "\cmodule"
+syn match cabalStatement "\cname"
+syn match cabalStatement "\cnhc98-options"
+syn match cabalStatement "\cother-modules"
+syn match cabalStatement "\cpackage-url"
+syn match cabalStatement "\cpkgconfig-depends"
+syn match cabalStatement "\cstability"
+syn match cabalStatement "\csubdir"
+syn match cabalStatement "\csynopsis"
+syn match cabalStatement "\ctag"
+syn match cabalStatement "\ctested-with"
+syn match cabalStatement "\ctype"
+syn match cabalStatement "\cversion"
+
+" 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_cabal_syn_inits")
+ if version < 508
+ let did_cabal_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink cabalVersion Number
+ HiLink cabalTruth Boolean
+ HiLink cabalComment Comment
+ HiLink cabalStatement Statement
+ HiLink cabalCategory Type
+ HiLink cabalFunction Function
+ HiLink cabalConditional Conditional
+ HiLink cabalOperator Operator
+ HiLink cabalCompiler Constant
+ delcommand HiLink
+endif
+
+let b:current_syntax = "cabal"
+
+" vim: ts=8
diff --git a/runtime/syntax/chaiscript.vim b/runtime/syntax/chaiscript.vim
new file mode 100644
index 00000000..5a64bdb5
--- /dev/null
+++ b/runtime/syntax/chaiscript.vim
@@ -0,0 +1,94 @@
+" Vim syntax file
+" Language: ChaiScript
+" Maintainer: Jason Turner <lefticus 'at' gmail com>
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+end
+
+syn case match
+
+" syncing method
+syn sync fromstart
+
+" Strings
+syn region chaiscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=chaiscriptSpecial,chaiscriptEval,@Spell
+
+" Escape characters
+syn match chaiscriptSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
+
+" String evals
+syn region chaiscriptEval contained start="${" end="}"
+
+" integer number
+syn match chaiscriptNumber "\<\d\+\>"
+
+" floating point number, with dot, optional exponent
+syn match chaiscriptFloat "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>"
+
+" floating point number, starting with a dot, optional exponent
+syn match chaiscriptFloat "\.\d\+\%(e[-+]\=\d\+\)\=\>"
+
+" floating point number, without dot, with exponent
+syn match chaiscriptFloat "\<\d\+e[-+]\=\d\+\>"
+
+" Hex strings
+syn match chaiscriptNumber "\<0x\x\+\>"
+
+" Binary strings
+syn match chaiscriptNumber "\<0b[01]\+\>"
+
+" Various language features
+syn keyword chaiscriptCond if else
+syn keyword chaiscriptRepeat while for do
+syn keyword chaiscriptStatement break continue return
+syn keyword chaiscriptExceptions try catch throw
+
+"Keyword
+syn keyword chaiscriptKeyword def true false attr
+
+"Built in types
+syn keyword chaiscriptType fun var
+
+"Built in funcs, keep it simple
+syn keyword chaiscriptFunc eval throw
+
+"Let's treat all backtick operator function lookups as built in too
+syn region chaiscriptFunc matchgroup=chaiscriptFunc start="`" end="`"
+
+" Account for the "[1..10]" syntax, treating it as an operator
+" Intentionally leaving out all of the normal, well known operators
+syn match chaiscriptOperator "\.\."
+
+" Guard seperator as an operator
+syn match chaiscriptOperator ":"
+
+" Comments
+syn match chaiscriptComment "//.*$" contains=@Spell
+syn region chaiscriptComment matchgroup=chaiscriptComment start="/\*" end="\*/" contains=@Spell
+
+
+
+hi def link chaiscriptExceptions Exception
+hi def link chaiscriptKeyword Keyword
+hi def link chaiscriptStatement Statement
+hi def link chaiscriptRepeat Repeat
+hi def link chaiscriptString String
+hi def link chaiscriptNumber Number
+hi def link chaiscriptFloat Float
+hi def link chaiscriptOperator Operator
+hi def link chaiscriptConstant Constant
+hi def link chaiscriptCond Conditional
+hi def link chaiscriptFunction Function
+hi def link chaiscriptComment Comment
+hi def link chaiscriptTodo Todo
+hi def link chaiscriptError Error
+hi def link chaiscriptSpecial SpecialChar
+hi def link chaiscriptFunc Identifier
+hi def link chaiscriptType Type
+hi def link chaiscriptEval Special
+
+let b:current_syntax = "chaiscript"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
index 040d48d0..e808c8f6 100644
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,8 +3,8 @@
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2009 Jun 05
-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debchangelog.vim;hb=debian
+" Last Change: 2010 May 06
+" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debchangelog.vim
" Standard syntax initialization
if version < 600
@@ -19,7 +19,7 @@ syn case ignore
" Define some common expressions we can use later on
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
syn match debchangelogUrgency contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
-syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|intrepid|jaunty|karmic)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|jaunty|karmic|lucid|maverick)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
syn match debchangelogVersion contained "(.\{-})"
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
diff --git a/runtime/syntax/debcontrol.vim b/runtime/syntax/debcontrol.vim
index e886f014..73407328 100644
--- a/runtime/syntax/debcontrol.vim
+++ b/runtime/syntax/debcontrol.vim
@@ -1,14 +1,10 @@
" Vim syntax file
-" Language: Debian control files
+" Language: Debian control files
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2009 July 14
-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
-
-" Comments are very welcome - but please make sure that you are commenting on
-" the latest version of this file.
-" SPAM is _NOT_ welcome - be ready to be reported!
+" Last Change: 2009 Aug 17
+" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debcontrol.vim
" Standard syntax initialization
if version < 600
@@ -28,7 +24,7 @@ syn match debControlComma ", *"
syn match debControlSpace " "
" Define some common expressions we can use later on
-syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|amd64\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
+syn match debcontrolArchitecture contained "\%(all\|any\|alpha\|amd64\|arm\%(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|lpia\|m32r\|m68k\|mips\%(el\)\=\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc\%(64\)\=\|hurd-i386\|kfreebsd-\%(i386\|amd64\|gnu\)\|knetbsd-i386\|kopensolaris-i386\|netbsd-\%(alpha\|i386\)\)"
syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
@@ -53,7 +49,7 @@ syn match debcontrolComment "^#.*$"
syn case ignore
" List of all legal keys
-syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Essential\|Architecture\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
+syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Essential\|Architecture\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
" Fields for which we do strict syntax checking
syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
@@ -70,7 +66,7 @@ syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" co
" Catch-all for the other legal fields
syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
-syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
+syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
" Associate our matches and regions with pretty colours
if version >= 508 || !exists("did_debcontrol_syn_inits")
diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim
index 52ce6d73..bd539819 100644
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,8 +2,8 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2009 Apr 17
-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debsources.vim;hb=debian
+" Last Change: 2010 May 06
+" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debsources.vim
" Standard syntax initialization
if version < 600
@@ -23,7 +23,7 @@ syn match debsourcesComment /#.*/ contains=@Spell
" Match uri's
syn match debsourcesUri +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++
-syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|hardy\|intrepid\|jaunty\|karmic\)\([-[:alnum:]_./]*\)+
+syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|dapper\|hardy\|jaunty\|karmic\|lucid\|maverick\)\([-[:alnum:]_./]*\)+
" Associate our matches and regions with pretty colours
hi def link debsourcesLine Error
@@ -33,5 +33,3 @@ hi def link debsourcesComment Comment
hi def link debsourcesUri Constant
let b:current_syntax = "debsources"
-
-" vim: ts=8
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 18e4532d..d11afa8b 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -1,8 +1,7 @@
-" Vim syntax file
-" Language: Java
-" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" Vim syntax file " Language: Java
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
" URL: http://www.fleiner.com/vim/syntax/java.vim
-" Last Change: 2009 Mar 14
+" Last Change: 2010 March 23
" Please check :help java.vim for comments on some of the options available.
@@ -59,8 +58,8 @@ syn match javaTypedef "\.\s*\<class\>"ms=s+1
syn keyword javaClassDecl enum
syn match javaClassDecl "^class\>"
syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
-syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>"
-syn match javaClassDecl "@interface\>"
+syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>"
+syn match javaClassDecl "@interface\>"
syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
syn match javaUserLabelRef "\k\+" contained
syn match javaVarArg "\.\.\."
@@ -69,7 +68,7 @@ syn keyword javaScopeDecl public protected private abstract
if exists("java_highlight_java_lang_ids")
let java_highlight_all=1
endif
-if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
+if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
" java.lang.*
syn match javaLangClass "\<System\>"
syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
@@ -110,15 +109,15 @@ endif
if exists("java_space_errors")
if !exists("java_no_trail_space_error")
- syn match javaSpaceError "\s\+$"
+ syn match javaSpaceError "\s\+$"
endif
if !exists("java_no_tab_space_error")
- syn match javaSpaceError " \+\t"me=e-1
+ syn match javaSpaceError " \+\t"me=e-1
endif
endif
-syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
-syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
+syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
+syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
syn keyword javaLabel default
if !exists("java_allow_cpp_keywords")
@@ -135,7 +134,7 @@ syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelReg
syn keyword javaTodo contained TODO FIXME XXX
if exists("java_comment_strings")
syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
- syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
+ syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
syn match javaCommentCharacter contained "'[^\\]'"
@@ -143,9 +142,9 @@ if exists("java_comment_strings")
syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
endif
syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
-syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
-syn match javaCommentStar contained "^\s*\*$"
-syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
+syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
+syn match javaCommentStar contained "^\s*\*$"
+syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
JavaHiLink javaCommentString javaString
JavaHiLink javaComment2String javaString
JavaHiLink javaCommentCharacter javaCharacter
@@ -162,14 +161,14 @@ if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
" here.
syntax spell default
- syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
- syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
+ syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
+ syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
- syn region javaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
- syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
- syn match javaDocParam contained "\s\S\+"
- syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
- syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
+ syn region javaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
+ syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
+ syn match javaDocParam contained "\s\S\+"
+ syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
+ syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend
syntax case match
endif
@@ -178,9 +177,9 @@ endif
syn match javaComment "/\*\*/"
" Strings and constants
-syn match javaSpecialError contained "\\."
+syn match javaSpecialError contained "\\."
syn match javaSpecialCharError contained "[^']"
-syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\+\x\{4\}\)"
+syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
" next line disabled, it can cause a crash for a long line
"syn match javaStringError +"\([^"\\]\|\\.\)*$+
@@ -193,7 +192,7 @@ syn match javaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
" unicode characters
-syn match javaSpecial "\\u\+\d\{4\}"
+syn match javaSpecial "\\u\d\{4\}"
syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
@@ -206,8 +205,8 @@ if exists("java_highlight_functions")
else
" This line catches method declarations at any indentation>0, but it assumes
" two things:
- " 1. class names are always capitalized (ie: Button)
- " 2. method names are never capitalized (except constructors, of course)
+ " 1. class names are always capitalized (ie: Button)
+ " 2. method names are never capitalized (except constructors, of course)
syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^>]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*([^0-9]+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses
endif
syn match javaBraces "[{}]"
@@ -219,7 +218,7 @@ if exists("java_highlight_debug")
" Strings and constants
syn match javaDebugSpecial contained "\\\d\d\d\|\\."
syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
- syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
+ syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
syn match javaDebugCharacter contained "'[^\\]'"
syn match javaDebugSpecialCharacter contained "'\\.'"
syn match javaDebugSpecialCharacter contained "'\\''"
@@ -265,17 +264,17 @@ if exists("java_mark_braces_in_parens_as_errors")
endif
" catch errors caused by wrong parenthesis
-syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
+syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
-syn match javaParenError ")"
+syn match javaParenError ")"
" catch errors caused by wrong square parenthesis
-syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
+syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
-syn match javaParenError "\]"
+syn match javaParenError "\]"
-JavaHiLink javaParenError javaError
+JavaHiLink javaParenError javaError
if !exists("java_minlines")
let java_minlines = 10
@@ -288,7 +287,7 @@ if version >= 508 || !exists("did_java_syn_inits")
let did_java_syn_inits = 1
endif
JavaHiLink javaFuncDef Function
- JavaHiLink javaVarArg Function
+ JavaHiLink javaVarArg Function
JavaHiLink javaBraces Function
JavaHiLink javaBranch Conditional
JavaHiLink javaUserLabelRef javaUserLabel
@@ -320,7 +319,7 @@ if version >= 508 || !exists("did_java_syn_inits")
JavaHiLink javaConstant Constant
JavaHiLink javaTypedef Typedef
JavaHiLink javaTodo Todo
- JavaHiLink javaAnnotation PreProc
+ JavaHiLink javaAnnotation PreProc
JavaHiLink javaCommentTitle SpecialComment
JavaHiLink javaDocTags Special
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index ba8975bc..b293eb80 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 Jun 19
+" Last Change: 2010 Mar 25
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -28,16 +28,14 @@ if version < 600 && exists("javaScript_fold")
unlet javaScript_fold
endif
-syn case ignore
-
syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
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
+syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc
+syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc
syn match javaScriptSpecialCharacter "'\\.'"
syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
@@ -51,7 +49,7 @@ syn keyword javaScriptType Array Boolean Date Function Number Object String Reg
syn keyword javaScriptStatement return with
syn keyword javaScriptBoolean true false
syn keyword javaScriptNull null undefined
-syn keyword javaScriptIdentifier arguments this var
+syn keyword javaScriptIdentifier arguments this var let
syn keyword javaScriptLabel case default
syn keyword javaScriptException try catch finally throw
syn keyword javaScriptMessage alert confirm prompt status
@@ -61,7 +59,7 @@ syn keyword javaScriptDeprecated escape unescape
syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile
if exists("javaScript_fold")
- syn match javaScriptFunction "\<function\>"
+ syn match javaScriptFunction "\<function\>"
syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
@@ -70,7 +68,7 @@ if exists("javaScript_fold")
setlocal foldmethod=syntax
setlocal foldtext=getline(v:foldstart)
else
- syn keyword javaScriptFunction function
+ syn keyword javaScriptFunction function
syn match javaScriptBraces "[{}\[\]]"
syn match javaScriptParens "[()]"
endif
diff --git a/runtime/syntax/lhaskell.vim b/runtime/syntax/lhaskell.vim
index 8cc1ded0..077549a0 100644
--- a/runtime/syntax/lhaskell.vim
+++ b/runtime/syntax/lhaskell.vim
@@ -4,7 +4,7 @@
" \begin{code} \end{code} blocks
" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
" Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change: 2009 May 08
+" Last Change: 2010 Apr 11
" Version: 1.04
"
" Thanks to Ian Lynagh for thoughtful comments on initial versions and
@@ -107,13 +107,12 @@ else
endif
syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
-syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode containedin=@lhsTeXContainer
+syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
syntax match lhsBirdTrack "^>" contained
syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}"
-syntax cluster beginCode contains=beginCodeBegin,beginCodeCode
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
diff --git a/runtime/syntax/maple.vim b/runtime/syntax/maple.vim
index 37abf16f..b6e4ae92 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: Sep 11, 2006
-" Version: 9
+" Last Change: Jan 05, 2010
+" Version: 10
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Package Function Selection: {{{1
@@ -164,9 +164,11 @@ syn match mvError "\.\.\."
" Split into booleans, conditionals, operators, repeat-logic, etc
syn keyword mvBool true false FAIL
syn keyword mvCond elif else fi if then
+syn match mvCond "end\s\+if"
syn keyword mvRepeat by for in to
syn keyword mvRepeat do from od while
+syn match mvRepeat "end\s\+do"
syn keyword mvSpecial NULL
syn match mvSpecial "\[\]\|{}"
diff --git a/runtime/syntax/mib.vim b/runtime/syntax/mib.vim
index 2a8a73f6..6062d50b 100644
--- a/runtime/syntax/mib.vim
+++ b/runtime/syntax/mib.vim
@@ -3,13 +3,13 @@
" Maintainer: Martin Smat <msmat@post.cz>
" Original Author: David Pascoe <pascoedj@spamcop.net>
" Written: Wed Jan 28 14:37:23 GMT--8:00 1998
-" Last Changed: Mon Mar 15 2010
+" Last Changed: Mon Mar 23 2010
if exists("b:current_syntax")
finish
endif
-setlocal iskeyword=@,48-57,_,128-167,224-235,-,:,=
+setlocal iskeyword=@,48-57,_,128-167,224-235,-
syn keyword mibImplicit ACCESS ANY AUGMENTS BEGIN BIT BITS BOOLEAN CHOICE
syn keyword mibImplicit COMPONENTS CONTACT-INFO DEFINITIONS DEFVAL
@@ -22,7 +22,7 @@ syn keyword mibImplicit NULL OBJECT-GROUP OBJECT-IDENTITY OBJECT-TYPE
syn keyword mibImplicit OBJECTS OF OPTIONAL ORGANIZATION REFERENCE
syn keyword mibImplicit REVISION SEQUENCE SET SIZE STATUS SYNTAX
syn keyword mibImplicit TEXTUAL-CONVENTION TRAP-TYPE TRUE UNITS VARIABLES
-syn keyword mibImplicit WRITE-SYNTAX ::=
+syn keyword mibImplicit WRITE-SYNTAX
syn keyword mibValue accessible-for-notify current DisplayString
syn keyword mibValue deprecated mandatory not-accessible obsolete optional
syn keyword mibValue read-create read-only read-write write-only INTEGER
@@ -40,11 +40,13 @@ syn keyword mibEpilogue test-function-async next-function next-function-async
syn keyword mibEpilogue leaf-name
syn keyword mibEpilogue DEFAULT contained
+syn match mibOperator "::="
syn match mibComment "\ *--.\{-}\(--\|$\)"
syn match mibNumber "\<['0-9a-fA-FhH]*\>"
syn region mibDescription start="\"" end="\"" contains=DEFAULT
hi def link mibImplicit Statement
+hi def link mibOperator Statement
hi def link mibComment Comment
hi def link mibConstants String
hi def link mibNumber Number
diff --git a/runtime/syntax/mysql.vim b/runtime/syntax/mysql.vim
index 86a6c07c..c01ecc19 100644
--- a/runtime/syntax/mysql.vim
+++ b/runtime/syntax/mysql.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: mysql
" Maintainer: Kenneth J. Pronovici <pronovic@ieee.org>
-" Last Change: $LastChangedDate: 2009-06-29 23:08:37 -0500 (Mon, 29 Jun 2009) $
+" Last Change: $LastChangedDate: 2010-04-22 09:48:02 -0500 (Thu, 22 Apr 2010) $
" Filenames: *.mysql
" URL: ftp://cedar-solutions.com/software/mysql.vim
" Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
@@ -62,7 +62,7 @@ syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>"
syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>"
" User variables
-syn match mysqlVariable "@\a*[A-Za-z0-9]*[._]*[A-Za-z0-9]*"
+syn match mysqlVariable "@\a*[A-Za-z0-9]*\([._]*[A-Za-z0-9]\)*"
" Comments (c-style, mysql-style and modified sql-style)
syn region mysqlComment start="/\*" end="\*/"
@@ -75,7 +75,7 @@ syn sync ccomment mysqlComment
" This gets a bit ugly. There are two different problems we have to
" deal with.
"
-" The first problem is that some keywoards like 'float' can be used
+" The first problem is that some keywords like 'float' can be used
" both with and without specifiers, i.e. 'float', 'float(1)' and
" 'float(@var)' are all valid. We have to account for this and we
" also have to make sure that garbage like floatn or float_(1) is not
diff --git a/runtime/syntax/obj.vim b/runtime/syntax/obj.vim
new file mode 100644
index 00000000..3e2b438f
--- /dev/null
+++ b/runtime/syntax/obj.vim
@@ -0,0 +1,95 @@
+" Vim syntax file
+" Language: 3D wavefront's obj file
+" Maintainer: Vincent Berthoux <twinside@gmail.com>
+" File Types: .obj (used in 3D)
+"
+" 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 match objError "^\a\+"
+
+syn match objKeywords "^cstype\s"
+syn match objKeywords "^ctech\s"
+syn match objKeywords "^stech\s"
+syn match objKeywords "^deg\s"
+syn match objKeywords "^curv\(2\?\)\s"
+syn match objKeywords "^parm\s"
+syn match objKeywords "^surf\s"
+syn match objKeywords "^end\s"
+syn match objKeywords "^bzp\s"
+syn match objKeywords "^bsp\s"
+syn match objKeywords "^res\s"
+syn match objKeywords "^cdc\s"
+syn match objKeywords "^con\s"
+
+syn match objKeywords "^shadow_obj\s"
+syn match objKeywords "^trace_obj\s"
+syn match objKeywords "^usemap\s"
+syn match objKeywords "^lod\s"
+syn match objKeywords "^maplib\s"
+syn match objKeywords "^d_interp\s"
+syn match objKeywords "^c_interp\s"
+syn match objKeywords "^bevel\s"
+syn match objKeywords "^mg\s"
+syn match objKeywords "^s\s"
+syn match objKeywords "^con\s"
+syn match objKeywords "^trim\s"
+syn match objKeywords "^hole\s"
+syn match objKeywords "^scrv\s"
+syn match objKeywords "^sp\s"
+syn match objKeywords "^step\s"
+syn match objKeywords "^bmat\s"
+syn match objKeywords "^csh\s"
+syn match objKeywords "^call\s"
+
+syn match objComment "^#.*"
+syn match objVertex "^v\s"
+syn match objFace "^f\s"
+syn match objVertice "^vt\s"
+syn match objNormale "^vn\s"
+syn match objGroup "^g\s.*"
+syn match objMaterial "^usemtl\s.*"
+syn match objInclude "^mtllib\s.*"
+
+syn match objFloat "-\?\d\+\.\d\+\(e\(+\|-\)\d\+\)\?"
+syn match objInt "\d\+"
+syn match objIndex "\d\+\/\d*\/\d*"
+
+" 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_cabal_syn_inits")
+ if version < 508
+ let did_cabal_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink objError Error
+ HiLink objComment Comment
+ HiLink objInclude PreProc
+ HiLink objFloat Float
+ HiLink objInt Number
+ HiLink objGroup Structure
+ HiLink objIndex Constant
+ HiLink objMaterial Label
+
+ HiLink objVertex Keyword
+ HiLink objNormale Keyword
+ HiLink objVertice Keyword
+ HiLink objFace Keyword
+ HiLink objKeywords Keyword
+
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "obj"
+
+" vim: ts=8
diff --git a/runtime/syntax/perl.vim b/runtime/syntax/perl.vim
index fb9195a7..4c403ba8 100644
--- a/runtime/syntax/perl.vim
+++ b/runtime/syntax/perl.vim
@@ -1,24 +1,24 @@
" Vim syntax file
-" Language: Perl
-" Maintainer: Nick Hibma <nick@van-laarhoven.org>
-" Last Change: 2006 November 23
-" Location: http://www.van-laarhoven.org/vim/syntax/perl.vim
+" Language: Perl 5
+" Maintainer: Andy Lester <andy@petdance.com>
+" URL: http://github.com/petdance/vim-perl/tree/master
+" Last Change: 2009-09-2
+" Contributors: Andy Lester <andy@petdance.com>
+" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+" Lukas Mai <l.mai.web.de>
+" Nick Hibma <nick@van-laarhoven.org>
+" Sonia Heimann <niania@netsurf.org>
+" and many others.
"
" Please download most recent version first before mailing
" any comments.
-" See also the file perl.vim.regression.pl to check whether your
-" modifications work in the most odd cases
-" http://www.van-laarhoven.org/vim/syntax/perl.vim.regression.pl
"
-" Original version: Sonia Heimann <niania@netsurf.org>
-" Thanks to many people for their contribution.
-
" The following parameters are available for tuning the
" perl syntax highlighting, with defaults given:
"
" unlet perl_include_pod
-" unlet perl_want_scope_in_variables
-" unlet perl_extended_vars
+" unlet perl_no_scope_in_variables
+" unlet perl_no_extended_vars
" unlet perl_string_as_statement
" unlet perl_no_sync_on_sub
" unlet perl_no_sync_on_global_var
@@ -28,17 +28,37 @@
" let perl_nofold_packages = 1
" let perl_nofold_subs = 1
-" Remove any old syntax stuff that was loaded (5.x) or quit when a syntax file
-" was already loaded (6.x).
if version < 600
- syntax clear
+ echoerr ">=vim-6.0 is required to run perl.vim"
+ finish
elseif exists("b:current_syntax")
finish
endif
-" Unset perl_fold if it set but vim doesn't support it.
-if version < 600 && exists("perl_fold")
- unlet perl_fold
+"
+" Folding
+
+if exists("perl_fold")
+ " Note: this bit must come before the actual highlighting of the "package"
+ " keyword, otherwise this will screw up Pod lines that match /^package/
+ if !exists("perl_nofold_packages")
+ syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend
+ endif
+ if !exists("perl_nofold_subs")
+ syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend
+ syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
+ endif
+
+ if exists("perl_fold_blocks")
+ syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)foreach\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
+ syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
+ endif
+
+ setlocal foldmethod=syntax
+ syn sync fromstart
+else
+ " fromstart above seems to set minlines even if perl_fold is not set.
+ syn sync minlines=0
endif
@@ -65,64 +85,48 @@ else
endif
+syn cluster perlTop contains=TOP
+syn region perlGenericBlock matchgroup=perlGenericBlock start="{" end="}" contained transparent
+
+
" All keywords
"
-if exists("perl_fold") && exists("perl_fold_blocks")
- syn match perlConditional "\<if\>"
- syn match perlConditional "\<elsif\>"
- syn match perlConditional "\<unless\>"
- syn match perlConditional "\<else\>" nextgroup=perlElseIfError skipwhite skipnl skipempty
-else
- syn keyword perlConditional if elsif unless
- syn keyword perlConditional else nextgroup=perlElseIfError skipwhite skipnl skipempty
-endif
-syn keyword perlConditional switch eq ne gt lt ge le cmp not and or xor err
-if exists("perl_fold") && exists("perl_fold_blocks")
- syn match perlRepeat "\<while\>"
- syn match perlRepeat "\<for\>"
- syn match perlRepeat "\<foreach\>"
- syn match perlRepeat "\<do\>"
- syn match perlRepeat "\<until\>"
- syn match perlRepeat "\<continue\>"
-else
- syn keyword perlRepeat while for foreach do until continue
-endif
-syn keyword perlOperator defined undef and or not bless ref
-if exists("perl_fold")
- " if BEGIN/END would be a keyword the perlBEGINENDFold does not work
- syn match perlControl "\<BEGIN\|CHECK\|INIT\|END\>" contained
-else
- syn keyword perlControl BEGIN END CHECK INIT
-endif
-
-syn keyword perlStatementStorage my local our
-syn keyword perlStatementControl goto return last next redo
-syn keyword perlStatementScalar chomp chop chr crypt index lc lcfirst length ord pack reverse rindex sprintf substr uc ucfirst
-syn keyword perlStatementRegexp pos quotemeta split study
-syn keyword perlStatementNumeric abs atan2 cos exp hex int log oct rand sin sqrt srand
-syn keyword perlStatementList splice unshift shift push pop split join reverse grep map sort unpack
-syn keyword perlStatementHash each exists keys values tie tied untie
-syn keyword perlStatementIOfunc carp confess croak dbmclose dbmopen die syscall
-syn keyword perlStatementFiledesc binmode close closedir eof fileno getc lstat print printf readdir readline readpipe rewinddir select stat tell telldir write nextgroup=perlFiledescStatementNocomma skipwhite
-syn keyword perlStatementFiledesc fcntl flock ioctl open opendir read seek seekdir sysopen sysread sysseek syswrite truncate nextgroup=perlFiledescStatementComma skipwhite
-syn keyword perlStatementVector pack vec
-syn keyword perlStatementFiles chdir chmod chown chroot glob link mkdir readlink rename rmdir symlink umask unlink utime
-syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
-syn keyword perlStatementFlow caller die dump eval exit wantarray
-syn keyword perlStatementInclude require
-syn match perlStatementInclude "\<\(use\|no\)\s\+\(\(integer\|strict\|lib\|sigtrap\|subs\|vars\|warnings\|utf8\|byte\|base\|fields\)\>\)\="
-syn keyword perlStatementScope import
-syn keyword perlStatementProc alarm exec fork getpgrp getppid getpriority kill pipe setpgrp setpriority sleep system times wait waitpid
-syn keyword perlStatementSocket accept bind connect getpeername getsockname getsockopt listen recv send setsockopt shutdown socket socketpair
-syn keyword perlStatementIPC msgctl msgget msgrcv msgsnd semctl semget semop shmctl shmget shmread shmwrite
-syn keyword perlStatementNetwork endhostent endnetent endprotoent endservent gethostbyaddr gethostbyname gethostent getnetbyaddr getnetbyname getnetent getprotobyname getprotobynumber getprotoent getservbyname getservbyport getservent sethostent setnetent setprotoent setservent
-syn keyword perlStatementPword getpwuid getpwnam getpwent setpwent endpwent getgrent getgrgid getlogin getgrnam setgrent endgrent
-syn keyword perlStatementTime gmtime localtime time times
-
-syn keyword perlStatementMisc warn formline reset scalar delete prototype lock
-syn keyword perlStatementNew new
-
-syn keyword perlTodo TODO TBD FIXME XXX contained
+syn match perlConditional "\<\%(if\|elsif\|unless\|given\|when\|default\)\>"
+syn match perlConditional "\<else\>" nextgroup=perlElseIfError skipwhite skipnl skipempty
+syn match perlRepeat "\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>"
+syn match perlOperator "\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>"
+syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>"
+
+syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>"
+syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>"
+syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>"
+syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>"
+syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>"
+syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>"
+syn match perlStatementHash "\<\%(delete\|each\|exists\|keys\|values\)\>"
+syn match perlStatementIOfunc "\<\%(syscall\|dbmopen\|dbmclose\)\>"
+syn match perlStatementFiledesc "\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite
+syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite
+syn match perlStatementVector "\<vec\>"
+syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
+syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
+syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>"
+syn match perlStatementInclude "\<require\>"
+syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
+syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
+syn match perlStatementSocket "\<\%(acept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
+syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>"
+syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>"
+syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>"
+syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>"
+
+syn match perlStatementMisc "\<\%(warn\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>"
+
+syn keyword perlTodo TODO TBD FIXME XXX NOTE contained
+
+syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|print\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlGenericBlock
+
+syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
" Perl Identifiers.
"
@@ -135,52 +139,55 @@ syn keyword perlTodo TODO TBD FIXME XXX contained
" variable - there again, too complicated and too slow.
" Special variables first ($^A, ...) and ($|, $', ...)
-syn match perlVarPlain "$^[ADEFHILMOPSTWX]\="
+syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\="
syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
-syn match perlVarPlain "$\(0\|[1-9][0-9]*\)"
+syn match perlVarPlain "$\%(0\|[1-9]\d*\)"
" Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
-syn match perlVarPlain "$:[^:]"
+syn match perlVarPlain "$::\@!"
" These variables are not recognized within matches.
syn match perlVarNotInMatches "$[|)]"
" This variable is not recognized within matches delimited by m//.
syn match perlVarSlash "$/"
" And plain identifiers
-syn match perlPackageRef "\(\h\w*\)\=\(::\|'\)\I"me=e-1 contained
+syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained
-" To highlight packages in variables as a scope reference - i.e. in $pack::var,
-" pack:: is a scope, just set "perl_want_scope_in_variables"
-" If you *want* complex things like @{${"foo"}} to be processed,
-" just set the variable "perl_extended_vars"...
+" To not highlight packages in variables as a scope reference - i.e. in
+" $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables"
+" If you don't want complex things like @{${"foo"}} to be processed,
+" just set the variable "perl_no_extended_vars"...
-" FIXME value between {} should be marked as string. is treated as such by Perl.
-" At the moment it is marked as something greyish instead of read. Probably todo
-" with transparency. Or maybe we should handle the bare word in that case. or make it into
-
-if exists("perl_want_scope_in_variables")
- syn match perlVarPlain "\\\=\([@$]\|\$#\)\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
- syn match perlVarPlain2 "\\\=%\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
- syn match perlFunctionName "\\\=&\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember
+if !exists("perl_no_scope_in_variables")
+ syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef
+ syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
else
- syn match perlVarPlain "\\\=\([@$]\|\$#\)\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
- syn match perlVarPlain2 "\\\=%\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
- syn match perlFunctionName "\\\=&\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember
+ syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)"
+ syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
endif
-if exists("perl_extended_vars")
- syn cluster perlExpr contains=perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ
- syn region perlVarBlock matchgroup=perlVarPlain start="\($#\|[@%$]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember
- syn region perlVarBlock matchgroup=perlVarPlain start="&\$*{" skip="\\}" end="}" contains=@perlExpr
- syn match perlVarPlain "\\\=\(\$#\|[@%&$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember
- syn region perlVarMember matchgroup=perlVarPlain start="\(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember
- syn match perlVarSimpleMember "\(->\)\={\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember contains=perlVarSimpleMemberName contained
+if !exists("perl_no_extended_vars")
+ syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlGenericBlock
+ syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
+ syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
+ syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
+ syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
+ syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
+ syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained
syn match perlVarSimpleMemberName "\I\i*" contained
- syn region perlVarMember matchgroup=perlVarPlain start="\(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember
- syn match perlMethod "\(->\)\I\i*" contained
+ syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod
+ syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod
endif
" File Descriptors
-syn match perlFiledescRead "[<]\h\w\+[>]"
+syn match perlFiledescRead "<\h\w*>"
syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
@@ -188,16 +195,20 @@ syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparen
syn match perlFiledescStatement "\u\w*" contained
" Special characters in strings and matches
-syn match perlSpecialString "\\\(\d\+\|[xX]\x\+\|c\u\|.\)" contained
-syn match perlSpecialStringU "\\['\\]" contained
-syn match perlSpecialMatch "{\d\+\(,\(\d\+\)\=\)\=}" contained
-syn match perlSpecialMatch "\[\(\]\|-\)\=[^\[\]]*\(\[\|\-\)\=\]" contained
+syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
+syn match perlSpecialStringU2 "\\." extend contained transparent contains=NONE
+syn match perlSpecialStringU "\\\\" contained
+syn match perlSpecialMatch "\\[1-9]" contained extend
+syn match perlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained
+syn match perlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained
+syn match perlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained
+syn match perlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained
syn match perlSpecialMatch "[+*()?.]" contained
syn match perlSpecialMatch "(?[#:=!]" contained
-syn match perlSpecialMatch "(?[imsx]\+)" contained
-" FIXME the line below does not work. It should mark end of line and
-" begin of line as perlSpecial.
-" syn match perlSpecialBEOM "^\^\|\$$" contained
+syn match perlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained
+syn match perlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained
+syn match perlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained
+syn match perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained
" Possible errors
"
@@ -205,177 +216,195 @@ syn match perlSpecialMatch "(?[imsx]\+)" contained
syn match perlNotEmptyLine "^\s\+$" contained
" Highlight '} else if (...) {', it should be '} else { if (...) { ' or
" '} elsif (...) {'.
-"syn keyword perlElseIfError if contained
+syn match perlElseIfError "[^[:space:]{]\+" contained
" Variable interpolation
"
" These items are interpolated inside "" strings and similar constructs.
syn cluster perlInterpDQ contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock
" These items are interpolated inside '' strings and similar constructs.
-syn cluster perlInterpSQ contains=perlSpecialStringU
+syn cluster perlInterpSQ contains=perlSpecialStringU,perlSpecialStringU2
" These items are interpolated inside m// matches and s/// substitutions.
-syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock,perlSpecialBEOM
+syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock
" These items are interpolated inside m## matches and s### substitutions.
syn cluster perlInterpMatch contains=@perlInterpSlash,perlVarSlash
" Shell commands
-syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ
+syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend
" Constants
"
" Numbers
-syn match perlNumber "[-+]\=\(\<\d[[:digit:]_]*L\=\>\|0[xX]\x[[:xdigit:]_]*\>\)"
-syn match perlFloat "[-+]\=\<\d[[:digit:]_]*[eE][\-+]\=\d\+"
-syn match perlFloat "[-+]\=\<\d[[:digit:]_]*\.[[:digit:]_]*\([eE][\-+]\=\d\+\)\="
-syn match perlFloat "[-+]\=\<\.[[:digit:]_]\+\([eE][\-+]\=\d\+\)\="
+syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>"
+syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+"
+syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\="
+syn match perlFloat "\.[[:digit:]_]\+\%([eE][\-+]\=\d\+\)\="
+
+syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV
+syn match perlVStringV "\<v" contained
+
+
+syn region perlParensSQ start=+(+ end=+)+ extend contained transparent contains=perlParensSQ,@perlInterpSQ keepend
+syn region perlBracketsSQ start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsSQ,@perlInterpSQ keepend
+syn region perlBracesSQ start=+{+ end=+}+ extend contained transparent contains=perlBracesSQ,@perlInterpSQ keepend
+syn region perlAnglesSQ start=+<+ end=+>+ extend contained transparent contains=perlAnglesSQ,@perlInterpSQ keepend
+
+syn region perlParensDQ start=+(+ end=+)+ extend contained transparent contains=perlParensDQ,@perlInterpDQ keepend
+syn region perlBracketsDQ start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsDQ,@perlInterpDQ keepend
+syn region perlBracesDQ start=+{+ end=+}+ extend contained transparent contains=perlBracesDQ,@perlInterpDQ keepend
+syn region perlAnglesDQ start=+<+ end=+>+ extend contained transparent contains=perlAnglesDQ,@perlInterpDQ keepend
" Simple version of searches and matches
-" caters for m//, m##, m{} and m[] (and the !/ variant)
-syn region perlMatch matchgroup=perlMatchStartEnd start=+[m!]/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
-syn region perlMatch matchgroup=perlMatchStartEnd start=+[m!]#+ end=+#[cgimosx]*+ contains=@perlInterpMatch
-syn region perlMatch matchgroup=perlMatchStartEnd start=+[m!]{+ end=+}[cgimosx]*+ contains=@perlInterpMatch
-syn region perlMatch matchgroup=perlMatchStartEnd start=+[m!]\[+ end=+\][cgimosx]*+ contains=@perlInterpMatch
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[cgimopsx]*+ contains=@perlInterpMatch keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[cgimopsx]*+ contains=@perlInterpMatch keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[cgimopsx]*+ contains=@perlInterpSQ keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[cgimopsx]*+ contains=@perlInterpSlash keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[cgimopsx]*+ contains=@perlInterpMatch,perlParensDQ keepend
-" A special case for m!!x which allows for comments and extra whitespace in the pattern
-syn region perlMatch matchgroup=perlMatchStartEnd start=+[m!]!+ end=+![cgimosx]*+ contains=@perlInterpSlash,perlComment
+" A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[cgimopsx]*+ contains=@perlInterpMatch,perlAnglesDQ keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend
" Below some hacks to recognise the // variant. This is virtually impossible to catch in all
" cases as the / is used in so many other ways, but these should be the most obvious ones.
-syn region perlMatch matchgroup=perlMatchStartEnd start=+^split /+lc=5 start=+[^$@%]\<split /+lc=6 start=+^while /+lc=5 start=+[^$@%]\<while /+lc=6 start=+^if /+lc=2 start=+[^$@%]\<if /+lc=3 start=+[!=]\~\s*/+lc=2 start=+[(~]/+lc=1 start=+\.\./+lc=2 start=+\s/[^= \t0-9$@%]+lc=1,me=e-1,rs=e-1 start=+^/+ skip=+\\/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
+syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[cgimopsx]*+ contains=@perlInterpSlash
" Substitutions
-" caters for s///, s### and s[][]
" perlMatch is the first part, perlSubstitution* is the substitution part
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<s'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<s"+ end=+"+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionDQ
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<s/+ end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionSlash
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<s#+ end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionHash
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<s\[+ end=+\]+ contains=@perlInterpMatch nextgroup=perlSubstitutionBracket skipwhite skipempty skipnl
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<s{+ end=+}+ contains=@perlInterpMatch nextgroup=perlSubstitutionCurly skipwhite skipempty skipnl
-syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[ecgimosx]*+ contained contains=@perlInterpSQ
-syn region perlSubstitutionDQ matchgroup=perlMatchStartEnd start=+"+ end=+"[ecgimosx]*+ contained contains=@perlInterpDQ
-syn region perlSubstitutionSlash matchgroup=perlMatchStartEnd start=+/+ end=+/[ecgimosx]*+ contained contains=@perlInterpDQ
-syn region perlSubstitutionHash matchgroup=perlMatchStartEnd start=+#+ end=+#[ecgimosx]*+ contained contains=@perlInterpDQ
-syn region perlSubstitutionBracket matchgroup=perlMatchStartEnd start=+\[+ end=+\][ecgimosx]*+ contained contains=@perlInterpDQ
-syn region perlSubstitutionCurly matchgroup=perlMatchStartEnd start=+{+ end=+}[ecgimosx]*+ contained contains=@perlInterpDQ
-
-" A special case for m!!x which allows for comments and extra whitespace in the pattern
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<s!+ end=+!+me=e-1 contains=@perlInterpSlash,perlComment nextgroup=perlSubstitutionPling
-syn region perlSubstitutionPling matchgroup=perlMatchStartEnd start=+!+ end=+![ecgimosx]*+ contained contains=@perlInterpDQ
-
-" Substitutions
-" caters for tr///, tr### and tr[][]
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+ end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s#+ end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[ecgimopsx]*+ keepend contained contains=@perlInterpDQ
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[ecgimopsx]*+ contained contains=@perlInterpDQ,perlParensDQ keepend
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[ecgimopsx]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend
+syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[ecgimopsx]*+ contained contains=@perlInterpSQ keepend
+
+" Translations
" perlMatch is the first part, perlTranslation* is the second, translator part.
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationSQ
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)"+ end=+"+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationDQ
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)/+ end=+/+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationSlash
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationHash
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)\[+ end=+\]+ contains=@perlInterpSQ nextgroup=perlTranslationBracket skipwhite skipempty skipnl
-syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\(tr\|y\){+ end=+}+ contains=@perlInterpSQ nextgroup=perlTranslationCurly skipwhite skipempty skipnl
-syn region perlTranslationSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[cds]*+ contained
-syn region perlTranslationDQ matchgroup=perlMatchStartEnd start=+"+ end=+"[cds]*+ contained
-syn region perlTranslationSlash matchgroup=perlMatchStartEnd start=+/+ end=+/[cds]*+ contained
-syn region perlTranslationHash matchgroup=perlMatchStartEnd start=+#+ end=+#[cds]*+ contained
-syn region perlTranslationBracket matchgroup=perlMatchStartEnd start=+\[+ end=+\][cds]*+ contained
-syn region perlTranslationCurly matchgroup=perlMatchStartEnd start=+{+ end=+}[cds]*+ contained
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\>\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]([{<]\)+ end=+\z1[cds]*+ contained
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+(+ end=+)[cds]*+ contains=perlParensSQ contained
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][cds]*+ contains=perlBracketsSQ contained
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+{+ end=+}[cds]*+ contains=perlBracesSQ contained
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+<+ end=+>[cds]*+ contains=perlAnglesSQ contained
-" The => operator forces a bareword to the left of it to be interpreted as
-" a string
-syn match perlString "\<\I\i*\s*=>"me=e-2
-
" Strings and q, qq, qw and qr expressions
-" Brackets in qq()
-syn region perlBrackets start=+(+ end=+)+ contained transparent contains=perlBrackets,@perlStringSQ
-
-syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ
-syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q#+ end=+#+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q|+ end=+|+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q(+ end=+)+ contains=@perlInterpSQ,perlBrackets
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q{+ end=+}+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q/+ end=+/+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q[qx]#+ end=+#+ contains=@perlInterpDQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q[qx]|+ end=+|+ contains=@perlInterpDQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q[qx](+ end=+)+ contains=@perlInterpDQ,perlBrackets
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q[qx]{+ end=+}+ contains=@perlInterpDQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<q[qx]/+ end=+/+ contains=@perlInterpDQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qw#+ end=+#+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qw|+ end=+|+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qw(+ end=+)+ contains=@perlInterpSQ,perlBrackets
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qw{+ end=+}+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qw/+ end=+/+ contains=@perlInterpSQ
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qr#+ end=+#[imosx]*+ contains=@perlInterpMatch
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qr|+ end=+|[imosx]*+ contains=@perlInterpMatch
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qr(+ end=+)[imosx]*+ contains=@perlInterpMatch
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qr{+ end=+}[imosx]*+ contains=@perlInterpMatch
-syn region perlQQ matchgroup=perlStringStartEnd start=+\<qr/+ end=+/[imosx]*+ contains=@perlInterpSlash
+syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend
+syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q#+ end=+#+ contains=@perlInterpSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend
+
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]#+ end=+#+ contains=@perlInterpDQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*(+ end=+)+ contains=@perlInterpDQ,perlParensDQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*\[+ end=+\]+ contains=@perlInterpDQ,perlBracketsDQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*{+ end=+}+ contains=@perlInterpDQ,perlBracesDQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*<+ end=+>+ contains=@perlInterpDQ,perlAnglesDQ keepend
+
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw#+ end=+#+ contains=@perlInterpSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend
+
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosx]*+ contains=@perlInterpMatch keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+ end=+/[imosx]*+ contains=@perlInterpSlash keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+ end=+#[imosx]*+ contains=@perlInterpMatch keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+ end=+'[imosx]*+ contains=@perlInterpSQ keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+ end=+)[imosx]*+ contains=@perlInterpMatch,perlParensDQ keepend
+
+" A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+ end=+}[imosx]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+ end=+>[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+ end=+\][imosx]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend
" Constructs such as print <<EOF [...] EOF, 'here' documents
"
-if version >= 600
- " XXX Any statements after the identifier are in perlString colour (i.e.
- " 'if $a' in 'print <<EOF if $a').
- if exists("perl_fold")
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+ end=+^\z1$+ contains=@perlInterpDQ fold
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z(.\{-}\)"+ end=+^\z1$+ contains=@perlInterpDQ fold
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z(.\{-}\)'+ end=+^\z1$+ contains=@perlInterpSQ fold
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine fold
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine fold
- syn region perlAutoload matchgroup=perlStringStartEnd start=+<<['"]\z(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)['"]+ end=+^\z1$+ contains=ALL fold
- else
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+ end=+^\z1$+ contains=@perlInterpDQ
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z(.\{-}\)"+ end=+^\z1$+ contains=@perlInterpDQ
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z(.\{-}\)'+ end=+^\z1$+ contains=@perlInterpSQ
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine
- syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine
- syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\(['"]\|\)\z(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL
- endif
+" XXX Any statements after the identifier are in perlString colour (i.e.
+" 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it
+" seems due to the 'auto-extending nature' of regions.
+if exists("perl_fold")
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+ end=+^\z1$+ contains=@perlInterpDQ fold
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ fold
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ fold
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine fold
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine fold
+ syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL fold
else
- syn match perlUntilEOFStart "<<EOF.*"lc=5 nextgroup=perlUntilEOFDQ skipnl transparent
- syn match perlUntilEOFStart "<<\s*\"EOF\".*" nextgroup=perlUntilEOFDQ skipnl transparent
- syn match perlUntilEOFStart "<<\s*'EOF'.*" nextgroup=perlUntilEOFSQ skipnl transparent
- syn match perlUntilEOFStart "<<\s*\"\".*" nextgroup=perlUntilEmptyDQ skipnl transparent
- syn match perlUntilEOFStart "<<\s*''.*" nextgroup=perlUntilEmptySQ skipnl transparent
- syn region perlUntilEOFDQ matchgroup=perlStringStartEnd start=++ end="^EOF$" contains=@perlInterpDQ contained
- syn region perlUntilEOFSQ matchgroup=perlStringStartEnd start=++ end="^EOF$" contains=@perlInterpSQ contained
- syn region perlUntilEmptySQ matchgroup=perlStringStartEnd start=++ end="^$" contains=@perlInterpDQ,perlNotEmptyLine contained
- syn region perlUntilEmptyDQ matchgroup=perlStringStartEnd start=++ end="^$" contains=@perlInterpSQ,perlNotEmptyLine contained
- syn match perlHereIdentifier "<<EOF"
- syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\(['"]\|\)\(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)$+ contains=ALL
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+ end=+^\z1$+ contains=@perlInterpDQ
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine
+ syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine
+ syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL
endif
" Class declarations
"
-syn match perlPackageDecl "^\s*\<package\s\+\S\+" contains=perlStatementPackage
+syn match perlPackageDecl "\<package\s\+\%(\h\|::\)\%(\w\|::\)*" contains=perlStatementPackage
syn keyword perlStatementPackage package contained
" Functions
" sub [name] [(prototype)] {
"
-syn region perlFunction start="\s*\<sub\>" end="[;{]"he=e-1 contains=perlStatementSub,perlFunctionPrototype,perlFunctionPRef,perlFunctionName,perlComment
-syn keyword perlStatementSub sub contained
+syn match perlSubError "[^[:space:];{#]" contained
+if v:version == 701 && !has('patch221') " XXX I hope that's the right one
+ syn match perlSubAttributes ":" contained
+else
+ syn match perlSubAttributesCont "\h\w*\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained
+ syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start="\h\w*(" end=")\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ
+ syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError
+ syn match perlSubAttributes "" contained nextgroup=perlSubError
+ syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
+endif
+syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
+syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes contained contains=perlSubPrototypeError
+syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype
+
+syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
-syn match perlFunctionPrototype "([^)]*)" contained
-if exists("perl_want_scope_in_variables")
+if !exists("perl_no_scope_in_variables")
syn match perlFunctionPRef "\h\w*::" contained
syn match perlFunctionName "\h\w*[^:]" contained
else
syn match perlFunctionName "\h[[:alnum:]_:]*" contained
endif
+" The => operator forces a bareword to the left of it to be interpreted as
+" a string
+syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="
+
" All other # are comments, except ^#!
-syn match perlComment "#.*" contains=perlTodo
+syn match perlComment "#.*" contains=perlTodo,@Spell
syn match perlSharpBang "^#!.*"
" Formats
syn region perlFormat matchgroup=perlStatementIOFunc start="^\s*\<format\s\+\k\+\s*=\s*$"rs=s+6 end="^\s*\.\s*$" contains=perlFormatName,perlFormatField,perlVarPlain,perlVarPlain2
syn match perlFormatName "format\s\+\k\+\s*="lc=7,me=e-1 contained
-syn match perlFormatField "[@^][|<>~]\+\(\.\.\.\)\=" contained
+syn match perlFormatField "[@^][|<>~]\+\%(\.\.\.\)\=" contained
syn match perlFormatField "[@^]#[#.]*" contained
syn match perlFormatField "@\*" contained
syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained
@@ -383,161 +412,113 @@ syn match perlFormatField "@$" contained
" __END__ and __DATA__ clauses
if exists("perl_fold")
- syntax region perlDATA start="^__\(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA fold
+ syntax region perlDATA start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA fold
else
- syntax region perlDATA start="^__\(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA
+ syntax region perlDATA start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA
endif
-
-"
-" Folding
-
-if exists("perl_fold")
- if !exists("perl_nofold_packages")
- syn region perlPackageFold start="^package \S\+;\s*\(#.*\)\=$" end="^1;\s*\(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend
- endif
- if !exists("perl_nofold_subs")
- syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\(#.*\)\=$" transparent fold keepend
- syn region perlSubFold start="^\z(\s*\)\<\(BEGIN\|END\|CHECK\|INIT\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
- endif
-
- if exists("perl_fold_blocks")
- syn region perlBlockFold start="^\z(\s*\)\(if\|elsif\|unless\|for\|while\|until\)\s*(.*)\(\s*{\)\=\s*\(#.*\)\=$" start="^\z(\s*\)foreach\s*\(\(my\|our\)\=\s*\S\+\s*\)\=(.*)\(\s*{\)\=\s*\(#.*\)\=$" end="^\z1}\s*;\=\(#.*\)\=$" transparent fold keepend
- syn region perlBlockFold start="^\z(\s*\)\(do\|else\)\(\s*{\)\=\s*\(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\(#.*\)\=$" transparent fold keepend
- endif
-
- setlocal foldmethod=syntax
- syn sync fromstart
+command -nargs=+ HiLink hi def link <args>
+
+" The default highlighting.
+HiLink perlSharpBang PreProc
+HiLink perlControl PreProc
+HiLink perlInclude Include
+HiLink perlSpecial Special
+HiLink perlString String
+HiLink perlCharacter Character
+HiLink perlNumber Number
+HiLink perlFloat Float
+HiLink perlType Type
+HiLink perlIdentifier Identifier
+HiLink perlLabel Label
+HiLink perlStatement Statement
+HiLink perlConditional Conditional
+HiLink perlRepeat Repeat
+HiLink perlOperator Operator
+HiLink perlFunction Keyword
+HiLink perlSubName Function
+HiLink perlSubPrototype Type
+HiLink perlSubAttributes PreProc
+HiLink perlSubAttributesCont perlSubAttributes
+HiLink perlComment Comment
+HiLink perlTodo Todo
+if exists("perl_string_as_statement")
+ HiLink perlStringStartEnd perlStatement
else
- " fromstart above seems to set minlines even if perl_fold is not set.
- syn sync minlines=0
+ HiLink perlStringStartEnd perlString
endif
+HiLink perlVStringV perlStringStartEnd
+HiLink perlList perlStatement
+HiLink perlMisc perlStatement
+HiLink perlVarPlain perlIdentifier
+HiLink perlVarPlain2 perlIdentifier
+HiLink perlArrow perlIdentifier
+HiLink perlFiledescRead perlIdentifier
+HiLink perlFiledescStatement perlIdentifier
+HiLink perlVarSimpleMember perlIdentifier
+HiLink perlVarSimpleMemberName perlString
+HiLink perlVarNotInMatches perlIdentifier
+HiLink perlVarSlash perlIdentifier
+HiLink perlQQ perlString
+HiLink perlHereDoc perlString
+HiLink perlStringUnexpanded perlString
+HiLink perlSubstitutionSQ perlString
+HiLink perlSubstitutionGQQ perlString
+HiLink perlTranslationGQ perlString
+HiLink perlMatch perlString
+HiLink perlMatchStartEnd perlStatement
+HiLink perlFormatName perlIdentifier
+HiLink perlFormatField perlString
+HiLink perlPackageDecl perlType
+HiLink perlStorageClass perlType
+HiLink perlPackageRef perlType
+HiLink perlStatementPackage perlStatement
+HiLink perlStatementStorage perlStatement
+HiLink perlStatementControl perlStatement
+HiLink perlStatementScalar perlStatement
+HiLink perlStatementRegexp perlStatement
+HiLink perlStatementNumeric perlStatement
+HiLink perlStatementList perlStatement
+HiLink perlStatementHash perlStatement
+HiLink perlStatementIOfunc perlStatement
+HiLink perlStatementFiledesc perlStatement
+HiLink perlStatementVector perlStatement
+HiLink perlStatementFiles perlStatement
+HiLink perlStatementFlow perlStatement
+HiLink perlStatementInclude perlStatement
+HiLink perlStatementProc perlStatement
+HiLink perlStatementSocket perlStatement
+HiLink perlStatementIPC perlStatement
+HiLink perlStatementNetwork perlStatement
+HiLink perlStatementPword perlStatement
+HiLink perlStatementTime perlStatement
+HiLink perlStatementMisc perlStatement
+HiLink perlStatementIndirObj perlStatement
+HiLink perlFunctionName perlIdentifier
+HiLink perlMethod perlIdentifier
+HiLink perlFunctionPRef perlType
+HiLink perlPOD perlComment
+HiLink perlShellCommand perlString
+HiLink perlSpecialAscii perlSpecial
+HiLink perlSpecialDollar perlSpecial
+HiLink perlSpecialString perlSpecial
+HiLink perlSpecialStringU perlSpecial
+HiLink perlSpecialMatch perlSpecial
+HiLink perlDATA perlComment
+" Possible errors
+HiLink perlNotEmptyLine Error
+HiLink perlElseIfError Error
+HiLink perlSubPrototypeError Error
+HiLink perlSubError Error
-if version >= 508 || !exists("did_perl_syn_inits")
- if version < 508
- let did_perl_syn_inits = 1
- command -nargs=+ HiLink hi link <args>
- else
- command -nargs=+ HiLink hi def link <args>
- endif
-
- " The default highlighting.
- HiLink perlSharpBang PreProc
- HiLink perlControl PreProc
- HiLink perlInclude Include
- HiLink perlSpecial Special
- HiLink perlString String
- HiLink perlCharacter Character
- HiLink perlNumber Number
- HiLink perlFloat Float
- HiLink perlType Type
- HiLink perlIdentifier Identifier
- HiLink perlLabel Label
- HiLink perlStatement Statement
- HiLink perlConditional Conditional
- HiLink perlRepeat Repeat
- HiLink perlOperator Operator
- HiLink perlFunction Function
- HiLink perlFunctionPrototype perlFunction
- HiLink perlComment Comment
- HiLink perlTodo Todo
- if exists("perl_string_as_statement")
- HiLink perlStringStartEnd perlStatement
- else
- HiLink perlStringStartEnd perlString
- endif
- HiLink perlList perlStatement
- HiLink perlMisc perlStatement
- HiLink perlVarPlain perlIdentifier
- HiLink perlVarPlain2 perlIdentifier
- HiLink perlFiledescRead perlIdentifier
- HiLink perlFiledescStatement perlIdentifier
- HiLink perlVarSimpleMember perlIdentifier
- HiLink perlVarSimpleMemberName perlString
- HiLink perlVarNotInMatches perlIdentifier
- HiLink perlVarSlash perlIdentifier
- HiLink perlQQ perlString
- if version >= 600
- HiLink perlHereDoc perlString
- else
- HiLink perlHereIdentifier perlStringStartEnd
- HiLink perlUntilEOFDQ perlString
- HiLink perlUntilEOFSQ perlString
- HiLink perlUntilEmptyDQ perlString
- HiLink perlUntilEmptySQ perlString
- HiLink perlUntilEOF perlString
- endif
- HiLink perlStringUnexpanded perlString
- HiLink perlSubstitutionSQ perlString
- HiLink perlSubstitutionDQ perlString
- HiLink perlSubstitutionSlash perlString
- HiLink perlSubstitutionHash perlString
- HiLink perlSubstitutionBracket perlString
- HiLink perlSubstitutionCurly perlString
- HiLink perlSubstitutionPling perlString
- HiLink perlTranslationSlash perlString
- HiLink perlTranslationHash perlString
- HiLink perlTranslationBracket perlString
- HiLink perlTranslationCurly perlString
- HiLink perlMatch perlString
- HiLink perlMatchStartEnd perlStatement
- HiLink perlFormatName perlIdentifier
- HiLink perlFormatField perlString
- HiLink perlPackageDecl perlType
- HiLink perlStorageClass perlType
- HiLink perlPackageRef perlType
- HiLink perlStatementPackage perlStatement
- HiLink perlStatementSub perlStatement
- HiLink perlStatementStorage perlStatement
- HiLink perlStatementControl perlStatement
- HiLink perlStatementScalar perlStatement
- HiLink perlStatementRegexp perlStatement
- HiLink perlStatementNumeric perlStatement
- HiLink perlStatementList perlStatement
- HiLink perlStatementHash perlStatement
- HiLink perlStatementIOfunc perlStatement
- HiLink perlStatementFiledesc perlStatement
- HiLink perlStatementVector perlStatement
- HiLink perlStatementFiles perlStatement
- HiLink perlStatementFlow perlStatement
- HiLink perlStatementScope perlStatement
- HiLink perlStatementInclude perlStatement
- HiLink perlStatementProc perlStatement
- HiLink perlStatementSocket perlStatement
- HiLink perlStatementIPC perlStatement
- HiLink perlStatementNetwork perlStatement
- HiLink perlStatementPword perlStatement
- HiLink perlStatementTime perlStatement
- HiLink perlStatementMisc perlStatement
- HiLink perlStatementNew perlStatement
- HiLink perlFunctionName perlIdentifier
- HiLink perlMethod perlIdentifier
- HiLink perlFunctionPRef perlType
- HiLink perlPOD perlComment
- HiLink perlShellCommand perlString
- HiLink perlSpecialAscii perlSpecial
- HiLink perlSpecialDollar perlSpecial
- HiLink perlSpecialString perlSpecial
- HiLink perlSpecialStringU perlSpecial
- HiLink perlSpecialMatch perlSpecial
- HiLink perlSpecialBEOM perlSpecial
- HiLink perlDATA perlComment
-
- HiLink perlBrackets Error
-
- " Possible errors
- HiLink perlNotEmptyLine Error
- HiLink perlElseIfError Error
-
- delcommand HiLink
-endif
+delcommand HiLink
" Syncing to speed up processing
"
if !exists("perl_no_sync_on_sub")
syn sync match perlSync grouphere NONE "^\s*\<package\s"
- syn sync match perlSync grouphere perlFunction "^\s*\<sub\s"
+ syn sync match perlSync grouphere NONE "^\s*\<sub\>"
syn sync match perlSync grouphere NONE "^}"
endif
@@ -559,4 +540,5 @@ syn sync match perlSyncPOD grouphere NONE "^=cut"
let b:current_syntax = "perl"
-" vim: ts=8
+" XXX Change to sts=4:sw=4
+" vim:ts=8:sts=2:sw=2:expandtab:ft=vim
diff --git a/runtime/syntax/perl6.vim b/runtime/syntax/perl6.vim
new file mode 100644
index 00000000..6a3baba7
--- /dev/null
+++ b/runtime/syntax/perl6.vim
@@ -0,0 +1,2249 @@
+" Vim syntax file
+" Language: Perl 6
+" Maintainer: Andy Lester <andy@petdance.com>
+" Homepage: http://github.com/petdance/vim-perl/tree/master
+" Last Change: 2009-07-04
+
+" Contributors: Luke Palmer <fibonaci@babylonia.flatirons.org>
+" Moritz Lenz <moritz@faui2k3.org>
+" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+"
+" This is a big undertaking. Perl 6 is the sort of language that only Perl
+" can parse. But I'll do my best to get vim to.
+"
+" You can associate the extension ".pl" with the filetype "perl6" by setting
+" autocmd BufNewFile,BufRead *.pl setf perl6
+" in your ~/.vimrc. But that will infringe on Perl 5, so you might want to
+" put a modeline near the beginning or end of your Perl 6 files instead:
+" # vim: filetype=perl6
+
+" TODO:
+" * Deal with s:Perl5//
+" * m:s// is a match, not a substitution
+" * Make these highlight as strings, not operators:
+" <==> <=:=> <===> <=~> <« »> «>» «<»
+" * Allow more keywords to match as function calls(leave() is export(), etc)
+" * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup)
+" * Fix s''' substitutions being matched as package names
+" * Match s/// and m/// better, so things like "$s/" won't match
+" * Add more support for folding (:help syn-fold)
+" * Add more syntax syncing hooks (:help syn-sync)
+" * Q//:
+" :to, :heredoc
+" interpolate \q:s{$scalar} (though the spec isn't very clear on it)
+"
+" Impossible TODO?:
+" * Unspace
+" * Unicode bracketing characters for quoting (there are so many)
+" * Various tricks depending on context. I.e. we can't know when Perl
+" expects «*» to be a string or a hyperoperator. The latter is presumably
+" more common, so that's what we assume.
+" * Selective highlighting of Pod formatting codes with the :allow option
+" * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//.
+" Currently only the first adverb is considered significant. Anything
+" more would require an exponential amount of regexes, making this
+" already slow syntax file even slower.
+"
+" If you want to have Pir code inside Q:PIR// strings highlighted, do:
+" let perl6_embedded_pir=1
+"
+" The above requires pir.vim, which you can find in Parrot's repository:
+" https://svn.parrot.org/parrot/trunk/editor/
+"
+" Some less than crucial things have been made optional to speed things up.
+" Look at the comments near the if/else branches in this file to see exactly
+" which features are affected. "perl6_extended_all" enables everything.
+"
+" The defaults are:
+"
+" unlet perl6_extended_comments
+" unlet perl6_extended_q
+" unlet perl6_extended_all
+
+" 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
+
+" identifiers
+syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*"
+
+" This is used in the for loops below
+" Don't use the "syn keyword" construct because that always has higher
+" priority than matches/regions, so the words can't be autoquoted with
+" the "=>" and "p5=>" operators. All the lookaround stuff is to make sure
+" we don't match them as part of some other identifier.
+let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@<!\\%("
+let s:after_keyword = "\\)\\%(\\k\\|[-']\\K\\@=\\)\\@!\""
+
+" Billions of keywords
+let s:keywords = {
+ \ "p6Attention": [
+ \ "ACHTUNG ATTN ATTENTION FIXME NB TODO TBD WTF XXX NOTE",
+ \ ],
+ \ "p6DeclareRoutine": [
+ \ "macro sub submethod method multi proto only rule token regex category",
+ \ ],
+ \ "p6Module": [
+ \ "module class role package enum grammar slang subset",
+ \ ],
+ \ "p6Variable": [
+ \ "self",
+ \ ],
+ \ "p6Include": [
+ \ "use require",
+ \ ],
+ \ "p6Conditional": [
+ \ "if else elsif unless",
+ \ ],
+ \ "p6VarStorage": [
+ \ "let my our state temp has constant",
+ \ ],
+ \ "p6Repeat": [
+ \ "for loop repeat while until gather given",
+ \ ],
+ \ "p6FlowControl": [
+ \ "take do when next last redo return contend maybe defer",
+ \ "default exit make continue break goto leave async lift",
+ \ ],
+ \ "p6TypeConstraint": [
+ \ "is as but trusts of returns handles where augment supersede",
+ \ ],
+ \ "p6ClosureTrait": [
+ \ "BEGIN CHECK INIT START FIRST ENTER LEAVE KEEP",
+ \ "UNDO NEXT LAST PRE POST END CATCH CONTROL TEMP",
+ \ ],
+ \ "p6Exception": [
+ \ "die fail try warn",
+ \ ],
+ \ "p6Property": [
+ \ "prec irs ofs ors export deep binary unary reparsed rw parsed cached",
+ \ "readonly defequiv will ref copy inline tighter looser equiv assoc",
+ \ "required",
+ \ ],
+ \ "p6Number": [
+ \ "NaN Inf",
+ \ ],
+ \ "p6Pragma": [
+ \ "oo fatal",
+ \ ],
+ \ "p6Type": [
+ \ "Object Any Junction Whatever Capture Match",
+ \ "Signature Proxy Matcher Package Module Class",
+ \ "Grammar Scalar Array Hash KeyHash KeySet KeyBag",
+ \ "Pair List Seq Range Set Bag Mapping Void Undef",
+ \ "Failure Exception Code Block Routine Sub Macro",
+ \ "Method Submethod Regex Str Blob Char Byte",
+ \ "Codepoint Grapheme StrPos StrLen Version Num",
+ \ "Complex num complex Bit bit bool True False",
+ \ "Increasing Decreasing Ordered Callable AnyChar",
+ \ "Positional Associative Ordering KeyExtractor",
+ \ "Comparator OrderingPair IO KitchenSink Role",
+ \ "Int int int1 int2 int4 int8 int16 int32 int64",
+ \ "Rat rat rat1 rat2 rat4 rat8 rat16 rat32 rat64",
+ \ "Buf buf buf1 buf2 buf4 buf8 buf16 buf32 buf64",
+ \ "UInt uint uint1 uint2 uint4 uint8 uint16 uint32",
+ \ "uint64 Abstraction utf8 utf16 utf32",
+ \ ],
+ \ "p6Operator": [
+ \ "div x xx mod also leg cmp before after eq ne le lt",
+ \ "gt ge eqv ff fff and andthen Z X or xor",
+ \ "orelse extra m mm rx s tr",
+ \ ],
+\ }
+
+for [group, words] in items(s:keywords)
+ let s:words_space = join(words, " ")
+ let s:temp = split(s:words_space)
+ let s:words = join(s:temp, "\\|")
+ exec "syn match ". group ." ". s:before_keyword . s:words . s:after_keyword
+endfor
+unlet s:keywords s:words_space s:temp s:words
+
+" More operators
+" Don't put a "\+" at the end of the character class. That makes it so
+" greedy that the "%" " in "+%foo" won't be allowed to match as a sigil,
+" among other things
+syn match p6Operator display "[-+/*~?|=^!%&,<>.;\\]"
+syn match p6Operator display "\%(:\@<!::\@!\|::=\|\.::\)"
+" these require whitespace on the left side
+syn match p6Operator display "\%(\s\|^\)\@<=\%(xx=\|p5=>\)"
+" "i" requires a digit to the left, and no keyword char to the right
+syn match p6Operator display "\d\@<=i\k\@!"
+" index overloading
+syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)"
+
+" all infix operators except nonassocative ones
+let s:infix_a = [
+ \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x",
+ \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt",
+ \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^",
+ \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax",
+ \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=",
+ \ "+ - \\*\\* \\* // / \\~ || |",
+\ ]
+" nonassociative infix operators
+let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^"
+
+let s:infix_a_long = join(s:infix_a, " ")
+let s:infix_a_words = split(s:infix_a_long)
+let s:infix_a_pattern = join(s:infix_a_words, "\\|")
+
+let s:infix_n_words = split(s:infix_n)
+let s:infix_n_pattern = join(s:infix_n_words, "\\|")
+
+let s:both = [s:infix_a_pattern, s:infix_n_pattern]
+let s:infix = join(s:both, "\\|")
+
+let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)"
+let s:infix = "!\\?\\%(" . s:infix . "\\)"
+
+unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern
+unlet s:infix_n s:infix_n_pattern s:both
+
+" [+] reduce
+exec "syn match p6ReduceOp display \"\\k\\@<!\\[[R\\\\]\\?!\\?". s:infix_assoc ."]\\%(«\\|<<\\)\\?\""
+unlet s:infix_assoc
+
+" Reverse and cross operators (Rop, Xop)
+exec "syn match p6ReverseCrossOp display \"[RX]". s:infix ."\""
+
+" q() or whatever() is always a function call
+syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*(\@="
+
+" basically all builtins that can be followed by parentheses
+let s:routines = [
+ \ "eager hyper substr index rindex grep map sort join lines hints chmod",
+ \ "split reduce min max reverse truncate zip cat roundrobin classify",
+ \ "first sum keys values pairs defined delete exists elems end kv any",
+ \ "all one wrap shape key value name pop push shift splice unshift floor",
+ \ "ceiling abs exp log log10 rand sign sqrt sin cos tan round strand",
+ \ "roots cis unpolar polar atan2 pick chop p5chop chomp p5chomp lc",
+ \ "lcfirst uc ucfirst capitalize normalize pack unpack quotemeta comb",
+ \ "samecase sameaccent chars nfd nfc nfkd nfkc printf sprintf caller",
+ \ "evalfile run runinstead nothing want bless chr ord gmtime time eof",
+ \ "localtime gethost getpw chroot getlogin getpeername kill fork wait",
+ \ "perl graphs codes bytes clone print open read write readline say seek",
+ \ "close opendir readdir slurp pos fmt vec link unlink symlink uniq pair",
+ \ "asin atan sec cosec cotan asec acosec acotan sinh cosh tanh asinh",
+ \ "acos acosh atanh sech cosech cotanh sech acosech acotanh asech ok",
+ \ "plan_ok dies_ok lives_ok skip todo pass flunk force_todo use_ok isa_ok",
+ \ "diag is_deeply isnt like skip_rest unlike cmp_ok eval_dies_ok nok_error",
+ \ "eval_lives_ok approx is_approx throws_ok version_lt plan eval succ pred",
+ \ "times nonce once signature new connect operator undef undefine sleep",
+ \ "from to infix postfix prefix circumfix postcircumfix minmax lazy count",
+ \ "unwrap getc pi e context void quasi body each contains rewinddir subst",
+ \ "can isa flush arity assuming rewind callwith callsame nextwith nextsame",
+ \ "attr eval_elsewhere none srand trim trim_start trim_end lastcall WHAT",
+ \ "WHERE HOW WHICH VAR WHO WHENCE ACCEPTS REJECTS does not true iterator by",
+ \ "re im invert flip",
+\ ]
+
+" we want to highlight builtins like split() though, so this comes afterwards
+" TODO: check if this would be faster as one big regex
+let s:words_space = join(s:routines, " ")
+let s:temp = split(s:words_space)
+let s:words = join(s:temp, "\\|")
+exec "syn match p6Routine ". s:before_keyword . s:words . s:after_keyword
+unlet s:before_keyword s:after_keyword s:words_space s:temp s:words s:routines
+
+" packages, must come after all the keywords
+syn match p6Normal display "\%(::\)\@<=\K\%(\k\|[-']\K\@=\)*"
+syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*\%(::\)\@="
+
+" some standard packages
+syn match p6Type display "\%(::\|\k\|\K\@<=[-']\)\@<!\%(Order\%(::Same\|::Increase\|::Decrease\)\?\)\%(\k\|[-']\K\@=\)\@!"
+syn match p6Type display "\%(::\|\k\|\K\@<=[-']\)\@<!\%(Bool\%(::True\|::False\)\?\)\%(\k\|[-']\K\@=\)\@!"
+
+
+syn match p6Shebang display "\%^#!.*"
+syn match p6BlockLabel display "\%(^\s*\)\@<=\h\w*\s*::\@!\_s\@="
+syn match p6Number display "\k\@<!_\@!\%(\d\|__\@!\)\+_\@<!\%([eE]_\@!+\?\%(\d\|_\)\+\)\?_\@<!"
+syn match p6Float display "\k\@<!_\@!\%(\d\|__\@!\)\+_\@<![eE]_\@!-\%(\d\|_\)\+"
+syn match p6Float display "\k\@<!_\@<!\%(\d\|__\@!\)*_\@<!\.\@<!\._\@!\.\@!\a\@!\%(\d\|_\)\+_\@<!\%([eE]_\@!\%(\d\|_\)\+\)\?"
+
+syn match p6NumberBase display "[obxd]" contained
+syn match p6Number display "\<0\%(o[0-7][0-7_]*\)\@=" nextgroup=p6NumberBase
+syn match p6Number display "\<0\%(b[01][01_]*\)\@=" nextgroup=p6NumberBase
+syn match p6Number display "\<0\%(x\x[[:xdigit:]_]*\)\@=" nextgroup=p6NumberBase
+syn match p6Number display "\<0\%(d\d[[:digit:]_]*\)\@=" nextgroup=p6NumberBase
+syn match p6Number display "\%(\<0o\)\@<=[0-7][0-7_]*"
+syn match p6Number display "\%(\<0b\)\@<=[01][01_]*"
+syn match p6Number display "\%(\<0x\)\@<=\x[[:xdigit:]_]*"
+syn match p6Number display "\%(\<0d\)\@<=\d[[:digit:]_]*"
+
+syn match p6Version display "\<v\d\@=" nextgroup=p6VersionNum
+syn match p6VersionNum display "\d\+" nextgroup=p6VersionDot contained
+syn match p6VersionDot display "\.\%(\d\|\*\)\@=" nextgroup=p6VersionNum contained
+
+" try to distinguish the "is" function from the "is" trail auxiliary
+syn match p6Routine display "\%(\%(\S\k\@<!\|^\)\s*\)\@<=is\>"
+
+" does is a type constraint sometimes
+syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@="
+
+" int is a type sometimes
+syn match p6Type display "\<int\>\%(\s*(\|\s\+\d\)\@!"
+
+" these Routine names are also Properties, if preceded by "is"
+syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)"
+
+" The sigil in ::*Package
+syn match p6PackageTwigil display "\%(::\)\@<=\*"
+
+" $<match>
+syn region p6MatchVarSigil
+ \ matchgroup=p6Variable
+ \ start="\$\%(<<\@!\)\@="
+ \ end=">\@<="
+ \ contains=p6MatchVar
+
+syn region p6MatchVar
+ \ matchgroup=p6Twigil
+ \ start="<"
+ \ end=">"
+ \ contained
+
+" Contextualizers
+syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>"
+syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@="
+
+" the "$" placeholder in "$var1, $, var2 = @list"
+syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@<!::\@!\)\)\@!"
+syn match p6Placeholder display "\$\%(\K\|\%([.^*?=!~]\|:\@<!::\@!\)\)\@!\%(,\s*\)\@="
+
+" Quoting
+
+" one cluster for every quote adverb
+syn cluster p6Interp_s
+ \ add=p6InterpScalar
+syn cluster p6Interp_scalar
+ \ add=p6InterpScalar
+
+syn cluster p6Interp_a
+ \ add=p6InterpArray
+syn cluster p6Interp_array
+ \ add=p6InterpArray
+
+syn cluster p6Interp_h
+ \ add=p6InterpHash
+syn cluster p6Interp_hash
+ \ add=p6InterpHash
+
+syn cluster p6Interp_f
+ \ add=p6InterpFunction
+syn cluster p6Interp_f
+ \ add=p6InterpFunction
+
+syn cluster p6Interp_c
+ \ add=p6InterpClosure
+syn cluster p6Interp_closure
+ \ add=p6InterpClosure
+
+
+if exists("perl6_extended_q") || exists("perl6_extended_all")
+ syn cluster p6Interp_ww
+ \ add=p6StringSQ
+ \ add=p6StringDQ
+ syn cluster p6Interp_quotewords
+ \ add=p6StringSQ
+ \ add=p6StringDQ
+endif
+
+syn cluster p6Interp_q
+ \ add=p6EscQQ
+ \ add=p6EscBackSlash
+syn cluster p6Interp_single
+ \ add=p6EscQQ
+ \ add=p6EscBackSlash
+
+syn cluster p6Interp_b
+ \ add=@p6Interp_q
+ \ add=p6Escape
+ \ add=p6EscOpenCurly
+ \ add=p6EscCodePoint
+ \ add=p6EscHex
+ \ add=p6EscOct
+ \ add=p6EscOctOld
+ \ add=p6EscNull
+syn cluster p6Interp_backslash
+ \ add=@p6Interp_q
+ \ add=p6Escape
+ \ add=p6EscOpenCurly
+ \ add=p6EscCodePoint
+ \ add=p6EscHex
+ \ add=p6EscOct
+ \ add=p6EscOctOld
+ \ add=p6EscNull
+
+syn cluster p6Interp_qq
+ \ add=@p6Interp_scalar
+ \ add=@p6Interp_array
+ \ add=@p6Interp_hash
+ \ add=@p6Interp_function
+ \ add=@p6Interp_closure
+ \ add=@p6Interp_backslash
+syn cluster p6Interp_double
+ \ add=@p6Interp_scalar
+ \ add=@p6Interp_array
+ \ add=@p6Interp_hash
+ \ add=@p6Interp_function
+ \ add=@p6Interp_closure
+ \ add=@p6Interp_backslash
+
+syn region p6InterpScalar
+ \ start="\ze\z(\$\%(\%(\%(\d\+\|!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\|\%(\d\+\|!\|/\|¢\)\)\)"
+ \ end="\z1\zs"
+ \ contained
+ \ contains=TOP
+ \ keepend
+
+syn region p6InterpScalar
+ \ matchgroup=p6Context
+ \ start="\$\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region p6InterpArray
+ \ start="\ze\z(@\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained
+ \ contains=TOP
+ \ keepend
+
+syn region p6InterpArray
+ \ matchgroup=p6Context
+ \ start="@\ze()\@!"
+ \ start="@@\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region p6InterpHash
+ \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained
+ \ contains=TOP
+ \ keepend
+
+syn region p6InterpHash
+ \ matchgroup=p6Context
+ \ start="%\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region p6InterpFunction
+ \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained
+ \ contains=TOP
+ \ keepend
+
+syn region p6InterpFunction
+ \ matchgroup=p6Context
+ \ start="&\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region p6InterpClosure
+ \ start="\\\@<!{}\@!"
+ \ skip="{[^}]*}"
+ \ end="}"
+ \ contained
+ \ contains=TOP
+ \ keepend
+
+" generic escape
+syn match p6Escape display "\\\S" contained
+
+" escaped closing delimiters
+syn match p6EscQuote display "\\'" contained
+syn match p6EscDoubleQuote display "\\\"" contained
+syn match p6EscCloseAngle display "\\>" contained
+syn match p6EscCloseFrench display "\\»" contained
+syn match p6EscBackTick display "\\`" contained
+syn match p6EscForwardSlash display "\\/" contained
+syn match p6EscVerticalBar display "\\|" contained
+syn match p6EscExclamation display "\\!" contained
+syn match p6EscComma display "\\," contained
+syn match p6EscDollar display "\\\$" contained
+syn match p6EscCloseCurly display "\\}" contained
+syn match p6EscCloseBracket display "\\\]" contained
+
+" misc escapes
+syn match p6EscOctOld display "\\\d\{1,3}" contained
+syn match p6EscNull display "\\0\d\@!" contained
+syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint
+syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence
+syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence
+syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence
+syn match p6EscOpenCurly display "\\{" contained
+syn match p6EscHash display "\\#" contained
+syn match p6EscBackSlash display "\\\\" contained
+
+syn region p6QQSequence
+ \ matchgroup=p6Escape
+ \ start="\["
+ \ skip="\[[^\]]*]"
+ \ end="]"
+ \ contained
+ \ transparent
+ \ contains=@p6Interp_qq
+
+syn match p6CodePoint display "\%(\d\+\|\S\)" contained
+syn region p6CodePoint
+ \ matchgroup=p6Escape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+syn match p6HexSequence display "\x\+" contained
+syn region p6HexSequence
+ \ matchgroup=p6Escape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+syn match p6OctSequence display "\o\+" contained
+syn region p6OctSequence
+ \ matchgroup=p6Escape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+" matches :key, :!key, :$var, :key<var>, etc
+" Since we don't know in advance how the adverb ends, we use a trick.
+" Consume nothing with the start pattern (\ze at the beginning),
+" while capturing the whole adverb into \z1 and then putting it before
+" the match start (\zs) of the end pattern.
+syn region p6Adverb
+ \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)"
+ \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\)\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\)"
+ \ end="\z1\zs"
+ \ contained
+ \ contains=TOP
+ \ keepend
+
+" <words>
+" FIXME: not sure how to distinguish this from the "less than" operator
+" in all cases. For now, it matches if any of the following is true:
+"
+" * There is whitespace missing on either side of the "<", since
+" people tend to put spaces around "less than"
+" * It comes after "enum", "for", "any", "all", or "none"
+" * It's the first or last thing on a line (ignoring whitespace)
+" * It's preceded by "= "
+"
+" It never matches when:
+"
+" * Preceded by [<+~=] (e.g. <<foo>>, =<$foo>)
+" * Followed by [-=] (e.g. <--, <=, <==)
+syn region p6StringAngle
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
+ \ start="\%(\s\|[<+~=]\)\@<!<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
+ \ start="[<+~=]\@<!<\%(\s\|<\|=>\|[-=]\{1,2}>\@!\)\@!"
+ \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
+ \ start="[<+~=]\@<!<\%(\s*$\)\@="
+ \ start="\%(=\s\+\)\@=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
+ \ skip="\\\@<!\\>"
+ \ end=">"
+ \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle
+
+syn region p6InnerAnglesOne
+ \ matchgroup=p6StringAngle
+ \ start="<"
+ \ skip="\\\@<!\\>"
+ \ end=">"
+ \ transparent
+ \ contained
+ \ contains=p6InnerAnglesOne
+
+" <<words>>
+syn region p6StringAngles
+ \ matchgroup=p6Quote
+ \ start="<<=\@!"
+ \ skip="\\\@<!\\>"
+ \ end=">>"
+ \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ
+
+syn region p6InnerAnglesTwo
+ \ matchgroup=p6StringAngles
+ \ start="<<"
+ \ skip="\\\@<!\\>"
+ \ end=">>"
+ \ transparent
+ \ contained
+ \ contains=p6InnerAnglesTwo
+
+" «words»
+syn region p6StringFrench
+ \ matchgroup=p6Quote
+ \ start="«"
+ \ skip="\\\@<!\\»"
+ \ end="»"
+ \ contains=p6InnerFrench,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseFrench,p6Adverb,p6StringSQ,p6StringDQ
+
+syn region p6InnerFrench
+ \ matchgroup=p6StringFrench
+ \ start="«"
+ \ skip="\\\@<!\\»"
+ \ end="»"
+ \ transparent
+ \ contained
+ \ contains=p6InnerFrench
+
+" 'string'
+syn region p6StringSQ
+ \ matchgroup=p6Quote
+ \ start="'"
+ \ skip="\\\@<!\\'"
+ \ end="'"
+ \ contains=@p6Interp_q,p6EscQuote
+
+" "string"
+syn region p6StringDQ
+ \ matchgroup=p6Quote
+ \ start=+"+
+ \ skip=+\\\@<!\\"+
+ \ end=+"+
+ \ contains=@p6Interp_qq,p6EscDoubleQuote
+
+" Q// and friends.
+
+syn match p6QuoteQ display "\%([Qq]\%(ww\|to\|[qwxsahfcb]\)\?\)\>" nextgroup=p6QPairs skipwhite skipempty
+syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*"
+
+if exists("perl6_embedded_pir")
+ syn include @p6PIR syntax/pir.vim
+endif
+
+" hardcoded set of delimiters
+let s:delims = [
+ \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@<!\\\\\\\""],
+ \ ["'", "'", "p6EscQuote", "\\\\\\@<!\\\\'"],
+ \ ["/", "/", "p6EscForwardSlash", "\\\\\\@<!\\\\/"],
+ \ ["`", "`", "p6EscBackTick", "\\\\\\@<!\\\\`"],
+ \ ["|", "|", "p6EscVerticalBar", "\\\\\\@<!\\\\|"],
+ \ ["!", "!", "p6EscExclamation", "\\\\\\@<!\\\\!"],
+ \ [",", ",", "p6EscComma", "\\\\\\@<!\\\\,"],
+ \ ["\\$", "\\$", "p6EscDollar", "\\\\\\@<!\\\\\\$"],
+ \ ["{", "}", "p6EscCloseCurly", "\\%(\\\\\\@<!\\\\}\\|{[^}]*}\\)"],
+ \ ["<", ">", "p6EscCloseAngle", "\\%(\\\\\\@<!\\\\>\\|<[^>]*>\\)"],
+ \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@<!\\\\»\\|«[^»]*»\\)"],
+ \ ["\\\[", "]", "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]\\|\\[^\\]]*]\\)"],
+ \ ["\\s\\@<=(", ")", "p6EscCloseParen", "\\%(\\\\\\@<!\\\\)\\|([^)]*)\\)"],
+\ ]
+
+" double and triple delimiters too
+if exists("perl6_extended_q") || exists("perl6_extended_all")
+ call add(s:delims, ["««", "»»", "p6EscCloseFrench", "\\%(\\\\\\@<!\\\\»»\\|««\\%([^»]\\|»»\\@!\\)*»»\\)"])
+ call add(s:delims, ["«««", "»»»", "p6EscCloseFrench", "\\%(\\\\\\@<!\\\\»»»\\|«««\\%([^»]\\|»\\%(»»\\)\\@!\\)*»»»\\)"])
+ call add(s:delims, ["{{", "}}", "p6EscCloseCurly", "\\%(\\\\\\@<!\\\\}}\\|{{\\%([^}]\\|}}\\@!\\)*}}\\)"])
+ call add(s:delims, ["{{{", "}}}", "p6EscCloseCurly", "\\%(\\\\\\@<!\\\\}}}\\|{{{\\%([^}]\\|}\\%(}}\\)\\@!\\)*}}}\\)"])
+ call add(s:delims, ["\\\[\\\[", "]]", "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]]\\|\\[\\[\\%([^\\]]\\|]]\\@!\\)*]]\\)"])
+ call add(s:delims, ["\\\[\\\[\\\[", "]]]", "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]]]\\|\\[\\[\\[\\%([^\\]]\\|]\\%(]]\\)\\@!\\)*]]]\\)"])
+ call add(s:delims, ["\\s\\@<=((", "))", "p6EscCloseParen", "\\%(\\\\\\@<!\\\\))\\|((\\%([^)]\\|))\\@!\\)*))\\)"])
+ call add(s:delims, ["\\s\\@<=(((", ")))", "p6EscCloseParen", "\\%(\\\\\\@<!\\\\)))\\|(((\\%([^)]\\|)\\%())\\)\\@!\\)*)))\\)"])
+ call add(s:delims, ["\\s\\@<=<<", ">>", "p6EscCloseAngle", "\\%(\\\\\\@<!\\\\>>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"])
+ call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@<!\\\\>>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"])
+endif
+
+if !exists("perl6_extended_q") && !exists("perl6_extended_all")
+ " simple version, no special highlighting within the string
+ for [start_delim, end_delim, end_group, skip] in s:delims
+ exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained"
+ endfor
+
+ if exists("perl6_embedded_pir")
+ " highlight embedded PIR code
+ for [start_delim, end_delim, end_group, skip] in s:delims
+ exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained"
+ endfor
+ endif
+else
+ let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%("
+ let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<="
+
+ let s:adverbs = [
+ \ ["s", "scalar"],
+ \ ["a", "array"],
+ \ ["h", "hash"],
+ \ ["f", "function"],
+ \ ["c", "closure"],
+ \ ["b", "backslash"],
+ \ ["w", "words"],
+ \ ["ww", "quotewords"],
+ \ ["x", "exec"],
+ \ ]
+
+ " these can't be conjoined with q and qq (e.g. as qqq and qqqq)
+ let s:q_adverbs = [
+ \ ["q", "single"],
+ \ ["qq", "double"],
+ \ ]
+
+ for [start_delim, end_delim, end_group, skip] in s:delims
+ " Q, q, and qq with any number of (ignored) adverbs
+ exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained"
+ exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained"
+ exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained"
+
+ for [short, long] in s:adverbs
+ " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs
+ exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained"
+ exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained"
+ exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained"
+
+ " Q, q, and qq, with one significant adverb
+ exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained"
+ for [q_short, q_long] in s:q_adverbs
+ exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained"
+ endfor
+ exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained"
+ exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained"
+
+ for [short2, long2] in s:adverbs
+ " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb
+ exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained"
+ for [q_short2, q_long2] in s:q_adverbs
+ exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained"
+ endfor
+ exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained"
+ exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained"
+ endfor
+ endfor
+ endfor
+ unlet s:before s:after s:adverbs s:q_adverbs
+endif
+unlet s:delims
+
+" Match these so something else above can't. E.g. the "q" in "role q { }"
+" should not be considered a string
+syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*"
+
+" :key
+syn match p6Operator display ":\@<!::\@!!\?" nextgroup=p6Key
+syn match p6Key display "\k\%(\k\|[-']\K\@=\)*" contained
+
+" => and p5=> autoquoting
+syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>"
+syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@<!=>"
+syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>"
+syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>"
+
+" Hyperoperators. Needs to come after the quoting operators (<>, «», etc)
+exec "syn match p6HyperOp display \"»" .s:infix."»\\?\""
+exec "syn match p6HyperOp display \"«\\?".s:infix."«\""
+exec "syn match p6HyperOp display \"»" .s:infix."«\""
+exec "syn match p6HyperOp display \"«" .s:infix. "»\""
+
+exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\""
+exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\""
+exec "syn match p6HyperOp display \">>" .s:infix."<<\""
+exec "syn match p6HyperOp display \"<<" .s:infix.">>\""
+unlet s:infix
+
+" Regexes and grammars
+
+syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty
+syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained
+
+syn region p6RegexBlock
+ \ matchgroup=p6Normal
+ \ start="{"
+ \ end="}"
+ \ contained
+ \ contains=@p6Regexen,@p6Variables
+
+" Perl 6 regex bits
+
+syn cluster p6Regexen
+ \ add=p6RxMeta
+ \ add=p6RxEscape
+ \ add=p6EscHex
+ \ add=p6EscOct
+ \ add=p6EscNull
+ \ add=p6RxAnchor
+ \ add=p6RxCapture
+ \ add=p6RxGroup
+ \ add=p6RxAlternation
+ \ add=p6RxAdverb
+ \ add=p6RxAdverbArg
+ \ add=p6RxStorage
+ \ add=p6RxAssertion
+ \ add=p6RxQuoteWords
+ \ add=p6RxClosure
+ \ add=p6RxStringSQ
+ \ add=p6RxStringDQ
+ \ add=p6Comment
+
+syn match p6RxMeta display contained ".\%(\k\|\s\)\@<!"
+syn match p6RxAnchor display contained "[$^]"
+syn match p6RxEscape display contained "\\\S"
+syn match p6RxCapture display contained "[()]"
+syn match p6RxAlternation display contained "|"
+syn match p6RxRange display contained "\.\."
+
+syn region p6RxClosure
+ \ matchgroup=p6Normal
+ \ start="{"
+ \ end="}"
+ \ contained
+ \ containedin=p6RxClosure
+ \ contains=TOP
+syn region p6RxGroup
+ \ matchgroup=p6StringSpecial2
+ \ start="\["
+ \ end="]"
+ \ contained
+ \ contains=@p6Regexen,@p6Variables
+syn region p6RxAssertion
+ \ matchgroup=p6StringSpecial2
+ \ start="<"
+ \ end=">"
+ \ contained
+ \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall
+syn region p6RxAssertCall
+ \ matchgroup=p6Normal
+ \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@="
+ \ end=")\@<="
+ \ contained
+ \ contains=TOP
+syn region p6RxCharClass
+ \ matchgroup=p6StringSpecial2
+ \ start="\%(<[-!+?]\?\)\@<=\["
+ \ skip="\\]"
+ \ end="]"
+ \ contained
+ \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull
+syn region p6RxQuoteWords
+ \ matchgroup=p6StringSpecial2
+ \ start="< "
+ \ end=">"
+ \ contained
+syn region p6RxAdverb
+ \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)"
+ \ end="\z1\zs"
+ \ contained
+ \ contains=TOP
+ \ keepend
+syn region p6RxAdverbArg
+ \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=("
+ \ skip="([^)]*)"
+ \ end=")"
+ \ contained
+ \ contains=TOP
+syn region p6RxStorage
+ \ matchgroup=p6Operator
+ \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@="
+ \ end="$"
+ \ contains=TOP
+ \ contained
+
+" Perl 5 regex bits
+
+syn cluster p6RegexP5Base
+ \ add=p6RxP5Escape
+ \ add=p6RxP5Oct
+ \ add=p6RxP5Hex
+ \ add=p6RxP5EscMeta
+ \ add=p6RxP5CodePoint
+ \ add=p6RxP5Prop
+
+" normal regex stuff
+syn cluster p6RegexP5
+ \ add=@p6RegexP5Base
+ \ add=p6RxP5Quantifier
+ \ add=p6RxP5Meta
+ \ add=p6RxP5QuoteMeta
+ \ add=p6RxP5ParenMod
+ \ add=p6RxP5Verb
+ \ add=p6RxP5Count
+ \ add=p6RxP5Named
+ \ add=p6RxP5ReadRef
+ \ add=p6RxP5WriteRef
+ \ add=p6RxP5CharClass
+ \ add=p6RxP5Anchor
+
+" inside character classes
+syn cluster p6RegexP5Class
+ \ add=@p6RegexP5Base
+ \ add=p6RxP5Posix
+ \ add=p6RxP5Range
+
+syn match p6RxP5Escape display contained "\\\S"
+syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId
+syn match p6RxP5CPId display contained "\S"
+syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq
+syn match p6RxP5OctSeq display contained "\o\{1,3}"
+syn match p6RxP5Anchor display contained "[\^$]"
+syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq
+syn match p6RxP5HexSeq display contained "\x\{1,2}"
+syn region p6RxP5HexSeq
+ \ matchgroup=p6RxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn region p6RxP5Named
+ \ matchgroup=p6RxP5Escape
+ \ start="\%(\\N\)\@<={"
+ \ end="}"
+ \ contained
+syn match p6RxP5Quantifier display contained "\%([+*]\|(\@<!?\)"
+syn match p6RxP5ReadRef display contained "\\[1-9]\d\@!"
+syn match p6RxP5ReadRef display contained "\\k<\@=" nextgroup=p6RxP5ReadRefId
+syn region p6RxP5ReadRefId
+ \ matchgroup=p6RxP5Escape
+ \ start="<"
+ \ end=">"
+ \ contained
+syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId
+syn match p6RxP5WriteRefId display contained "\d\+"
+syn region p6RxP5WriteRefId
+ \ matchgroup=p6RxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId
+syn match p6RxP5PropId display contained "\a"
+syn region p6RxP5PropId
+ \ matchgroup=p6RxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match p6RxP5Meta display contained "[(|).]"
+syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code
+syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)"
+syn match p6RxP5Mod display contained "?-\?[impsx]\+"
+syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)"
+syn match p6RxP5Mod display contained "?(DEFINE)"
+syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef
+syn match p6RxP5ModDef display contained "\h\w*"
+syn region p6RxP5ModName
+ \ matchgroup=p6StringSpecial
+ \ start="?'"
+ \ end="'"
+ \ contained
+syn region p6RxP5ModName
+ \ matchgroup=p6StringSpecial
+ \ start="?P\?<"
+ \ end=">"
+ \ contained
+syn region p6RxP5Code
+ \ matchgroup=p6StringSpecial
+ \ start="??\?{"
+ \ end="})\@="
+ \ contained
+ \ contains=TOP
+syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]"
+syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId
+syn region p6RxP5CountId
+ \ matchgroup=p6RxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)"
+syn region p6RxP5QuoteMeta
+ \ matchgroup=p6RxP5Escape
+ \ start="\\Q"
+ \ end="\\E"
+ \ contained
+ \ contains=@p6Variables,p6EscBackSlash
+syn region p6RxP5CharClass
+ \ matchgroup=p6StringSpecial
+ \ start="\[\^\?"
+ \ skip="\\]"
+ \ end="]"
+ \ contained
+ \ contains=@p6RegexP5Class
+syn region p6RxP5Posix
+ \ matchgroup=p6RxP5Escape
+ \ start="\[:"
+ \ end=":]"
+ \ contained
+syn match p6RxP5Range display contained "-"
+
+" 'string' inside a regex
+syn region p6RxStringSQ
+ \ matchgroup=p6Quote
+ \ start="'"
+ \ skip="\\\@<!\\'"
+ \ end="'"
+ \ contained
+ \ contains=p6EscQuote,p6EscBackSlash
+
+" "string" inside a regex
+syn region p6RxStringDQ
+ \ matchgroup=p6Quote
+ \ start=+"+
+ \ skip=+\\\@<!\\"+
+ \ end=+"+
+ \ contained
+ \ contains=p6EscDoubleQuote,p6EscBackSlash
+
+" $!, $var, $!var, $::var, $package::var $*::package::var, etc
+" Thus must come after the matches for the "$" regex anchor, but before
+" the match for the $ regex delimiter
+syn cluster p6Variables
+ \ add=p6VarSlash
+ \ add=p6VarExclam
+ \ add=p6VarMatch
+ \ add=p6VarNum
+ \ add=p6Variable
+
+syn match p6VarSlash display "\$/"
+syn match p6VarExclam display "\$!"
+syn match p6VarMatch display "\$¢"
+syn match p6VarNum display "\$\d\+"
+syn match p6Variable display "\%(@@\|[@&$%]\$*\)\%(::\|\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\)\|\K\)\@=" nextgroup=p6Twigil,p6VarName,p6PackageScope
+syn match p6VarName display "\K\%(\k\|[-']\K\@=\)*" contained
+syn match p6Twigil display "\%([.^*?=!~]\|:\@<!::\@!\)\K\@=" nextgroup=p6PackageScope,p6VarName contained
+syn match p6PackageScope display "\%(\K\%(\k\|[-']\K\@=\)*\)\?::" nextgroup=p6PackageScope,p6VarName contained
+
+" Perl 6 regex regions
+
+" /foo/
+" Below some hacks to recognise the // variant. This is virtually impossible
+" to catch in all cases as the / is used in so many other ways, but these
+" should be the most obvious ones.
+" TODO: mostly stolen from perl.vim, might need more work
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%([$@%&*]\@<!\%(\<\%(split\|while\|until\|if\|unless\)\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=//\@!"
+ \ start="^//\@!"
+ \ start=+\s\@<=/[^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!/\@!+
+ \ skip="\\/"
+ \ end="/"
+ \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
+
+" m/foo/, mm/foo/, rx/foo/
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=//\@!"
+ \ skip="\\/"
+ \ end="/"
+ \ keepend
+ \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
+
+" m!foo!, mm!foo!, rx!foo!
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=!!\@!"
+ \ skip="\\!"
+ \ end="!"
+ \ keepend
+ \ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
+
+" m$foo$, mm$foo$, rx$foo$, m|foo|, mm|foo|, rx|foo|, etc
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([\"'`|,$]\)\$\@!"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ keepend
+ \ contains=@p6Regexen,@p6Variables
+
+" m (foo), mm (foo), rx (foo)
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s\+\)\@<=()\@!)\@!"
+ \ skip="\\)"
+ \ end=")"
+ \ contains=@p6Regexen,@p6Variables
+
+" m[foo], mm[foo], rx[foo]
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\[]\@!]\@!"
+ \ skip="\\]"
+ \ end="]"
+ \ contains=@p6Regexen,@p6Variables
+
+" m{foo}, mm{foo}, rx{foo}
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<={}\@!}\@!"
+ \ skip="\\}"
+ \ end="}"
+ \ contains=@p6Regexen,@p6Variables
+
+" m<foo>, mm<foo>, rx<foo>
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=<>\@!>\@!"
+ \ skip="\\>"
+ \ end=">"
+ \ contains=@p6Regexen,@p6Variables
+
+" m«foo», mm«foo», rx«foo»
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=«»\@!»\@!"
+ \ skip="\\»"
+ \ end="»"
+ \ contains=@p6Regexen,@p6Variables
+
+" Substitutions
+
+" s/foo/bar/
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=/"
+ \ skip="\\/"
+ \ end="/"me=e-1
+ \ keepend
+ \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
+ \ nextgroup=p6Substitution
+
+syn region p6Substitution
+ \ matchgroup=p6Quote
+ \ start="/"
+ \ skip="\\/"
+ \ end="/"
+ \ contained
+ \ keepend
+ \ contains=@p6Interp_qq
+
+" s!foo!bar!
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=!"
+ \ skip="\\!"
+ \ end="!"me=e-1
+ \ keepend
+ \ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
+ \ nextgroup=p6Substitution
+
+syn region p6Substitution
+ \ matchgroup=p6Quote
+ \ start="!"
+ \ skip="\\!"
+ \ end="!"
+ \ contained
+ \ keepend
+ \ contains=@p6Interp_qq
+
+" s$foo$bar$, s|foo|bar, etc
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([\"'`|,$]\)"
+ \ skip="\\\z1"
+ \ end="\z1"me=e-1
+ \ keepend
+ \ contains=@p6Regexen,@p6Variables
+ \ nextgroup=p6Substitution
+
+syn region p6Substitution
+ \ matchgroup=p6Quote
+ \ start="\z([\"'`|,$]\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ keepend
+ \ contains=@p6Interp_qq
+
+" s{foo}
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<={}\@!"
+ \ skip="\\}"
+ \ end="}"
+ \ contains=@p6Regexen,@p6Variables
+
+" s[foo]
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\[]\@!"
+ \ skip="\\]"
+ \ end="]"
+ \ contains=@p6Regexen,@p6Variables
+
+" s<foo>
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=<>\@!"
+ \ skip="\\>"
+ \ end=">"
+ \ contains=@p6Regexen,@p6Variables
+
+" s«foo»
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=«»\@!"
+ \ skip="\\»"
+ \ end="»"
+ \ contains=@p6Regexen,@p6Variables
+
+" s (foo)
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s\+\)\@<=()\@!"
+ \ skip="\\)"
+ \ end=")"
+ \ contains=@p6Regexen,@p6Variables
+
+" Perl 5 regex regions
+
+" m:P5//
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=/"
+ \ skip="\\/"
+ \ end="/"
+ \ contains=@p6RegexP5,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
+
+" m:P5!!
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=!"
+ \ skip="\\!"
+ \ end="!"
+ \ contains=@p6RegexP5,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
+
+" m:P5$$, m:P5||, etc
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=\z([\"'`|,$]\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contains=@p6RegexP5,@p6Variables
+
+" m:P5 ()
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s\+\)\@<=()\@!"
+ \ skip="\\)"
+ \ end=")"
+ \ contains=@p6RegexP5,@p6Variables
+
+" m:P5[]
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=[]\@!"
+ \ skip="\\]"
+ \ end="]"
+ \ contains=@p6RegexP5,@p6Variables
+
+" m:P5{}
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<={}\@!"
+ \ skip="\\}"
+ \ end="}"
+ \ contains=@p6RegexP5,p6Variables
+
+" m:P5<>
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=<>\@!"
+ \ skip="\\>"
+ \ end=">"
+ \ contains=@p6RegexP5,p6Variables
+
+" m:P5«»
+syn region p6Match
+ \ matchgroup=p6Quote
+ \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=«»\@!"
+ \ skip="\\»"
+ \ end="»"
+ \ contains=@p6RegexP5,p6Variables
+
+" Transliteration
+
+" tr/foo/bar/, tr|foo|bar, etc
+syn region p6String
+ \ matchgroup=p6Quote
+ \ start="\%(\<tr\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([/\"'`|!,$]\)"
+ \ skip="\\\z1"
+ \ end="\z1"me=e-1
+ \ contains=p6RxRange
+ \ nextgroup=p6Transliteration
+
+syn region p6Transliteration
+ \ matchgroup=p6Quote
+ \ start="\z([/\"'`|!,$]\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ contains=@p6Interp_qq
+
+" Comments
+
+" normal end-of-line comment
+syn match p6Comment display "#.*" contains=p6Attention
+
+" Multiline comments. Arbitrary numbers of opening brackets are allowed,
+" but we only define regions for 1 to 3
+syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#("
+ \ skip="([^)]*)"
+ \ end=")"
+ \ matchgroup=p6Error
+ \ start="^#("
+ \ contains=p6Attention,p6Comment
+syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#\["
+ \ skip="\[[^\]]*]"
+ \ end="]"
+ \ matchgroup=p6Error
+ \ start="^#\["
+ \ contains=p6Attention,p6Comment
+syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#{"
+ \ skip="{[^}]*}"
+ \ end="}"
+ \ matchgroup=p6Error
+ \ start="^#{"
+ \ contains=p6Attention,p6Comment
+syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ matchgroup=p6Error
+ \ start="^#<"
+ \ contains=p6Attention,p6Comment
+syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ matchgroup=p6Error
+ \ start="^#«"
+ \ contains=p6Attention,p6Comment
+
+" double and triple delimiters
+if exists("perl6_extended_comments") || exists("perl6_extended_all")
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#(("
+ \ skip="((\%([^)\|))\@!]\)*))"
+ \ end="))"
+ \ matchgroup=p6Error
+ \ start="^#(("
+ \ contains=p6Attention,p6Comment
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#((("
+ \ skip="(((\%([^)]\|)\%())\)\@!\)*)))"
+ \ end=")))"
+ \ matchgroup=p6Error
+ \ start="^#((("
+ \ contains=p6Attention,p6Comment
+
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#\[\["
+ \ skip="\[\[\%([^\]]\|]]\@!\)*]]"
+ \ end="]]"
+ \ matchgroup=p6Error
+ \ start="^#\[\["
+ \ contains=p6Attention,p6Comment
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#\[\[\["
+ \ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]"
+ \ end="]]]"
+ \ matchgroup=p6Error
+ \ start="^#\[\[\["
+ \ contains=p6Attention,p6Comment
+
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#{{"
+ \ skip="{{\%([^}]\|}}\@!\)*}}"
+ \ end="}}"
+ \ matchgroup=p6Error
+ \ start="^#{{"
+ \ contains=p6Attention,p6Comment
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#{{{"
+ \ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}"
+ \ end="}}}"
+ \ matchgroup=p6Error
+ \ start="^#{{{"
+ \ contains=p6Attention,p6Comment
+
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#<<"
+ \ skip="<<\%([^>]\|>>\@!\)*>>"
+ \ end=">>"
+ \ matchgroup=p6Error
+ \ start="^#<<"
+ \ contains=p6Attention,p6Comment
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#<<<"
+ \ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>"
+ \ end=">>>"
+ \ matchgroup=p6Error
+ \ start="^#<<<"
+ \ contains=p6Attention,p6Comment
+
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#««"
+ \ skip="««\%([^»]\|»»\@!\)*»»"
+ \ end="»»"
+ \ matchgroup=p6Error
+ \ start="^#««"
+ \ contains=p6Attention,p6Comment
+ syn region p6Comment
+ \ matchgroup=p6Comment
+ \ start="^\@<!#«««"
+ \ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»"
+ \ end="»»»"
+ \ matchgroup=p6Error
+ \ start="^#«««"
+ \ contains=p6Attention,p6Comment
+endif
+
+" Pod
+
+" Abbreviated blocks (implicit code forbidden)
+syn region p6PodAbbrRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=\ze\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contains=p6PodAbbrNoCodeType
+ \ keepend
+
+syn region p6PodAbbrNoCodeType
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=p6PodName,p6PodAbbrNoCode
+
+syn match p6PodName contained ".\+" contains=@p6PodFormat
+syn match p6PodComment contained ".\+"
+
+syn region p6PodAbbrNoCode
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=@p6PodFormat
+
+" Abbreviated blocks (everything is code)
+syn region p6PodAbbrRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=\zecode\>"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contains=p6PodAbbrCodeType
+ \ keepend
+
+syn region p6PodAbbrCodeType
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=p6PodName,p6PodAbbrCode
+
+syn region p6PodAbbrCode
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+
+" Abbreviated blocks (everything is a comment)
+syn region p6PodAbbrRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=\zecomment\>"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contains=p6PodAbbrCommentType
+ \ keepend
+
+syn region p6PodAbbrCommentType
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=p6PodComment,p6PodAbbrNoCode
+
+" Abbreviated blocks (implicit code allowed)
+syn region p6PodAbbrRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contains=p6PodAbbrType
+ \ keepend
+
+syn region p6PodAbbrType
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=p6PodName,p6PodAbbr
+
+syn region p6PodAbbr
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=@p6PodFormat,p6PodImplicitCode
+
+" Abbreviated block to end-of-file
+syn region p6PodAbbrRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=\zeEND\>"
+ \ end="\%$"
+ \ contains=p6PodAbbrEOFType
+ \ keepend
+
+syn region p6PodAbbrEOFType
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="\%$"
+ \ contained
+ \ contains=p6PodName,p6PodAbbrEOF
+
+syn region p6PodAbbrEOF
+ \ start="^"
+ \ end="\%$"
+ \ contained
+ \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
+
+" Directives
+syn region p6PodDirectRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=\%(config\|use\)\>"
+ \ end="^\ze\%([^=]\|=\K\|\s*$\)"
+ \ contains=p6PodDirectArgRegion
+ \ keepend
+
+syn region p6PodDirectArgRegion
+ \ matchgroup=p6PodType
+ \ start="\S\+"
+ \ end="^\ze\%([^=]\|=\K\|\s*$\)"
+ \ contained
+ \ contains=p6PodDirectConfigRegion
+
+syn region p6PodDirectConfigRegion
+ \ start=""
+ \ end="^\ze\%([^=]\|=\K\|\s*$\)"
+ \ contained
+ \ contains=@p6PodConfig
+
+" =encoding is a special directive
+syn region p6PodDirectRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=encoding\>"
+ \ end="^\ze\%([^=]\|=\K\|\s*$\)"
+ \ contains=p6PodEncodingArgRegion
+ \ keepend
+
+syn region p6PodEncodingArgRegion
+ \ matchgroup=p6PodName
+ \ start="\S\+"
+ \ end="^\ze\%([^=]\|=\K\|\s*$\)"
+ \ contained
+
+" Paragraph blocks (implicit code forbidden)
+syn region p6PodParaRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=for\>"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contains=p6PodParaNoCodeTypeRegion
+ \ keepend
+ \ extend
+
+syn region p6PodParaNoCodeTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=p6PodParaNoCode,p6PodParaConfigRegion
+
+syn region p6PodParaConfigRegion
+ \ start=""
+ \ end="^\ze\%([^=]\|=\k\@<!\)"
+ \ contained
+ \ contains=@p6PodConfig
+
+syn region p6PodParaNoCode
+ \ start="^[^=]"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=@p6PodFormat
+
+" Paragraph blocks (everything is code)
+syn region p6PodParaRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=for\>\ze\s*code\>"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contains=p6PodParaCodeTypeRegion
+ \ keepend
+ \ extend
+
+syn region p6PodParaCodeTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=p6PodParaCode,p6PodParaConfigRegion
+
+syn region p6PodParaCode
+ \ start="^[^=]"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+
+" Paragraph blocks (implicit code allowed)
+syn region p6PodParaRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contains=p6PodParaTypeRegion
+ \ keepend
+ \ extend
+
+syn region p6PodParaTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=p6PodPara,p6PodParaConfigRegion
+
+syn region p6PodPara
+ \ start="^[^=]"
+ \ end="^\ze\%(\s*$\|=\K\)"
+ \ contained
+ \ contains=@p6PodFormat,p6PodImplicitCode
+
+" Paragraph block to end-of-file
+syn region p6PodParaRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=for\>\ze\s\+END\>"
+ \ end="\%$"
+ \ contains=p6PodParaEOFTypeRegion
+ \ keepend
+ \ extend
+
+syn region p6PodParaEOFTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="\%$"
+ \ contained
+ \ contains=p6PodParaEOF,p6PodParaConfigRegion
+
+syn region p6PodParaEOF
+ \ start="^[^=]"
+ \ end="\%$"
+ \ contained
+ \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
+
+" Delimited blocks (implicit code forbidden)
+syn region p6PodDelimRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=begin\>"
+ \ end="^=end\>"
+ \ contains=p6PodDelimNoCodeTypeRegion
+ \ keepend
+ \ extend
+
+syn region p6PodDelimNoCodeTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze=end\>"
+ \ contained
+ \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion
+
+syn region p6PodDelimConfigRegion
+ \ start=""
+ \ end="^\ze\%([^=]\|=\K\|\s*$\)"
+ \ contained
+ \ contains=@p6PodConfig
+
+syn region p6PodDelimNoCode
+ \ start="^"
+ \ end="^\ze=end\>"
+ \ contained
+ \ contains=@p6PodNestedBlocks,@p6PodFormat
+
+" Delimited blocks (everything is code)
+syn region p6PodDelimRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=begin\>\ze\s*code\>"
+ \ end="^=end\>"
+ \ contains=p6PodDelimCodeTypeRegion
+ \ keepend
+ \ extend
+
+syn region p6PodDelimCodeTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze=end\>"
+ \ contained
+ \ contains=p6PodDelimCode,p6PodDelimConfigRegion
+
+syn region p6PodDelimCode
+ \ start="^"
+ \ end="^\ze=end\>"
+ \ contained
+ \ contains=@p6PodNestedBlocks
+
+" Delimited blocks (implicit code allowed)
+syn region p6PodDelimRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^=end\>"
+ \ contains=p6PodDelimTypeRegion
+ \ keepend
+ \ extend
+
+syn region p6PodDelimTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="^\ze=end\>"
+ \ contained
+ \ contains=p6PodDelim,p6PodDelimConfigRegion
+
+syn region p6PodDelim
+ \ start="^"
+ \ end="^\ze=end\>"
+ \ contained
+ \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
+
+" Delimited block to end-of-file
+syn region p6PodDelimRegion
+ \ matchgroup=p6PodPrefix
+ \ start="^=begin\>\ze\s\+END\>"
+ \ end="\%$"
+ \ contains=p6PodDelimEOFTypeRegion
+ \ extend
+
+syn region p6PodDelimEOFTypeRegion
+ \ matchgroup=p6PodType
+ \ start="\K\k*"
+ \ end="\%$"
+ \ contained
+ \ contains=p6PodDelimEOF,p6PodDelimConfigRegion
+
+syn region p6PodDelimEOF
+ \ start="^"
+ \ end="\%$"
+ \ contained
+ \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
+
+syn cluster p6PodConfig
+ \ add=p6PodConfigOperator
+ \ add=p6PodExtraConfig
+ \ add=p6StringAuto
+ \ add=p6PodAutoQuote
+ \ add=p6StringSQ
+
+syn region p6PodParens
+ \ start="("
+ \ end=")"
+ \ contained
+ \ contains=p6Number,p6StringSQ
+
+syn match p6PodAutoQuote display contained "=>"
+syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption
+syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle
+syn match p6PodExtraConfig display contained "^="
+syn match p6PodVerticalBar display contained "|"
+syn match p6PodColon display contained ":"
+syn match p6PodSemicolon display contained ";"
+syn match p6PodComma display contained ","
+syn match p6PodImplicitCode display contained "^\s.*"
+
+syn region p6PodDelimEndRegion
+ \ matchgroup=p6PodType
+ \ start="\%(^=end\>\)\@<="
+ \ end="\K\k*"
+
+" These may appear inside delimited blocks
+syn cluster p6PodNestedBlocks
+ \ add=p6PodAbbrRegion
+ \ add=p6PodDirectRegion
+ \ add=p6PodParaRegion
+ \ add=p6PodDelimRegion
+ \ add=p6PodDelimEndRegion
+
+" Pod formatting codes
+
+syn cluster p6PodFormat
+ \ add=p6PodFormatOne
+ \ add=p6PodFormatTwo
+ \ add=p6PodFormatThree
+ \ add=p6PodFormatFrench
+
+" Balanced angles found inside formatting codes. Ensures proper nesting.
+
+syn region p6PodFormatAnglesOne
+ \ matchgroup=p6PodFormat
+ \ start="<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ transparent
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne
+
+syn region p6PodFormatAnglesTwo
+ \ matchgroup=p6PodFormat
+ \ start="<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ transparent
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo
+
+syn region p6PodFormatAnglesThree
+ \ matchgroup=p6PodFormat
+ \ start="<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ transparent
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree
+
+syn region p6PodFormatAnglesFrench
+ \ matchgroup=p6PodFormat
+ \ start="«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ transparent
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree
+
+" All formatting codes
+
+syn region p6PodFormatOne
+ \ matchgroup=p6PodFormatCode
+ \ start="\u<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne
+
+syn region p6PodFormatTwo
+ \ matchgroup=p6PodFormatCode
+ \ start="\u<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo
+
+syn region p6PodFormatThree
+ \ matchgroup=p6PodFormatCode
+ \ start="\u<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree
+
+syn region p6PodFormatFrench
+ \ matchgroup=p6PodFormatCode
+ \ start="\u«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree
+
+" C<> and V<> don't allow nested formatting formatting codes
+
+syn region p6PodFormatOne
+ \ matchgroup=p6PodFormatCode
+ \ start="[CV]<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=p6PodFormatAnglesOne
+
+syn region p6PodFormatTwo
+ \ matchgroup=p6PodFormatCode
+ \ start="[CV]<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=p6PodFormatAnglesTwo
+
+syn region p6PodFormatThree
+ \ matchgroup=p6PodFormatCode
+ \ start="[CV]<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=p6PodFormatAnglesThree
+
+syn region p6PodFormatFrench
+ \ matchgroup=p6PodFormatCode
+ \ start="[CV]«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=p6PodFormatAnglesFrench
+
+" L<> can have a "|" separator
+
+syn region p6PodFormatOne
+ \ matchgroup=p6PodFormatCode
+ \ start="L<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar
+
+syn region p6PodFormatTwo
+ \ matchgroup=p6PodFormatCode
+ \ start="L<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar
+
+syn region p6PodFormatThree
+ \ matchgroup=p6PodFormatCode
+ \ start="L<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar
+
+syn region p6PodFormatFrench
+ \ matchgroup=p6PodFormatCode
+ \ start="L«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar
+
+" E<> can have a ";" separator
+
+syn region p6PodFormatOne
+ \ matchgroup=p6PodFormatCode
+ \ start="E<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon
+
+syn region p6PodFormatTwo
+ \ matchgroup=p6PodFormatCode
+ \ start="E<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon
+
+syn region p6PodFormatThree
+ \ matchgroup=p6PodFormatCode
+ \ start="E<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon
+
+syn region p6PodFormatFrench
+ \ matchgroup=p6PodFormatCode
+ \ start="E«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon
+
+" M<> can have a ":" separator
+
+syn region p6PodFormatOne
+ \ matchgroup=p6PodFormatCode
+ \ start="M<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon
+
+syn region p6PodFormatTwo
+ \ matchgroup=p6PodFormatCode
+ \ start="M<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon
+
+syn region p6PodFormatThree
+ \ matchgroup=p6PodFormatCode
+ \ start="M<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon
+
+syn region p6PodFormatFrench
+ \ matchgroup=p6PodFormatCode
+ \ start="M«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon
+
+" D<> can have "|" and ";" separators
+
+syn region p6PodFormatOne
+ \ matchgroup=p6PodFormatCode
+ \ start="D<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon
+
+syn region p6PodFormatTwo
+ \ matchgroup=p6PodFormatCode
+ \ start="D<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon
+
+syn region p6PodFormatThree
+ \ matchgroup=p6PodFormatCode
+ \ start="D<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon
+
+syn region p6PodFormatFrench
+ \ matchgroup=p6PodFormatCode
+ \ start="D«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon
+
+" X<> can have "|", "," and ";" separators
+
+syn region p6PodFormatOne
+ \ matchgroup=p6PodFormatCode
+ \ start="X<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma
+
+syn region p6PodFormatTwo
+ \ matchgroup=p6PodFormatCode
+ \ start="X<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma
+
+syn region p6PodFormatThree
+ \ matchgroup=p6PodFormatCode
+ \ start="X<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma
+
+syn region p6PodFormatFrench
+ \ matchgroup=p6PodFormatCode
+ \ start="X«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma
+
+" 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_perl6_syntax_inits")
+ if version < 508
+ let did_perl6_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink p6EscOctOld p6Error
+ HiLink p6PackageTwigil p6Twigil
+ HiLink p6StringAngle p6String
+ HiLink p6StringFrench p6String
+ HiLink p6StringAngles p6String
+ HiLink p6StringSQ p6String
+ HiLink p6StringDQ p6String
+ HiLink p6StringQ p6String
+ HiLink p6RxStringSQ p6String
+ HiLink p6RxStringDQ p6String
+ HiLink p6Substitution p6String
+ HiLink p6Transliteration p6String
+ HiLink p6StringAuto p6String
+ HiLink p6StringP5Auto p6String
+ HiLink p6Key p6String
+ HiLink p6Match p6String
+ HiLink p6RegexBlock p6String
+ HiLink p6RxP5CharClass p6String
+ HiLink p6RxP5QuoteMeta p6String
+ HiLink p6RxCharClass p6String
+ HiLink p6RxQuoteWords p6String
+ HiLink p6ReduceOp p6Operator
+ HiLink p6ReverseCrossOp p6Operator
+ HiLink p6HyperOp p6Operator
+ HiLink p6QuoteQ p6Operator
+ HiLink p6RxRange p6StringSpecial
+ HiLink p6RxAnchor p6StringSpecial
+ HiLink p6RxP5Anchor p6StringSpecial
+ HiLink p6CodePoint p6StringSpecial
+ HiLink p6RxMeta p6StringSpecial
+ HiLink p6RxP5Range p6StringSpecial
+ HiLink p6RxP5CPId p6StringSpecial
+ HiLink p6RxP5Posix p6StringSpecial
+ HiLink p6RxP5Mod p6StringSpecial
+ HiLink p6RxP5HexSeq p6StringSpecial
+ HiLink p6RxP5OctSeq p6StringSpecial
+ HiLink p6RxP5WriteRefId p6StringSpecial
+ HiLink p6HexSequence p6StringSpecial
+ HiLink p6OctSequence p6StringSpecial
+ HiLink p6RxP5Named p6StringSpecial
+ HiLink p6RxP5PropId p6StringSpecial
+ HiLink p6RxP5Quantifier p6StringSpecial
+ HiLink p6RxP5CountId p6StringSpecial
+ HiLink p6RxP5Verb p6StringSpecial
+ HiLink p6Escape p6StringSpecial2
+ HiLink p6EscNull p6StringSpecial2
+ HiLink p6EscHash p6StringSpecial2
+ HiLink p6EscQQ p6StringSpecial2
+ HiLink p6EscQuote p6StringSpecial2
+ HiLink p6EscDoubleQuote p6StringSpecial2
+ HiLink p6EscBackTick p6StringSpecial2
+ HiLink p6EscForwardSlash p6StringSpecial2
+ HiLink p6EscVerticalBar p6StringSpecial2
+ HiLink p6EscExclamation p6StringSpecial2
+ HiLink p6EscDollar p6StringSpecial2
+ HiLink p6EscOpenCurly p6StringSpecial2
+ HiLink p6EscCloseCurly p6StringSpecial2
+ HiLink p6EscCloseBracket p6StringSpecial2
+ HiLink p6EscCloseAngle p6StringSpecial2
+ HiLink p6EscCloseFrench p6StringSpecial2
+ HiLink p6EscBackSlash p6StringSpecial2
+ HiLink p6RxEscape p6StringSpecial2
+ HiLink p6RxCapture p6StringSpecial2
+ HiLink p6RxAlternation p6StringSpecial2
+ HiLink p6RxP5 p6StringSpecial2
+ HiLink p6RxP5ReadRef p6StringSpecial2
+ HiLink p6RxP5Oct p6StringSpecial2
+ HiLink p6RxP5Hex p6StringSpecial2
+ HiLink p6RxP5EscMeta p6StringSpecial2
+ HiLink p6RxP5Meta p6StringSpecial2
+ HiLink p6RxP5Escape p6StringSpecial2
+ HiLink p6RxP5CodePoint p6StringSpecial2
+ HiLink p6RxP5WriteRef p6StringSpecial2
+ HiLink p6RxP5Prop p6StringSpecial2
+
+ HiLink p6Property Tag
+ HiLink p6Attention Todo
+ HiLink p6Type Type
+ HiLink p6Error Error
+ HiLink p6BlockLabel Label
+ HiLink p6Float Float
+ HiLink p6Normal Normal
+ HiLink p6Package Normal
+ HiLink p6PackageScope Normal
+ HiLink p6Number Number
+ HiLink p6VersionNum Number
+ HiLink p6String String
+ HiLink p6Repeat Repeat
+ HiLink p6Keyword Keyword
+ HiLink p6Pragma Keyword
+ HiLink p6Module Keyword
+ HiLink p6DeclareRoutine Keyword
+ HiLink p6VarStorage Special
+ HiLink p6FlowControl Special
+ HiLink p6NumberBase Special
+ HiLink p6Twigil Special
+ HiLink p6StringSpecial2 Special
+ HiLink p6VersionDot Special
+ HiLink p6Comment Comment
+ HiLink p6Include Include
+ HiLink p6Shebang PreProc
+ HiLink p6ClosureTrait PreProc
+ HiLink p6Routine Function
+ HiLink p6Operator Operator
+ HiLink p6Version Operator
+ HiLink p6Context Operator
+ HiLink p6Quote Delimiter
+ HiLink p6TypeConstraint PreCondit
+ HiLink p6Exception Exception
+ HiLink p6Placeholder Identifier
+ HiLink p6Variable Identifier
+ HiLink p6VarSlash Identifier
+ HiLink p6VarNum Identifier
+ HiLink p6VarExclam Identifier
+ HiLink p6VarMatch Identifier
+ HiLink p6VarName Identifier
+ HiLink p6MatchVar Identifier
+ HiLink p6RxP5ReadRefId Identifier
+ HiLink p6RxP5ModDef Identifier
+ HiLink p6RxP5ModName Identifier
+ HiLink p6Conditional Conditional
+ HiLink p6StringSpecial SpecialChar
+
+ HiLink p6PodAbbr p6Pod
+ HiLink p6PodAbbrEOF p6Pod
+ HiLink p6PodAbbrNoCode p6Pod
+ HiLink p6PodAbbrCode p6PodCode
+ HiLink p6PodPara p6Pod
+ HiLink p6PodParaEOF p6Pod
+ HiLink p6PodParaNoCode p6Pod
+ HiLink p6PodParaCode p6PodCode
+ HiLink p6PodDelim p6Pod
+ HiLink p6PodDelimEOF p6Pod
+ HiLink p6PodDelimNoCode p6Pod
+ HiLink p6PodDelimCode p6PodCode
+ HiLink p6PodImplicitCode p6PodCode
+ HiLink p6PodExtraConfig p6PodPrefix
+ HiLink p6PodVerticalBar p6PodFormatCode
+ HiLink p6PodColon p6PodFormatCode
+ HiLink p6PodSemicolon p6PodFormatCode
+ HiLink p6PodComma p6PodFormatCode
+ HiLink p6PodFormatOne p6PodFormat
+ HiLink p6PodFormatTwo p6PodFormat
+ HiLink p6PodFormatThree p6PodFormat
+ HiLink p6PodFormatFrench p6PodFormat
+
+ HiLink p6PodType Type
+ HiLink p6PodConfigOption String
+ HiLink p6PodCode PreProc
+ HiLink p6Pod Comment
+ HiLink p6PodComment Comment
+ HiLink p6PodAutoQuote Operator
+ HiLink p6PodConfigOperator Operator
+ HiLink p6PodPrefix Statement
+ HiLink p6PodName Identifier
+ HiLink p6PodFormatCode SpecialChar
+ HiLink p6PodFormat SpecialComment
+
+ delcommand HiLink
+endif
+
+" Syncing to speed up processing
+"syn sync match p6SyncPod groupthere p6PodAbbrRegion "^=\K\k*\>"
+"syn sync match p6SyncPod groupthere p6PodDirectRegion "^=\%(config\|use\|encoding\)\>"
+"syn sync match p6SyncPod groupthere p6PodParaRegion "^=for\>"
+"syn sync match p6SyncPod groupthere p6PodDelimRegion "^=begin\>"
+"syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>"
+
+" Let's just sync whole file, the other methods aren't reliable (or I don't
+" know how to use them reliably)
+syn sync fromstart
+
+setlocal foldmethod=syntax
+
+let b:current_syntax = "perl6"
+
+" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
diff --git a/runtime/syntax/rhelp.vim b/runtime/syntax/rhelp.vim
index fa585b28..98e5bc0c 100644
--- a/runtime/syntax/rhelp.vim
+++ b/runtime/syntax/rhelp.vim
@@ -1,14 +1,17 @@
" Vim syntax file
" Language: R Help File
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
-" Last Change: 2009 Mai 12
-" Version: 0.7.2
-" SVN: $Id: rhelp.vim 86 2009-05-12 19:23:47Z ranke $
+" Last Change: 2010 Apr 22
+" Version: 0.7.3
+" SVN: $Id: rhelp.vim 88 2010-04-22 19:37:09Z ranke $
" Remarks: - Now includes R syntax highlighting in the appropriate
" sections if an r.vim file is in the same directory or in the
" default debian location.
" - There is no Latex markup in equations
" - Thanks to Will Gray for finding and fixing a bug
+" - No support for \if, \ifelse and \out as I don't understand
+" them and have no examples at hand (help welcome).
+" - No support for \var tag within quoted string (dito)
" Version Clears: {{{1
" For version 5.x: Clear all syntax items
@@ -37,6 +40,7 @@ syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimi
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained
syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=/)/ contains=@R,rhelpDots contained
+syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end=/}/ contains=@R
" Strings {{{1
syn region rhelpString start=/"/ end=/"/
@@ -55,6 +59,56 @@ syn match rhelpKeyword "--"
syn match rhelpKeyword "---"
syn match rhelpKeyword "<"
syn match rhelpKeyword ">"
+syn match rhelpKeyword "\\ge"
+syn match rhelpKeyword "\\le"
+syn match rhelpKeyword "\\alpha"
+syn match rhelpKeyword "\\beta"
+syn match rhelpKeyword "\\gamma"
+syn match rhelpKeyword "\\delta"
+syn match rhelpKeyword "\\epsilon"
+syn match rhelpKeyword "\\zeta"
+syn match rhelpKeyword "\\eta"
+syn match rhelpKeyword "\\theta"
+syn match rhelpKeyword "\\iota"
+syn match rhelpKeyword "\\kappa"
+syn match rhelpKeyword "\\lambda"
+syn match rhelpKeyword "\\mu"
+syn match rhelpKeyword "\\nu"
+syn match rhelpKeyword "\\xi"
+syn match rhelpKeyword "\\omicron"
+syn match rhelpKeyword "\\pi"
+syn match rhelpKeyword "\\rho"
+syn match rhelpKeyword "\\sigma"
+syn match rhelpKeyword "\\tau"
+syn match rhelpKeyword "\\upsilon"
+syn match rhelpKeyword "\\phi"
+syn match rhelpKeyword "\\chi"
+syn match rhelpKeyword "\\psi"
+syn match rhelpKeyword "\\omega"
+syn match rhelpKeyword "\\Alpha"
+syn match rhelpKeyword "\\Beta"
+syn match rhelpKeyword "\\Gamma"
+syn match rhelpKeyword "\\Delta"
+syn match rhelpKeyword "\\Epsilon"
+syn match rhelpKeyword "\\Zeta"
+syn match rhelpKeyword "\\Eta"
+syn match rhelpKeyword "\\Theta"
+syn match rhelpKeyword "\\Iota"
+syn match rhelpKeyword "\\Kappa"
+syn match rhelpKeyword "\\Lambda"
+syn match rhelpKeyword "\\Mu"
+syn match rhelpKeyword "\\Nu"
+syn match rhelpKeyword "\\Xi"
+syn match rhelpKeyword "\\Omicron"
+syn match rhelpKeyword "\\Pi"
+syn match rhelpKeyword "\\Rho"
+syn match rhelpKeyword "\\Sigma"
+syn match rhelpKeyword "\\Tau"
+syn match rhelpKeyword "\\Upsilon"
+syn match rhelpKeyword "\\Phi"
+syn match rhelpKeyword "\\Chi"
+syn match rhelpKeyword "\\Psi"
+syn match rhelpKeyword "\\Omega"
" Links {{{1
syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend
@@ -112,6 +166,7 @@ syn match rhelpSection "\\donttest\>"
" Freely named Sections {{{1
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/
+syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end=/}/
" R help file comments {{{1
syn match rhelpComment /%.*$/ contained
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index 6ef4fba1..2b1269fc 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: Nov 17, 2009
-" Version: 110
+" Last Change: Apr 12, 2010
+" Version: 111
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
" For options and settings, please use: :help ft-sh-syntax
" This file includes many ideas from ric Brunet (eric.brunet@ens.fr)
@@ -59,7 +59,7 @@ if !exists("s:sh_fold_ifdofor")
let s:sh_fold_ifdofor = 4
endif
if g:sh_fold_enabled && &fdm == "manual"
- set fdm=syntax
+ setlocal fdm=syntax
endif
" sh syntax is case sensitive {{{1
@@ -157,7 +157,7 @@ syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")" contai
" Tests: {{{1
"=======
-syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList,shSpecial
+syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial
syn region shTest transparent matchgroup=shStatement start="\<test\s" 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
diff --git a/runtime/syntax/sisu.vim b/runtime/syntax/sisu.vim
index c7cdf2df..6944782f 100644
--- a/runtime/syntax/sisu.vim
+++ b/runtime/syntax/sisu.vim
@@ -1,6 +1,6 @@
"SiSU Vim syntax file
"SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
-"SiSU Markup: SiSU (sisu-0.69.0, 2008-09-16)
+"SiSU Markup: SiSU (sisu-2.0.1, 2010-03-17)
"(originally looked at Ruby Vim by Mirko Nasato)
if version < 600
@@ -16,25 +16,26 @@ syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
" Markers Identifiers:
if !exists("sisu_no_identifiers")
syn match sisu_mark_endnote "\~^"
- syn match sisu_contain contains=@NoSpell "</\?sub>"
syn match sisu_break contains=@NoSpell "<br>\|<br />"
- syn match sisu_control contains=@NoSpell "<p>\|</p>\|<p />\|<:p[bn]>"
- syn match sisu_html "<center>\|</center>"
+ syn match sisu_control contains=@NoSpell "<:p[bn]>"
syn match sisu_marktail "[~-]#"
- syn match sisu_html contains=@NoSpell "<td>\|<td \|<tr>\|</td>\|</tr>\|<table>\|<table \|</table>"
syn match sisu_control "\""
syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+"
- "metaverse specific
- syn match sisu_ocn contains=@NoSpell "<\~\d\+;\w\d\+;\w\d\+>"
- syn match sisu_marktail "<\~#>"
- syn match sisu_markpara contains=@NoSpell "<:i[1-9]>"
syn match sisu_link " \*\~\S\+"
syn match sisu_action "^<:insert\d\+>"
syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$"
syn match sisu_require contains=@NoSpell "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$"
- syn match sisu_contain "<:e>"
+ syn match sisu_structure "^:A\~$"
+ syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|note\):\s" "group=sisu_header_content
+ syn match sisu_sub_header_creator "^\s\+:\(author\|translator\|illustrator\|photographer\|audio\|digitized_by\|prepared_by\):\s"
+ syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|audio\|digitization\|license\|all\):\s" "access_rights license
+ syn match sisu_sub_header_classify "^\s\+:\(type\|subject\|topic_register\|keywords\|coverage\|relation\|format\|identifier\|isbn\|dewey\|loc\|pg\):\s"
+ syn match sisu_sub_header_dates "^\s\+:\(published\|available\|created\|issued\|valid\|modified\|added_to_site\|translated\|original_publication\):\s"
+ syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|institution\|nationality\|source\):\s"
+ syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|italics\|bold\|skin\|stamp\|promo\|ad\|manpage\):\s"
+ syn match sisu_sub_header_notes "^\s\+:\(comment\|abstract\|description\|history\|prefix\|prefix_[ab]\):\s"
syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]"
syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]"
syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]"
@@ -57,19 +58,28 @@ syn match sisu_error contains=sisu_error "<a href\|</a>]"
"url/link
syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$"
"header
-syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(\S\+\|[^-]\)" end="\n$"
-syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^[@%]\S\+:[+-]\?\s"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_dates matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_source matchgroup=sisu_header start="^[@]source:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
"headings
syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$"
"grouped text
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table"
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n\n"
+syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$"
syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)"
syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code"
"endnotes
syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n"
syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n"
-syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n\n"
+syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$"
"links and images
syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|\.\./\)\S\+" oneline
syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline
@@ -78,7 +88,6 @@ syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_co
syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$"
syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$"
syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$"
-syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$"
"font face curly brackets
"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
syn region sisu_index matchgroup=sisu_index_block start="^={" end="}"
@@ -96,18 +105,6 @@ syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (
syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline
"misc
syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
-"metaverse html (flagged as errors for filetype sisu)
-syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<b>" end="</b>" skip="\n" oneline
-syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<em>" end="</em>" skip="\n" oneline
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<i>" end="</i>" skip="\n" oneline
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<u>" end="</u>" skip="\n" oneline
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<ins>" end="</ins>" skip="\\\\\|\\'" oneline
-syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="<del>" end="</del>" oneline
-"metaverse
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>"
-syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>"
-syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:alt>" end="<:alt[-_]end>"
-syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:poem>" end="<:poem[-_]end>"
"Expensive Mode:
if !exists("sisu_no_expensive")
@@ -120,18 +117,19 @@ syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$"
"Errors:
-syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+"
+syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]"
syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+"
-syn match sisu_error_wspace contains=sisu_error_wspace " \s*$"
+syn match sisu_error_wspace contains=sisu_error_wspace " \s*$"
syn match sisu_error contains=sisu_error_wspace "\t\+"
syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+"
syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]"
-syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n\n"
-syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n\n"
+syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$"
+syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$"
syn match sisu_error contains=sisu_error "\s\+.{{"
syn match sisu_error contains=sisu_error "^\~\s*$"
-syn match sisu_error contains=sisu_error "^[0-9]\~\s*$"
-syn match sisu_error contains=sisu_error "^[0-9]\~\S\+\s*$"
+syn match sisu_error contains=sisu_error "^0\~.*"
+syn match sisu_error contains=sisu_error "^[1-9]\~\s*$"
+syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$"
syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]"
syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*"
syn match sisu_error contains=sisu_error "{\~^\S\+"
@@ -140,55 +138,67 @@ syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-
syn match sisu_error contains=sisu_error "<dir>"
"errors for filetype sisu, though not error in 'metaverse':
syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>"
-syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n\n"
+syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$"
"Error Exceptions:
-syn match sisu_control "\n\n" "contains=ALL
+syn match sisu_control "\n$" "contains=ALL
syn match sisu_control " //"
-syn match sisu_error "%{"
-syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
-syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
+syn match sisu_error "%{"
+syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
+syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
+syn match sisu_comment "^%\{1,2\}.\+"
"Definitions Default Highlighting:
-hi def link sisu_normal Normal
-hi def link sisu_header PreProc
-hi def link sisu_header_content Statement
-hi def link sisu_heading Title
-hi def link sisu_structure Operator
-hi def link sisu_contain Include
-hi def link sisu_mark_endnote Include
-hi def link sisu_require NonText
-hi def link sisu_link NonText
-hi def link sisu_linked String
-hi def link sisu_fontface Include
-hi def link sisu_strikeout DiffDelete
-hi def link sisu_content_alt Special
-hi def link sisu_sem_content SpecialKey
-hi def link sisu_sem_block Special
-hi def link sisu_sem_marker Visual
-"hi def link sisu_sem_marker Structure
-hi def link sisu_sem_marker_block MatchParen
-hi def link sisu_sem_ex_marker FoldColumn
-hi def link sisu_sem_ex_marker_block Folded
-hi def link sisu_sem_ex_content Comment
-"hi def link sisu_sem_ex_content SpecialKey
-hi def link sisu_sem_ex_block Comment
-hi def link sisu_index SpecialKey
-hi def link sisu_index_block Visual
-hi def link sisu_content_endnote Special
-hi def link sisu_control Define
-hi def link sisu_ocn Include
-hi def link sisu_number Number
-hi def link sisu_identifier Function
-hi def link sisu_underline Underlined
-hi def link sisu_markpara Include
-hi def link sisu_marktail Include
-hi def link sisu_mark Identifier
-hi def link sisu_break Structure
-hi def link sisu_html Type
-hi def link sisu_action Identifier
-hi def link sisu_comment Comment
-hi def link sisu_error_sem_marker Error
-hi def link sisu_error_wspace Error
-hi def link sisu_error Error
+hi def link sisu_normal Normal
+hi def link sisu_header PreProc
+hi def link sisu_header_content Normal
+hi def link sisu_sub_header_title Statement
+hi def link sisu_sub_header_creator Statement
+hi def link sisu_sub_header_rights Statement
+hi def link sisu_sub_header_classify Statement
+hi def link sisu_sub_header_dates Statement
+hi def link sisu_sub_header_make Statement
+hi def link sisu_sub_header_links Statement
+hi def link sisu_sub_header_publisher Statement
+hi def link sisu_sub_header_notes Statement
+hi def link sisu_sub_header_original Statement
+hi def link sisu_sub_header_source Statement
+hi def link sisu_heading Title
+hi def link sisu_structure Operator
+hi def link sisu_contain Include
+hi def link sisu_mark_endnote Include
+hi def link sisu_require NonText
+hi def link sisu_link NonText
+hi def link sisu_linked String
+hi def link sisu_fontface Include
+hi def link sisu_strikeout DiffDelete
+hi def link sisu_content_alt Special
+hi def link sisu_sem_content SpecialKey
+hi def link sisu_sem_block Special
+hi def link sisu_sem_marker Visual
+"hi def link sisu_sem_marker Structure
+hi def link sisu_sem_marker_block MatchParen
+hi def link sisu_sem_ex_marker FoldColumn
+hi def link sisu_sem_ex_marker_block Folded
+hi def link sisu_sem_ex_content Comment
+"hi def link sisu_sem_ex_content SpecialKey
+hi def link sisu_sem_ex_block Comment
+hi def link sisu_index SpecialKey
+hi def link sisu_index_block Visual
+hi def link sisu_content_endnote Special
+hi def link sisu_control Define
+hi def link sisu_ocn Include
+hi def link sisu_number Number
+hi def link sisu_identifier Function
+hi def link sisu_underline Underlined
+hi def link sisu_markpara Include
+hi def link sisu_marktail Include
+hi def link sisu_mark Identifier
+hi def link sisu_break Structure
+hi def link sisu_html Type
+hi def link sisu_action Identifier
+hi def link sisu_comment Comment
+hi def link sisu_error_sem_marker Error
+hi def link sisu_error_wspace Error
+hi def link sisu_error Error
let b:current_syntax = "sisu"
diff --git a/runtime/syntax/svg.vim b/runtime/syntax/svg.vim
new file mode 100644
index 00000000..819b5ec9
--- /dev/null
+++ b/runtime/syntax/svg.vim
@@ -0,0 +1,15 @@
+" Vim syntax file
+" Language: SVG (Scalable Vector Graphics)
+" Maintainer: Vincent Berthoux <twinside@gmail.com>
+" File Types: .svg (used in Web and vector programs)
+"
+" Directly call the xml syntax, because SVG is an XML
+" dialect. But as some plugins base their effect on filetype,
+" providing a distinct filetype from xml is better.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/xml.vim
+let b:current_syntax = "svg"
diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim
index ff171d37..6235df11 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: Dec 28, 2009
-" Version: 46
+" Last Change: Apr 14, 2010
+" Version: 47
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Notes: {{{1
@@ -77,7 +77,7 @@ elseif g:tex_fold_enabled && !has("folding")
echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"
endif
if g:tex_fold_enabled && &fdm == "manual"
- set fdm=syntax
+ setl fdm=syntax
endif
" (La)TeX keywords: only use the letters a-zA-Z {{{1
diff --git a/runtime/syntax/xs.vim b/runtime/syntax/xs.vim
index 9f1054a8..888b1402 100644
--- a/runtime/syntax/xs.vim
+++ b/runtime/syntax/xs.vim
@@ -1,53 +1,38 @@
" Vim syntax file
-" Language: XS (Perl extension interface language)
-" Maintainer: Michael W. Dodge <sarge@pobox.com>
-" Last Change: 2001 May 09
-
-" 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
+" Language: XS (Perl extension interface language)
+" Maintainer: Andy Lester <andy@petdance.com>
+" URL: http://github.com/petdance/vim-perl
+" Last Change: 2009-08-14
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
endif
" Read the C syntax to start with
-if version < 600
- source <sfile>:p:h/c.vim
-else
- runtime! syntax/c.vim
-endif
+runtime! syntax/c.vim
" XS extentions
" TODO: Figure out how to look for trailing '='.
-syn keyword xsKeyword MODULE PACKAGE PREFIX
-syn keyword xsKeyword OUTPUT: CODE: INIT: PREINIT: INPUT:
-syn keyword xsKeyword PPCODE: REQUIRE: CLEANUP: BOOT:
-syn keyword xsKeyword VERSIONCHECK: PROTOTYPES: PROTOTYPE:
-syn keyword xsKeyword ALIAS: INCLUDE: CASE:
+syn keyword xsKeyword MODULE PACKAGE PREFIX
+syn keyword xsKeyword OUTPUT: CODE: INIT: PREINIT: INPUT:
+syn keyword xsKeyword PPCODE: REQUIRE: CLEANUP: BOOT:
+syn keyword xsKeyword VERSIONCHECK: PROTOTYPES: PROTOTYPE:
+syn keyword xsKeyword ALIAS: INCLUDE: CASE:
" TODO: Figure out how to look for trailing '('.
-syn keyword xsMacro SV EXTEND PUSHs
-syn keyword xsVariable RETVAL NO_INIT
-"syn match xsCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
-"syn match xsCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
-
-" 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_xs_syntax_inits")
- if version < 508
- let did_xs_syntax_inits = 1
- command -nargs=+ HiLink hi link <args>
- else
- command -nargs=+ HiLink hi def link <args>
- endif
-
- HiLink xsKeyword Keyword
- HiLink xsMacro Macro
- HiLink xsVariable Identifier
-
- delcommand HiLink
-endif
+syn keyword xsMacro SV EXTEND PUSHs
+syn keyword xsVariable RETVAL NO_INIT
+"syn match xsCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
+"syn match xsCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
+
+" Define the default highlighting, but only when an item doesn't have highlighting yet
+command -nargs=+ HiLink hi def link <args>
+
+HiLink xsKeyword Keyword
+HiLink xsMacro Macro
+HiLink xsVariable Identifier
+
+delcommand HiLink
let b:current_syntax = "xs"