# HG changeset patch # User vimboss # Date 1142976039 0 # Node ID 860b73800cd79a8dc150375c127d200bf81c149c # Parent 98a88a884610aa911950623d7cce8d067feda66c updated for version 7.0231 diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim new file mode 100644 --- /dev/null +++ b/runtime/autoload/vimball.vim @@ -0,0 +1,254 @@ +" vimball : construct a file containing both paths and files +" Author: Charles E. Campbell, Jr. +" Date: Mar 20, 2006 +" Version: 4 +" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim +" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. +" The VIM LICENSE applies to Vimball.vim, and Vimball.txt +" (see |copyright|) except use "Vimball" instead of "Vim". +" No warranty, express or implied. +" *** *** Use At-Your-Own-Risk! *** *** + +" --------------------------------------------------------------------- +" Load Once: {{{1 +if &cp || exists("g:loaded_vimball") + finish +endif +let s:keepcpo = &cpo +let g:loaded_vimball = "v4" +set cpo&vim + +" ===================================================================== +" Functions: {{{1 + +" --------------------------------------------------------------------- +" MkVimball: creates a vimball given a list of paths to files {{{2 +" Vimball Format: +" path +" filesize +" [file] +" path +" filesize +" [file] +fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range +" call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:vimballname.">") + let vbname= substitute(a:vimballname,'\.[^.]*$','','e').'.vba' + if !a:writelevel && filereadable(vbname) + echohl Error | echoerr "(MkVimball) file<".vbname."> exists; use ! to insist" | echohl None +" call Dret("MkVimball : file<".vbname."> already exists; use ! to insist") + return + endif + + " user option bypass + let eikeep= &ei + set ei=all + + let home = substitute(&rtp,',.*$','','') + let curdir = getcwd() + exe "cd ".home + + " record current tab, initialize while loop index + let curtabnr = tabpagenr() + let linenr = a:line1 +" call Decho("curtabnr=".curtabnr) + + while linenr <= a:line2 + let svfile = getline(linenr) +" call Decho("svfile<".svfile.">") + + if !filereadable(svfile) + echohl Error | echo "unable to read file<".svfile.">" | echohl None + let &ei= eikeep + exe "cd ".curdir +" call Dret("MkVimball") + return + endif + + " create/switch to mkvimball tab + if !exists("vbtabnr") + tabnew + silent! file Vimball + let vbtabnr= tabpagenr() + else + exe "tabn ".vbtabnr + endif + + let lastline= line("$") + 1 + if lastline == 2 && getline("$") == "" + call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.') + call setline(2,'UseVimball') + call setline(3,'finish') + let lastline= 4 + endif + call setline(lastline ,svfile) + call setline(lastline+1,0) + exe "$r ".svfile + call setline(lastline+1,line("$") - lastline - 1) +" call Decho("lastline=".lastline." line$=".line("$")) + + " restore to normal tab + exe "tabn ".curtabnr + let linenr= linenr + 1 + endwhile + + " write the vimball + exe "tabn ".vbtabnr + exe "cd ".curdir + if a:really + if a:writelevel + exe "w! ".vbname + else + exe "w ".vbname + endif + endif +" call Decho("Vimball<".vbname."> created") + echo "Vimball<".vbname."> created" + + " remove the evidence + setlocal nomod bh=wipe + exe "tabn ".curtabnr + exe "tabc ".vbtabnr + + " restore options + let &ei= eikeep + +" call Dret("MkVimball") +endfun + +" --------------------------------------------------------------------- +" Vimball: {{{2 +fun! vimball#Vimball(really) +" call Dfunc("Vimball(really=".a:really.")") + + if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$' + echoerr "(Vimball) The current file does not appear to be a Vimball!" +" call Dret("Vimball") + return + endif + + " initialize + let regakeep = @a + let eikeep = &ei + let vekeep = &ve + let makeep = getpos("'a") + let curtabnr = tabpagenr() + set ei=all ve=all + + " set up vimball tab + tabnew + silent! file Vimball + let vbtabnr= tabpagenr() + let didhelp= "" + + " go to vim plugin home + let home = substitute(&rtp,',.*$','','') + let curdir = getcwd() +" call Decho("exe cd ".home) + exe "cd ".home + let linenr = 4 + let filecnt = 0 + + " give title to listing of (extracted) files from Vimball Archive + if a:really + echohl Title | echomsg "Vimball Archive" | echohl None + else + echohl Title | echomsg "Vimball Archive Listing" | echohl None + endif + + " apportion vimball contents to various files +" call Decho("exe tabn ".curtabnr) + exe "tabn ".curtabnr +" call Decho("linenr=".linenr." line$=".line("$")) + while 1 < linenr && linenr < line("$") + let fname = getline(linenr) + let fsize = getline(linenr+1) + let filecnt = filecnt + 1 + if a:really + echomsg "extracted <".fname.">: ".fsize." lines" + else + echomsg "would extract <".fname.">: ".fsize." lines" + endif +" call Decho(linenr.": will extract file<".fname.">") +" call Decho((linenr+1).": fsize=".fsize) + + " make directories if they don't exist yet + let fnamebuf= fname + while fnamebuf =~ '/' + let dirname = substitute(fnamebuf,'/.*$','','e') + let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','e') + if !isdirectory(dirname) +" call Decho("making <".dirname.">") + call mkdir(dirname) + endif + exe "cd ".dirname + endwhile + exe "cd ".home + + " grab specified qty of lines and place into "a" buffer + exe linenr + norm! jjma + exe (linenr + fsize + 1) + silent norm! "ay'a +" call Decho("yanked ".fsize." lines into register-a") + +" call Decho("didhelp<".didhelp."> fname<".fname.">") + if didhelp == "" && fname =~ 'doc/[^/]\+\.txt$' + let didhelp= substitute(fname,'^\(.*\") + endif + + " copy "a" buffer into tab +" call Decho('copy "a buffer into tab#'.vbtabnr) + exe "tabn ".vbtabnr + silent! %d + silent norm! "aPGdd1G +" call Decho("rega<".@a.">") + + " write tab to file +" call Decho("exe w! ".fname) + exe "silent w! ".fname + +" call Decho("exe tabn ".curtabnr) + exe "tabn ".curtabnr +" let oldlinenr = linenr " Decho + let linenr = linenr + fsize + 2 +" call Decho("update linenr= [linenr=".oldlinenr."] + [fsize=".fsize."] + 2 = ".linenr) + endwhile + + " set up help +" call Decho("about to set up help: didhelp<".didhelp.">") + if didhelp != "" +" call Decho("exe helptags ".home."/".didhelp) + exe "helptags ".home."/".didhelp + echomsg "did helptags" + endif + + " make sure a "Press ENTER..." prompt appears to keep the messages showing! + while filecnt < &ch + echomsg " " + let filecnt= filecnt + 1 + endwhile + + " restore events, delete tab and buffer + exe "tabn ".vbtabnr + setlocal nomod bh=wipe + exe "tabn ".curtabnr + exe "tabc ".vbtabnr + let &ei= eikeep + let @a = regakeep + if makeep[0] != 0 + " restore mark a +" call Decho("restore mark-a: makeep=".string(makeep)) + call setpos("'a",makeep) + ka + endif + exe "cd ".curdir + +" call Dret("Vimball") +endfun + +let &cpo= s:keepcpo +unlet s:keepcpo +" ===================================================================== +" Modelines: {{{1 +" vim: fdm=marker diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -28,6 +28,7 @@ DOCS = \ farsi.txt \ filetype.txt \ fold.txt \ + getscript.txt \ gui.txt \ gui_w16.txt \ gui_w32.txt \ @@ -136,6 +137,7 @@ DOCS = \ version6.txt \ version7.txt \ vi_diff.txt \ + vimball.txt \ visual.txt \ windows.txt \ workshop.txt @@ -155,6 +157,7 @@ HTMLS = \ farsi.html \ filetype.html \ fold.html \ + getscript.html \ gui.html \ gui_w16.html \ gui_w32.html \ @@ -262,6 +265,7 @@ HTMLS = \ version6.html \ version7.html \ vi_diff.html \ + vimball.txt \ visual.html \ windows.html \ workshop.html diff --git a/runtime/plugin/getscript.vim b/runtime/plugin/getscript.vim new file mode 100644 --- /dev/null +++ b/runtime/plugin/getscript.vim @@ -0,0 +1,470 @@ +" --------------------------------------------------------------------- +" GetLatestVimScripts.vim +" Author: Charles E. Campbell, Jr. +" Date: Feb 15, 2006 +" Version: 20 +" Installing: :help glvs-install +" Usage: :help glvs +" +" GetLatestVimScripts: 642 1 :AutoInstall: GetLatestVimScripts.vim +" --------------------------------------------------------------------- +" Initialization: {{{1 +" if you're sourcing this file, surely you can't be +" expecting vim to be in its vi-compatible mode +if &cp + if &verbose + echo "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" + endif + finish +endif +let s:keepfo = &fo +let s:keepcpo = &cpo +set cpo&vim + +if exists("loaded_GetLatestVimScripts") + finish +endif +let g:loaded_GetLatestVimScripts= "v20" + +" --------------------------------------------------------------------- +" Global Variables: {{{1 +" allow user to change the command for obtaining scripts (does fetch work?) +if !exists("g:GetLatestVimScripts_wget") + let g:GetLatestVimScripts_wget= "wget" +endif +if !exists("g:GetLatestVimScripts_options") + let g:GetLatestVimScripts_options= "-q -O" +endif +if !exists("g:GetLatestVimScripts_allowautoinstall") + let g:GetLatestVimScripts_allowautoinstall= 1 +endif + +"" For debugging: +"let g:GetLatestVimScripts_wget = "echo" +"let g:GetLatestVimScripts_options = "options" + +" check if s:autoinstall is possible +let s:autoinstall= "" +if g:GetLatestVimScripts_allowautoinstall + + if (has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")) && &shell != "bash" + " windows (but not cygwin/bash) + let s:dotvim= "vimfiles" + if !exists("g:GetLatestVimScripts_mv") + let g:GetLatestVimScripts_mv= "ren" + endif + + else + " unix + let s:dotvim= ".vim" + if !exists("g:GetLatestVimScripts_mv") + let g:GetLatestVimScripts_mv= "mv" + endif + endif + + if exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim) + let s:autoinstall= $HOME."/".s:dotvim + endif +" call Decho("s:autoinstall<".s:autoinstall.">") +else +" call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled") +endif + +" --------------------------------------------------------------------- +" Public Interface: {{{1 +com! -nargs=0 GetLatestVimScripts call GetLatestVimScripts() +silent! com -nargs=0 GLVS call GetLatestVimScripts() + +" --------------------------------------------------------------------- +" GetOneScript: (Get Latest Vim Script) this function operates {{{1 +" on the current line, interpreting two numbers and text as +" ScriptID, SourceID, and Filename. +" It downloads any scripts that have newer versions from vim.sf.net. +fun! GetOneScript(...) +" call Dfunc("GetOneScript()") + + " set options to allow progress to be shown on screen + let t_ti= &t_ti + let t_te= &t_te + let rs = &rs + set t_ti= t_te= nors + + " put current line on top-of-screen and interpret it into + " a script identifer : used to obtain webpage + " source identifier : used to identify current version + " and an associated comment: used to report on what's being considered + if a:0 >= 3 + let scriptid = a:1 + let srcid = a:2 + let cmmnt = a:3 +" call Decho("scriptid<".scriptid.">") +" call Decho("srcid <".srcid.">") +" call Decho("cmmnt <".cmmnt.">") + else + let curline = getline(".") + let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)$' + try + let scriptid = substitute(curline,parsepat,'\1','e') + catch /^Vim\%((\a\+)\)\=:E486/ + let scriptid= 0 + endtry + try + let srcid = substitute(curline,parsepat,'\2','e') + catch /^Vim\%((\a\+)\)\=:E486/ + let srcid= 0 + endtry + try + let cmmnt = substitute(curline,parsepat,'\3','e') + catch /^Vim\%((\a\+)\)\=:E486/ + let cmmnt= "" + endtry +" call Decho("curline <".curline.">") +" call Decho("parsepat<".parsepat.">") +" call Decho("scriptid<".scriptid.">") +" call Decho("srcid <".srcid.">") +" call Decho("cmmnt <".cmmnt.">") + endif + + if scriptid == 0 || srcid == 0 + " When looking for :AutoInstall: lines, skip scripts that + " have 0 0 scriptname +" call Dret("GetOneScript : skipping a scriptid==srcid==0 line") + return + endif + + let doautoinstall= 0 + if cmmnt =~ ":AutoInstall:" +" call Decho("cmmnt<".cmmnt."> has :AutoInstall:...") + let aicmmnt= substitute(cmmnt,'\s\+:AutoInstall:\s\+',' ','') +" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall) + if s:autoinstall != "" + let doautoinstall = g:GetLatestVimScripts_allowautoinstall + endif + else + let aicmmnt= cmmnt + endif +" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall) + + exe "norm z\" + redraw! +" call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid) + echomsg 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid + + " grab a copy of the plugin's vim.sf.net webpage + let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid + let tmpfile = tempname() + let v:errmsg = "" + + " make three tries at downloading the description + let itry= 1 + while itry <= 3 +" call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) + if has("win32") || has("win16") || has("win95") +" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"') + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"' + else +" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'") + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'" + endif + if itry == 1 + exe "silent vsplit ".tmpfile + else + silent! e % + endif + + " find the latest source-id in the plugin's webpage + silent! 1 + let findpkg= search('Click on the package to download','W') + if findpkg > 0 + break + endif + let itry= itry + 1 + endwhile +" call Decho(" --- end downloading tries while loop --- itry=".itry) + + " testing: did finding /Click on the package.../ fail? + if findpkg == 0 || itry >= 4 + silent q! + call delete(tmpfile) + " restore options + let &t_ti = t_ti + let &t_te = t_te + let &rs = rs + let s:downerrors = s:downerrors + 1 +" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">") + echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">" +" call Dret("GetOneScript : srch for /Click on the package/ failed") + return + endif +" call Decho('found "Click on the package to download"') + + let findsrcid= search('src_id=','W') + if findsrcid == 0 + silent q! + call delete(tmpfile) + " restore options + let &t_ti = t_ti + let &t_te = t_te + let &rs = rs + let s:downerrors = s:downerrors + 1 +" call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">") + echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">" +" call Dret("GetOneScript : srch for /src_id/ failed") + return + endif +" call Decho('found "src_id=" in description page') + + let srcidpat = '^\s*\([^<]\+\)<.*$' + let latestsrcid= substitute(getline("."),srcidpat,'\1','') + let fname = substitute(getline("."),srcidpat,'\2','') +" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> fname<".fname.">") + silent q! + call delete(tmpfile) + + " convert the strings-of-numbers into numbers + let srcid = srcid + 0 + let latestsrcid = latestsrcid + 0 +" call Decho("srcid=".srcid." latestsrcid=".latestsrcid." fname<".fname.">") + + " has the plugin's most-recent srcid increased, which indicates + " that it has been updated + if latestsrcid > srcid + let s:downloads= s:downloads + 1 + if fname == bufname("%") + " GetLatestVimScript has to be careful about downloading itself + let fname= "NEW_".fname + endif + + " the plugin has been updated since we last obtained it, so download a new copy +" call Decho("...downloading new <".fname.">") + echomsg "...downloading new <".fname.">" + if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95") +" call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"') + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"' + else +" call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'") + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'" + endif + + " AutoInstall: only if doautoinstall is so indicating + if doautoinstall +" call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".fname.")=".filereadable(fname)) + if filereadable(fname) +" call Decho("move <".fname."> to ".s:autoinstall) +" call Decho("DISABLED for testing") + exe "silent !"g:GetLatestVimScripts_mv." ".fname." ".s:autoinstall + let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #") + exe "cd ".s:autoinstall + if fname =~ '\.bz2$' +" call Decho("attempt to bunzip2 ".fname) + exe "silent !bunzip2 ".fname + let fname= substitute(fname,'\.bz2$','','') + elseif fname =~ '\.gz$' +" call Decho("attempt to gunzip ".fname) + exe "silent !gunzip ".fname + let fname= substitute(fname,'\.gz$','','') + endif + if fname =~ '\.zip$' +" call Decho("attempt to unzip ".fname) + exe "silent !unzip -o".fname + elseif fname =~ '\.tar$' +" call Decho("attempt to untar ".fname) + exe "silent !tar -oxvf ".fname + endif + if fname =~ '.vim$' +" call Decho("attempt to simply move ".fname." to plugin") + exe "silent !".g:GetLatestVimScripts_mv." ".fname." plugin" + endif + exe "helptags ../".s:dotvim."/doc" + exe "cd ".curdir + endif + endif + + " update the data in the file + let modline=scriptid." ".latestsrcid." ".cmmnt + call setline(line("."),modline) +" call Decho("modline<".modline."> (updated GetLatestVimScripts.dat file)") + endif + + " restore options + let &t_ti= t_ti + let &t_te= t_te + let &rs = rs + +" call Dret("GetOneScript") +endfun + +" --------------------------------------------------------------------- +" GetLatestVimScripts: this function gets the latest versions of {{{1 +" scripts based on the list in +" +" (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat +fun! GetLatestVimScripts() +" call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">") + +" insure that wget is executable + if executable(g:GetLatestVimScripts_wget) != 1 + echoerr "GetLatestVimScripts needs ".g:GetLatestVimScripts_wget." which apparently is not available on your system" +" call Dret("GetLatestVimScripts : wget not executable/availble") + return + endif + + " Find the .../GetLatest sudirectory under the runtimepath + let rtplist= &rtp + while rtplist != "" + let datadir= substitute(rtplist,',.*$','','e')."/GetLatest" + if isdirectory(datadir) +" call Decho("found directory<".datadir.">") + break + endif + unlet datadir + if rtplist =~ ',' + let rtplist= substitute(rtplist,'^.\{-},','','e') + else + let rtplist= "" + endif + endwhile + + " Sanity checks: readability and writability + if !exists("datadir") + echoerr "Unable to find a GetLatest subdirectory on your runtimepath" +" call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory") + return + endif + if filewritable(datadir) != 2 + echoerr "Your ".datadir." isn't writable" +" call Dret("GetLatestVimScripts : non-writable directory<".datadir.">") + return + endif + let datafile= datadir."/GetLatestVimScripts.dat" + if !filereadable(datafile) + echoerr "Your data file<".datafile."> isn't readable" +" call Dret("GetLatestVimScripts : non-readable datafile<".datafile.">") + return + endif + if !filewritable(datafile) + echoerr "Your data file<".datafile."> isn't writable" +" call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">") + return + endif +" call Decho("datadir <".datadir.">") +" call Decho("datafile <".datafile.">") + + " don't let any events interfere (like winmanager's, taglist's, etc) + let eikeep= &ei + set ei=all + + " record current directory, change to datadir, open split window with + " datafile + let origdir= getcwd() + exe "cd ".escape(substitute(datadir,'\','/','ge'),"|[]*'\" #") + split + exe "e ".escape(substitute(datafile,'\','/','ge'),"|[]*'\" #") + res 1000 + let s:downloads = 0 + let s:downerrors= 0 + + " Check on dependencies mentioned in plugins +" call Decho(" ") +" call Decho("searching plugins for GetLatestVimScripts dependencies") + let lastline = line("$") + let plugins = globpath(&rtp,"plugin/*.vim") + let foundscript = 0 + +" call Decho("plugins<".plugins."> lastline#".lastline) + while plugins != "" + let plugin = substitute(plugins,'\n.*$','','e') + let plugins= (plugins =~ '\n')? substitute(plugins,'^.\{-}\n\(.*\)$','\1','e') : "" + $ +" call Decho(".dependency checking<".plugin."> line$=".line("$")) + exe "silent r ".plugin + while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 + let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') + let llp1 = lastline+1 + + if newscript !~ '^"' + " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile + let curline = line(".") + let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e') + exe llp1 + let srchline = search('\<'.noai_script.'\>','bW') +" call Decho("..newscript<".newscript."> noai_script<".noai_script."> srch=".srchline." lastline=".lastline) + + if srchline == 0 + " found a new script to permanently include in the datafile + let keep_rega = @a + let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') + exe lastline."put a" + echomsg "Appending <".@a."> to ".datafile." for ".newscript +" call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat") + let @a = keep_rega + let lastline = llp1 + let curline = curline + 1 + let foundscript = foundscript + 1 +" else " Decho +" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")") + endif + + let curline = curline + 1 + exe curline + endif + + endwhile + let llp1= lastline + 1 +" call Decho(".deleting lines: ".llp1.",$d") + exe "silent! ".llp1.",$d" + endwhile + + if foundscript == 0 + set nomod + endif + + " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat + set lz +" call Decho(" --- end of dependency checking loop --- ") +" call Decho("call GetOneScript on lines at end of datafile<".datafile.">") + 1 + /^-----/,$g/^\s*\d/call GetOneScript() + + " Final report (an echomsg) + try + silent! ?^-------? + catch /^Vim\%((\a\+)\)\=:E114/ +" call Dret("GetLatestVimScripts : nothing done!") + return + endtry + exe "norm! kz\" + let s:msg = "" + if s:downloads == 1 + let s:msg = "Downloaded one updated script to <".datadir.">" + elseif s:downloads == 2 + let s:msg= "Downloaded two updated scripts to <".datadir.">" + elseif s:downloads > 1 + let s:msg= "Downloaded ".s:downloads." updated scripts to <".datadir.">" + else + let s:msg= "Everything was already current" + endif + if s:downerrors > 0 + let s:msg= s:msg." (".s:downerrors." downloading errors)" + endif + echomsg s:msg + " save the file + if &mod + wq + else + q + endif + + " restore events and current directory + exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #") + let &ei= eikeep + set nolz +" call Dret("GetLatestVimScripts : did ".s:downloads." downloads") +endfun +" --------------------------------------------------------------------- + +" Restore Options: {{{1 +let &fo = s:keepfo +let &cpo= s:keepcpo + +" vim: ts=8 sts=2 fdm=marker nowrap diff --git a/runtime/plugin/vimballPlugin.vim b/runtime/plugin/vimballPlugin.vim new file mode 100644 --- /dev/null +++ b/runtime/plugin/vimballPlugin.vim @@ -0,0 +1,30 @@ +" vimball : construct a file containing both paths and files +" Author: Charles E. Campbell, Jr. +" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim +" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. +" The VIM LICENSE applies to Vimball.vim, and Vimball.txt +" (see |copyright|) except use "Vimball" instead of "Vim". +" No warranty, express or implied. +" *** *** Use At-Your-Own-Risk! *** *** + +" --------------------------------------------------------------------- +" Load Once: {{{1 +if &cp || exists("g:loaded_vimball") + finish +endif + +let s:keepcpo= &cpo +set cpo&vim + +" ------------------------------------------------------------------------------ +" Public Interface: {{{1 +com! -ra -na=+ -bang MkVimball call vimball#MkVimball(,,0,) +com! -na=0 UseVimball call vimball#Vimball(1) +com! -na=0 VimballList call vimball#Vimball(0) +au BufReadPost *.vba echohl WarningMsg | echo "Source this file to extract it! (:so %)" | echohl None + +let &cpo= s:keepcpo +unlet s:keepcpo +" ===================================================================== +" Modelines: {{{1 +" vim: fdm=marker diff --git a/runtime/syntax/asterisk.vim b/runtime/syntax/asterisk.vim --- a/runtime/syntax/asterisk.vim +++ b/runtime/syntax/asterisk.vim @@ -1,49 +1,63 @@ " Vim syntax file " Language: Asterisk config file -" Maintainer: brc007 -" Last Change: 2005 Sep 19 -" version 0.2 +" Maintainer: brc007 +" Updated for 1.2 by Tilghman Lesher (Corydon76) +" Last Change: 2006 Mar 20 +" version 0.4 " -" Additional changes made 2005 Mar 7 by Corydon76 -" * CVS priority, including n and s, and new label definitions -" * ENV( and LEN( support -" * Class patterns in extensions now match only the class pattern (instead of to a following expression) -" * anthm's functions are matched -" * Variables now appear in their own colors inside expressions - -" 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 -"testing only syn sync clear syn sync fromstart - -syn keyword asteriskTodo TODO contained -syn match asteriskComment ";.*" contains=asteriskTodo +syn keyword asteriskTodo TODO contained +syn match asteriskComment ";.*" contains=asteriskTodo syn match asteriskContext "\[.\{-}\]" -syn match asteriskExten "^\s*exten\s*=>" -syn match asteriskApp "\s*,\s*\zs[a-zA-Z]*\ze" +syn match asteriskExten "^\s*exten\s*=>\?\s*[^,]\+" contains=asteriskPattern +syn match asteriskExten "^\s*\(register\|channel\|ignorepat\|include\|\(no\)\?load\)\s*=>\?" +syn match asteriskPattern "_\(\[[[:alnum:]#*\-]\+\]\|[[:alnum:]#*]\)*\.\?" contained +syn match asteriskPattern "[^A-Za-z0-9,]\zs[[:alnum:]#*]\+\ze" contained +syn match asteriskApp ",\zs[a-zA-Z]\+\ze$" +syn match asteriskApp ",\zs[a-zA-Z]\+\ze(" " Digits plus oldlabel (newlabel) -syn match asteriskPriority ",[[:digit:]]\+\(+[[:alpha:]][[:alnum:]_]*\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?," +syn match asteriskPriority ",\zs[[:digit:]]\+\(+[[:alpha:]][[:alnum:]_]*\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel +" oldlabel plus digits (newlabel) +syn match asteriskPriority ",\zs[[:alpha:]][[:alnum:]_]*+[[:digit:]]\+\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel " s or n plus digits (newlabel) -syn match asteriskPriority ",[sn]\(+[[:digit:]]\+\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?," -syn match asteriskIncludeBad "^\s*#\s*[[:alnum:]]*" -syn match asteriskInclude "^\s#\sinclude\s.*" -syn match asteriskVar "\${_\{0,2}[[:alpha:]][[:alnum:]_]*\(:[[:digit:]]\+\)\{0,2}}" -syn match asteriskVarLen "\${_\{0,2}[[:alpha:]][[:alnum:]_]*(.\{-})}" contains=asteriskVar,asteriskVarLen,asteriskExp +syn match asteriskPriority ",\zs[sn]\(+[[:digit:]]\+\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel +syn match asteriskLabel "(\zs[[:alpha:]][[:alnum:]]*\ze)" contained +syn match asteriskError "^\s*#\s*[[:alnum:]]*" +syn match asteriskInclude "^\s*#\s*\(include\|exec\)\s.*" +syn match asteriskVar "\${_\{0,2}[[:alpha:]][[:alnum:]_]*\(:-\?[[:digit:]]\+\(:[[:digit:]]\+\)\?\)\?}" +syn match asteriskVar "_\{0,2}[[:alpha:]][[:alnum:]_]*\ze=" +syn match asteriskVarLen "\${_\{0,2}[[:alpha:]][[:alnum:]_]*(.*)}" contains=asteriskVar,asteriskVarLen,asteriskExp +syn match asteriskVarLen "(\zs[[:alpha:]][[:alnum:]_]*(.\{-})\ze=" contains=asteriskVar,asteriskVarLen,asteriskExp syn match asteriskExp "\$\[.\{-}\]" contains=asteriskVar,asteriskVarLen,asteriskExp -syn match asteriskFunc "\$([[:alpha:]][[:alnum:]_]*.*)" contains=asteriskVar,asteriskVarLen,asteriskExp +syn match asteriskCodecsPermit "^\s*\(allow\|disallow\)\s*=\s*.*$" contains=asteriskCodecs +syn match asteriskCodecs "\(g723\|gsm\|ulaw\|alaw\|g726\|adpcm\|slin\|lpc10\|g729\|speex\|ilbc\|all\s*$\)" +syn match asteriskError "^\(type\|auth\|permit\|deny\|bindaddr\|host\)\s*=.*$" +syn match asteriskType "^\zstype=\ze\<\(peer\|user\|friend\)\>$" contains=asteriskTypeType +syn match asteriskTypeType "\<\(peer\|user\|friend\)\>" contained +syn match asteriskAuth "^\zsauth\s*=\ze\s*\<\(md5\|rsa\|plaintext\)\>$" contains=asteriskAuthType +syn match asteriskAuthType "\<\(md5\|rsa\|plaintext\)\>" +syn match asteriskAuth "^\zs\(secret\|inkeys\|outkey\)\s*=\ze.*$" +syn match asteriskAuth "^\(permit\|deny\)\s*=\s*\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\s*$" contains=asteriskIPRange +syn match asteriskIPRange "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" contained +syn match asteriskIP "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" contained +syn match asteriskHostname "[[:alnum:]][[:alnum:]\-\.]*\.[[:alpha:]]{2,10}" contained +syn match asteriskPort "\d\{1,5}" contained +syn match asteriskSetting "^bindaddr\s*=\s*\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}$" contains=asteriskIP +syn match asteriskSetting "^port\s*=\s*\d\{1,5}\s*$" contains=asteriskPort +syn match asteriskSetting "^host\s*=\s*\(dynamic\|\(\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)\|\([[:alnum:]][[:alnum:]\-\.]*\.[[:alpha:]]{2,10}\)\)" contains=asteriskIP,asteriskHostname " 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_conf_syntax_inits") +if version >= 508 || !exists("did_conf_syntax_inits") if version < 508 let did_conf_syntax_inits = 1 command -nargs=+ HiLink hi link @@ -51,23 +65,32 @@ syn match asteriskFunc command -nargs=+ HiLink hi def link endif - - HiLink asteriskComment Comment -" not sure what type this should be, using String for testing. - HiLink asteriskExten String -" same here - HiLink asteriskContext Identifier - HiLink asteriskApplication Statement - HiLink asteriskInclude Preproc - HiLink asteriskIncludeBad Error - HiLink asteriskPriority Preproc + HiLink asteriskComment Comment + HiLink asteriskExten String + HiLink asteriskContext Preproc + HiLink asteriskPattern Type + HiLink asteriskApp Statement + HiLink asteriskInclude Preproc + HiLink asteriskIncludeBad Error + HiLink asteriskPriority Preproc + HiLink asteriskLabel Type HiLink asteriskVar String HiLink asteriskVarLen Function HiLink asteriskExp Type + HiLink asteriskCodecsPermit Preproc + HiLink asteriskCodecs String + HiLink asteriskType Statement + HiLink asteriskTypeType Type + HiLink asteriskAuth String + HiLink asteriskAuthType Type + HiLink asteriskIPRange Identifier + HiLink asteriskIP Identifier + HiLink asteriskPort Identifier + HiLink asteriskHostname Identifier + HiLink asteriskSetting Statement + HiLink asteriskError Error delcommand HiLink endif - +let b:current_syntax = "asterisk" +" vim: ts=8 sw=2 -let b:current_syntax = "asterisk" - -" vim: ts=8 sw=2 diff --git a/runtime/syntax/asteriskvm.vim b/runtime/syntax/asteriskvm.vim new file mode 100644 --- /dev/null +++ b/runtime/syntax/asteriskvm.vim @@ -0,0 +1,62 @@ +" Vim syntax file +" Language: Asterisk voicemail config file +" Maintainer: Tilghman Lesher (Corydon76) +" Last Change: 2006 Mar 21 +" version 0.2 +" +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn sync clear +syn sync fromstart + + +syn keyword asteriskvmTodo TODO contained +syn match asteriskvmComment ";.*" contains=asteriskvmTodo +syn match asteriskvmContext "\[.\{-}\]" + +" ZoneMessages +syn match asteriskvmZone "^[[:alnum:]]\+\s*=>\?\s*[[:alnum:]/_]\+|.*$" contains=zoneName,zoneDef +syn match zoneName "=\zs[[:alnum:]/_]\+\ze" contained +syn match zoneDef "|\zs.*\ze$" contained + +syn match asteriskvmSetting "\<\(format\|serveremail\|minmessage\|maxmessage\|maxgreet\|skipms\|maxsilence\|silencethreshold\|maxlogins\)=" +syn match asteriskvmSetting "\<\(externnotify\|externpass\|directoryintro\|charset\|adsi\(fdn\|sec\|ver\)\|\(pager\)\?fromstring\|email\(subject\|body\|cmd\)\|tz\|cidinternalcontexts\|saydurationm\|dialout\|callback\)=" +syn match asteriskvmSettingBool "\<\(attach\|pbxskip\|usedirectory\|saycid\|sayduration\|sendvoicemail\|review\|operator\|envelope\|delete\|nextaftercmd\|forcename\|forcegreeting\)=\(yes\|no\|1\|0\|true\|false\|t\|f\)" + +" Individual mailbox definitions +syn match asteriskvmMailbox "^[[:digit:]]\+\s*=>\?\s*[[:digit:]]\+\(,[^,]*\(,[^,]*\(,[^,]*\(,[^,]*\)\?\)\?\)\?\)\?" contains=mailboxEmail,asteriskvmSetting,asteriskvmSettingBool,comma +syn match mailboxEmail ",\zs[^@=,]*@[[:alnum:]\-\.]\+\.[[:alpha:]]\{2,10}\ze" contains=comma +syn match comma "[,|]" contained + +" 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_conf_syntax_inits") + if version < 508 + let did_conf_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink asteriskvmComment Comment + HiLink asteriskvmContext Identifier + HiLink asteriskvmZone Type + HiLink zoneName String + HiLink zoneDef String + HiLink asteriskvmSetting Type + HiLink asteriskvmSettingBool Type + + HiLink asteriskvmMailbox Statement + HiLink mailboxEmail String + delcommand HiLink +endif + +let b:current_syntax = "asteriskvm" + +" vim: ts=8 sw=2 + diff --git a/src/vim.h b/src/vim.h --- a/src/vim.h +++ b/src/vim.h @@ -1723,7 +1723,7 @@ typedef int VimClipboard; /* This is req # define stat(a,b) (access(a,0) ? -1 : stat(a,b)) #endif -#ifdef FEAT_PROFILE +#if defined(FEAT_PROFILE) || defined(FEAT_RELTIME) # ifdef WIN3264 typedef LARGE_INTEGER proftime_T; # else