Updated some vimscripts

git-svn-id: https://vimsuite.svn.sourceforge.net/svnroot/vimsuite/trunk@143 eb2d0018-73a3-4aeb-bfe9-1def61c9ec69
This commit is contained in:
stefan 2007-06-15 08:16:32 +00:00
parent bbfb723a98
commit 15fe42916b
15 changed files with 8991 additions and 8669 deletions

View File

@ -0,0 +1 @@
c:\tools\vim\vim71\gvim.exe -c "DirDiff %1 %2"

View File

@ -1,8 +1,8 @@
ScriptID SourceID Filename
--------------------------
642 6945 GetLatestVimScripts.vim
1075 6895 netrw.vim
1502 6578 vimball.vim
642 7080 GetLatestVimScripts.vim
1075 7079 netrw.vim
1502 7078 vimball.vim
1008 3118 srec.vim (ftplugin)
1009 3119 srec.vim (syntax file)
475 2535 latex-suite (install in vimfiles.latex)
@ -12,10 +12,12 @@ ScriptID SourceID Filename
51 171 cscope_macros.vim
102 5306 DirDiff.vim
1189 6533 matrix.vim
1173 5475 tcomment
1173 7046 tcomment
948 2878 Scons Compiler plugin
1709 6421 Scons Syntax file
1772 6973 DAMOS.zip DAMOS tools (von Stefan)
1772 7248 DAMOS.zip DAMOS tools (von Stefan)
987 6978 DoxygenToolkit.vim
1397 6887 xml.vim
1290 5190 LogiPat
1881 7244 svndiff
1462 5612 dtd2xml

View File

@ -1,8 +1,8 @@
" ---------------------------------------------------------------------
" getscript.vim
" Author: Charles E. Campbell, Jr.
" Date: Nov 27, 2006
" Version: 23
" Date: May 05, 2007
" Version: 25
" Installing: :help glvs-install
" Usage: :help glvs
"
@ -15,14 +15,14 @@ if &cp
echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
finish
endif
let s:keepfo = &fo
let s:keepcpo = &cpo
set cpo&vim
"DechoTabOn
if exists("g:loaded_getscript")
finish
endif
let g:loaded_getscript= "v23"
let g:loaded_getscript= "v25"
" ---------------------------------------------------------------------
" Global Variables: {{{1
@ -278,19 +278,25 @@ fun! s:GetOneScript(...)
" call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".fname.")=".filereadable(fname))
if filereadable(fname)
" call Decho("move <".fname."> to ".s:autoinstall)
" call Decho("DISABLED for testing")
exe "silent !".g:GetLatestVimScripts_mv." ".fname." ".s:autoinstall
let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
" call Decho("exe cd ".s:autoinstall)
exe "cd ".s:autoinstall
" decompress
if fname =~ '\.bz2$'
" call Decho("attempt to bunzip2 ".fname)
exe "silent !bunzip2 ".fname
let fname= substitute(fname,'\.bz2$','','')
" call Decho("new fname<".fname."> after bunzip2")
elseif fname =~ '\.gz$'
" call Decho("attempt to gunzip ".fname)
exe "silent !gunzip ".fname
let fname= substitute(fname,'\.gz$','','')
" call Decho("new fname<".fname."> after gunzip")
endif
" distribute archive(.zip, .tar, .vba) contents
if fname =~ '\.zip$'
" call Decho("attempt to unzip ".fname)
exe "silent !unzip -o ".fname
@ -304,10 +310,13 @@ fun! s:GetOneScript(...)
so %
q
endif
if fname =~ '.vim$'
" call Decho("attempt to simply move ".fname." to plugin")
exe "silent !".g:GetLatestVimScripts_mv." ".fname." plugin"
endif
" helptags step
let docdir= substitute(&rtp,',.*','','e')."/doc"
" call Decho("helptags docdir<".docdir.">")
exe "helptags ".docdir
@ -318,7 +327,7 @@ fun! s:GetOneScript(...)
" update the data in the <GetLatestVimScripts.dat> file
let modline=scriptid." ".latestsrcid." ".fname.cmmnt
call setline(line("."),modline)
" call Decho("modline<".modline."> (updated GetLatestVimScripts.dat file)")
" call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
endif
" restore options
@ -355,6 +364,7 @@ fun! getscript#GetLatestVimScripts()
break
endif
endfor
" Sanity checks: readability and writability
if datadir == ""
echoerr 'Missing "GetLatest/" on your runtimepath - see :help glvs-dist-install'
@ -399,27 +409,44 @@ fun! getscript#GetLatestVimScripts()
" call Decho(" ")
" call Decho("searching plugins for GetLatestVimScripts dependencies")
let lastline = line("$")
let plugins = globpath(&rtp,"plugin/*.vim")
" call Decho("lastline#".lastline)
let plugins = split(globpath(&rtp,"plugin/*.vim"))
let foundscript = 0
let firstdir= ""
" call Decho("plugins<".plugins."> lastline#".lastline)
while plugins != ""
let plugin = substitute(plugins,'\n.*$','','e')
let plugins= (plugins =~ '\n')? substitute(plugins,'^.\{-}\n\(.*\)$','\1','e') : ""
for plugin in plugins
" don't process plugins in system directories
if firstdir == ""
let firstdir= substitute(plugin,'[/\\][^/\\]\+$','','')
" call Decho("firstdir<".firstdir.">")
else
let curdir= substitute(plugin,'[/\\][^/\\]\+$','','')
" call Decho("curdir<".curdir.">")
if curdir != firstdir
break
endif
endif
" read plugin in
$
" call Decho(" ")
" call Decho(".dependency checking<".plugin."> line$=".line("$"))
exe "silent r ".plugin
while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0
let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
let llp1 = lastline+1
" call Decho("..newscript<".newscript.">")
" don't process ""GetLatestVimScripts lines
if newscript !~ '^"'
" found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile
let curline = line(".")
let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e')
exe llp1
let srchline = search('\<'.noai_script.'\>','bW')
" call Decho("..newscript<".newscript."> noai_script<".noai_script."> srch=".srchline." lastline=".lastline)
" call Decho("..noai_script<".noai_script."> srch=".srchline."curline#".line(".")." lastline#".lastline)
if srchline == 0
" found a new script to permanently include in the datafile
@ -439,23 +466,27 @@ fun! getscript#GetLatestVimScripts()
let curline = curline + 1
exe curline
endif
endwhile
let llp1= lastline + 1
" call Decho(".deleting lines: ".llp1.",$d")
exe "silent! ".llp1.",$d"
endwhile
endfor
" call Decho("--- end dependency checking loop --- foundscript=".foundscript)
" call Decho(" ")
if foundscript == 0
set nomod
endif
" Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
" call Decho("begin: checking out-of-date scripts using datafile<".datafile.">")
set lz
" call Decho(" --- end of dependency checking loop --- ")
" call Decho("call GetOneScript on lines at end of datafile<".datafile.">")
1
/^-----/,$g/^\s*\d/call <SID>GetOneScript()
" /^-----/,$g/^\s*\d/call Decho(getline("."))
1
/^-----/,$g/^\s*\d/call s:GetOneScript()
" call Decho("--- end out-of-date checking --- ")
" Final report (an echomsg)
try
@ -495,7 +526,6 @@ endfun
" ---------------------------------------------------------------------
" Restore Options: {{{1
let &fo = s:keepfo
let &cpo= s:keepcpo
" vim: ts=8 sts=2 fdm=marker nowrap

View File

@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
" Date: Mar 21, 2007
" Version: 108
" Date: May 05, 2007
" Version: 109
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
@ -30,7 +30,7 @@ if !exists("s:NOTE")
let s:WARNING = 1
let s:ERROR = 2
endif
let g:loaded_netrw = "v108"
let g:loaded_netrw = "v109"
if v:version < 700
call netrw#ErrorMsg(s:WARNING,"you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw",1)
finish
@ -224,6 +224,12 @@ endif
if !exists("g:netrw_mkdir_cmd")
let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir"
endif
if !exists("g:netrw_scpport")
let g:netrw_scpport= "-P"
endif
if !exists("g:netrw_sshport")
let g:netrw_sshport= "-p"
endif
if !exists("g:netrw_rename_cmd")
let g:netrw_rename_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mv"
endif
@ -287,6 +293,9 @@ endif
if !exists("g:NetrwTopLvlMenu")
let g:NetrwTopLvlMenu= "Netrw."
endif
if !exists("g:netrw_use_errorwindow")
let g:netrw_use_errorwindow= 1
endif
if !exists("g:netrw_win95ftp")
let g:netrw_win95ftp= 1
endif
@ -373,8 +382,9 @@ endfun
" ===============================
" NetOptionSave: save options and set to "standard" form {{{2
"DechoTabOn
fun! s:NetOptionSave()
" call Dfunc("s:NetOptionSave()")
" call Dfunc("s:NetOptionSave() win#".winnr()." buf#".bufnr("."))
if !exists("w:netrw_optionsave")
let w:netrw_optionsave= 1
else
@ -413,12 +423,13 @@ fun! s:NetOptionSave()
silent! let w:netrw_regslash= @/
" call Dret("s:NetOptionSave")
" call Dret("s:NetOptionSave : win#".winnr()." buf#".bufnr("."))
endfun
" ------------------------------------------------------------------------
" NetOptionRestore: restore options {{{2
fun! s:NetOptionRestore()
" call Dfunc("s:NetOptionRestore()")
" call Dfunc("s:NetOptionRestore() win#".winnr()." buf#".bufnr("."))
if !exists("w:netrw_optionsave")
" call Dret("s:NetOptionRestore : w:netrw_optionsave doesn't exist")
return
@ -463,7 +474,7 @@ fun! s:NetOptionRestore()
if exists("w:netrw_regstar") |silent! let @*= w:netrw_regstar |unlet w:netrw_regstar |endif
if exists("w:netrw_regslash")|silent! let @/= w:netrw_regslash|unlet w:netrw_regslash|endif
" call Dret("s:NetOptionRestore : restored user options")
" call Dret("s:NetOptionRestore : win#".winnr()." buf#".bufnr("."))
endfun
" ---------------------------------------------------------------------
@ -727,7 +738,7 @@ fun! netrw#NetRead(mode,...)
elseif b:netrw_method == 4 " read with scp
" call Decho("read via scp (method #4)")
if exists("g:netrw_port") && g:netrw_port != ""
let useport= " -P ".g:netrw_port
let useport= " ".g:netrw_scpport." ".g:netrw_port
else
let useport= ""
endif
@ -1088,7 +1099,7 @@ fun! netrw#NetWrite(...) range
" call Decho("write via scp (method #4)")
let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
if exists("g:netrw_port") && g:netrw_port != ""
let useport= " -P ".g:netrw_port
let useport= " ".g:netrw_scpport." ".g:netrw_port
else
let useport= ""
endif
@ -1661,7 +1672,7 @@ endfun
" with the requested remote hostname first.
fun! s:NetBrowse(islocal,dirname)
if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
" call Dfunc("NetBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%"))
" call Dfunc("NetBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">")
" call Dredir("ls!")
if exists("s:netrw_skipbrowse")
@ -1756,7 +1767,7 @@ fun! s:NetBrowse(islocal,dirname)
" handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3
if !g:netrw_keepdir
" call Decho("handle keepdir:")
" call Decho("handle keepdir: (g:netrw_keepdir=".g:netrw_keepdir.")")
" call Decho('exe cd '.escape(b:netrw_curdir,s:netrw_cd_escape))
try
exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape)
@ -1839,17 +1850,18 @@ fun! s:NetGetBuffer(islocal,dirname)
else
" find buffer number of buffer named precisely the same as dirname {{{3
" call Dredir("ls!")
let dirname= a:dirname
" call Decho("find buffer<".dirname.">'s number ")
let bufnum= bufnr(escape(dirname,'\'))
" call Decho("findbuf: bufnum=bufnr('".escape(dirname,'\')."')=".bufnum." (initial)")
" call Decho("findbuf1: bufnum=bufnr('".escape(dirname,'\')."')=".bufnum." (initial)")
let ibuf= 1
if bufnum > 0 && bufname(bufnum) != dirname
let buflast = bufnr("$")
" call Decho("findbuf: buflast=".buflast)
" call Decho("findbuf2: buflast=".buflast)
while ibuf <= buflast
let bname= bufname(ibuf)
" call Decho("findbuf: ibuf=".ibuf. " bufname<".bufname(ibuf)."> dirname<".dirname.">")
" call Decho("findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">")
if bname != '' && bname !~ '/' && dirname =~ '/'.bname.'$' | break | endif
if bname =~ '^'.dirname.'\=$' | break | endif
let ibuf= ibuf + 1
@ -1859,7 +1871,7 @@ fun! s:NetGetBuffer(islocal,dirname)
else
let bufnum= ibuf
endif
" call Decho("findbuf: bufnum=".bufnum." (final)")
" call Decho("findbuf4: bufnum=".bufnum)
endif
endif
@ -1871,11 +1883,16 @@ fun! s:NetGetBuffer(islocal,dirname)
call s:NetrwSafeOptions()
" name the buffer
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
" call Decho('silent! keepalt file NetrwTreeListing')
silent! keepalt file NetrwTreeListing
else
exe 'silent! keepalt file '.escape(dirname,s:netrw_cd_escape)
" call Decho('exe silent! keepalt file '.escape(dirname,s:netrw_cd_escape))
" let v:errmsg= "" " Decho
let escdirname= escape(dirname,s:netrw_cd_escape)
exe 'silent! keepalt file '.escdirname
" call Decho("errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
endif
" call Decho("named enew buffer<".expand("%").">")
" call Decho("named enew buffer#".bufnr("%")."<".bufname("%").">")
else " Re-use the buffer
@ -1947,7 +1964,7 @@ endfun
" ---------------------------------------------------------------------
" s:PerformListing: {{{2
fun! s:PerformListing(islocal)
" call Dfunc("s:PerformListing(islocal=".a:islocal.")")
" call Dfunc("s:PerformListing(islocal=".a:islocal.") buf(%)=".bufnr("%")."<".bufname("%").">")
" if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 " Decho
" call Decho("(netrw) Processing your browsing request...")
@ -1956,7 +1973,7 @@ fun! s:PerformListing(islocal)
" call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'))
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
" force a refresh for tree listings
" call Decho("clear buffer<".expand("%")."> with :%d")
" call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d")
setlocal ma noro
keepjumps %d
endif
@ -3248,7 +3265,7 @@ endfun
" NetTreeDir: determine tree directory given current cursor position {{{2
" (full path directory with trailing slash returned)
fun! s:NetTreeDir()
" call Dfunc("NetTreeDir() curline#".line(".")."<".getline(".")."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%"))
" call Dfunc("NetTreeDir() curline#".line(".")."<".getline(".")."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%").">")
let treedir= b:netrw_curdir
" call Decho("set initial treedir<".treedir.">")
@ -3848,7 +3865,7 @@ fun! netrw#NetObtain(vismode,...) range
let path = substitute(curdir,'scp://[^/]\+/','','e')
" call Decho("path<".path.">")
if exists("g:netrw_port") && g:netrw_port != ""
let useport= " -P ".g:netrw_port
let useport= " ".g:netrw_scpport." ".g:netrw_port
else
let useport= ""
endif
@ -4056,7 +4073,7 @@ endfun
" ---------------------------------------------------------------------
" LocalListing: does the job of "ls" for local directories {{{2
fun! s:LocalListing()
" call Dfunc("LocalListing() &ma=".&ma." &mod=".&mod." &ro=".&ro)
" call Dfunc("LocalListing() &ma=".&ma." &mod=".&mod." &ro=".&ro." buf(%)=".buf("%"))
" if exists("b:netrw_curdir") |call Decho('b:netrw_curdir<'.b:netrw_curdir.">") |else|call Decho("b:netrw_curdir doesn't exist") |endif
" if exists("g:netrw_sort_by")|call Decho('g:netrw_sort_by<'.g:netrw_sort_by.">")|else|call Decho("g:netrw_sort_by doesn't exist")|endif
@ -4438,9 +4455,10 @@ endfun
" dosplit==1: the window will be split before running the local
" browser
fun! netrw#Explore(indx,dosplit,style,...)
" call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified)
" call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0)
if !exists("b:netrw_curdir")
let b:netrw_curdir= getcwd()
" call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)")
endif
let curfile= b:netrw_curdir
" call Decho("curfile<".curfile.">")
@ -4489,6 +4507,7 @@ fun! netrw#Explore(indx,dosplit,style,...)
endif
norm! 0
if a:0 > 0
" call Decho("a:1<".a:1.">")
if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin))
let dirname= substitute(a:1,'\~',expand("$HOME"),'')
@ -4499,10 +4518,13 @@ fun! netrw#Explore(indx,dosplit,style,...)
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)
else
let dirname= a:1
" call Decho("using dirname<".dirname.">")
endif
endif
if dirname =~ '^\*/'
" Explore */pattern
@ -4919,33 +4941,61 @@ endfun
" 2=error = s:ERROR
" Mar 19, 2007 : max errnum currently is 49
fun! netrw#ErrorMsg(level,msg,errnum)
" call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.")")
" call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
if a:level == 1
let level= "**warning** (netrw) "
elseif a:level == 2
let level= "**error** (netrw) "
else
let level= "**note** (netrw) "
endif
if g:netrw_use_errorwindow
" (default) netrw creates a one-line window to show error/warning
" messages (reliably displayed)
" record current window number for NetRestorePosn()'s benefit
let s:winBeforeErr= winnr()
" getting messages out reliably is just plain difficult!
" This attempt splits the current window, creating a one line window.
let errbufnum= bufnr("NetrwMessage")
if bufexists("NetrwMessage") && bufwinnr("NetrwMessage") > 0
exe bufwinnr("NetrwMessage")."wincmd w"
set ma noro
call setline(line("$")+1,level.a:msg)
$
else
bo 1split
enew
setlocal bt=nofile
file NetrwMessage
put ='***netrw*** '.a:msg
call setline(line("$"),level.a:msg)
endif
if &fo !~ '[ta]'
syn clear
syn match netrwMesg "^\*\*\*netrw\*\*\*"
if a:level == s:WARNING
hi link netrwMesg WarningMsg
elseif a:level == s:ERROR
hi link netrwMesg Error
syn match netrwMesgNote "^\*\*note\*\*"
syn match netrwMesgWarning "^\*\*warning\*\*"
syn match netrwMesgError "^\*\*error\*\*"
hi link netrwMesgWarning WarningMsg
hi link netrwMesgError Error
endif
endif
1d
setlocal noma ro bh=wipe
else
" (optional) netrw will show messages using echomsg. Even if the
" message doesn't appear, at least it'll be recallable via :messages
redraw!
if a:level == s:WARNING
echohl WarningMsg
elseif a:level == s:ERROR
echohl Error
endif
echomsg level.a:msg
" call Decho("echomsg ***netrw*** ".a:msg)
echohl None
endif
" call Dret("netrw#ErrorMsg")
endfun
@ -5045,9 +5095,9 @@ fun! s:MakeSshCmd(sshcmd)
" call Dfunc("s:MakeSshCmd(sshcmd<".a:sshcmd.">)")
let sshcmd = substitute(a:sshcmd,'\<HOSTNAME\>',s:user.s:machine,'')
if exists("g:netrw_port") && g:netrw_port != ""
let sshcmd= substitute(sshcmd,"USEPORT",'-P '.g:netrw_port,'')
let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.g:netrw_port,'')
elseif exists("s:port") && s:port != ""
let sshcmd= substitute(sshcmd,"USEPORT",'-P '.s:port,'')
let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.s:port,'')
else
let sshcmd= substitute(sshcmd,"USEPORT ",'','')
endif
@ -5058,7 +5108,7 @@ endfun
" ---------------------------------------------------------------------
" s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
fun! s:NetrwEnew(curdir)
" call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) expand(%)<".expand("%").">")
" call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) buf#".bufnr("%")."<".bufname("%").">")
" grab a function-local copy of buffer variables
if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif
@ -5113,7 +5163,7 @@ fun! s:NetrwEnew(curdir)
endif
endif
" call Dret("s:NetrwEnew : buf#".bufnr("%"))
" call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%").">")
endfun
" ------------------------------------------------------------------------

View File

@ -1,7 +1,7 @@
" netrwSettings.vim: makes netrw settings simpler
" Date: Jan 05, 2007
" Date: Mar 26, 2007
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 9b ASTRO-ONLY
" Version: 9
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@ -19,7 +19,7 @@
if exists("g:loaded_netrwSettings") || &cp
finish
endif
let g:loaded_netrwSettings = "v9b"
let g:loaded_netrwSettings = "v9"
" ---------------------------------------------------------------------
" NetrwSettings: {{{1
@ -81,11 +81,15 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_ftp = '.g:netrw_ftp
put = 'let g:netrw_ftpmode = '.g:netrw_ftpmode
put = 'let g:netrw_ignorenetrc = '.g:netrw_ignorenetrc
put = 'let g:netrw_sshport = '.g:netrw_sshport
let shqline= line("$")
put = 'let g:netrw_shq...'
put = 'let g:netrw_use_nt_rcp = '.g:netrw_use_nt_rcp
put = 'let g:netrw_win95ftp = '.g:netrw_win95ftp
let s:netrw_xfer_stop= line(".")
put =''
put ='+ Netrw Messages'
put ='let g:netrw_use_errorwindow = '.g:netrw_use_errorwindow
put = ''
put ='+ Netrw Browser Control'
@ -122,12 +126,14 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction
put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence
put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
put = 'let g:netrw_scpport = '.g:netrw_scpport
put = 'let g:netrw_sshport = '.g:netrw_sshport
put = 'let g:netrw_timefmt = '.g:netrw_timefmt
put = 'let g:netrw_use_noswf = '.g:netrw_use_noswf
put = 'let g:netrw_winsize = '.g:netrw_winsize
put =''
put ='+ For help, place cursor on line and press ?'
put ='+ For help, place cursor on line and press <F1>'
1d
silent %s/^+/"/e

View File

@ -1,7 +1,7 @@
" vimball.vim : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr.
" Date: Jan 03, 2007
" Version: 21
" Date: May 07, 2007
" Version: 22
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@ -15,7 +15,7 @@ if &cp || exists("g:loaded_vimball") || v:version < 700
finish
endif
let s:keepcpo = &cpo
let g:loaded_vimball = "v21"
let g:loaded_vimball = "v22"
set cpo&vim
" =====================================================================
@ -583,13 +583,14 @@ fun! s:SaveSettings()
let s:fenkeep = &fen
let s:hidkeep = &hidden
let s:ickeep = &ic
let s:lzkeep = &lz
let s:pmkeep = &pm
let s:repkeep = &report
let s:vekeep = &ve
let s:lzkeep = &lz
if exists("&acd")
set ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz
set ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm=
else
set ei=all ve=all nofen noic report=999 nohid bt= ma lz
set ei=all ve=all nofen noic report=999 nohid bt= ma lz pm=
endif
" call Dret("SaveSettings")
endfun
@ -606,6 +607,7 @@ fun! s:RestoreSettings()
let &hidden = s:hidkeep
let &ic = s:ickeep
let &lz = s:lzkeep
let &pm = s:pmkeep
let &report = s:repkeep
let &ve = s:vekeep
let &ei = s:eikeep
@ -615,9 +617,9 @@ fun! s:RestoreSettings()
call setpos("'a",s:makeep)
endif
if exists("&acd")
unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep
unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep
else
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep
endif
set bt=nofile noma
" call Dret("RestoreSettings")

View File

@ -335,6 +335,8 @@ The AutoInstall process will:
==============================================================================
9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
v24 Apr 16, 2007 : * removed save&restore of the fo option during script
loading
v23 Nov 03, 2006 : * ignores comments (#...)
* handles vimballs
v22 Oct 13, 2006 : * supports automatic use of curl if wget is not

View File

@ -1,4 +1,4 @@
*pi_netrw.txt* For Vim version 7.0. Last change: 2007 Mar 21
*pi_netrw.txt* For Vim version 7.1a. Last change: 2007 May 05
-----------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell, Jr.
@ -195,10 +195,16 @@ DIRECTORY LISTING *netrw-dirlist*
*netrw-login* *netrw-password*
CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass*
Attempts to use ftp will prompt you for a user-id and a password.
These will be saved in g:netrw_uid and g:netrw_passwd Subsequent uses
of ftp will re-use those. If you need to use a different user id
and/or password, you'll want to call NetUserPass() first.
These will be saved in global variables g:netrw_uid and
g:netrw_passwd; subsequent uses of ftp will re-use those two items to
simplify the further use of ftp. However, if you need to use a
different user id and/or password, you'll want to call NetUserPass()
first. To work around the need to enter passwords, check if your ftp
supports a <.netrc> file in your home directory. Also see
|netrw-passwd| (and if you're using ssh/scp hoping to figure out how
to not need to use passwords, look at |netrw-listhack|).
:NetUserPass [uid [password]] -- prompts as needed
:call NetUserPass() -- prompts for uid and password
@ -207,7 +213,7 @@ DIRECTORY LISTING *netrw-dirlist*
VARIABLES *netrw-variables*
(see also: |netrw-browse-var||netrw-protocol||netrw-settings||netrw-var|)
(also see: |netrw-browse-var| |netrw-protocol| |netrw-settings| |netrw-var|)
*b:netrw_lastfile* last file Network-read/written retained on a per-buffer
basis (supports plain :Nw )
@ -249,6 +255,16 @@ VARIABLES *netrw-variables*
Controls the quoting character used during scp and ftp
commands.
*g:netrw_scpport* = "-P" : option to use to set port for scp
*g:netrw_sshport* = "-p" : option to use to set port for ssh
*g:netrw_use_errorwindow* =1 : messages from netrw will use a separate one
line window. This window provides reliable
delivery of messages. (default)
=0 : messages from netrw will use echoerr ;
messages don't always seem to show up this
way, but one doesn't have to quit the window.
*g:netrw_win95ftp* =1 if using Win95, will remove four trailing blank
lines that o/s's ftp "provides" on transfers
=0 force normal ftp behavior (no trailing line removal)
@ -518,7 +534,8 @@ below, a {netfile} is an url to a remote file.
The <netrw.vim> script provides several variables which act as options to
ffect <netrw.vim>'s behavior. These variables typically may be set in the
user's <.vimrc> file:
(see also: |netrw-settings||netrw-browse-var||netrw-protocol||netrw-settings|) >
(also see:
|netrw-settings| |netrw-browse-var| |netrw-protocol| |netrw-settings|) >
-------------
Netrw Options
@ -1462,8 +1479,8 @@ Especially with the remote directory browser, constantly entering the password
is tedious.
For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength
tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3), gives a tip
for setting up no-password ssh and scp, plus discusses associated security
tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gives a tip
for setting up no-password ssh and scp and discusses associated security
issues. It used to be available at http://hacks.oreilly.com/pub/h/66 ,
but apparently that address is now being redirected to some "hackzine".
I'll attempt a summary:
@ -1495,7 +1512,7 @@ settings. You may change any of their values; when you save the file, the
settings therein will be used. One may also press "?" on any of the lines for
help on what each of the variables do.
(see also: |netrw-browse-var||netrw-protocol||netrw-var||netrw-variables|)
(also see: |netrw-browse-var| |netrw-protocol| |netrw-var| |netrw-variables|)
==============================================================================
@ -1728,6 +1745,16 @@ which is loaded automatically at startup (assuming :set nocp).
==============================================================================
12. History *netrw-history* {{{1
v109: Mar 26, 2007 * if a directory name includes a "$" character,
Explore() will use expand() in an attempt to
decipher the name.
May 07, 2007 * g:netrw_use_errorwindow now allows one to
have error messages go to a reliable window
or to use a less reliable but recallable
echoerr method
May 07, 2007 * g:netrw_scpport and g:netrw_sshport support
use of -P and -p, respectively, to set port
for scp/ssh.
v108: Jan 03, 2007 * included preview map (|netrw-p|), supporting
remote browsing
* netrw can now source remote files
@ -1738,7 +1765,7 @@ which is loaded automatically at startup (assuming :set nocp).
(list, remove/delete, rename)
Jan 31, 2007 * Luis Florit reported that @* was an invalid
register. The @* register is now only saved and
restored if |guioptions| contains "a".
restored if |'guioptions'| contains "a".
Feb 02, 2007 * Fixed a bug that cropped up when writing files
via scp using cygwin
Feb 08, 2007 * tree listing mode managed to stop working again;
@ -1856,7 +1883,7 @@ which is loaded automatically at startup (assuming :set nocp).
now bypassed only when it is
v95: * bugfix - Hiding mode worked correctly (don't show any file
matching any of the g:netrw_hide patterns), but
but showing mode was showing only those files that didn't
showing mode was showing only those files that didn't
match any of the g:netrw_hide patterns. Instead, it now
shows all files that match any of the g:netrw_hide patterns
(the difference between a logical and and logical or).
@ -1891,7 +1918,7 @@ which is loaded automatically at startup (assuming :set nocp).
v81: * FocusGained also used to refresh/wipe local browser directory
buffers
* (bugfix) netrw was leaving [Scratch] buffers behind when the
the user had the "hidden" option set. The 'hidden' option is
user had the "hidden" option set. The 'hidden' option is
now bypassed.
v80: * ShellCmdPost event used in conjunction with g:netrw_fastbrowse
to refresh/wipe local browser directory buffers.

View File

@ -1,4 +1,4 @@
*pi_vimball.txt* For Vim version 7.0. Last change: 2007 Jan 03
*pi_vimball.txt* For Vim version 7.1a. Last change: 2007 May 07
----------------
Vimball Archiver
@ -90,6 +90,7 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
==============================================================================
3. Vimball History *vimball-history* {{{1
22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter
21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header
handling problem and it now changes \s to /s
20 : Nov 20, 2006 * substitute() calls have all had the 'e' flag

View File

@ -1,4 +1,4 @@
*tComment.txt* tComment -- One comment plugin to rule them all
*tComment.txt* tComment -- An easily extensible & universal comment plugin
Author: Thomas Link, samul AT web.de
@ -27,6 +27,7 @@ lines, and it will remove comment markup for already commented text
*tComment-Key-Bindings*
Key bindings~
<c-_><c-_> :: :TComment
<c-_><space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END>
<c-_>b :: :TCommentBlock
@ -34,6 +35,31 @@ Key bindings~
<c-_>s :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE>
<c-_>i :: :TCommentInline
<c-_>r :: :TCommentRight
<c-_>p :: Comment the current inner paragraph
A secondary set of key maps is defined for normal mode.
<Leader>__ :: :TComment
<Leader>_p :: Comment the current inner paragraph
<Leader>_<space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END>
<Leader>_i :: :TCommentInline
<Leader>_r :: :TCommentRight
<Leader>_b :: :TCommentBlock
<Leader>_a :: :TCommentAs <QUERY COMMENT TYPE>
<Leader>_s :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE>
Keymaps are configurable via the following variables:
*g:tcommentMapLeader1*
g:tcommentMapLeader1 string (default: <c-_>)
Prefix for the keymaps. Set to '' to disable keymaps with this
prefix.
*g:tcommentMapLeader2*
g:tcommentMapLeader2 string (default: <Leader>_)
Secondary prefix. (The reason for why there are two prefixes is
that <c-_> appears preferable with gvim but can be difficult to
type on the terminal. The secondary prefix isn't used for insert
mode maps. Set to '' to disable keymaps with this prefix.
*tComment-commands*
Alternatively, you can type (? meaning "optional argument"):
@ -143,9 +169,11 @@ or 'comments' variables):
php, prolog, ruby, r, scheme, sgml, sh, sql, spec, sps, tcl, tex,
tpl, viki, vim, websec, xml, xslt, yaml
Credits~
The way we check for embedded syntax was adapted from/inspired by Meikel
Brandmeyer's EnhancedCommentify.vim (vimscript #23).
The way we check for embedded syntax was originally adapted
from/inspired by Meikel Brandmeyer's EnhancedCommentify.vim
(vimscript #23) but has evolved since.
vim: tw=72

View File

@ -1315,6 +1315,7 @@ g:netrw_rmdir_cmd pi_netrw.txt /*g:netrw_rmdir_cmd*
g:netrw_rmf_cmd pi_netrw.txt /*g:netrw_rmf_cmd*
g:netrw_rsync_cmd pi_netrw.txt /*g:netrw_rsync_cmd*
g:netrw_scp_cmd pi_netrw.txt /*g:netrw_scp_cmd*
g:netrw_scpport pi_netrw.txt /*g:netrw_scpport*
g:netrw_sftp_cmd pi_netrw.txt /*g:netrw_sftp_cmd*
g:netrw_shq pi_netrw.txt /*g:netrw_shq*
g:netrw_sort_by pi_netrw.txt /*g:netrw_sort_by*
@ -1322,12 +1323,16 @@ g:netrw_sort_direction pi_netrw.txt /*g:netrw_sort_direction*
g:netrw_sort_sequence pi_netrw.txt /*g:netrw_sort_sequence*
g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject*
g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd*
g:netrw_sshport pi_netrw.txt /*g:netrw_sshport*
g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt*
g:netrw_uid pi_netrw.txt /*g:netrw_uid*
g:netrw_use_errorwindow pi_netrw.txt /*g:netrw_use_errorwindow*
g:netrw_use_noswf pi_netrw.txt /*g:netrw_use_noswf*
g:netrw_use_nt_rcp pi_netrw.txt /*g:netrw_use_nt_rcp*
g:netrw_win95ftp pi_netrw.txt /*g:netrw_win95ftp*
g:netrw_winsize pi_netrw.txt /*g:netrw_winsize*
g:tcommentMapLeader1 tComment.txt /*g:tcommentMapLeader1*
g:tcommentMapLeader2 tComment.txt /*g:tcommentMapLeader2*
g:vimball_home pi_vimball.txt /*g:vimball_home*
g:visincr_datedivset visincr.txt /*g:visincr_datedivset*
getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install*

View File

@ -5,7 +5,7 @@
" Installing: :help glvs-install
" Usage: :help glvs
"
" GetLatestVimScripts: 642 1 :AutoInstall: GetLatestVimScripts.vim
" GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim
"
" (Rom 15:11 WEB) Again, "Praise the Lord, all you Gentiles! Let
" all the peoples praise Him."

152
vimfiles/plugin/svndiff.vim Normal file
View File

@ -0,0 +1,152 @@
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" svndiff (C) 2007 Ico Doornekamp
"
" Introduction
" ------------
"
" NOTE: This plugin is linux-only!
"
" An experimental vim 7.0 plugin for showing svn diff information in a file
" while editing. This plugin runs a diff between the current buffer and the
" original subversion file, and applies highlighting to show where the buffer
" differs. The original text is not shown, only colors are used to indicate
" where changes were made.
"
" The following syntax highlight groups are used:
"
" DiffAdd: Newly added lines. (default=blue)
"
" DiffChange: Lines which are changed from the original. (default=cyan)
"
" DiffDel: Applied to the lines directly above and below a deleted
" block (default=magenta)
"
" Usage
" -----
"
" The plugin defines one function: Svndiff_show(). This function figures out
" the difference between the current file and it's subversion original, and
" creates the syntax highlighting patterns. You'll need to call this function
" after making changes to update the highlighting.
"
" The function takes an optional argument specifying an additional action to
" perform:
"
" "prev": jump to the previous different block
" "next": jump to the next different block
"
" You might want to map some keys to run the Svndiff_show function. For example,
" add to your .vimrc:
"
" noremap <F3> :call Svndiff_show("prev")<CR>
" noremap <F4> :call Svndiff_show("next")<CR>
"
" And optionally another keymap to cleanup the diff highlighting and revert to
" the original syntax:
"
" noremap <F5> :syntax on<CR>
"
"
" Changelog
" ---------
"
" 1.0 2007-04-02 Initial version
"
" 1.1 2007-04-02 Added goto prev/next diffblock commands
"
" 1.2 2007-06-14 Updated diff arguments from -u0 (obsolete) to -U0
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
function! Svndiff_show(...)
let cmd = exists("a:1") ? a:1 : ''
let fname = bufname("%")
let jump_to = 0
" Check if this file is managed by subversion, exit otherwise
let info = system("svn info " . fname)
if match(info, "Path") == -1
echom "Svndiff: Warning, file " . fname . " is not managed by subversion, or error running svn."
return
end
" Reset syntax highlighting
syntax off
" Pipe the current buffer contents to a shell command calculating the diff
" in a friendly parsable format
let contents = join(getbufline("%", 1, "$"), "\n")
let diff = system("diff -U0 <(svn cat " . fname . ") <(cat;echo)", contents)
" Parse the output of the diff command and hightlight changed, added and
" removed lines
for line in split(diff, '\n')
let part = matchlist(line, '@@ -\([0-9]*\),*\([0-9]*\) +\([0-9]*\),*\([0-9]*\) @@')
if ! empty(part)
let old_from = part[1]
let old_count = part[2] == '' ? 1 : part[2]
let new_from = part[3]
let new_count = part[4] == '' ? 1 : part[4]
" Figure out if text was added, removed or changed.
if old_count == 0
let from = new_from
let to = new_from + new_count - 1
let group = 'DiffAdd'
elseif new_count == 0
let from = new_from
let to = new_from + 1
let group = 'DiffDelete'
else
let from = new_from
let to = new_from + new_count - 1
let group = 'DiffChange'
endif
" Set the actual syntax highlight
exec 'syntax region ' . group . ' start=".*\%' . from . 'l" end=".*\%' . to . 'l"'
" Check if we need to jump to prev/next diff block
if cmd == 'prev'
if from < line(".")
let jump_to = from
endif
endif
if cmd == 'next'
if from > line(".")
if jump_to == 0
let jump_to = from
endif
endif
endif
endif
endfor
if jump_to > 0
call setpos(".", [ 0, jump_to, 1, 0 ])
endif
endfunction
" vi: ts=2 sw=2

View File

@ -1,18 +1,18 @@
" tComment.vim
" tComment.vim -- An easily extensible & universal comment plugin
" @Author: Thomas Link (samul AT web.de)
" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
" @Created: 27-Dez-2004.
" @Last Change: 28-Feb-2006.
" @Revision: 1.5.256
" @Last Change: 2007-04-15.
" @Revision: 1.6.285
"
" vimscript #1173
if &cp || exists('loaded_tcomment')
finish
endif
let loaded_tcomment = 105
let loaded_tcomment = 106
fun! <SID>DefVar(name, val)
fun! s:DefVar(name, val)
if !exists(a:name)
" exec "let ". a:name ."='". a:val ."'"
exec 'let '. a:name .'="'. escape(a:val, '"\') .'"'
@ -20,17 +20,22 @@ fun! <SID>DefVar(name, val)
endf
" If true, comment blank lines too
call <SID>DefVar('g:tcommentBlankLines', 1)
call s:DefVar('g:tcommentBlankLines', 1)
call s:DefVar('g:tcommentMapLeader1', '<c-_>')
call s:DefVar('g:tcommentMapLeader2', '<Leader>_')
" Guess the file type based on syntax names always or for some fileformat only
call <SID>DefVar('g:tcommentGuessFileType', 0)
call s:DefVar('g:tcommentGuessFileType', 0)
" In php documents, the php part is usually marked as phpRegion. We thus
" assume that the buffers default comment style isn't php but html
call <SID>DefVar('g:tcommentGuessFileType_dsl', 'xml')
call <SID>DefVar('g:tcommentGuessFileType_php', 'html')
call <SID>DefVar('g:tcommentGuessFileType_html', 1)
call <SID>DefVar('g:tcommentGuessFileType_tskeleton', 1)
call <SID>DefVar('g:tcommentGuessFileType_vim', 1)
call s:DefVar('g:tcommentGuessFileType_dsl', 'xml')
call s:DefVar('g:tcommentGuessFileType_php', 'html')
call s:DefVar('g:tcommentGuessFileType_html', 1)
call s:DefVar('g:tcommentGuessFileType_tskeleton', 1)
call s:DefVar('g:tcommentGuessFileType_vim', 1)
call s:DefVar('g:tcommentIgnoreTypes_php', 'sql')
" If you don't define these variables, TComment will use &commentstring
" instead. We override the default values here in order to have a blank after
@ -42,17 +47,17 @@ call <SID>DefVar('g:tcommentGuessFileType_vim', 1)
" I personally find this style rather irritating but here is an alternative
" definition that does this left-handed bar thing
call <SID>DefVar('g:tcommentBlockC', "/*%s */\n * ")
call <SID>DefVar('g:tcommentBlockC2', "/**%s */\n * ")
" call <SID>DefVar('g:tcommentBlockC', "/*%s */\n ")
call <SID>DefVar('g:tcommentInlineC', "/* %s */")
call s:DefVar('g:tcommentBlockC', "/*%s */\n * ")
call s:DefVar('g:tcommentBlockC2', "/**%s */\n * ")
" call s:DefVar('g:tcommentBlockC', "/*%s */\n ")
call s:DefVar('g:tcommentInlineC', "/* %s */")
call <SID>DefVar('g:tcommentBlockXML', "<!--%s-->\n ")
call <SID>DefVar('g:tcommentInlineXML', "<!-- %s -->")
call s:DefVar('g:tcommentBlockXML', "<!--%s-->\n ")
call s:DefVar('g:tcommentInlineXML', "<!-- %s -->")
" Currently this function just sets a variable
fun! TCommentDefineType(name, commentstring)
call <SID>DefVar('g:tcomment_'. a:name, a:commentstring)
call s:DefVar('g:tcomment_'. a:name, a:commentstring)
let s:tcommentFileTypesDirty = 1
endf
@ -125,8 +130,9 @@ call TCommentDefineType('po', '# %s' )
call TCommentDefineType('prolog', '%% %s' )
call TCommentDefineType('readline', '# %s' )
call TCommentDefineType('ruby', '# %s' )
call TCommentDefineType('ruby_3', '### %s' )
call TCommentDefineType('ruby_block', '=begin rdoc%s=end')
call TCommentDefineType('ruby_nordoc_block', '=begin%s=end' )
call TCommentDefineType('ruby_nodoc_block', '=begin%s=end' )
call TCommentDefineType('r', '# %s' )
call TCommentDefineType('sbs', "' %s" )
call TCommentDefineType('scheme', '; %s' )
@ -142,6 +148,7 @@ call TCommentDefineType('tcl', '# %s' )
call TCommentDefineType('tex', '%% %s' )
call TCommentDefineType('tpl', '<!-- %s -->' )
call TCommentDefineType('viki', '%% %s' )
call TCommentDefineType('viki_3', '%%%%%% %s' )
call TCommentDefineType('viki_inline', '{cmt: %s}' )
call TCommentDefineType('vim', '" %s' )
call TCommentDefineType('websec', '# %s' )
@ -155,7 +162,7 @@ call TCommentDefineType('yaml', '# %s' )
let s:tcommentFileTypesDirty = 1
fun! <SID>DefaultValue(option)
fun! s:DefaultValue(option)
exec 'let '. a:option .' = &'. a:option
exec 'set '. a:option .'&'
exec 'let default = &'. a:option
@ -163,8 +170,8 @@ fun! <SID>DefaultValue(option)
return default
endf
let s:defaultComments = <SID>DefaultValue('comments')
let s:defaultCommentString = <SID>DefaultValue('commentstring')
let s:defaultComments = s:DefaultValue('comments')
let s:defaultCommentString = s:DefaultValue('commentstring')
let s:nullCommentString = '%s'
" TComment(line1, line2, ?commentMode, ?commentAnyway, ?commentBegin, ?commentEnd)
@ -175,8 +182,8 @@ let s:nullCommentString = '%s'
" R ... right
fun! TComment(beg, end, ...)
" save the cursor position
let co = col(".")
let li = line(".")
let co = col('.')
let li = line('.')
let commentMode = a:0 >= 1 ? a:1 : 'G'
let commentAnyway = a:0 >= 2 ? (a:2 == '!') : 0
if commentMode ==# 'IG'
@ -199,29 +206,29 @@ fun! TComment(beg, end, ...)
endif
" get the correct commentstring
if a:0 >= 3 && a:3 != ''
let cms = <SID>EncodeCommentPart(a:3) .'%s'
let cms = s:EncodeCommentPart(a:3) .'%s'
if a:0 >= 4 && a:4 != ''
let cms = cms . <SID>EncodeCommentPart(a:4)
let cms = cms . s:EncodeCommentPart(a:4)
endif
else
exec <SID>GetCommentString(a:beg, a:end, commentMode)
exec s:GetCommentString(a:beg, a:end, commentMode)
endif
let cms0 = <SID>BlockGetCommentString(cms)
let cms0 = s:BlockGetCommentString(cms)
let cms0 = escape(cms0, '\')
" make whitespace optional; this conflicts with comments that require some
" whitespace
let cmtCheck = substitute(cms0, '\([ ]\)', '\1\\?', 'g')
" turn commentstring into a search pattern
let cmtCheck = <SID>SPrintF(cmtCheck, '\(\_.\{-}\)')
let cmtCheck = s:SPrintF(cmtCheck, '\(\_.\{-}\)')
" set commentMode and indentStr
exec <SID>CommentDef(a:beg, a:end, cmtCheck, commentMode, cstart, cend)
exec s:CommentDef(a:beg, a:end, cmtCheck, commentMode, cstart, cend)
if commentAnyway
let mode = 0
endif
" go
if commentMode ==# 'B'
" We want a comment block
call <SID>CommentBlock(a:beg, a:end, mode, cmtCheck, cms, indentStr)
call s:CommentBlock(a:beg, a:end, mode, cmtCheck, cms, indentStr)
else
" We want commented lines
" final search pattern for uncommenting
@ -229,27 +236,28 @@ fun! TComment(beg, end, ...)
" final pattern for commenting
let cmtReplace = escape(cms0, '"/')
silent exec a:beg .','. a:end .'s/\V'.
\ <SID>StartRx(cstart) . indentStr .'\zs\(\.\*\)'. <SID>EndRx(cend) .'/'.
\ '\=<SID>ProcessedLine('. mode .', submatch(0), "'. cmtCheck .'", "'. cmtReplace .'")/ge'
\ s:StartRx(cstart) . indentStr .'\zs\(\.\*\)'. s:EndRx(cend) .'/'.
\ '\=s:ProcessedLine('. mode .', submatch(0), "'. cmtCheck .'", "'. cmtReplace .'")/ge'
endif
" reposition cursor
silent exec 'norm! '. li .'G'. co .'|'
" silent exec 'norm! '. li .'G'. co .'|'
call cursor(li, co)
endf
" :line1,line2 TComment ?commentBegin ?commentEnd
command! -bang -range -nargs=* TComment call TComment(<line1>, <line2>, 'G', "<bang>", <f-args>)
command! -bang -range -nargs=* TComment keepjumps call TComment(<line1>, <line2>, 'G', "<bang>", <f-args>)
" :line1,line2 TCommentRight ?commentBegin ?commentEnd
command! -bang -range -nargs=* TCommentRight call TComment(<line1>, <line2>, 'R', "<bang>", <f-args>)
command! -bang -range -nargs=* TCommentRight keepjumps call TComment(<line1>, <line2>, 'R', "<bang>", <f-args>)
" :line1,line2 TCommentBlock ?commentBegin ?commentEnd
command! -bang -range -nargs=* TCommentBlock call TComment(<line1>, <line2>, 'B', "<bang>", <f-args>)
command! -bang -range -nargs=* TCommentBlock keepjumps call TComment(<line1>, <line2>, 'B', "<bang>", <f-args>)
" :line1,line2 TCommentInline ?commentBegin ?commentEnd
command! -bang -range -nargs=* TCommentInline call TComment(<line1>, <line2>, 'I', "<bang>", <f-args>)
command! -bang -range -nargs=* TCommentInline keepjumps call TComment(<line1>, <line2>, 'I', "<bang>", <f-args>)
" :line1,line2 TCommentMaybeInline ?commentBegin ?commentEnd
command! -bang -range -nargs=* TCommentMaybeInline call TComment(<line1>, <line2>, 'IG', "<bang>", <f-args>)
command! -bang -range -nargs=* TCommentMaybeInline keepjumps call TComment(<line1>, <line2>, 'IG', "<bang>", <f-args>)
" comment text as if it were of a specific filetype
fun! TCommentAs(beg, end, commentAnyway, filetype)
@ -263,7 +271,7 @@ fun! TCommentAs(beg, end, commentAnyway, filetype)
let commentMode = 'G'
let ft = a:filetype
endif
exec <SID>GetCommentString(a:beg, a:end, commentMode, ft)
exec s:GetCommentString(a:beg, a:end, commentMode, ft)
let pre = substitute(cms, '%s.*$', '', '')
let pre = substitute(pre, '%%', '%', 'g')
let post = substitute(cms, '^.\{-}%s', '', '')
@ -275,41 +283,35 @@ endf
command! -bang -complete=custom,TCommentFileTypes -range -nargs=1 TCommentAs
\ call TCommentAs(<line1>, <line2>, "<bang>", <f-args>)
if !hasmapto(":TComment<cr>")
noremap <silent> <c-_><c-_> :TComment<cr>
vnoremap <silent> <c-_><c-_> :TCommentMaybeInline<cr>
inoremap <silent> <c-_><c-_> <c-o>:TComment<cr>
noremap <silent> <Leader>__ :TComment<cr>
vnoremap <silent> <Leader>__ :TCommentMaybeInline<cr>
if (g:tcommentMapLeader1 != '')
exec 'noremap <silent> '. g:tcommentMapLeader1 .'<c-_> :TComment<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader1 .'<c-_> :TCommentMaybeInline<cr>'
exec 'inoremap <silent> '. g:tcommentMapLeader1 .'<c-_> <c-o>:TComment<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader1 .'p vip:TComment<cr>'
exec 'noremap '. g:tcommentMapLeader1 .'<space> :TComment '
exec 'inoremap '. g:tcommentMapLeader1 .'<space> <c-o>:TComment '
exec 'inoremap <silent> '. g:tcommentMapLeader1 .'r <c-o>:TCommentRight<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader1 .'r :TCommentRight<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader1 .'i :TCommentInline<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader1 .'r :TCommentRight<cr>'
exec 'noremap '. g:tcommentMapLeader1 .'b :TCommentBlock<cr>'
exec 'inoremap '. g:tcommentMapLeader1 .'b <c-o>:TCommentBlock<cr>'
exec 'noremap '. g:tcommentMapLeader1 .'a :TCommentAs '
exec 'inoremap '. g:tcommentMapLeader1 .'a <c-o>:TCommentAs '
exec 'noremap '. g:tcommentMapLeader1 .'s :TCommentAs <c-r>=&ft<cr>_'
exec 'inoremap '. g:tcommentMapLeader1 .'s <c-o>:TCommentAs <c-r>=&ft<cr>_'
endif
if !hasmapto(":TComment ")
noremap <c-_><space> :TComment
inoremap <c-_><space> <c-o>:TComment
noremap <Leader>_<space> :TComment<cr>
endif
if !hasmapto(":TCommentInline<cr>")
vnoremap <silent> <c-_>i :TCommentInline<cr>
vnoremap <silent> <Leader>_i :TCommentInline<cr>
endif
if !hasmapto(":TCommentRight<cr>")
inoremap <silent> <c-_>r <c-o>:TCommentRight<cr>
noremap <silent> <c-_>r :TCommentRight<cr>
noremap <silent> <Leader>_r :TCommentRight<cr>
vnoremap <silent> <c-_>r :TCommentRight<cr>
vnoremap <silent> <Leader>_r :TCommentRight<cr>
endif
if !hasmapto(":TCommentBlock<cr>")
noremap <c-_>b :TCommentBlock<cr>
noremap <Leader>_b :TCommentBlock<cr>
inoremap <c-_>b <c-o>:TCommentBlock<cr>
endif
if !hasmapto(":TCommentAs")
noremap <c-_>a :TCommentAs
noremap <Leader>_a :TCommentAs
inoremap <c-_>a <c-o>:TCommentAs
noremap <c-_>s :TCommentAs <c-r>=&ft<cr>_
noremap <Leader>_s :TCommentAs <c-r>=&ft<cr>_
inoremap <c-_>s <c-o>:TCommentAs <c-r>=&ft<cr>_
if (g:tcommentMapLeader2 != '')
exec 'noremap <silent> '. g:tcommentMapLeader2 .'_ :TComment<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader2 .'_ :TCommentMaybeInline<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader2 .'p vip:TComment<cr>'
exec 'noremap '. g:tcommentMapLeader2 .'<space> :TComment '
exec 'vnoremap <silent> '. g:tcommentMapLeader2 .'i :TCommentInline<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader2 .'r :TCommentRight<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader2 .'r :TCommentRight<cr>'
exec 'noremap '. g:tcommentMapLeader2 .'b :TCommentBlock<cr>'
exec 'noremap '. g:tcommentMapLeader2 .'a :TCommentAs '
exec 'noremap '. g:tcommentMapLeader2 .'s :TCommentAs <c-r>=&ft<cr>_'
endif
@ -345,16 +347,16 @@ fun! TCommentFileTypes(ArgLead, CmdLine, CursorPos)
endif
endf
fun! <SID>EncodeCommentPart(string)
fun! s:EncodeCommentPart(string)
return substitute(a:string, '%', '%%', 'g')
endf
" <SID>GetCommentString(beg, end, commentMode, ?filetype="")
" s:GetCommentString(beg, end, commentMode, ?filetype="")
" => RecordCMS
fun! <SID>GetCommentString(beg, end, commentMode, ...)
fun! s:GetCommentString(beg, end, commentMode, ...)
let ft = a:0 >= 1 ? a:1 : ''
if ft != ''
exec <SID>GetCustomCommentString(ft, a:commentMode)
exec s:GetCustomCommentString(ft, a:commentMode)
else
let cms = ''
let commentMode = a:commentMode
@ -362,13 +364,13 @@ fun! <SID>GetCommentString(beg, end, commentMode, ...)
if cms == ''
if exists('b:commentstring')
let cms = b:commentstring
return <SID>GetCustomCommentString(&filetype, a:commentMode, cms)
return s:GetCustomCommentString(&filetype, a:commentMode, cms)
elseif exists('b:commentStart') && b:commentStart != ''
let cms = <SID>EncodeCommentPart(b:commentStart) .' %s'
let cms = s:EncodeCommentPart(b:commentStart) .' %s'
if exists('b:commentEnd') && b:commentEnd != ''
let cms = cms .' '. <SID>EncodeCommentPart(b:commentEnd)
let cms = cms .' '. s:EncodeCommentPart(b:commentEnd)
endif
return <SID>GetCustomCommentString(&filetype, a:commentMode, cms)
return s:GetCustomCommentString(&filetype, a:commentMode, cms)
elseif g:tcommentGuessFileType || (exists('g:tcommentGuessFileType_'. &filetype)
\ && g:tcommentGuessFileType_{&filetype} =~ '[^0]')
if g:tcommentGuessFileType_{&filetype} == 1
@ -376,17 +378,17 @@ fun! <SID>GetCommentString(beg, end, commentMode, ...)
else
let altFiletype = g:tcommentGuessFileType_{&filetype}
endif
return <SID>GuessFileType(a:beg, a:end, a:commentMode, altFiletype)
return s:GuessFileType(a:beg, a:end, a:commentMode, &filetype, altFiletype)
else
return <SID>GetCustomCommentString(&filetype, a:commentMode, <SID>GuessCurrentCommentString(a:commentMode))
return s:GetCustomCommentString(&filetype, a:commentMode, s:GuessCurrentCommentString(a:commentMode))
endif
endif
return <SID>RecordCMS(cms, commentMode)
return s:RecordCMS(cms, commentMode)
endf
" <SID>SPrintF(formatstring, ?values ...)
" s:SPrintF(formatstring, ?values ...)
" => string
fun! <SID>SPrintF(string, ...)
fun! s:SPrintF(string, ...)
let n = 1
let r = ''
let s = a:string
@ -419,7 +421,7 @@ fun! <SID>SPrintF(string, ...)
endwh
endf
fun! <SID>StartRx(pos)
fun! s:StartRx(pos)
if a:pos == 0
return '\^'
else
@ -427,7 +429,7 @@ fun! <SID>StartRx(pos)
endif
endf
fun! <SID>EndRx(pos)
fun! s:EndRx(pos)
if a:pos == 0
return '\$'
else
@ -435,26 +437,26 @@ fun! <SID>EndRx(pos)
endif
endf
fun! <SID>GetIndentString(line, start)
fun! s:GetIndentString(line, start)
let start = a:start > 0 ? a:start - 1 : 0
return substitute(strpart(getline(a:line), start), '\V\^\s\*\zs\.\*\$', '', '')
endf
fun! <SID>CommentDef(beg, end, checkRx, commentMode, cstart, cend)
let mdrx = '\V'. <SID>StartRx(a:cstart) .'\s\*'. a:checkRx .'\s\*'. <SID>EndRx(0)
fun! s:CommentDef(beg, end, checkRx, commentMode, cstart, cend)
let mdrx = '\V'. s:StartRx(a:cstart) .'\s\*'. a:checkRx .'\s\*'. s:EndRx(0)
let line = getline(a:beg)
if a:cstart != 0 && a:cend != 0
let line = strpart(line, 0, a:cend - 1)
endif
let mode = (line =~ mdrx)
let it = <SID>GetIndentString(a:beg, a:cstart)
let it = s:GetIndentString(a:beg, a:cstart)
let il = indent(a:beg)
let n = a:beg + 1
while n <= a:end
if getline(n) =~ '\S'
let jl = indent(n)
if jl < il
let it = <SID>GetIndentString(n, a:cstart)
let it = s:GetIndentString(n, a:cstart)
let il = jl
endif
if a:commentMode ==# 'G'
@ -477,7 +479,7 @@ fun! <SID>CommentDef(beg, end, checkRx, commentMode, cstart, cend)
return 'let indentStr="'. it .'" | let mode='. mode
endf
fun! <SID>ProcessedLine(mode, match, checkRx, replace)
fun! s:ProcessedLine(mode, match, checkRx, replace)
if !(a:match =~ '\S' || g:tcommentBlankLines)
return a:match
endif
@ -486,18 +488,18 @@ fun! <SID>ProcessedLine(mode, match, checkRx, replace)
let rv = substitute(a:match, a:checkRx, '\1\2', '')
else
" comment
let rv = <SID>SPrintF(a:replace, a:match)
let rv = s:SPrintF(a:replace, a:match)
endif
let rv = escape(rv, '\ ')
let rv = substitute(rv, '\n', '\\\n', 'g')
return rv
endf
fun! <SID>CommentBlock(beg, end, mode, checkRx, replace, indentStr)
fun! s:CommentBlock(beg, end, mode, checkRx, replace, indentStr)
let t = @t
try
silent exec 'norm! '. a:beg.'G1|v'.a:end.'G$"td'
let ms = <SID>BlockGetMiddleString(a:replace)
let ms = s:BlockGetMiddleString(a:replace)
let mx = escape(ms, '\')
if a:mode
" uncomment
@ -509,7 +511,7 @@ fun! <SID>CommentBlock(beg, end, mode, checkRx, replace, indentStr)
let @t = substitute(@t, '\n\s*$', '', '')
else
" comment
let cs = <SID>BlockGetCommentString(a:replace)
let cs = s:BlockGetCommentString(a:replace)
let cs = a:indentStr . substitute(cs, '%s', '%s'. a:indentStr, '')
if ms != ''
let ms = a:indentStr . ms
@ -517,7 +519,7 @@ fun! <SID>CommentBlock(beg, end, mode, checkRx, replace, indentStr)
let @t = substitute(@t, '^'. a:indentStr, '', 'g')
let @t = ms . substitute(@t, '\n'. a:indentStr, '\n'. mx, 'g')
endif
let @t = <SID>SPrintF(cs, "\n". @t ."\n")
let @t = s:SPrintF(cs, "\n". @t ."\n")
endif
silent norm! "tP
finally
@ -527,17 +529,17 @@ endf
" inspired by Meikel Brandmeyer's EnhancedCommentify.vim
" this requires that a syntax names are prefixed by the filetype name
" <SID>GuessFileType(beg, end, commentMode, ?fallbackFiletype)
" s:GuessFileType(beg, end, commentMode, filetype, ?fallbackFiletype)
" => RecordCMS
fun! <SID>GuessFileType(beg, end, commentMode, ...)
fun! s:GuessFileType(beg, end, commentMode, filetype, ...)
if a:0 >= 1 && a:1 != ''
exec <SID>GetCustomCommentString(a:1, a:commentMode)
exec s:GetCustomCommentString(a:1, a:commentMode)
if cms == ''
let cms = <SID>GuessCurrentCommentString(a:commentMode)
let cms = s:GuessCurrentCommentString(a:commentMode)
endif
else
let commentMode = 'G'
let cms = <SID>GuessCurrentCommentString(0)
let cms = s:GuessCurrentCommentString(0)
endif
let n = a:beg
while n <= a:end
@ -547,7 +549,11 @@ fun! <SID>GuessFileType(beg, end, commentMode, ...)
let syntaxName = synIDattr(synID(n, m, 1), 'name')
if syntaxName =~ g:tcommentFileTypesRx
let ft = substitute(syntaxName, g:tcommentFileTypesRx, '\1', '')
return <SID>GetCustomCommentString(ft, a:commentMode, cms)
if exists('g:tcommentIgnoreTypes_'. a:filetype) && g:tcommentIgnoreTypes_{a:filetype} =~ '\<'.ft.'\>'
let m = m + 1
else
return s:GetCustomCommentString(ft, a:commentMode, cms)
endif
elseif syntaxName == '' || syntaxName == 'None' || syntaxName =~ '^\u\+$' || syntaxName =~ '^\u\U*$'
let m = m + 1
else
@ -556,10 +562,10 @@ fun! <SID>GuessFileType(beg, end, commentMode, ...)
endwh
let n = n + 1
endwh
return <SID>RecordCMS(cms, commentMode)
return s:RecordCMS(cms, commentMode)
endf
fun! <SID>GuessCurrentCommentString(commentMode)
fun! s:GuessCurrentCommentString(commentMode)
let valid_cms = (stridx(&commentstring, '%s') != -1)
if &commentstring != s:defaultCommentString && valid_cms
" The &commentstring appears to have been set and to be valid
@ -568,7 +574,7 @@ fun! <SID>GuessCurrentCommentString(commentMode)
if &comments != s:defaultComments
" the commentstring is the default one, so we assume that it wasn't
" explicitly set; we then try to reconstruct &cms from &comments
let cms = <SID>ConstructFromComments(a:commentMode)
let cms = s:ConstructFromComments(a:commentMode)
if cms != s:nullCommentString
return cms
endif
@ -583,16 +589,16 @@ fun! <SID>GuessCurrentCommentString(commentMode)
endif
endf
fun! <SID>ConstructFromComments(commentMode)
exec <SID>ExtractCommentsPart('')
fun! s:ConstructFromComments(commentMode)
exec s:ExtractCommentsPart('')
if a:commentMode == 'G' && line != ''
return line .' %s'
endif
exec <SID>ExtractCommentsPart('s')
exec s:ExtractCommentsPart('s')
if s != ''
exec <SID>ExtractCommentsPart('e')
exec s:ExtractCommentsPart('e')
" if a:commentMode
" exec <SID>ExtractCommentsPart("m")
" exec s:ExtractCommentsPart("m")
" if m != ""
" let m = "\n". m
" endif
@ -608,7 +614,7 @@ fun! <SID>ConstructFromComments(commentMode)
endif
endf
fun! <SID>ExtractCommentsPart(key)
fun! s:ExtractCommentsPart(key)
" let key = a:key != "" ? a:key .'[^:]*' : ""
let key = a:key . '[bnflrxO0-9-]*'
let val = substitute(&comments, '^\(.\{-},\)\{-}'. key .':\([^,]\+\).*$', '\2', '')
@ -621,9 +627,9 @@ fun! <SID>ExtractCommentsPart(key)
return 'let '. var .'="'. escape(val, '"') .'"'
endf
" <SID>GetCustomCommentString(ft, commentMode, ?default="")
" s:GetCustomCommentString(ft, commentMode, ?default="")
" => RecordCMS
fun! <SID>GetCustomCommentString(ft, commentMode, ...)
fun! s:GetCustomCommentString(ft, commentMode, ...)
let commentMode = a:commentMode
let customComment = exists('g:tcomment_'. a:ft)
if commentMode ==# 'B' && exists('g:tcomment_'. a:ft .'_block')
@ -640,18 +646,18 @@ fun! <SID>GetCustomCommentString(ft, commentMode, ...)
let cms = ''
let commentMode = 'G'
endif
return <SID>RecordCMS(cms, commentMode)
return s:RecordCMS(cms, commentMode)
endf
fun! <SID>RecordCMS(cms, commentMode)
fun! s:RecordCMS(cms, commentMode)
return 'let cms="'. escape(a:cms, '"') .'" | let commentMode="'. a:commentMode .'"'
endf
fun! <SID>BlockGetCommentString(cms)
fun! s:BlockGetCommentString(cms)
return substitute(a:cms, '\n.*$', '', '')
endf
fun! <SID>BlockGetMiddleString(cms)
fun! s:BlockGetMiddleString(cms)
let rv = substitute(a:cms, '^.\{-}\n\([^\n]*\)', '\1', '')
return rv == a:cms ? '' : rv
endf
@ -708,3 +714,13 @@ defining a new filetype via TCommentDefineType()
- Renamed TCommentVisualBlock to TCommentRight
- FIX: Forgot 'x' in ExtractCommentsPart() (thanks to Fredrik Acosta)
1.6
- Ignore sql when guessing the comment string in php files; tComment
sometimes chooses the wrong comment string because the use of sql syntax
is used too loosely in php files; if you want to comment embedded sql
code you have to use TCommentAs
- Use keepjumps in commands.
- Map <c-_>p & <L>_p to vip:TComment<cr>
- Made key maps configurable via g:tcommentMapLeader1 and
g:tcommentMapLeader2

View File

@ -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#RmVimball(<f-args>)
au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))
au BufEnter *.vba set noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
au BufEnter *.vba setlocal noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
" =====================================================================
" Restoration And Modelines: {{{1