# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1338273702 -7200 # Node ID 86954f5fc4d2165c6a46dd3e207bd3443cb1509a initial diff -r 000000000000 -r 86954f5fc4d2 .inputrc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.inputrc Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,1 @@ +set editing-mode vi diff -r 000000000000 -r 86954f5fc4d2 .perltidyrc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.perltidyrc Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,3 @@ +--paren-tightness=2 +--square-bracket-tightness=2 +--nospace-for-semicolon diff -r 000000000000 -r 86954f5fc4d2 .vim/.VimballRecord --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/.VimballRecord Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,1 @@ +DrawIt.vba: call delete('/home/is/heiko/.vim/plugin/DrawItPlugin.vim')|call delete('/home/is/heiko/.vim/plugin/cecutil.vim')|call delete('/home/is/heiko/.vim/autoload/DrawIt.vim')|call delete('/home/is/heiko/.vim/doc/DrawIt.txt') diff -r 000000000000 -r 86954f5fc4d2 .vim/.netrwhist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/.netrwhist Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,6 @@ +let g:netrw_dirhistmax =10 +let g:netrw_dirhist_cnt =4 +let g:netrw_dirhist_1='/tmp/x' +let g:netrw_dirhist_2='/tmp' +let g:netrw_dirhist_3='/home/heiko/xxx' +let g:netrw_dirhist_4='/home/heiko/itelli/x' diff -r 000000000000 -r 86954f5fc4d2 .vim/autoload/DrawIt.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/autoload/DrawIt.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,1511 @@ +" DrawIt.vim: a simple way to draw things in Vim -- just put this file in +" +" Maintainer: Charles E. Campbell, Jr. (Charles.E.Campbell.1@gsfc.nasa.gov) +" Authors: Charles E. Campbell, Jr. (NdrchipO@ScampbellPfamily.AbizM - NOSPAM) +" Sylvain Viart (molo@multimania.com) +" Version: 7 +" Date: Apr 10, 2006 +" +" Quick Setup: {{{1 +" tar -oxvf DrawIt.tar +" Should put DrawItPlugin.vim in your .vim/plugin directory, +" put DrawIt.vim in your .vim/autoload directory +" put DrawIt.txt in your .vim/doc directory. +" Then, use \di to start DrawIt, +" \ds to stop Drawit, and +" draw by simply moving about using the cursor keys. +" +" You may also use visual-block mode to select endpoints and +" draw lines, arrows, and ellipses. +" +" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 +" Permission is hereby granted to use and distribute this code, +" with or without modifications, provided that this copyright +" notice is copied with it. Like anything else that's free, +" DrawIt.vim is provided *as is* and comes with no warranty +" of any kind, either expressed or implied. By using this +" plugin, you agree that in no event will the copyright +" holder be liable for any damages resulting from the use +" of this software. +" +" Required: THIS SCRIPT REQUIRES VIM 7.0 (or later) {{{1 +" GetLatestVimScripts: 40 1 :AutoInstall: DrawIt.vim +" GetLatestVimScripts: 1066 1 cecutil.vim +" +" Woe to her who is rebellious and polluted, the oppressing {{{1 +" city! She didn't obey the voice. She didn't receive correction. +" She didn't trust in Yahweh. She didn't draw near to her God. (Zeph 3:1,2 WEB) + +" --------------------------------------------------------------------- +" Load Once: {{{1 +if &cp || exists("g:loaded_DrawIt") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" --------------------------------------------------------------------- +" Script Variables: {{{1 +if !exists("s:saveposn_count") + let s:saveposn_count= 0 +endif +let g:loaded_DrawIt= "v7" + +" ===================================================================== +" Drawit Functions: (by Charles E. Campbell, Jr.) {{{1 +" ===================================================================== + +" --------------------------------------------------------------------- +" StartDrawIt: this function maps the cursor keys, sets up default {{{2 +" drawing characters, and makes some settings +fun! DrawIt#StartDrawIt() +" call Dfunc("StartDrawIt()") + + " report on [DrawIt] mode {{{3 + if exists("b:dodrawit") && b:dodrawit == 1 + " already in DrawIt mode + if exists("mapleader") && mapleader != "" + let usermaplead= mapleader + else + let usermaplead= '\' + endif + echo "[DrawIt] (already on, use ".usermaplead."ds to stop)" +" call Dret("StartDrawIt") + return + endif + let b:dodrawit= 1 + + " indicate in DrawIt mode + echo "[DrawIt]" + + " turn on mouse {{{3 + if !exists("b:drawit_keep_mouse") + let b:drawit_keep_mouse= &mouse + endif + set mouse=a + + " set up DrawIt commands + com! -nargs=1 -range SetBrush ,call DrawIt#SetBrush() + + " set up default drawing characters {{{3 + if !exists("b:di_vert") + let b:di_vert= "|" + endif + if !exists("b:di_horiz") + let b:di_horiz= "-" + endif + if !exists("b:di_plus") + let b:di_plus= "+" + endif + if !exists("b:di_upright") " also downleft + let b:di_upright= "/" + endif + if !exists("b:di_upleft") " also downright + let b:di_upleft= "\\" + endif + if !exists("b:di_cross") + let b:di_cross= "X" + endif + + " set up initial DrawIt behavior (as opposed to erase behavior) + let b:di_erase= 0 + + " option recording {{{3 + let b:di_aikeep = &ai + let b:di_cinkeep = &cin + let b:di_cpokeep = &cpo + let b:di_etkeep = &et + let b:di_fokeep = &fo + let b:di_gdkeep = &gd + let b:di_gokeep = &go + let b:di_magickeep = &magic + let b:di_remapkeep = &remap + let b:di_repkeep = &report + let b:di_sikeep = &si + let b:di_stakeep = &sta + let b:di_vekeep = &ve + set cpo&vim + set nocin noai nosi nogd sta et ve="" report=10000 + set go-=aA + set fo-=a + set remap magic + + " save and unmap user maps {{{3 + let b:lastdir = 1 + if exists("mapleader") + let usermaplead = mapleader + else + let usermaplead = "\\" + endif + call SaveUserMaps("n","","><^v","DrawIt") + call SaveUserMaps("v",usermaplead,"abeflsy","DrawIt") + call SaveUserMaps("n",usermaplead,"h>","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n","","","DrawIt") + call SaveUserMaps("n",usermaplead,"pa","DrawIt") + call SaveUserMaps("n",usermaplead,"pb","DrawIt") + call SaveUserMaps("n",usermaplead,"pc","DrawIt") + call SaveUserMaps("n",usermaplead,"pd","DrawIt") + call SaveUserMaps("n",usermaplead,"pe","DrawIt") + call SaveUserMaps("n",usermaplead,"pf","DrawIt") + call SaveUserMaps("n",usermaplead,"pg","DrawIt") + call SaveUserMaps("n",usermaplead,"ph","DrawIt") + call SaveUserMaps("n",usermaplead,"pi","DrawIt") + call SaveUserMaps("n",usermaplead,"pj","DrawIt") + call SaveUserMaps("n",usermaplead,"pk","DrawIt") + call SaveUserMaps("n",usermaplead,"pl","DrawIt") + call SaveUserMaps("n",usermaplead,"pm","DrawIt") + call SaveUserMaps("n",usermaplead,"pn","DrawIt") + call SaveUserMaps("n",usermaplead,"po","DrawIt") + call SaveUserMaps("n",usermaplead,"pp","DrawIt") + call SaveUserMaps("n",usermaplead,"pq","DrawIt") + call SaveUserMaps("n",usermaplead,"pr","DrawIt") + call SaveUserMaps("n",usermaplead,"ps","DrawIt") + call SaveUserMaps("n",usermaplead,"pt","DrawIt") + call SaveUserMaps("n",usermaplead,"pu","DrawIt") + call SaveUserMaps("n",usermaplead,"pv","DrawIt") + call SaveUserMaps("n",usermaplead,"pw","DrawIt") + call SaveUserMaps("n",usermaplead,"px","DrawIt") + call SaveUserMaps("n",usermaplead,"py","DrawIt") + call SaveUserMaps("n",usermaplead,"pz","DrawIt") + call SaveUserMaps("n",usermaplead,"ra","DrawIt") + call SaveUserMaps("n",usermaplead,"rb","DrawIt") + call SaveUserMaps("n",usermaplead,"rc","DrawIt") + call SaveUserMaps("n",usermaplead,"rd","DrawIt") + call SaveUserMaps("n",usermaplead,"re","DrawIt") + call SaveUserMaps("n",usermaplead,"rf","DrawIt") + call SaveUserMaps("n",usermaplead,"rg","DrawIt") + call SaveUserMaps("n",usermaplead,"rh","DrawIt") + call SaveUserMaps("n",usermaplead,"ri","DrawIt") + call SaveUserMaps("n",usermaplead,"rj","DrawIt") + call SaveUserMaps("n",usermaplead,"rk","DrawIt") + call SaveUserMaps("n",usermaplead,"rl","DrawIt") + call SaveUserMaps("n",usermaplead,"rm","DrawIt") + call SaveUserMaps("n",usermaplead,"rn","DrawIt") + call SaveUserMaps("n",usermaplead,"ro","DrawIt") + call SaveUserMaps("n",usermaplead,"rp","DrawIt") + call SaveUserMaps("n",usermaplead,"rq","DrawIt") + call SaveUserMaps("n",usermaplead,"rr","DrawIt") + call SaveUserMaps("n",usermaplead,"rs","DrawIt") + call SaveUserMaps("n",usermaplead,"rt","DrawIt") + call SaveUserMaps("n",usermaplead,"ru","DrawIt") + call SaveUserMaps("n",usermaplead,"rv","DrawIt") + call SaveUserMaps("n",usermaplead,"rw","DrawIt") + call SaveUserMaps("n",usermaplead,"rx","DrawIt") + call SaveUserMaps("n",usermaplead,"ry","DrawIt") + call SaveUserMaps("n",usermaplead,"rz","DrawIt") + if exists("g:drawit_insertmode") && g:drawit_insertmode + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + call SaveUserMaps("i","","","DrawIt") + endif + call SaveUserMaps("n","",":\","DrawIt") + + " DrawIt maps (Charles Campbell) {{{3 + nmap :set lz:silent! call DrawLeft():set nolz + nmap :set lz:silent! call DrawRight():set nolz + nmap :set lz:silent! call DrawUp():set nolz + nmap :set lz:silent! call DrawDown():set nolz + nmap :set lz:silent! call MoveLeft():set nolz + nmap :set lz:silent! call MoveRight():set nolz + nmap :set lz:silent! call MoveUp():set nolz + nmap :set lz:silent! call MoveDown():set nolz + nmap :set lz:silent! call DrawErase():set nolz + nmap > :set lz:silent! call DrawSpace('>',1):set nolz + nmap < :set lz:silent! call DrawSpace('<',2):set nolz + nmap ^ :set lz:silent! call DrawSpace('^',3):set nolz + nmap v :set lz:silent! call DrawSpace('v',4):set nolz + nmap :set lz:silent! call DrawSlantUpLeft():set nolz + nmap :set lz:silent! call DrawSlantDownLeft():set nolz + nmap :set lz:silent! call DrawSlantUpRight():set nolz + nmap :set lz:silent! call DrawSlantDownRight():set nolz + nmap > :set lz:silent! call DrawFatRArrow():set nolz + nmap < :set lz:silent! call DrawFatLArrow():set nolz + nmap ^ :set lz:silent! call DrawFatUArrow():set nolz + nmap v :set lz:silent! call DrawFatDArrow():set nolz + nmap f :call Flood() + + " Set up insertmode maps {{{3 + if exists("g:drawit_insertmode") && g:drawit_insertmode + imap a + imap a + imap a + imap a + imap a + imap a + imap a + imap a + imap a + imap a + imap a + imap a + endif + + " set up drawing mode mappings (Sylvain Viart) {{{3 +" nnoremap :call LeftStart() + nnoremap :call LeftStart() + vmap a :call Call_corner('Arrow') + vmap b :call Call_corner('Box') + nmap h :call Holer() + vmap l :call Call_corner('DrawPlainLine') + vmap s :call Spacer(line("'<"), line("'>")) + + " set up drawing mode mappings (Charles Campbell) {{{3 + " \pa ... \pb : blanks are transparent + " \ra ... \rb : blanks copy over + vmap e :call Call_corner('Ellipse') + + let allreg= "abcdefghijklmnopqrstuvwxyz" + while strlen(allreg) > 0 + let ireg= strpart(allreg,0,1) + exe "nmap p".ireg.' :set lz:silent! call PutBlock("'.ireg.'",0):set nolz' + exe "nmap r".ireg.' :set lz:silent! call PutBlock("'.ireg.'",1):set nolz' + let allreg= strpart(allreg,1) + endwhile + + " mouse maps (Sylvain Viart) {{{3 + " start visual-block with leftmouse + nnoremap :call LeftStart() + vnoremap :call RightStart(1) + vnoremap :call RightStart(0) + + " mouse maps (Charles Campbell) {{{3 + " Draw with current brush + nnoremap :call SLeftStart() + + " Menu support {{{3 + if has("gui_running") && has("menu") && &go =~ 'm' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Stop\ \ DrawIt\\ds ds' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Toggle\ Erase\ Mode ' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Arrow\\a a' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Box\\b b' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Ellipse\\e e' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Flood\\e f' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Line\\l l' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Make\ Blank\ Zone\\h h' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Append\ Blanks\\s s' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Start\ DrawIt' + endif +" call Dret("StartDrawIt") +endfun + +" --------------------------------------------------------------------- +" StopDrawIt: this function unmaps the cursor keys and restores settings {{{2 +fun! DrawIt#StopDrawIt() +" call Dfunc("StopDrawIt()") + + " report on [DrawIt off] mode {{{3 + if !exists("b:dodrawit") + echo "[DrawIt off]" +" call Dret("StopDrawIt") + return + endif + + " restore mouse {{{3 + if exists("b:drawit_keep_mouse") + let &mouse= b:drawit_keep_mouse + unlet b:drawit_keep_mouse + endif + unlet b:dodrawit + echo "[DrawIt off]" + + if exists("b:drawit_holer_used") + " clean up trailing white space + call s:SavePosn() + silent! %s/\s\+$//e + unlet b:drawit_holer_used + call s:RestorePosn() + endif + + " remove drawit commands {{{3 + delc SetBrush + + " insure that erase mode is off {{{3 + " (thanks go to Gary Johnson for this) + if b:di_erase == 1 + call s:DrawErase() + endif + + " restore user map(s), if any {{{3 + call RestoreUserMaps("DrawIt") + + " restore user's options {{{3 + let &ai = b:di_aikeep + let &cin = b:di_cinkeep + let &cpo = b:di_cpokeep + let &et = b:di_etkeep + let &fo = b:di_fokeep + let &gd = b:di_gdkeep + let &go = b:di_gokeep + let &magic = b:di_magickeep + let &remap = b:di_remapkeep + let &report = b:di_repkeep + let &si = b:di_sikeep + let &sta = b:di_stakeep + let &ve = b:di_vekeep + unlet b:di_aikeep + unlet b:di_cinkeep + unlet b:di_cpokeep + unlet b:di_etkeep + unlet b:di_fokeep + unlet b:di_gdkeep + unlet b:di_gokeep + unlet b:di_magickeep + unlet b:di_remapkeep + unlet b:di_repkeep + unlet b:di_sikeep + unlet b:di_stakeep + unlet b:di_vekeep + + " DrChip menu support: {{{3 + if has("gui_running") && has("menu") && &go =~ 'm' + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Start\ DrawIt\\di di' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Stop\ \ DrawIt' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Toggle\ Erase\ Mode' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Arrow' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Box' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Ellipse' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Flood' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Line' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Make\ Blank\ Zone' + exe 'unmenu '.g:DrChipTopLvlMenu.'DrawIt.Append\ Blanks' + endif +" call Dret("StopDrawIt") +endfun + +" --------------------------------------------------------------------- +" SetDrawIt: this function allows one to change the drawing characters {{{2 +fun! SetDrawIt(di_vert,di_horiz,di_plus,di_upleft,di_upright,di_cross) +" call Dfunc("SetDrawIt(vert<".a:di_vert."> horiz<".a:di_horiz."> plus<".a:di_plus."> upleft<".a:di_upleft."> upright<".a:di_upright."> cross<".a:di_cross.">)") + let b:di_vert = a:di_vert + let b:di_horiz = a:di_horiz + let b:di_plus = a:di_plus + let b:di_upleft = a:di_upleft + let b:di_upright = a:di_upright + let b:di_cross = a:di_cross +" call Dret("SetDrawIt") +endfun + +" ===================================================================== +" DrawLeft: {{{2 +fun! s:DrawLeft() +" call Dfunc("DrawLeft()") + let curline = getline(".") + let curcol = col(".") + let b:lastdir = 2 + + if curcol > 0 + let curchar= strpart(curline,curcol-1,1) + + " replace + if curchar == b:di_vert || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_horiz + endif + + " move and replace + if curcol >= 2 + call s:MoveLeft() + let curchar= strpart(curline,curcol-2,1) + if curchar == b:di_vert || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_horiz + endif + endif + endif +" call Dret("DrawLeft") +endfun + +" --------------------------------------------------------------------- +" DrawRight: {{{2 +fun! s:DrawRight() +" call Dfunc("DrawRight()") + let curline = getline(".") + let curcol = col(".") + let b:lastdir = 1 + + " replace + if curcol == col("$") + exe "norm! a".b:di_horiz."\" + else + let curchar= strpart(curline,curcol-1,1) + if curchar == b:di_vert || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_horiz + endif + endif + + " move and replace + call s:MoveRight() + if curcol == col("$") + exe "norm! i".b:di_horiz."\" + else + let curchar= strpart(curline,curcol,1) + if curchar == b:di_vert || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_horiz + endif + endif +" call Dret("DrawRight") +endfun + +" --------------------------------------------------------------------- +" DrawUp: {{{2 +fun! s:DrawUp() +" call Dfunc("DrawUp()") + let curline = getline(".") + let curcol = col(".") + let b:lastdir = 3 + + " replace + if curcol == 1 && col("$") == 1 + exe "norm! i".b:di_vert."\" + else + let curchar= strpart(curline,curcol-1,1) + if curchar == b:di_horiz || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_vert + endif + endif + + " move and replace/insert + call s:MoveUp() + let curline= getline(".") + let curchar= strpart(curline,curcol-1,1) + + if curcol == 1 && col("$") == 1 + exe "norm! i".b:di_vert."\" + elseif curchar == b:di_horiz || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_vert + endif + endif +" call Dret("DrawUp") +endfun + +" --------------------------------------------------------------------- +" DrawDown: {{{2 +fun! s:DrawDown() +" call Dfunc("DrawDown()") + let curline = getline(".") + let curcol = col(".") + let b:lastdir = 4 + + " replace + if curcol == 1 && col("$") == 1 + exe "norm! i".b:di_vert."\" + else + let curchar= strpart(curline,curcol-1,1) + if curchar == b:di_horiz || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_vert + endif + endif + + " move and replace/insert + call s:MoveDown() + let curline= getline(".") + let curchar= strpart(curline,curcol-1,1) + if curcol == 1 && col("$") == 1 + exe "norm! i".b:di_vert."\" + elseif curchar == b:di_horiz || curchar == b:di_plus + exe "norm! r".b:di_plus + else + exe "norm! r".b:di_vert + endif +" call Dret("DrawDown") +endfun + +" --------------------------------------------------------------------- +" DrawErase: toggle [DrawIt on] and [DrawIt erase] modes {{{2 +fun! s:DrawErase() +" call Dfunc("DrawErase() b:di_erase=".b:di_erase) + if b:di_erase == 0 + let b:di_erase= 1 + echo "[DrawIt erase]" + let b:di_vert_save = b:di_vert + let b:di_horiz_save = b:di_horiz + let b:di_plus_save = b:di_plus + let b:di_upright_save = b:di_upright + let b:di_upleft_save = b:di_upleft + let b:di_cross_save = b:di_cross + call SetDrawIt(' ',' ',' ',' ',' ',' ') + else + let b:di_erase= 0 + echo "[DrawIt]" + call SetDrawIt(b:di_vert_save,b:di_horiz_save,b:di_plus_save,b:di_upleft_save,b:di_upright_save,b:di_cross_save) + endif +" call Dret("DrawErase") +endfun + +" --------------------------------------------------------------------- +" DrawSpace: clear character and move right {{{2 +fun! s:DrawSpace(chr,dir) +" call Dfunc("DrawSpace(chr<".a:chr."> dir<".a:dir.">)") + let curcol= col(".") + + " replace current location with arrowhead/space + if curcol == col("$")-1 + exe "norm! r".a:chr + else + exe "norm! r".a:chr + endif + + if a:dir == 0 + let dir= b:lastdir + else + let dir= a:dir + endif + + " perform specified move + if dir == 1 + call s:MoveRight() + elseif dir == 2 + call s:MoveLeft() + elseif dir == 3 + call s:MoveUp() + else + call s:MoveDown() + endif +" call Dret("DrawSpace") +endfun + +" --------------------------------------------------------------------- +" DrawSlantDownLeft: / {{{2 +fun! s:DrawSlantDownLeft() +" call Dfunc("DrawSlantDownLeft()") + call s:ReplaceDownLeft() " replace + call s:MoveDown() " move + call s:MoveLeft() " move + call s:ReplaceDownLeft() " replace +" call Dret("DrawSlantDownLeft") +endfun + +" --------------------------------------------------------------------- +" DrawSlantDownRight: \ {{{2 +fun! s:DrawSlantDownRight() +" call Dfunc("DrawSlantDownRight()") + call s:ReplaceDownRight() " replace + call s:MoveDown() " move + call s:MoveRight() " move + call s:ReplaceDownRight() " replace +" call Dret("DrawSlantDownRight") +endfun + +" --------------------------------------------------------------------- +" DrawSlantUpLeft: \ {{{2 +fun! s:DrawSlantUpLeft() +" call Dfunc("DrawSlantUpLeft()") + call s:ReplaceDownRight() " replace + call s:MoveUp() " move + call s:MoveLeft() " move + call s:ReplaceDownRight() " replace +" call Dret("DrawSlantUpLeft") +endfun + +" --------------------------------------------------------------------- +" DrawSlantUpRight: / {{{2 +fun! s:DrawSlantUpRight() +" call Dfunc("DrawSlantUpRight()") + call s:ReplaceDownLeft() " replace + call s:MoveUp() " move + call s:MoveRight() " replace + call s:ReplaceDownLeft() " replace +" call Dret("DrawSlantUpRight") +endfun + +" --------------------------------------------------------------------- +" MoveLeft: {{{2 +fun! s:MoveLeft() +" call Dfunc("MoveLeft()") + norm! h + let b:lastdir= 2 +" call Dret("MoveLeft : b:lastdir=".b:lastdir) +endfun + +" --------------------------------------------------------------------- +" MoveRight: {{{2 +fun! s:MoveRight() +" call Dfunc("MoveRight()") + if col(".") >= col("$") - 1 + exe "norm! A \" + else + norm! l + endif + let b:lastdir= 1 +" call Dret("MoveRight : b:lastdir=".b:lastdir) +endfun + +" --------------------------------------------------------------------- +" MoveUp: {{{2 +fun! s:MoveUp() +" call Dfunc("MoveUp()") + if line(".") == 1 + let curcol= col(".") - 1 + if curcol == 0 && col("$") == 1 + exe "norm! i \" + elseif curcol == 0 + exe "norm! YP:s/./ /ge\0r " + else + exe "norm! YP:s/./ /ge\0".curcol."lr " + endif + else + let curcol= col(".") + norm! k + while col("$") <= curcol + exe "norm! A \" + endwhile + endif + let b:lastdir= 3 +" call Dret("MoveUp : b:lastdir=".b:lastdir) +endfun + +" --------------------------------------------------------------------- +" MoveDown: {{{2 +fun! s:MoveDown() +" call Dfunc("MoveDown()") + if line(".") == line("$") + let curcol= col(".") - 1 + if curcol == 0 && col("$") == 1 + exe "norm! i \" + elseif curcol == 0 + exe "norm! Yp:s/./ /ge\0r " + else + exe "norm! Yp:s/./ /ge\0".curcol."lr " + endif + else + let curcol= col(".") + norm! j + while col("$") <= curcol + exe "norm! A \" + endwhile + endif + let b:lastdir= 4 +" call Dret("MoveDown : b:lastdir=".b:lastdir) +endfun + +" --------------------------------------------------------------------- +" ReplaceDownLeft: / X (upright) {{{2 +fun! s:ReplaceDownLeft() +" call Dfunc("ReplaceDownLeft()") + let curcol = col(".") + if curcol != col("$") + let curchar= strpart(getline("."),curcol-1,1) + if curchar == "\\" || curchar == "X" + exe "norm! r".b:di_cross + else + exe "norm! r".b:di_upright + endif + else + exe "norm! i".b:di_upright."\" + endif +" call Dret("ReplaceDownLeft") +endfun + +" --------------------------------------------------------------------- +" ReplaceDownRight: \ X (upleft) {{{2 +fun! s:ReplaceDownRight() +" call Dfunc("ReplaceDownRight()") + let curcol = col(".") + if curcol != col("$") + let curchar= strpart(getline("."),curcol-1,1) + if curchar == "/" || curchar == "X" + exe "norm! r".b:di_cross + else + exe "norm! r".b:di_upleft + endif + else + exe "norm! i".b:di_upleft."\" + endif +" call Dret("ReplaceDownRight") +endfun + +" --------------------------------------------------------------------- +" DrawFatRArrow: ----|> {{{2 +fun! s:DrawFatRArrow() +" call Dfunc("DrawFatRArrow()") + call s:MoveRight() + norm! r| + call s:MoveRight() + norm! r> +" call Dret("DrawFatRArrow") +endfun + +" --------------------------------------------------------------------- +" DrawFatLArrow: <|---- {{{2 +fun! s:DrawFatLArrow() +" call Dfunc("DrawFatLArrow()") + call s:MoveLeft() + norm! r| + call s:MoveLeft() + norm! r< +" call Dret("DrawFatLArrow") +endfun + +" --------------------------------------------------------------------- +" . +" DrawFatUArrow: /_\ {{{2 +" | +fun! s:DrawFatUArrow() +" call Dfunc("DrawFatUArrow()") + call s:MoveUp() + norm! r_ + call s:MoveRight() + norm! r\ + call s:MoveLeft() + call s:MoveLeft() + norm! r/ + call s:MoveRight() + call s:MoveUp() + norm! r. +" call Dret("DrawFatUArrow") +endfun + +" --------------------------------------------------------------------- +" DrawFatDArrow: _|_ {{{2 +" \ / +" ' +fun! s:DrawFatDArrow() +" call Dfunc("DrawFatDArrow()") + call s:MoveRight() + norm! r_ + call s:MoveLeft() + call s:MoveLeft() + norm! r_ + call s:MoveDown() + norm! r\ + call s:MoveRight() + call s:MoveRight() + norm! r/ + call s:MoveDown() + call s:MoveLeft() + norm! r' +" call Dret("DrawFatDArrow") +endfun + +" --------------------------------------------------------------------- +" DrawEllipse: Bresenham-like ellipse drawing algorithm {{{2 +" 2 2 can +" x y be 2 2 2 2 2 2 +" - + - = 1 rewritten b x + a y = a b +" a b as +" +" Take step which has minimum error +" (x,y-1) (x+1,y) (x+1,y-1) +" +" 2 2 2 2 2 2 +" Ei = | b x + a y - a b | +" +" Algorithm only draws arc from (0,b) to (a,0) and uses +" DrawFour() to reflect points to other three quadrants +fun! s:Ellipse(x0,y0,x1,y1) +" call Dfunc("Ellipse(x0=".a:x0." y0=".a:y0." x1=".a:x1." y1=".a:y1.")") + let x0 = a:x0 + let y0 = a:y0 + let x1 = a:x1 + let y1 = a:y1 + let xoff = (x0+x1)/2 + let yoff = (y0+y1)/2 + let a = s:Abs(x1-x0)/2 + let b = s:Abs(y1-y0)/2 + let a2 = a*a + let b2 = b*b + let twoa2= a2 + a2 + let twob2= b2 + b2 + + let xi= 0 + let yi= b + let ei= 0 + call s:DrawFour(xi,yi,xoff,yoff,a,b) + while xi <= a && yi >= 0 + + let dy= a2 - twoa2*yi + let ca= ei + twob2*xi + b2 + let cb= ca + dy + let cc= ei + dy + + let aca= s:Abs(ca) + let acb= s:Abs(cb) + let acc= s:Abs(cc) + + " pick case: (xi+1,yi) (xi,yi-1) (xi+1,yi-1) + if aca <= acb && aca <= acc + let xi= xi + 1 + let ei= ca + elseif acb <= aca && acb <= acc + let ei= cb + let xi= xi + 1 + let yi= yi - 1 + else + let ei= cc + let yi= yi - 1 + endif + if xi > a:x1 + break + endif + call s:DrawFour(xi,yi,xoff,yoff,a,b) + endw +" call Dret("Ellipse") +endf + +" --------------------------------------------------------------------- +" DrawFour: reflect a point to four quadrants {{{2 +fun! s:DrawFour(x,y,xoff,yoff,a,b) +" call Dfunc("DrawFour(xy[".a:x.",".a:y."] off[".a:xoff.",".a:yoff."] a=".a:a." b=".a:b.")") + let x = a:xoff + a:x + let y = a:yoff + a:y + let lx = a:xoff - a:x + let by = a:yoff - a:y + call s:SetCharAt('*', x, y) + call s:SetCharAt('*', lx, y) + call s:SetCharAt('*', lx,by) + call s:SetCharAt('*', x,by) +" call Dret("DrawFour") +endf + +" --------------------------------------------------------------------- +" SavePosn: saves position of cursor on screen so NetWrite can restore it {{{2 +fun! s:SavePosn() +" call Dfunc("SavePosn() saveposn_count=".s:saveposn_count) + let s:saveposn_count= s:saveposn_count + 1 + + " Save current line and column + let b:drawit_line_{s:saveposn_count} = line(".") + let b:drawit_col_{s:saveposn_count} = col(".") - 1 + + " Save top-of-screen line + norm! H + let b:drawit_hline_{s:saveposn_count}= line(".") + + " restore position + exe "norm! ".b:drawit_hline_{s:saveposn_count}."G0z\" + if b:drawit_col_{s:saveposn_count} == 0 + exe "norm! ".b:drawit_line_{s:saveposn_count}."G0" + else + exe "norm! ".b:drawit_line_{s:saveposn_count}."G0".b:drawit_col_{s:saveposn_count}."l" + endif +" call Dret("SavePosn : saveposn_count=".s:saveposn_count) +endfun + +" ------------------------------------------------------------------------ +" RestorePosn: {{{2 +fun! s:RestorePosn() +" call Dfunc("RestorePosn() saveposn_count=".s:saveposn_count) + if s:saveposn_count <= 0 + return + endif + " restore top-of-screen line + exe "norm! ".b:drawit_hline_{s:saveposn_count}."G0z\" + + " restore position + if b:drawit_col_{s:saveposn_count} == 0 + exe "norm! ".b:drawit_line_{s:saveposn_count}."G0" + else + exe "norm! ".b:drawit_line_{s:saveposn_count}."G0".b:drawit_col_{s:saveposn_count}."l" + endif + if s:saveposn_count > 0 + unlet b:drawit_hline_{s:saveposn_count} + unlet b:drawit_line_{s:saveposn_count} + unlet b:drawit_col_{s:saveposn_count} + let s:saveposn_count= s:saveposn_count - 1 + endif +" call Dret("RestorePosn : saveposn_count=".s:saveposn_count) +endfun + +" ------------------------------------------------------------------------ +" Flood: this function begins a flood of a region {{{2 +" based on b:di... characters as boundaries +" and starting at the current cursor location. +fun! s:Flood() +" call Dfunc("Flood()") + + let s:bndry = b:di_vert.b:di_horiz.b:di_plus.b:di_upright.b:di_upleft.b:di_cross + let row = line(".") + let col = virtcol(".") + let athold = @0 + let s:DIrows = line("$") + call s:SavePosn() + + " get fill character from user + " Put entire fillchar string into the s:bndry (boundary characters), + " although only use the first such character for filling + call inputsave() + let s:fillchar= input("Enter fill character: ") + call inputrestore() + let s:bndry= "[".escape(s:bndry.s:fillchar,'\-]^')."]" + if strlen(s:fillchar) > 1 + let s:fillchar= strpart(s:fillchar,0,1) + endif + + " flood the region + call s:DI_Flood(row,col) + + " restore + call s:RestorePosn() + let @0= athold + unlet s:DIrows s:bndry s:fillchar + +" call Dret("Flood") +endfun + +" ------------------------------------------------------------------------ +" DI_Flood: fill up to the boundaries all characters to the left and right. {{{2 +" Then, based on the left/right column extents reached, check +" adjacent rows to see if any characters there need filling. +fun! s:DI_Flood(frow,fcol) +" call Dfunc("DI_Flood(frow=".a:frow." fcol=".a:fcol.")") + if a:frow <= 0 || a:fcol <= 0 || s:SetPosn(a:frow,a:fcol) || s:IsBoundary(a:frow,a:fcol) +" call Dret("DI_Flood") + return + endif + + " fill current line + let colL= s:DI_FillLeft(a:frow,a:fcol) + let colR= s:DI_FillRight(a:frow,a:fcol+1) + + " do a filladjacent on the next line up + if a:frow > 1 + call s:DI_FillAdjacent(a:frow-1,colL,colR) + endif + + " do a filladjacent on the next line down + if a:frow < s:DIrows + call s:DI_FillAdjacent(a:frow+1,colL,colR) + endif + +" call Dret("DI_Flood") +endfun + +" ------------------------------------------------------------------------ +" DI_FillLeft: Starting at (frow,fcol), non-boundary locations are {{{2 +" filled with the fillchar. The leftmost extent reached +" is returned. +fun! s:DI_FillLeft(frow,fcol) +" call Dfunc("DI_FillLeft(frow=".a:frow." fcol=".a:fcol.")") + if s:SetPosn(a:frow,a:fcol) +" call Dret("DI_FillLeft ".a:fcol) + return a:fcol + endif + + let Lcol= a:fcol + while Lcol >= 1 + if !s:IsBoundary(a:frow,Lcol) + exe "silent! norm! r".s:fillchar."h" + else + break + endif + let Lcol= Lcol - 1 + endwhile + + let Lcol= (Lcol < 1)? 1 : Lcol + 1 + +" call Dret("DI_FillLeft ".Lcol) + return Lcol +endfun + +" --------------------------------------------------------------------- +" DI_FillRight: Starting at (frow,fcol), non-boundary locations are {{{2 +" filled with the fillchar. The rightmost extent reached +" is returned. +fun! s:DI_FillRight(frow,fcol) +" call Dfunc("DI_FillRight(frow=".a:frow." fcol=".a:fcol.")") + if s:SetPosn(a:frow,a:fcol) +" call Dret("DI_FillRight ".a:fcol) + return a:fcol + endif + + let Rcol = a:fcol + while Rcol <= virtcol("$") + if !s:IsBoundary(a:frow,Rcol) + exe "silent! norm! r".s:fillchar."l" + else + break + endif + let Rcol= Rcol + 1 + endwhile + + let DIcols = virtcol("$") + let Rcol = (Rcol > DIcols)? DIcols : Rcol - 1 + +" call Dret("DI_FillRight ".Rcol) + return Rcol +endfun + +" --------------------------------------------------------------------- +" DI_FillAdjacent: {{{2 +" DI_Flood does FillLeft and FillRight, so the run from left to right +" (fcolL to fcolR) is known to have been filled. FillAdjacent is called +" from (fcolL to fcolR) on the lines one row up and down; if any character +" on the run is not a boundary character, then a flood is needed on that +" location. +fun! s:DI_FillAdjacent(frow,fcolL,fcolR) +" call Dfunc("DI_FillAdjacent(frow=".a:frow." fcolL=".a:fcolL." fcolR=".a:fcolR.")") + + let icol = a:fcolL + while icol <= a:fcolR + if !s:IsBoundary(a:frow,icol) + call s:DI_Flood(a:frow,icol) + endif + let icol= icol + 1 + endwhile + +" call Dret("DI_FillAdjacent") +endfun + +" --------------------------------------------------------------------- +" SetPosn: set cursor to given position on screen {{{2 +" srow,scol: -s-creen row and column +" Returns 1 : failed sanity check +" 0 : otherwise +fun! s:SetPosn(row,col) +" call Dfunc("SetPosn(row=".a:row." col=".a:col.")") + " sanity checks + if a:row < 1 +" call Dret("SetPosn 1") + return 1 + endif + if a:col < 1 +" call Dret("SetPosn 1") + return 1 + endif + + exe "norm! ".a:row."G".a:col."\" + +" call Dret("SetPosn 0") + return 0 +endfun + +" --------------------------------------------------------------------- +" IsBoundary: returns 0 if not on boundary, 1 if on boundary {{{2 +" The "boundary" also includes the fill character. +fun! s:IsBoundary(row,col) +" call Dfunc("IsBoundary(row=".a:row." col=".a:col.")") + + let orow= line(".") + let ocol= virtcol(".") + exe "norm! ".a:row."G".a:col."\" + norm! vy + let ret= @0 =~ s:bndry + if a:row != orow || a:col != ocol + exe "norm! ".orow."G".ocol."\" + endif + +" call Dret("IsBoundary ".ret) + return ret +endfun + +" --------------------------------------------------------------------- +" PutBlock: puts a register's contents into the text at the current {{{2 +" cursor location +" replace= 0: Blanks are transparent +" = 1: Blanks copy over +" = 2: Erase all drawing characters +fun! s:PutBlock(block,replace) +" call Dfunc("PutBlock(block<".a:block."> replace=".a:replace.")") + let keep_ve= &ve + set ve= + call s:SavePosn() + exe "let block = @".a:block + let blocklen = strlen(block) + let drawit_line = line('.') + let drawchars = '['.escape(b:di_vert.b:di_horiz.b:di_plus.b:di_upright.b:di_upleft.b:di_cross,'\-').']' + + let iblock = 0 + while iblock < blocklen + let chr= strpart(block,iblock,1) + + if char2nr(chr) == 10 + " handle newline + let drawit_line= drawit_line + 1 + if b:drawit_col_{s:saveposn_count} == 0 + exe "norm! ".drawit_line."G0" + else + exe "norm! ".drawit_line."G0".b:drawit_col_{s:saveposn_count}."l" + endif + + elseif a:replace == 2 + " replace all drawing characters with blanks + if match(chr,drawchars) != -1 + norm! r l + else + norm! l + endif + + elseif chr == ' ' && a:replace == 0 + " allow blanks to be transparent + norm! l + + else + " usual replace character + exe "norm! r".chr."l" + endif + let iblock = iblock + 1 + endwhile + call s:RestorePosn() + + let &ve= keep_ve +" call Dret("PutBlock") +endfun + +" ===================================================================== +" Drawit Functions: (by Sylvain Viart) {{{1 +" ===================================================================== + +" Spacer: fill end of line with space until textwidth. {{{2 +fun! s:Spacer(debut, fin) +" call Dfunc("Spacer(debut<".a:debut."> fin<".a:fin.">)") + + let l = a:debut + let max = &textwidth + if max <= 0 + let max= &columns + endif + while l <= a:fin + let content = getline(l) + let long = strlen(content) + let i = long + let space = '' + while i < max + let space = space . ' ' + let i = i + 1 + endw + call setline(l, content.space) + let l = l + 1 + endw + +" call Dret("Spacer") +endf + +" --------------------------------------------------------------------- +" Holer: {{{2 +fun! s:Holer() +" call Dfunc("Holer()") + + let nb = input("how many lines under the cursor? ") + exe "norm ".nb."o\e" + let fin = line('.') + call s:Spacer(fin-nb+1, fin) + exe "norm ".(nb-1)."k" + let b:drawit_holer_used= 1 + +" call Dret("Holer") +endf + +" --------------------------------------------------------------------- +" Box: {{{2 +fun! s:Box(x0, y0, x1, y1) +" call Dfunc("Box(xy0[".a:x0.",".a:y0." xy1[".a:x1.",".a:y1."])") + " loop each line + let l = a:y0 + while l <= a:y1 + let c = a:x0 + while c <= a:x1 + if l == a:y0 || l == a:y1 + let remp = '-' + if c == a:x0 || c == a:x1 + let remp = '+' + endif + else + let remp = '|' + if c != a:x0 && c != a:x1 + let remp = '.' + endif + endif + + if remp != '.' + call s:SetCharAt(remp, c, l) + endif + let c = c + 1 + endw + let l = l + 1 + endw + +" call Dret("Box") +endf + +" --------------------------------------------------------------------- +" SetCharAt: set the character at the specified position (must exist) {{{2 +fun! s:SetCharAt(char, x, y) +" call Dfunc("SetCharAt(char<".a:char."> xy[".a:x.",".a:y."])") + + let content = getline(a:y) + let long = strlen(content) + let deb = strpart(content, 0, a:x - 1) + let fin = strpart(content, a:x, long) + call setline(a:y, deb.a:char.fin) + +" call Dret("SetCharAt") +endf + +" --------------------------------------------------------------------- +" Bresenham line-drawing algorithm {{{2 +" taken from : +" http://www.graphics.lcs.mit.edu/~mcmillan/comp136/Lecture6/Lines.html +fun! s:DrawLine(x0, y0, x1, y1, horiz) +" call Dfunc("DrawLine(xy0[".a:x0.",".a:y0."] xy1[".a:x1.",".a:y1."] horiz=".a:horiz.")") + + if ( a:x0 < a:x1 && a:y0 > a:y1 ) || ( a:x0 > a:x1 && a:y0 > a:y1 ) + " swap direction + let x0 = a:x1 + let y0 = a:y1 + let x1 = a:x0 + let y1 = a:y0 + else + let x0 = a:x0 + let y0 = a:y0 + let x1 = a:x1 + let y1 = a:y1 + endif + let dy = y1 - y0 + let dx = x1 - x0 + + if dy < 0 + let dy = -dy + let stepy = -1 + else + let stepy = 1 + endif + + if dx < 0 + let dx = -dx + let stepx = -1 + else + let stepx = 1 + endif + + let dy = 2*dy + let dx = 2*dx + + if dx > dy + " move under x + let char = a:horiz + call s:SetCharAt(char, x0, y0) + let fraction = dy - (dx / 2) " same as 2*dy - dx + while x0 != x1 + let char = a:horiz + if fraction >= 0 + if stepx > 0 + let char = '\' + else + let char = '/' + endif + let y0 = y0 + stepy + let fraction = fraction - dx " same as fraction -= 2*dx + endif + let x0 = x0 + stepx + let fraction = fraction + dy " same as fraction = fraction - 2*dy + call s:SetCharAt(char, x0, y0) + endw + else + " move under y + let char = '|' + call s:SetCharAt(char, x0, y0) + let fraction = dx - (dy / 2) + while y0 != y1 + let char = '|' + if fraction >= 0 + if stepy > 0 || stepx < 0 + let char = '\' + else + let char = '/' + endif + let x0 = x0 + stepx + let fraction = fraction - dy + endif + let y0 = y0 + stepy + let fraction = fraction + dx + call s:SetCharAt(char, x0, y0) + endw + endif + +" call Dret("DrawLine") +endf + +" --------------------------------------------------------------------- +" Arrow: {{{2 +fun! s:Arrow(x0, y0, x1, y1) +" call Dfunc("Arrow(xy0[".a:x0.",".a:y0."] xy1[".a:x1.",".a:y1."])") + + call s:DrawLine(a:x0, a:y0, a:x1, a:y1,'-') + let dy = a:y1 - a:y0 + let dx = a:x1 - a:x0 + if s:Abs(dx) > Abs(dy) + " move x + if dx > 0 + call s:SetCharAt('>', a:x1, a:y1) + else + call s:SetCharAt('<', a:x1, a:y1) + endif + else + " move y + if dy > 0 + call s:SetCharAt('v', a:x1, a:y1) + else + call s:SetCharAt('^', a:x1, a:y1) + endif + endif + +" call Dret("Arrow") +endf + +" --------------------------------------------------------------------- +" Abs: return absolute value {{{2 +fun! s:Abs(val) + if a:val < 0 + return - a:val + else + return a:val + endif +endf + +" --------------------------------------------------------------------- +" Call_corner: call the specified function with the corner position of {{{2 +" the current visual selection. +fun! s:Call_corner(func_name) +" call Dfunc("Call_corner(func_name<".a:func_name.">)") + + let xdep = b:xmouse_start + let ydep = b:ymouse_start + let x0 = col("'<") + let y0 = line("'<") + let x1 = col("'>") + let y1 = line("'>") + + if x1 == xdep && y1 ==ydep + let x1 = x0 + let y1 = y0 + let x0 = xdep + let y0 = ydep + endif + +" call Decho("exe call s:".a:func_name."(".x0.','.y0.','.x1.','.y1.")") + exe "call s:".a:func_name."(".x0.','.y0.','.x1.','.y1.")" + let b:xmouse_start= 0 + let b:ymouse_start= 0 + +" call Dret("Call_corner") +endf + +" --------------------------------------------------------------------- +" DrawPlainLine: {{{2 +fun! s:DrawPlainLine(x0,y0,x1,y1) +" call Dfunc("DrawPlainLine(xy0[".a:x0.",".a:y0."] xy1[".a:x1.",".a:y1."])") + +" call Decho("exe call s:DrawLine(".a:x0.','.a:y0.','.a:x1.','.a:y1.',"_")') + exe "call s:DrawLine(".a:x0.','.a:y0.','.a:x1.','.a:y1.',"_")' + +" call Dret("DrawPlainLine") +endf + +" ===================================================================== +" Mouse Functions: {{{1 +" ===================================================================== + +" LeftStart: Read visual drag mapping {{{2 +" The visual start point is saved in b:xmouse_start and b:ymouse_start +fun! s:LeftStart() +" call Decho("LeftStart()") + let b:xmouse_start = col('.') + let b:ymouse_start = line('.') + vnoremap :call LeftRelease() +" call Decho("LeftStart()") +endf! + +" --------------------------------------------------------------------- +" LeftRelease: {{{2 +fun! s:LeftRelease() +" call Dfunc("LeftRelease()") + vunmap + norm! gv +" call Dret("LeftRelease") +endf + +" --------------------------------------------------------------------- +" SLeftStart: begin drawing with a brush {{{2 +fun! s:SLeftStart() + if !exists("b:drawit_brush") + let b:drawit_brush= "a" + endif +" call Dfunc("SLeftStart() brush=".b:drawit_brush) + noremap :call SLeftDrag() + noremap :call SLeftRelease() +" call Dret("SLeftStart") +endfun + +" --------------------------------------------------------------------- +" SLeftDrag: {{{2 +fun! s:SLeftDrag() +" call Dfunc("SLeftDrag()") + call s:SavePosn() + call s:PutBlock(b:drawit_brush,0) + call s:RestorePosn() +" call Dret("SLeftDrag") +endfun + +" --------------------------------------------------------------------- +" SLeftRelease: {{{2 +fun! s:SLeftRelease() +" call Dfunc("SLeftRelease()") + call s:SLeftDrag() + nunmap + nunmap +" call Dret("SLeftRelease") +endfun + +" --------------------------------------------------------------------- +" DrawIt#SetBrush: {{{2 +fun! DrawIt#SetBrush(brush) range +" call Dfunc("DrawIt#SetBrush(brush<".a:brush.">)") + let b:drawit_brush= a:brush +" call Decho("visualmode<".visualmode()."> range[".a:firstline.",".a:lastline."] visrange[".line("'<").",".line("'>")."]") + if visualmode() == "\" && ((a:firstline == line("'>") && a:lastline == line("'<")) || (a:firstline == line("'<") && a:lastline == line("'>"))) + " last visual mode was visual block mode, and + " either [firstline,lastline] == ['<,'>] or ['>,'<] + " Assuming that SetBrush called from a visual-block selection! + " Yank visual block into selected register (brush) +" call Decho("yanking visual block into register ".b:drawit_brush) + exe 'norm! gv"'.b:drawit_brush.'y' + endif +" call Dret("DrawIt#SetBrush : b:drawit_brush=".b:drawit_brush) +endfun + +" ------------------------------------------------------------------------ +" Modelines: {{{1 +" vim: fdm=marker +let &cpo= s:keepcpo +unlet s:keepcpo diff -r 000000000000 -r 86954f5fc4d2 .vim/autoload/vimball.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/autoload/vimball.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,628 @@ +" vimball.vim : construct a file containing both paths and files +" Author: Charles E. Campbell, Jr. +" Date: Jan 03, 2007 +" Version: 21 +" 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") || v:version < 700 + finish +endif +let s:keepcpo = &cpo +let g:loaded_vimball = "v21" +set cpo&vim + +" ===================================================================== +" Constants: {{{1 +if !exists("s:USAGE") + let s:USAGE = 0 + let s:WARNING = 1 + let s:ERROR = 2 +endif + +" ===================================================================== +" Functions: {{{1 + +" --------------------------------------------------------------------- +" vimball#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,...) range +" call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:1.">) a:0=".a:0) + if a:1 =~ '.vim' || a:1 =~ '.txt' + let vbname= substitute(a:1,'\.\a\{3}$','.vba','') + else + let vbname= a:1 + endif + if vbname !~ '\.vba$' + let vbname= vbname.'.vba' + endif +" call Decho("vbname<".vbname.">") + if a:1 =~ '[\/]' + call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes") +" call Dret("MkVimball : vimball name<".a:1."> should not include slashes") + return + endif + if !a:writelevel && filereadable(vbname) + call vimball#ShowMesg(s:ERROR,"(MkVimball) file<".vbname."> exists; use ! to insist") +" call Dret("MkVimball : file<".vbname."> already exists; use ! to insist") + return + endif + + " user option bypass + call s:SaveSettings() + + if a:0 >= 2 + " allow user to specify where to get the files + let home= expand(a:2) + else + " use first existing directory from rtp + let home= s:VimballHome() + endif + + " save current directory + let curdir = getcwd() + call s:ChgDir(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) + call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">") + call s:ChgDir(curdir) + call s:RestoreSettings() +" 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= line("$") + 1 + endif + call setline(lastline ,substitute(svfile,'$',' [[[1','')) + call setline(lastline+1,0) + + " write the file from the tab + let svfilepath= s:Path(svfile,'') +" call Decho("exe $r ".svfilepath) + exe "$r ".svfilepath + + 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 + call s:ChgDir(curdir) + if a:writelevel + let vbnamepath= s:Path(vbname,'') +" call Decho("exe w! ".vbnamepath) + exe "w! ".vbnamepath + else + let vbnamepath= s:Path(vbname,'') +" call Decho("exe w ".vbnamepath) + exe "w ".vbnamepath + 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 + call s:RestoreSettings() + +" call Dret("MkVimball") +endfun + +" --------------------------------------------------------------------- +" vimball#Vimball: extract and distribute contents from a vimball {{{2 +fun! vimball#Vimball(really,...) +" call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0) + + 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#Vimball") + return + endif + + " set up standard settings + call s:SaveSettings() + let curtabnr = tabpagenr() + + " set up vimball tab +" call Decho("setting up vimball tab") + tabnew + silent! file Vimball + let vbtabnr= tabpagenr() + let didhelp= "" + + " go to vim plugin home + if a:0 > 0 + let home= expand(a:1) + else + let home= s:VimballHome() + endif +" call Decho("home<".home.">") + + " save current directory and remove older same-named vimball, if any + let curdir = getcwd() +" call Decho("home<".home.">") +" call Decho("curdir<".curdir.">") + + call s:ChgDir(home) + call vimball#RmVimball() + + 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 + echohl Statement | echomsg "files would be placed under: ".home | 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 = substitute(getline(linenr),'\t\[\[\[1$','','') + let fname = substitute(fname,'\\','/','g') + let fsize = getline(linenr+1) + let filecnt = filecnt + 1 +" call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt) + + if a:really + echomsg "extracted <".fname.">: ".fsize." lines" + else + echomsg "would extract <".fname.">: ".fsize." lines" + endif +" call Decho("using L#".linenr.": will extract file<".fname.">") +" call Decho("using L#".(linenr+1).": fsize=".fsize) + + " Allow AsNeeded/ directory to take place of plugin/ directory + " when AsNeeded/filename is filereadable + if fname =~ '\ instead of <".fname.">") + let fname= anfname + endif + endif + + " make directories if they don't exist yet + if a:really +" call Decho("making directories if they don't exist yet (fname<".fname.">)") + let fnamebuf= substitute(fname,'\\','/','g') + let dirpath = substitute(home,'\\','/','g') + while fnamebuf =~ '/' + let dirname = dirpath."/".substitute(fnamebuf,'/.*$','','') + let dirpath = dirname + let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','') +" call Decho("dirname<".dirname.">") + if !isdirectory(dirname) +" call Decho("making <".dirname.">") + call mkdir(dirname) + call s:RecordInVar(home,"rmdir('".dirname."')") + endif + endwhile + endif + call s:ChgDir(home) + + " grab specified qty of lines and place into "a" buffer + " (skip over path/filename and qty-lines) + let linenr = linenr + 2 + let lastline = linenr + fsize - 1 +" call Decho("exe ".linenr.",".lastline."yank a") + exe "silent ".linenr.",".lastline."yank a" + + " copy "a" buffer into tab +" call Decho('copy "a buffer into tab#'.vbtabnr) + exe "tabn ".vbtabnr + silent! %d + silent put a + 1 + silent d + + " write tab to file + if a:really + let fnamepath= s:Path(home."/".fname,'') +" call Decho("exe w! ".fnamepath) + exe "silent w! ".fnamepath + echo "wrote ".fnamepath + call s:RecordInVar(home,"call delete('".fnamepath."')") + endif + + " return to tab with vimball +" call Decho("exe tabn ".curtabnr) + exe "tabn ".curtabnr + + " set up help if its a doc/*.txt file +" call Decho("didhelp<".didhelp."> fname<".fname.">") + if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.txt$' + let didhelp= substitute(fname,'^\(.*\") + endif + + " update for next file +" let oldlinenr = linenr " Decho + let linenr = linenr + fsize +" call Decho("update linenr= [linenr=".oldlinenr."] + [fsize=".fsize."] = ".linenr) + endwhile + + " set up help +" call Decho("about to set up help: didhelp<".didhelp.">") + if didhelp != "" + let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','g'),' ') +" call Decho("exe helptags ".htpath) + exe "helptags ".htpath + echo "did helptags" + endif + + " make sure a "Press ENTER..." prompt appears to keep the messages showing! + while filecnt <= &ch + echomsg " " + let filecnt= filecnt + 1 + endwhile + + " record actions in <.VimballRecord> + call s:RecordInFile(home) + + " restore events, delete tab and buffer + exe "tabn ".vbtabnr + setlocal nomod bh=wipe + exe "tabn ".curtabnr + exe "tabc ".vbtabnr + call s:RestoreSettings() + call s:ChgDir(curdir) + +" call Dret("vimball#Vimball") +endfun + +" --------------------------------------------------------------------- +" vimball#RmVimball: remove any files, remove any directories made by any {{{2 +" previous vimball extraction based on a file of the current +" name. +" Usage: RmVimball (assume current file is a vimball; remove) +" RmVimball vimballname +fun! vimball#RmVimball(...) +" call Dfunc("vimball#RmVimball() a:0=".a:0) + if exists("g:vimball_norecord") +" call Dret("vimball#RmVimball : (g:vimball_norecord)") + return + endif + let eikeep= &ei + set ei=all +" call Decho("turned off all events") + + if a:0 == 0 + let curfile= '^'.expand("%:tr") + else + if a:1 =~ '[\/]' + call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]") +" call Dret("vimball#RmVimball : suspect a:1<".a:1.">") + return + endif + let curfile= a:1 + endif + if curfile !~ '.vba$' + let curfile= curfile.".vba: " + else + let curfile= curfile.": " + endif + if a:0 >= 2 + let home= expand(a:2) + else + let home= s:VimballHome() + endif + let curdir = getcwd() +" call Decho("home <".home.">") +" call Decho("curfile<".curfile.">") +" call Decho("curdir <".curdir.">") + + call s:ChgDir(home) + if filereadable(".VimballRecord") +" call Decho(".VimballRecord is readable") +" call Decho("curfile<".curfile.">") + keepalt keepjumps 1split + silent! keepalt keepjumps e .VimballRecord + let keepsrch= @/ + if search(curfile,'cw') + let exestring= substitute(getline("."),curfile,'','') +" call Decho("exe ".exestring) + silent! keepalt keepjumps exe exestring + silent! keepalt keepjumps d + else +" call Decho("unable to find <".curfile."> in .VimballRecord") + endif + silent! keepalt keepjumps g/^\s*$/d + silent! keepalt keepjumps wq! + let @/= keepsrch + endif + call s:ChgDir(curdir) + + " restoring events +" call Decho("restoring events") + let &ei= eikeep + +" call Dret("vimball#RmVimball") +endfun + +" --------------------------------------------------------------------- +" vimball#Decompress: attempts to automatically decompress vimballs {{{2 +fun! vimball#Decompress(fname) +" call Dfunc("Decompress(fname<".a:fname.">)") + + " decompression: + if expand("%") =~ '.*\.gz' && executable("gunzip") + exe "!gunzip ".a:fname + let fname= substitute(a:fname,'\.gz$','','') + exe "e ".escape(fname,' \') + call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + elseif expand("%") =~ '.*\.bz2' && executable("bunzip2") + exe "!bunzip2 ".a:fname + let fname= substitute(a:fname,'\.bz2$','','') + exe "e ".escape(fname,' \') + call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + elseif expand("%") =~ '.*\.zip' && executable("unzip") + exe "!unzip ".a:fname + let fname= substitute(a:fname,'\.zip$','','') + exe "e ".escape(fname,' \') + call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + endif + set noma bt=nofile fmr=[[[,]]] fdm=marker + +" call Dret("Decompress") +endfun + +" --------------------------------------------------------------------- +" vimball#ShowMesg: {{{2 +fun! vimball#ShowMesg(level,msg) +" call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)") + let rulerkeep = &ruler + let showcmdkeep = &showcmd + set noruler noshowcmd + redraw! + + if &fo =~ '[ta]' + echomsg "***vimball*** " a:msg + else + if a:level == s:WARNING || a:level == s:USAGE + echohl WarningMsg + elseif a:level == s:ERROR + echohl Error + endif + echomsg "***vimball*** " a:msg + echohl None + endif + + if a:level != s:USAGE + call inputsave()|let ok= input("Press to continue")|call inputrestore() + endif + + let &ruler = rulerkeep + let &showcmd = showcmdkeep + +" call Dret("vimball#ShowMesg") +endfun + +" --------------------------------------------------------------------- +let &cpo= s:keepcpo +unlet s:keepcpo +" ===================================================================== +" s:ChgDir: change directory (in spite of Windoze) {{{2 +fun! s:ChgDir(newdir) +" call Dfunc("ChgDir(newdir<".a:newdir.">)") + if (has("win32") || has("win95") || has("win64") || has("win16")) + exe 'silent cd '.escape(substitute(a:newdir,'/','\\','g'),' ') + else + exe 'silent cd '.escape(a:newdir,' ') + endif +" call Dret("ChgDir") +endfun + +" --------------------------------------------------------------------- +" s:Path: prepend and append quotes, do escaping, as necessary {{{2 +fun! s:Path(cmd,quote) +" call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">)") + if (has("win32") || has("win95") || has("win64") || has("win16")) + let cmdpath= a:quote.substitute(a:cmd,'/','\\','g').a:quote + else + let cmdpath= a:quote.a:cmd.a:quote + endif + if a:quote == "" + let cmdpath= escape(cmdpath,' ') + endif +" call Dret("Path <".cmdpath.">") + return cmdpath +endfun + +" --------------------------------------------------------------------- +" s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2 +fun! s:RecordInVar(home,cmd) +" call Dfunc("RecordInVar(home<".a:home."> cmd<".a:cmd.">)") + if a:cmd =~ '^rmdir' +" if !exists("s:recorddir") +" let s:recorddir= substitute(a:cmd,'^rmdir',"call s:Rmdir",'') +" else +" let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'') +" endif +" call Decho("recorddir=".s:recorddir) + elseif !exists("s:recordfile") + let s:recordfile= a:cmd +" call Decho("recordfile=".s:recordfile) + else + let s:recordfile= s:recordfile."|".a:cmd +" call Decho("recordfile=".s:recordfile) + endif +" call Dret("RecordInVar") +endfun + +" --------------------------------------------------------------------- +" s:RecordInFile: {{{2 +fun! s:RecordInFile(home) +" call Dfunc("RecordInFile()") + if exists("g:vimball_norecord") +" call Dret("RecordInFile : (g:vimball_norecord)") + return + endif + + if exists("s:recordfile") || exists("s:recorddir") + let curdir= getcwd() + call s:ChgDir(a:home) + keepalt keepjumps 1split + let cmd= expand("%:tr").": " + silent! keepalt keepjumps e .VimballRecord + $ + if exists("s:recordfile") && exists("s:recorddir") + let cmd= cmd.s:recordfile."|".s:recorddir + elseif exists("s:recorddir") + let cmd= cmd.s:recorddir + elseif exists("s:recordfile") + let cmd= cmd.s:recordfile + else +" call Dret("RecordInFile") + return + endif + keepalt keepjumps put=cmd + silent! keepalt keepjumps g/^\s*$/d + silent! keepalt keepjumps wq! + call s:ChgDir(curdir) + if exists("s:recorddir") |unlet s:recorddir |endif + if exists("s:recordfile")|unlet s:recordfile|endif + else +" call Decho("s:record[file|dir] doesn't exist") + endif + +" call Dret("RecordInFile") +endfun + +" --------------------------------------------------------------------- +" s:Rmdir: {{{2 +"fun! s:Rmdir(dirname) +"" call Dfunc("s:Rmdir(dirname<".a:dirname.">)") +" if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$' +" call system("del ".a:dirname) +" else +" call system("rmdir ".a:dirname) +" endif +"" call Dret("s:Rmdir") +"endfun + +" --------------------------------------------------------------------- +" s:VimballHome: determine/get home directory path (usually from rtp) {{{2 +fun! s:VimballHome() +" call Dfunc("VimballHome()") + if exists("g:vimball_home") + let home= g:vimball_home + else + " go to vim plugin home + for home in split(&rtp,',') + [''] + if isdirectory(home) && filewritable(home) | break | endif + endfor + if home == "" + " just pick the first directory + let home= substitute(&rtp,',.*$','','') + endif + if (has("win32") || has("win95") || has("win64") || has("win16")) + let home= substitute(home,'/','\\','g') + endif + endif +" call Dret("VimballHome <".home.">") + return home +endfun + +" --------------------------------------------------------------------- +" s:SaveSettings: {{{2 +fun! s:SaveSettings() +" call Dfunc("SaveSettings()") + let s:makeep = getpos("'a") + let s:regakeep= @a + if exists("&acd") + let s:acdkeep = &acd + endif + let s:eikeep = &ei + let s:fenkeep = &fen + let s:hidkeep = &hidden + let s:ickeep = &ic + 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 + else + set ei=all ve=all nofen noic report=999 nohid bt= ma lz + endif +" call Dret("SaveSettings") +endfun + +" --------------------------------------------------------------------- +" s:RestoreSettings: {{{2 +fun! s:RestoreSettings() +" call Dfunc("RestoreSettings()") + let @a = s:regakeep + if exists("&acd") + let &acd = s:acdkeep + endif + let &fen = s:fenkeep + let &hidden = s:hidkeep + let &ic = s:ickeep + let &lz = s:lzkeep + let &report = s:repkeep + let &ve = s:vekeep + let &ei = s:eikeep + if s:makeep[0] != 0 + " restore mark a +" call Decho("restore mark-a: makeep=".string(makeep)) + 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 + else + unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep + endif + set bt=nofile noma +" call Dret("RestoreSettings") +endfun + +" --------------------------------------------------------------------- +" Modelines: {{{1 +" vim: fdm=marker diff -r 000000000000 -r 86954f5fc4d2 .vim/doc/DrawIt.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/doc/DrawIt.txt Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,323 @@ +*drawit.txt* The DrawIt Tool Apr 10, 2006 + +Authors: Charles E. Campbell, Jr. + Sylvain Viart + (remove NOSPAM from Campbell's email first) +Copyright: Copyright (C) 2004-2006 Charles E. Campbell, Jr. {{{1 + Permission is hereby granted to use and distribute this code, + with or without modifications, provided that this copyright + notice is copied with it. Like anything else that's free, + DrawIt.vim is provided *as is* and comes with no warranty + of any kind, either expressed or implied. By using this + plugin, you agree that in no event will the copyright + holder be liable for any damages resulting from the use + of this software. + + +============================================================================== +1. Contents *drawit-contents* + + 1. Contents......................: |drawit-contents| + 2. DrawIt Manual.................: |drawit| + 3. DrawIt Usage..................: |drawit-usage| + Starting....................: |drawit-start| + Stopping....................: |drawit-stopping| + User Map Protection.........: |drawit-protect| + Drawing.....................: |drawit-drawing| + Changing Drawing Characters.: |drawit-setdrawit| + Moving......................: |drawit-moving| + Erasing.....................: |drawit-erase| + Example.....................: |drawit-example| + Visual Block Mode...........: |drawit-visblock| + Brushes.....................: |drawit-brush| + DrawIt Modes................: |drawit-modes| + 4. DrawIt History................: |drawit-history| + + +============================================================================== +2. DrawIt Manual *drawit* + *drawit-manual* + /=============+============================================================\ + || Starting & | || + || Stopping | Explanation || + ++------------+-----------------------------------------------------------++ + || \di | start DrawIt || + || \ds | stop DrawIt || + || :DIstart | start DrawIt || + || :DIstop | stop DrawIt || + || | || + ++============+===========================================================++ + || Maps | Explanation || + ++------------+-----------------------------------------------------------++ + || | The DrawIt routines use a replace, move, and || + || | replace/insert strategy. The package also lets one insert|| + || | spaces, draw arrows by using the following characters or || + || | keypad characters: || + || +-----------------------------------------------------------++ + || | move and draw left || + || | move and draw right, inserting lines/space as needed || + || | move and draw up, inserting lines/space as needed || + || | move and draw down, inserting lines/space as needed || + || | move left || + || | move right, inserting lines/space as needed || + || | move up, inserting lines/space as needed || + || | move down, inserting lines/space as needed || + || | toggle into and out of erase mode || + || > | insert a > and move right (draw -> arrow) || + || < | insert a < and move left (draw <- arrow) || + || ^ | insert a ^ and move up (draw ^ arrow) || + || v | insert a v and move down (draw v arrow) || + || | replace with a \, move down and right, and insert a \ || + || | replace with a /, move down and left, and insert a / || + || | replace with a /, move up and right, and insert a / || + || | replace with a \, move up and left, and insert a \ || + || \> | insert a fat > and move right (draw -> arrow) || + || \< | insert a fat < and move left (draw <- arrow) || + || \^ | insert a fat ^ and move up (draw ^ arrow) || + || \v | insert a fat v and move down (draw v arrow) || + || | || + ||============+===========================================================++ + ||Visual Cmds | Explanation || + ||------------+-----------------------------------------------------------++ + || | The drawing mode routines use visual-block mode to || + || | select endpoints for lines, arrows, and ellipses. Bresen- || + || | ham and Bresenham-like algorithms are used for this. || + || | || + || | These routines need a block of spaces, and so the "holer" || + || | routine must first be used to create such a block. The || + || | holer routine will query the user for the number of lines || + || | to hold |'textwidth'| spaces. || + || +-----------------------------------------------------------++ + || \a | draw arrow from corners of visual-block selected region || + || \b | draw box on visual-block selected region || + || \e | draw an ellipse on visual-block selected region || + || \f | flood figure with a character (you will be prompted) || + || \h | the holer routine (will query user, see above) || + || \l | draw line from corners of visual-block selected region || + || \s | spacer: appends spaces up to the textwidth (default: 78) || + || | || + ++============+===========================================================++ + || Function and Explanation || + ++------------+-----------------------------------------------------------++ + || :call SetDrawIt('vertical','horizontal','crossing','\','/','X') || + || set drawing characters for motions for moving || + || default motion || + || | up/down, || + || - left/right, || + || + -| crossing, || + || \ downright, || + || / downleft, and || + || X \/ crossing || + ++=====================+==================================================++ + || Commands | Explanation || + ++---------------------+--------------------------------------------------++ + || :SetBrush a-z | sets brush (register) to given || + || :'<,'>SetBrush a-z | yanks visual block to brush (register) || + \==========================================================================/ + + +============================================================================== +3. DrawIt Usage *drawit-usage* + +STARTING *drawit-start* +\di + +Typically one puts into the .vim/plugin directory +(vimfiles\plugin for MS) where it becomes always available. It uses a minimal +interface (\di: you can think of it as *D*raw*I*t or *D*rawIt *I*nitialize) to +start it and (\ds: *D*rawIt *S*top) to stop it. Instead of using "\" you may +specify your own preference for a map leader (see |mapleader|). + +A message, "[DrawIt]", will appear on the message line. + + +STOPPING *drawit-stopping* +\ds + +When you are done with DrawIt, use \ds to stop DrawIt mode. Stopping DrawIt +will restore your usual options and remove the maps DrawIt set up. + +A message, "[DrawIt off]", will appear on the message line. + + +USER MAP PROTECTION *drawit-protect* + +Starting DrawIt causes it to set up a number of maps which facilitate +drawing. Just use the arrow keys or the keypad to cruise around your display. +DrawIt will then leave appropriate lines as you move horizontally, vertically, +or diagonally, and will transparently enlarge your file to accommodate your +drawing as needed. DrawIt saves both maps and user options and sets them to +its own needs. You may use h-j-k-l to move about your display and generally +use editing commands as you wish even while in DrawIt mode. + + +OPTIONS + + g:drawit_insertmode : if this variable exists *drawit-options* + and is 1 then maps are made + which make cursor-control + drawing available while in + insert mode. + +DRAWING *drawit-drawing* + +After DrawIt is started, just use the number pad to move the cursor about. It +will leave a trail of -s, |s, \s, /s (depending on which direction and +SetDrawIt() changes), and +s and Xs where line crossing occurs. + + +CHANGING DRAWING CHARACTERS *drawit-setdrawit* + +The SetDrawIt() function is available for those who wish to change the +characters that DrawIt uses. > + + ex. :call SetDrawIt('*','*','*','*','*','*') + ex. :call SetDrawIt('-','|','-','\','/','/') +< +The first example shows how to change all the DrawIt drawing characters to +asterisks, and the second shows how to give crossing priority to - and /. + + +MOVING *drawit-move* *drawit-moving* + +DrawIt supports shifting the arrow keys to cause motion of the cursor. The +motion of the cursor will not modify what's below the cursor. The cursor +will move and lines and/or spaces will be inserted to support the move as +required. Your terminal may not support shifted arrow keys, however, or Vim +may not catch them as such. For example, on the machine I use, shift-up +() produced [161q, but vim didn't know that sequence was a . +I merely made a nmap: + + nmap [161q + +and vim thereafter recognized the command. + + +ERASING *drawit-erase* + + +The key will toggle DrawIt's erase mode/DrawIt mode. When in +[DrawIt erase] mode, a message "[DrawIt erase]" will appear and the +number pad will now cause spaces to be drawn instead of the usual drawing +characters. The drawing characters will be restored when the +key toggles DrawIt back to regular DrawIt mode. + + +EXAMPLES *drawit-example* + +Needless to say, the bottom spirals were done with DrawIt and some +block editing with Vim: > + + +------------ -----------+ +------------ -----------+ +------------ + |+----------+ +---------+| |+----------+ +---------+| |+----------+ + ||+--------+| |+-------+|| ||+--------+| |+-------+|| ||+--------+| + |||-------+|| ||+------||| |||-------+|| ||+------||| |||-------+|| + ||+-------+|| ||+------+|| ||+-------+|| ||+------+|| ||+-------+|| + |+---------+| |+--------+| |+---------+| |+--------+| |+---------+| + +-----------+ +----------+ +-----------+ +----------+ +-----------+ + +VISUAL BLOCK MODE FOR ARROWS LINES BOXES AND ELLIPSES *drawit-visblock* +\a \b \e \h \l \s + +The DrawIt package has been merged with Sylvain Viart's drawing package +which provides DrawIt with visual-block selection of starting/ending +point drawing of arrows (\a), lines (\l), and boxes (\b). Additionally +I wrote an ellipse drawing function using visual block specification (\e). + +One must have a block of spaces for these maps which the "holer" routine +(\h) will help create. The holer routine will query the user for the number +of lines s/he wishes to have, and will fill those lines with spaces out to the +|'textwidth'| (or 78 spaces if that option hasn't been set). + +The Sylvain Viart functions and the ellipse drawing function depend +upon using visual block mode. Typical use: > + + Example: * \h + DrawIt asks: how many lines under the cursor? 10 + DrawIt then appends 10 lines filled with blanks + out to textwidth (if defined) or 78 columns. + * ctrl-v (move) \b + DrawIt then draws a box +< +One first creates a number of blank-filled lines; the \h map (the "holer") is +useful for this. Select the first endpoint with ctrl-v and then move to the +other endpoint. One may then select \a for arrows, \b for boxes, \e for ellipses, +or \l for lines. +> + Examples: + + __ _ *************** +-------+ + \_ _/ **** **** | | + \_ _/ ** ---------> ** | | + \_ _/ **** **** | | + \__/ <------- *************** +-------+ + + \l \a \e and \a \b +< + *drawit-setbrush* +BRUSHES *drawit-brush* +> + :SetBrush a-z +< + Set the current brush to the given letter (actually, its + a named register; see |quotea|). Default brush: a +> + :'<,'>SetBrush a-z +< + Set the current brush to the given letter, and yank the visual + block to that named register (see |quotea|). Default brush: a +> + +< + One may drag and draw with the current brush (default brush: a) + by holding down the shift key and the leftmouse button and moving + the mouse. Blanks in the brush are considered to be transparent. +> + \ra ... \rz +< + Replace text with the given register. +> + \pa ... \pz +< + Like \ra ... \rz, except that blanks are considered to be transparent. + +DRAWIT MODES *drawit-modes* + + -[DrawIt] regular DrawIt mode + -[DrawIt off] DrawIt is off + -[DrawIt erase] DrawIt will erase using the number pad + + g:DrChipTopLvlMenu: by default its "DrChip"; you may set this to whatever + you like in your <.vimrc>. This variable controls where + DrawIt's menu items are placed. + + +============================================================================== +4. History *drawit-history* + + 7 Feb 16, 2005 * now checks that "m" is in &go before attempting to + use menus + Aug 17, 2005 * report option workaround + Nov 01, 2005 * converted DrawIt to use autoload feature of vim 7.0 + Dec 28, 2005 * now uses cecutil to save/restore user maps + Jan 18, 2006 * cecutil now updated to use keepjumps + Jan 23, 2006 * :DIstart and :DIstop commands provided; thus users + using "set noremap" can still use DrawIt. + Jan 26, 2006 * DrawIt menu entry now keeps its place + Apr 10, 2006 * Brushes were implemented + 6 Feb 24, 2003 * The latest DrawIt now provides a fill function. + \f will ask for a character to fill the figure + surrounding the current cursor location. Plus + I suggest reading :he drawit-tip for those whose + home/pageup/pagedown/end keys aren't all working + properly with DrawIt. + 08/18/03 : \p[a-z] and \r[a-z] implemented + 08/04/03 : b:..keep variables renamed to b:di_..keep variables + StopDrawIt() now insures that erase mode is off + 03/11/03 : included g:drawit_insertmode handling + 02/21/03 : included flood function + 12/11/02 : deletes trailing whitespace only if holer used + 8/27/02 : fat arrowheads included + : shift-arrow keys move but don't modify + +vim:tw=78:ts=8:ft=help diff -r 000000000000 -r 86954f5fc4d2 .vim/doc/pi_vimball.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/doc/pi_vimball.txt Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,137 @@ +*pi_vimball.txt* For Vim version 7.0. Last change: 2007 Jan 03 + + ---------------- + Vimball Archiver + ---------------- + +Author: Charles E. Campbell, Jr. + (remove NOSPAM from Campbell's email first) +Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* + 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! + +============================================================================== +1. Contents *vba* *vimball* *vimball-contents* + + 1. Contents......................................: |vimball-contents| + 2. Vimball Manual................................: |vimball-manual| + MkVimball.....................................: |:MkVimball| + UseVimball....................................: |:UseVimball| + RmVimball.....................................: |:RmVimball| + 3. Vimball History...............................: |vimball-history| + + +============================================================================== +2. Vimball Manual *vimball-manual* + + *:MkVimball* + :[range]MkVimball[!] filename [path] + + The range is composed of lines holding paths to files to be included + in your new vimball. As an example: > + plugin/something.vim + doc/something.txt +< using > + :[range]MkVimball filename +< + on this range of lines will create a file called "filename.vba" which + can be used by Vimball.vim to re-create these files. If the + "filename.vba" file already exists, then MkVimball will issue a + warning and not create the file. Note that these paths are relative + to your .vim (vimfiles) directory, and the files should be in that + directory. The vimball plugin normally uses the first |'runtimepath'| + directory that exists as a prefix; don't use absolute paths, unless + the user has specified such a path. + *g:vimball_home* + You may override the use of the |'runtimepath'| by specifying a + variable, g:vimball_home. + + If you use the exclamation point (!), then MkVimball will create the + "filename.vba" file, overwriting it if it already exists. This + behavior resembles that for |:w|. + + *vimball-extract* + vim filename.vba + + Simply editing a Vimball will cause Vimball.vim to tell the user to + source the file to extract its contents. + + Extraction will only proceed if the first line of a putative vimball + file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D." + line. + + :VimballList *:VimballList* + + This command will tell Vimball to list the files in the archive, along + with their lengths in lines. + + :UseVimball [path] *:UseVimball* + + This command is contained within the vimball itself; it invokes the + vimball#Vimball() routine which is responsible for unpacking the + vimball. One may choose to execute it by hand instead of sourcing + the vimball; one may also choose to specify a path for the + installation, thereby overriding the automatic choice of the first + existing directory on the |'runtimepath'|. + + :RmVimball vimballfile [path] *:RmVimball* + + This command removes all files generated by the specified vimball + (but not any directories it may have made). One may choose a path + for de-installation, too (see |'runtimepath'|); otherwise, the + default is the first existing directory on the |'runtimepath'|. + To implement this, a file (.VimballRecord) is made in that directory + containing a record of what files need to be removed for all vimballs + used thus far. + + +============================================================================== +3. Vimball History *vimball-history* {{{1 + + 21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header + handling problem and it now changes \s to /s + 20 : Nov 20, 2006 * substitute() calls have all had the 'e' flag + removed. + 18 : Aug 01, 2006 * vimballs now use folding to easily display their + contents. + * if a user has AsNeeded/somefile, then vimball + will extract plugin/somefile to the AsNeeded/ + directory + 17 : Jun 28, 2006 * changes all \s to /s internally for Windows + 16 : Jun 15, 2006 * A. Mechylynk's idea to allow users to specify + installation root paths implemented for + UseVimball, MkVimball, and RmVimball. + * RmVimball implemented + 15 : Jun 13, 2006 * bugfix + 14 : May 26, 2006 * bugfixes + 13 : May 01, 2006 * exists("&acd") used to determine if the acd + option exists + 12 : May 01, 2006 * bugfix - the |'acd'| option is not always defined + 11 : Apr 27, 2006 * VimballList would create missing subdirectories that + the vimball specified were needed. Fixed. + 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of + functions. Included some more settings in them + which frequently cause trouble. + 9 : Apr 26, 2006 * various changes to support Windows prediliction + for backslashes and spaces in file and directory + names. + 7 : Apr 25, 2006 * bypasses foldenable + * uses more exe and less norm! (:yank :put etc) + * does better at insuring a "Press ENTER" prompt + appears to keep its messages visible + 4 : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter + only fires once, so the "Source this file..." + message is now issued only once. + 3 : Mar 20, 2006 * removed query, now requires sourcing to be + extracted (:so %). Message to that effect + included. + * :VimballList now shows files that would be + extracted. + 2 : Mar 20, 2006 * query, :UseVimball included + 1 : Mar 20, 2006 * initial release + + +============================================================================== +vim:tw=78:ts=8:ft=help:fdm=marker diff -r 000000000000 -r 86954f5fc4d2 .vim/doc/tags --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/doc/tags Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,33 @@ +:MkVimball pi_vimball.txt /*:MkVimball* +:RmVimball pi_vimball.txt /*:RmVimball* +:UseVimball pi_vimball.txt /*:UseVimball* +:VimballList pi_vimball.txt /*:VimballList* +Vimball-copyright pi_vimball.txt /*Vimball-copyright* +drawit DrawIt.txt /*drawit* +drawit-brush DrawIt.txt /*drawit-brush* +drawit-contents DrawIt.txt /*drawit-contents* +drawit-drawing DrawIt.txt /*drawit-drawing* +drawit-erase DrawIt.txt /*drawit-erase* +drawit-example DrawIt.txt /*drawit-example* +drawit-history DrawIt.txt /*drawit-history* +drawit-manual DrawIt.txt /*drawit-manual* +drawit-modes DrawIt.txt /*drawit-modes* +drawit-move DrawIt.txt /*drawit-move* +drawit-moving DrawIt.txt /*drawit-moving* +drawit-options DrawIt.txt /*drawit-options* +drawit-protect DrawIt.txt /*drawit-protect* +drawit-setbrush DrawIt.txt /*drawit-setbrush* +drawit-setdrawit DrawIt.txt /*drawit-setdrawit* +drawit-start DrawIt.txt /*drawit-start* +drawit-stopping DrawIt.txt /*drawit-stopping* +drawit-usage DrawIt.txt /*drawit-usage* +drawit-visblock DrawIt.txt /*drawit-visblock* +drawit.txt DrawIt.txt /*drawit.txt* +g:vimball_home pi_vimball.txt /*g:vimball_home* +pi_vimball.txt pi_vimball.txt /*pi_vimball.txt* +vba pi_vimball.txt /*vba* +vimball pi_vimball.txt /*vimball* +vimball-contents pi_vimball.txt /*vimball-contents* +vimball-extract pi_vimball.txt /*vimball-extract* +vimball-history pi_vimball.txt /*vimball-history* +vimball-manual pi_vimball.txt /*vimball-manual* diff -r 000000000000 -r 86954f5fc4d2 .vim/ftplugin/cpp_hs12.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/ftplugin/cpp_hs12.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,26 @@ +"nach ~/.vim/ftplugin/ +" +set equalprg=indent\ -kr + +nmap f :call HS_format() + +command! Tidy :call HS_format() + +function! HS_format() + + let dir = fnamemodify(expand("%"), ":p:h") +" let rc = dir . "/.perltidyrc" +" if filereadable(rc) != 1 +" echo "HEHE, no .perltidyrc in " . dir +" return +" endif + + let old = &equalprg + let &equalprg = "indent -kr" + normal gg=G + normal `` + let &equalprg = old + +endfunc + +" vim:ft=vim: diff -r 000000000000 -r 86954f5fc4d2 .vim/ftplugin/mail_hs12.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/ftplugin/mail_hs12.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,5 @@ +set expandtab +set ts=8 +set sw=4 +syntax on +retab diff -r 000000000000 -r 86954f5fc4d2 .vim/ftplugin/perl_hs12.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/ftplugin/perl_hs12.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,39 @@ +"nach ~/.vim/ftplugin/ +" +:setlocal +set equalprg=perltidy\ -q + +nmap f :call HS_format() +nmap p :call HS_pod() +nmap c :call HS_check() + +command! Tidy :call HS_format() +command! Pod :call HS_pod() + +function! HS_check() + :w + :!perl -Mblib -c % +endfunc + +function! HS_format() + + let dir = fnamemodify(expand("%"), ":p:h") + let rc = dir . "/.perltidyrc" + if filereadable(rc) != 1 + echo "HEHE, no .perltidyrc in " . dir + return + endif + + let old = &equalprg + let &equalprg = "perltidy -pro=" . rc + normal gg=G + normal `` + let &equalprg = old + +endfunc + +function! HS_pod() + :!perldoc % +endfunc + +" vim:ft=vim: diff -r 000000000000 -r 86954f5fc4d2 .vim/ftplugin/pod_hs12.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/ftplugin/pod_hs12.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,9 @@ +nmap p :call HS_pod() + +command! Pod :call HS_pod() + +function! HS_pod() + :!perldoc % +endfunc + +" vim:ft=vim: diff -r 000000000000 -r 86954f5fc4d2 .vim/ftplugin/tex_hs12.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/ftplugin/tex_hs12.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,1 @@ +set ts=2 sw=2 sts=2 diff -r 000000000000 -r 86954f5fc4d2 .vim/ftplugin/wiki2beamer_hs12.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/ftplugin/wiki2beamer_hs12.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,9 @@ +setlocal foldmethod=expr +setlocal foldexpr=HeadingLevel(v:lnum) + +if !exists("*HeadingLevel") + function HeadingLevel(lnum) + let n = strlen(substitute(getline(a:lnum), '[^=].*', '', '')) + return (n == 0) ? '=' : '>' . n + endfunction +endif diff -r 000000000000 -r 86954f5fc4d2 .vim/plugin/DrawItPlugin.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/plugin/DrawItPlugin.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,64 @@ +" DrawItPlugin.vim: a simple way to draw things in Vim -- just put this file in +" your plugin directory, use \di to start (\ds to stop), and +" just move about using the cursor keys. +" +" You may also use visual-block mode to select endpoints and +" draw lines, arrows, and ellipses. +" +" Date: Nov 01, 2005 +" Maintainer: Charles E. Campbell, Jr. (Charles.E.Campbell.1@gsfc.nasa.gov) +" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 +" Permission is hereby granted to use and distribute this code, +" with or without modifications, provided that this copyright +" notice is copied with it. Like anything else that's free, +" DrawIt.vim is provided *as is* and comes with no warranty +" of any kind, either expressed or implied. By using this +" plugin, you agree that in no event will the copyright +" holder be liable for any damages resulting from the use +" of this software. +" +" Required: this script requires Vim 7.0 (or later) {{{1 +" To Enable: simply put this plugin into your ~/.vim/plugin directory {{{2 +" +" GetLatestVimScripts: 40 1 :AutoInstall: DrawIt.vim +" +" Woe to her who is rebellious and polluted, the oppressing {{{1 +" city! She didn't obey the voice. She didn't receive correction. +" She didn't trust in Yahweh. She didn't draw near to her God. (Zeph 3:1,2 WEB) + +" --------------------------------------------------------------------- +" Load Once: {{{1 +if &cp || exists("g:loaded_DrawIt") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" --------------------------------------------------------------------- +" DrChip Menu Support: {{{1 +if has("gui_running") && has("menu") && &go =~ 'm' + if !exists("g:DrChipTopLvlMenu") + let g:DrChipTopLvlMenu= "DrChip." + endif + exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Start\ DrawIt\\di di' +endif + +" --------------------------------------------------------------------- +" Public Interface: {{{1 +if !hasmapto('StartDrawIt') + map di StartDrawIt +endif +map StartDrawIt :set lz:call DrawIt#StartDrawIt():set nolz +com! -nargs=0 DIstart set lz|call DrawIt#StartDrawIt()|set nolz + +if !hasmapto('StopDrawIt') + map ds StopDrawIt +endif +map StopDrawIt :set lz:call DrawIt#StopDrawIt():set nolz +com! -nargs=0 DIstop set lz|call DrawIt#StopDrawIt()|set nolz + +" --------------------------------------------------------------------- +" Cleanup And Modelines: +" vim: fdm=marker +let &cpo= s:keepcpo +unlet s:keepcpo diff -r 000000000000 -r 86954f5fc4d2 .vim/plugin/cecutil.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/plugin/cecutil.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,464 @@ +" cecutil.vim : save/restore window position +" save/restore mark position +" save/restore selected user maps +" Author: Charles E. Campbell, Jr. +" Version: 15e ASTRO-ONLY +" Date: Apr 10, 2006 +" +" Saving Restoring Destroying Marks: {{{1 +" call SaveMark(markname) let savemark= SaveMark(markname) +" call RestoreMark(markname) call RestoreMark(savemark) +" call DestroyMark(markname) +" commands: SM RM DM +" +" Saving Restoring Destroying Window Position: {{{1 +" call SaveWinPosn() let winposn= SaveWinPosn() +" call RestoreWinPosn() call RestoreWinPosn(winposn) +" \swp : save current window/buffer's position +" \rwp : restore current window/buffer's previous position +" commands: SWP RWP +" +" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim +" +" You believe that God is one. You do well. The demons also {{{1 +" believe, and shudder. But do you want to know, vain man, that +" faith apart from works is dead? (James 2:19,20 WEB) + +" Load Once: {{{1 +if &cp || exists("g:loaded_cecutil") + finish +endif +let g:loaded_cecutil = "v15e" +let s:keepcpo = &cpo +set cpo&vim +"DechoVarOn + +" ----------------------- +" Public Interface: {{{1 +" ----------------------- + +" Map Interface: {{{2 +if !hasmapto('SaveWinPosn') + map swp SaveWinPosn +endif +if !hasmapto('RestoreWinPosn') + map rwp RestoreWinPosn +endif +nmap SaveWinPosn :call SaveWinPosn() +nmap RestoreWinPosn :call RestoreWinPosn() + +" Command Interface: {{{2 +com -bar -nargs=0 SWP call SaveWinPosn() +com -bar -nargs=0 RWP call RestoreWinPosn() +com -bar -nargs=1 SM call SaveMark() +com -bar -nargs=1 RM call RestoreMark() +com -bar -nargs=1 DM call DestroyMark() + +if v:version < 630 + let s:modifier= "sil " +else + let s:modifier= "sil keepj " +endif + +" --------------------------------------------------------------------- +" SaveWinPosn: {{{1 +" let winposn= SaveWinPosn() will save window position in winposn variable +" call SaveWinPosn() will save window position in b:cecutil_winposn{b:cecutil_iwinposn} +" let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done) +fun! SaveWinPosn(...) +" call Dfunc("SaveWinPosn() a:0=".a:0) + if line(".") == 1 && getline(1) == "" +" call Dfunc("SaveWinPosn : empty buffer") + return "" + endif + let so_keep = &so + let siso_keep = &siso + let ss_keep = &ss + set so=0 siso=0 ss=0 + + let swline = line(".") + let swcol = col(".") + let swwline = winline() - 1 + let swwcol = virtcol(".") - wincol() + let savedposn = "call GoWinbufnr(".winbufnr(0).")|silent ".swline + let savedposn = savedposn."|".s:modifier."norm! 0z\" + if swwline > 0 + let savedposn= savedposn.":".s:modifier."norm! ".swwline."\\" + endif + if swwcol > 0 + let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\" + endif + let savedposn = savedposn.":".s:modifier."call cursor(".swline.",".swcol.")\" + + " save window position in + " b:cecutil_winposn_{iwinposn} (stack) + " only when SaveWinPosn() is used + if a:0 == 0 + if !exists("b:cecutil_iwinposn") + let b:cecutil_iwinposn= 1 + else + let b:cecutil_iwinposn= b:cecutil_iwinposn + 1 + endif +" call Decho("saving posn to SWP stack") + let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn + endif + + let &so = so_keep + let &siso = siso_keep + let &ss = ss_keep + +" if exists("b:cecutil_iwinposn") " Decho +" call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]") +" else " Decho +" call Decho("b:cecutil_iwinposn doesn't exist") +" endif " Decho +" call Dret("SaveWinPosn [".savedposn."]") + return savedposn +endfun + +" --------------------------------------------------------------------- +" RestoreWinPosn: {{{1 +fun! RestoreWinPosn(...) +" call Dfunc("RestoreWinPosn() a:0=".a:0) +" call Decho("getline(1)<".getline(1).">") +" call Decho("line(.)=".line(".")) + if line(".") == 1 && getline(1) == "" +" call Dfunc("RestoreWinPosn : empty buffer") + return "" + endif + let so_keep = &so + let siso_keep = &siso + let ss_keep = &ss + set so=0 siso=0 ss=0 + + if a:0 == 0 || a:1 == "" + " use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists + if exists("b:cecutil_iwinposn") && exists("b:cecutil_winposn{b:cecutil_iwinposn}") +" call Decho("using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">") + try + exe "silent! ".b:cecutil_winposn{b:cecutil_iwinposn} + catch /^Vim\%((\a\+)\)\=:E749/ + " ignore empty buffer error messages + endtry + " normally drop top-of-stack by one + " but while new top-of-stack doesn't exist + " drop top-of-stack index by one again + if b:cecutil_iwinposn >= 1 + unlet b:cecutil_winposn{b:cecutil_iwinposn} + let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 + while b:cecutil_iwinposn >= 1 && !exists("b:cecutil_winposn{b:cecutil_iwinposn}") + let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 + endwhile + if b:cecutil_iwinposn < 1 + unlet b:cecutil_iwinposn + endif + endif + else + echohl WarningMsg + echomsg "***warning*** need to SaveWinPosn first!" + echohl None + endif + + else " handle input argument +" call Decho("using input a:1<".a:1.">") + " use window position passed to this function + exe "silent ".a:1 + " remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack + if exists("b:cecutil_iwinposn") + let jwinposn= b:cecutil_iwinposn + while jwinposn >= 1 " search for a:1 in iwinposn..1 + if exists("b:cecutil_winposn{jwinposn}") " if it exists + if a:1 == b:cecutil_winposn{jwinposn} " and the pattern matches + unlet b:cecutil_winposn{jwinposn} " unlet it + if jwinposn == b:cecutil_iwinposn " if at top-of-stack + let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 " drop stacktop by one + endif + endif + endif + let jwinposn= jwinposn - 1 + endwhile + endif + endif + + " seems to be something odd: vertical motions after RWP + " cause jump to first column. Following fixes that + if wincol() > 1 + silent norm! hl + elseif virtcol(".") < virtcol("$") + silent norm! lh + endif + + let &so = so_keep + let &siso = siso_keep + let &ss = ss_keep + +" call Dret("RestoreWinPosn") +endfun + +" --------------------------------------------------------------------- +" GoWinbufnr: go to window holding given buffer (by number) {{{1 +" Prefers current window; if its buffer number doesn't match, +" then will try from topleft to bottom right +fun! GoWinbufnr(bufnum) +" call Dfunc("GoWinbufnr(".a:bufnum.")") + if winbufnr(0) == a:bufnum +" call Dret("GoWinbufnr : winbufnr(0)==a:bufnum") + return + endif + winc t + let first=1 + while winbufnr(0) != a:bufnum && (first || winnr() != 1) + winc w + let first= 0 + endwhile +" call Dret("GoWinbufnr") +endfun + +" --------------------------------------------------------------------- +" SaveMark: sets up a string saving a mark position. {{{1 +" For example, SaveMark("a") +" Also sets up a global variable, g:savemark_{markname} +fun! SaveMark(markname) +" call Dfunc("SaveMark(markname<".a:markname.">)") + let markname= a:markname + if strpart(markname,0,1) !~ '\a' + let markname= strpart(markname,1,1) + endif +" call Decho("markname=".markname) + + let lzkeep = &lz + set lz + + if 1 <= line("'".markname) && line("'".markname) <= line("$") + let winposn = SaveWinPosn(0) + exe s:modifier."norm! `".markname + let savemark = SaveWinPosn(0) + let g:savemark_{markname} = savemark + let savemark = markname.savemark + call RestoreWinPosn(winposn) + else + let g:savemark_{markname} = "" + let savemark = "" + endif + + let &lz= lzkeep + +" call Dret("SaveMark : savemark<".savemark.">") + return savemark +endfun + +" --------------------------------------------------------------------- +" RestoreMark: {{{1 +" call RestoreMark("a") -or- call RestoreMark(savemark) +fun! RestoreMark(markname) +" call Dfunc("RestoreMark(markname<".a:markname.">)") + + if strlen(a:markname) <= 0 +" call Dret("RestoreMark : no such mark") + return + endif + let markname= strpart(a:markname,0,1) + if markname !~ '\a' + " handles 'a -> a styles + let markname= strpart(a:markname,1,1) + endif +" call Decho("markname=".markname." strlen(a:markname)=".strlen(a:markname)) + + let lzkeep = &lz + set lz + let winposn = SaveWinPosn(0) + + if strlen(a:markname) <= 2 + if exists("g:savemark_{markname}") && strlen(g:savemark_{markname}) != 0 + " use global variable g:savemark_{markname} +" call Decho("use savemark list") + call RestoreWinPosn(g:savemark_{markname}) + exe "norm! m".markname + endif + else + " markname is a savemark command (string) +" call Decho("use savemark command") + let markcmd= strpart(a:markname,1) + call RestoreWinPosn(markcmd) + exe "norm! m".markname + endif + + call RestoreWinPosn(winposn) + let &lz = lzkeep + +" call Dret("RestoreMark") +endfun + +" --------------------------------------------------------------------- +" DestroyMark: {{{1 +" call DestroyMark("a") -- destroys mark +fun! DestroyMark(markname) +" call Dfunc("DestroyMark(markname<".a:markname.">)") + + " save options and set to standard values + let reportkeep= &report + let lzkeep = &lz + set lz report=10000 + + let markname= strpart(a:markname,0,1) + if markname !~ '\a' + " handles 'a -> a styles + let markname= strpart(a:markname,1,1) + endif +" call Decho("markname=".markname) + + let curmod = &mod + let winposn = SaveWinPosn(0) + 1 + let lineone = getline(".") + exe "k".markname + d + put! =lineone + let &mod = curmod + call RestoreWinPosn(winposn) + + " restore options to user settings + let &report = reportkeep + let &lz = lzkeep + +" call Dret("DestroyMark") +endfun + +" --------------------------------------------------------------------- +" ListWinPosn: +"fun! ListWinPosn() " Decho +" if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0 " Decho +" call Decho("nothing on SWP stack") " Decho +" else " Decho +" let jwinposn= b:cecutil_iwinposn " Decho +" while jwinposn >= 1 " Decho +" if exists("b:cecutil_winposn{jwinposn}") " Decho +" call Decho("winposn{".jwinposn."}<".b:cecutil_winposn{jwinposn}.">") " Decho +" else " Decho +" call Decho("winposn{".jwinposn."} -- doesn't exist") " Decho +" endif " Decho +" let jwinposn= jwinposn - 1 " Decho +" endwhile " Decho +" endif " Decho +"endfun " Decho +"com! -nargs=0 LWP call ListWinPosn() " Decho + +" --------------------------------------------------------------------- +" SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{1 +" which can be used to restore user maps later with +" call RestoreUserMaps() +" +" mapmode - see :help maparg for its list +" ex. "n" = Normal +" If the first letter is u, then unmapping will be done +" ex. "un" = Normal + unmapping +" mapchx - "" handled as a single map item. +" ex. "" +" - "string" a string of single letters which are actually +" multiple two-letter maps (using the maplead: +" maplead . each_character_in_string) +" ex. maplead="\" and mapchx="abc" saves mappings for +" \a, \b, and \c +" Of course, if maplead is "", then for mapchx="abc", +" mappings for a, b, and c are saved. +" - :something handled as a single map item, w/o the ":" +" ex. mapchx= ":abc" will save a mapping for "abc" +" suffix - a string unique to your plugin +" ex. suffix= "DrawIt" +fun! SaveUserMaps(mapmode,maplead,mapchx,suffix) +" call Dfunc("SaveUserMaps(mapmode<".a:mapmode."> maplead<".a:maplead."> mapchx<".a:mapchx."> suffix<".a:suffix.">)") + + if !exists("s:restoremap_{a:suffix}") + " initialize restoremap_suffix to null string + let s:restoremap_{a:suffix}= "" + endif + + " set up dounmap: if 1, then save and unmap (a:mapmode leads with a "u") + " if 0, save only + if a:mapmode =~ '^u' + let dounmap= 1 + let mapmode= strpart(a:mapmode,1) + else + let dounmap= 0 + let mapmode= a:mapmode + endif + + " save single map :...something... + if strpart(a:mapchx,0,1) == ':' + let amap= strpart(a:mapchx,1) + if amap == "|" || amap == "\" + let amap= "\".amap + endif + let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:silent! ".mapmode."unmap ".amap + if maparg(amap,mapmode) != "" + let maprhs= substitute(maparg(amap,mapmode),'|','','ge') +" let maprhs= substitute(maprhs,'"',"\",'ge') + let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".amap." ".maprhs + endif + if dounmap + exe "silent! ".mapmode."unmap ".amap + endif + + " save single map + elseif strpart(a:mapchx,0,1) == '<' + let amap = a:mapchx + if amap == "|" || amap == "\" + let amap= "\".amap + endif + let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap + if maparg(a:mapchx,mapmode) != "" + let maprhs= substitute(maparg(amap,mapmode),'|','','ge') +" let maprhs= substitute(maprhs,'"',"\",'ge') + let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".maprhs + endif + if dounmap + exe "silent! ".mapmode."unmap ".amap + endif + + " save multiple maps + else + let i= 1 + while i <= strlen(a:mapchx) + let amap= a:maplead.strpart(a:mapchx,i-1,1) + if amap == "|" || amap == "\" + let amap= "\".amap + endif + let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap + if maparg(amap,mapmode) != "" + let maprhs= substitute(maparg(amap,mapmode),'|','','ge') +" let maprhs= substitute(maprhs,'"',"\",'ge') + let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".maprhs + endif + if dounmap + exe "silent! ".mapmode."unmap ".amap + endif + let i= i + 1 + endwhile + endif +" call Dret("SaveUserMaps : restoremap_".a:suffix.": ".s:restoremap_{a:suffix}) +endfun + +" --------------------------------------------------------------------- +" RestoreUserMaps: {{{1 +" Used to restore user maps saved by SaveUserMaps() +fun! RestoreUserMaps(suffix) +" call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)") + if exists("s:restoremap_{a:suffix}") + let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e') + if s:restoremap_{a:suffix} != "" +" call Decho("exe ".s:restoremap_{a:suffix}) + exe "silent! s:restoremap_{a:suffix}" + endif + unlet s:restoremap_{a:suffix} + endif +" call Dret("RestoreUserMaps") +endfun + +" --------------------------------------------------------------------- +" Restore: {{{1 +let &cpo= s:keepcpo +unlet s:keepcpo + +" --------------------------------------------------------------------- +" Modelines: {{{1 +" vim: ts=4 fdm=marker diff -r 000000000000 -r 86954f5fc4d2 .vim/plugin/cscope_maps.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/plugin/cscope_maps.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,165 @@ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" CSCOPE settings for vim +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" +" This file contains some boilerplate settings for vim's cscope interface, +" plus some keyboard mappings that I've found useful. +" +" USAGE: +" -- vim 6: Stick this file in your ~/.vim/plugin directory (or in a +" 'plugin' directory in some other directory that is in your +" 'runtimepath'. +" +" -- vim 5: Stick this file somewhere and 'source cscope.vim' it from +" your ~/.vimrc file (or cut and paste it into your .vimrc). +" +" NOTE: +" These key maps use multiple keystrokes (2 or 3 keys). If you find that vim +" keeps timing you out before you can complete them, try changing your timeout +" settings, as explained below. +" +" Happy cscoping, +" +" Jason Duell jduell@alumni.princeton.edu 2002/3/7 +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + + +" This tests to see if vim was configured with the '--enable-cscope' option +" when it was compiled. If it wasn't, time to recompile vim... +if has("cscope") + + """"""""""""" Standard cscope/vim boilerplate + + " use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t' + set cscopetag + + " check cscope for definition of a symbol before checking ctags: set to 1 + " if you want the reverse search order. + set csto=0 + + " add any cscope database in current directory + if filereadable("cscope.out") + cs add cscope.out + " else add the database pointed to by environment variable + elseif $CSCOPE_DB != "" + cs add $CSCOPE_DB + endif + + " show msg when any other cscope db added + set cscopeverbose + + + """"""""""""" My cscope/vim key mappings + " + " The following maps all invoke one of the following cscope search types: + " + " 's' symbol: find all references to the token under cursor + " 'g' global: find global definition(s) of the token under cursor + " 'c' calls: find all calls to the function name under cursor + " 't' text: find all instances of the text under cursor + " 'e' egrep: egrep search for the word under cursor + " 'f' file: open the filename under cursor + " 'i' includes: find files that include the filename under cursor + " 'd' called: find functions that function under cursor calls + " + " Below are three sets of the maps: one set that just jumps to your + " search result, one that splits the existing vim window horizontally and + " diplays your search result in the new window, and one that does the same + " thing, but does a vertical split instead (vim 6 only). + " + " I've used CTRL-\ and CTRL-@ as the starting keys for these maps, as it's + " unlikely that you need their default mappings (CTRL-\'s default use is + " as part of CTRL-\ CTRL-N typemap, which basically just does the same + " thing as hitting 'escape': CTRL-@ doesn't seem to have any default use). + " If you don't like using 'CTRL-@' or CTRL-\, , you can change some or all + " of these maps to use other keys. One likely candidate is 'CTRL-_' + " (which also maps to CTRL-/, which is easier to type). By default it is + " used to switch between Hebrew and English keyboard mode. + " + " All of the maps involving the macro use '^$': this is so + " that searches over '#include " return only references to + " 'time.h', and not 'sys/time.h', etc. (by default cscope will return all + " files that contain 'time.h' as part of their name). + + + " To do the first type of search, hit 'CTRL-\', followed by one of the + " cscope search types above (s,g,c,t,e,f,i,d). The result of your cscope + " search will be displayed in the current window. You can use CTRL-T to + " go back to where you were before the search. + " + + nmap s :cs find s =expand("") + nmap g :cs find g =expand("") + nmap c :cs find c =expand("") + nmap t :cs find t =expand("") + nmap e :cs find e =expand("") + nmap f :cs find f =expand("") + nmap i :cs find i ^=expand("")$ + nmap d :cs find d =expand("") + + + " Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type + " makes the vim window split horizontally, with search result displayed in + " the new window. + " + " (Note: earlier versions of vim may not have the :scs command, but it + " can be simulated roughly via: + " nmap s :cs find s =expand("") + + nmap s :scs find s =expand("") + nmap g :scs find g =expand("") + nmap c :scs find c =expand("") + nmap t :scs find t =expand("") + nmap e :scs find e =expand("") + nmap f :scs find f =expand("") + nmap i :scs find i ^=expand("")$ + nmap d :scs find d =expand("") + + + " Hitting CTRL-space *twice* before the search type does a vertical + " split instead of a horizontal one (vim 6 and up only) + " + " (Note: you may wish to put a 'set splitright' in your .vimrc + " if you prefer the new window on the right instead of the left + + nmap s :vert scs find s =expand("") + nmap g :vert scs find g =expand("") + nmap c :vert scs find c =expand("") + nmap t :vert scs find t =expand("") + nmap e :vert scs find e =expand("") + nmap f :vert scs find f =expand("") + nmap i :vert scs find i ^=expand("")$ + nmap d :vert scs find d =expand("") + + + """"""""""""" key map timeouts + " + " By default Vim will only wait 1 second for each keystroke in a mapping. + " You may find that too short with the above typemaps. If so, you should + " either turn off mapping timeouts via 'notimeout'. + " + "set notimeout + " + " Or, you can keep timeouts, by uncommenting the timeoutlen line below, + " with your own personal favorite value (in milliseconds): + " + "set timeoutlen=4000 + " + " Either way, since mapping timeout settings by default also set the + " timeouts for multicharacter 'keys codes' (like ), you should also + " set ttimeout and ttimeoutlen: otherwise, you will experience strange + " delays as vim waits for a keystroke after you hit ESC (it will be + " waiting to see if the ESC is actually part of a key code like ). + " + "set ttimeout + " + " personally, I find a tenth of a second to work well for key code + " timeouts. If you experience problems and have a slow terminal or network + " connection, set it higher. If you don't set ttimeoutlen, the value for + " timeoutlent (default: 1000 = 1 second, which is sluggish) is used. + " + "set ttimeoutlen=100 + +endif + + diff -r 000000000000 -r 86954f5fc4d2 .vim/plugin/vimballPlugin.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/plugin/vimballPlugin.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,36 @@ +" vimballPlugin : construct a file containing both paths and files +" Author: Charles E. Campbell, Jr. +" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. +" The VIM LICENSE applies to Vimball.vim, and Vimball.txt +" (see |copyright|) except use "Vimball" instead of "Vim". +" No warranty, express or implied. +" *** *** Use At-Your-Own-Risk! *** *** +" +" (Rom 2:1 WEB) Therefore you are without excuse, O man, whoever you are who +" judge. For in that which you judge another, you condemn yourself. For +" you who judge practice the same things. +" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim + +" --------------------------------------------------------------------- +" Load Once: {{{1 +if &cp || exists("g:loaded_vimballPlugin") + finish +endif +let g:loaded_vimballPlugin = 1 +let s:keepcpo = &cpo +set cpo&vim + +" ------------------------------------------------------------------------------ +" Public Interface: {{{1 +com! -ra -complete=dir -na=+ -bang MkVimball call vimball#MkVimball(,,0,) +com! -na=? -complete=dir UseVimball call vimball#Vimball(1,) +com! -na=0 VimballList call vimball#Vimball(0) +com! -na=* -complete=dir RmVimball call vimball#RmVimball() +au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("")) +au BufEnter *.vba set noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)") + +" ===================================================================== +" Restoration And Modelines: {{{1 +" vim: fdm=marker +let &cpo= s:keepcpo +unlet s:keepcpo diff -r 000000000000 -r 86954f5fc4d2 .vim/spell/de.utf-8.add --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/spell/de.utf-8.add Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,459 @@ +Schlittermann +Timeouts +z +B +Buchungsanfragen +Proxies +Serverantwort +Buchungsdatensätze +Debian +Sniffer +Compot +vim +#ts +#w +#o +€ +Nutzungseinführung +Testbuchungen +Buchungsausfällen +Entwicklungsbibliotheken +angeboten +PXE +Nagios +Heartbeat +TFTP +Dienstübernahmen +Wartungs +Servicevertrag +internet +unix +support +Leistungserbringung +Leistungsabhängige +Folgemonats +Widerspruchsrecht +Leistungsverpflichtung +Nutzungsbeginn +Vertragsbeziehung +Vertraulichkeitsverpflichtung +Vertraulichkeitsvereinbarungen +Tannenstr +Plattenauslastung +Plattendefekte +Systemlast +Protokollfiles +Systemuhr +POP3 +SSH +Virenscannerlizenz +Sicherheitsupdates +Remote +Störungsfall +Systembetreuung +Security +SSL +Lizenzkosten +Konfigurationsänderungen +Systemverantwortlichen +Komponententausch +Scripting +Seviceverträge +Kundennummern +Bereitschaftspauschale +Fahrtkostenabrechnungen +Trainingshaus +Serverbetreuung +u +ä +o +Symptombekämpfung +a +# +Tannenstrasse +Projektpreis +CGI +RRD +#ur +SATA +Datentransport +Sachsengarage +Verlagsmarketing +Systemadministration +openBC +#rob +Dangries +Wieczorek +Gutscheinbestellformular +Mailversand +Gutscheinbestellung +Partnerunternehmen +Webpräsenz +Herrn +Timeout +Traffic +Mailadressen +Mailadresse +Vertragsversion +Internetdienstleister +Melderegister +Netzwerkkarte +Hosts +Hotplug +Versandkostenanteil +OpenBC +Eventbezeichungen +Eventbezeichnungen +eventabhängig +Mouseover +Versandkostenpauschale +Pixelfoto +hochzuladende +Frühkaffee +Kontaktformular +Serverseite +Kontaktwünsche +reinlassen +Plugins +Exim +Spammer +Spamscanner +DSI +Tiscali +Nacamar +DENIC +syslog +logout +exit +Putty +Root +Affengriff +root +Rechnername +Nutzerverwaltung +Home +Benutzerpasswort +Gruppenzuordnung +Gruppenzugehörigkeit +Zielsystem +Quellsystem +Manualseiten +Anmeldedaten +Slaves +PDC +BDC +WINS +Redirect +ldapvi +F2 +F6 +#elmachine +#ruppenverwaltung +Gruppenverwaltung +Nutzerliste +SID +Gruppeninformation +Gruppenliste +Mailservice +Maildienste +Mailpostfach +Zugriffstatistik +Serverstandort +hochgeladen +VoiceInterConnect +Sarge +stable +Releasestand +Nutzerkonten +Drucksystem +MySQL +PostgreSQL +CVS +NTP +Zeitservice +Squid +AntiVirus +ClamAV +Fetchmail +AMaViS +SpamAssassin +Cyrus +Adressvergabe +Netzbereich +Namensauflösung +POSIX +ACL +Apache2 +Twiki +serverseitig +Serverstatus +Überwachungstool +Systemauslastung +Spamd +Daemon +updates +#ommandozeilenorientiert +Backupsystem +Volumes +Die +offsite +Projektstände +restaurierbar +Fernzugriff +Patches +Serverkonfiguration +Ereignisprotokolle +Aktualisierbarkeit +Funktionsänderungen +USA +Scripte +Serversystemen +Clientsystemen +Überwachungstools +Serviceverträge +Mailboxen +Mailstore +Softwareverwaltung +Zeitserver +kommandozeilenorientiert +Mailman +Mailstorage +Virentests +TLS +Masterdaten +Zugangsdaten +Objekttypen +Mailgruppen +Inbox +UID +Admin +cyrus +mailman +Webmail +Masseneintragungen +Gruppenzuordnungen +postmaster +Funktionsadressen +Neusetzen +Nutzername +Manualseite +Aufrufmöglichkeiten +Kurzreferenz +Mailsystem +Mailsystems +Webinterface +Weiterleitungsinformation +#uß +Weiterleitungsadresse +Unterzweige +Weiterleitungseintrag +Gruppenname +rollenbasiert +Aliasmechanismus +Nutzerobjekt +Kühlwasserverlust +Fachwerkstatt +Originalteile +Ústí +Nutzergruppe +Firmenprofil +Kontaktseite +Kontaktlinks +Referenzseite +Thumbnail +Anlagengruppen +Leistungsphasen +Bearbeitungszeitraum +Leistungspektrum +#ebbasiertes +webbasiertes +PHP +Layoutvorschläge +Referenzpflegetool +Spätverkaufs +Dönerladen +Nichtverfügbarkeit +Spätshop +Mietminderung +Szeneviertel +Toilettenersatz +Spätshops +Wochenanfang +Stadtordnung +#ächtiche +History +Bandsicherung +Rücksicherung +Flatrate +Serverhousing +Athlon +Opteron +Opterons +Athlons +preisintensiver +Hardwareausfälle +Kalenderquartalsende +Serviceeinschränkungen +Abrechnungseinheit +Fälligkeitsmonat +Supportleistungen +HACC +Loadbalancing +HA +Webservice +Machbarkeitsstudien +Tagekonto +Leistungszeitpunkt +Beratungs +Supportvertrag +Beratungsleistungen +Folgemonaten +Nichtabruf +Monatsbeginn +Vertragsende +Systemüberwachung +Netzadministration +Marktglobalisierung +Staatsbürgersolidarität +kooperation +Sonnenspaziergang +Schulungsanfrage +Clusterkonzepte +Failoverlösungen +LVS +Clustersysteme +#nschluß +Bilderpool +Listenpunkten +Listeneintrag +Listenpunkte +Administrations +Ausschreibungsseite +Tabellenstruktur +Jobangebot +Pflegetools +Ausführungsdatum +OASIS +RPC +Designschwächen +modulspezifischen +Installationspakete +Codereview +Template +Templates +Kindprozesse +Watchdog +Logging +Error +Reporting +Kindprozess +Zugangskonzept +zertifikatsbasiert +remote +Zertifikatsverwaltung +Build +Konfigurations +Projektkenntnis +Stundenbasis +Abrechnungsmonat +Zielerfüllung +T€ +übergangsweise +Sondertilgungsrecht +Referenzclient +Proof +of +Concept +Referenzclients +Projekttagen +anlage +Mailweiterleitung +Virenabwehr +Mailexchanger +Fallback +MX +Solarwatt +schlittermann +ssl +hh +Dialer +Exchanger +merkur +solarwatt +DMZ +Ausgangsserver +Absenderüberprüfung +Mailprogramme +Angebotsnummer +Hochverfügbarkeit +Hochverfügbarkeitspärchen +RAID1 +DRBD +Hauptserver +Backupserver +Systeminstallation +rsnapshot +Domaincontroller +Ausfalltests +Protokollerweiterung +DNSSEC +Vorwärtsauflösung +Angriffsszenarien +Spoofing +Poisoning +IETF +Resolvers +Bind9 +Resolver +dig +Forwarder +Query +Portzuordnung +Transaction +Signatures +TSIG +Verschlüsselungsverfahren +Zonentransfers +Zeitstempel +sichergestellt +Vertrauensketten +schlüsselbasierten +GnuPG +Nutzdaten +DNSKEY +Record +Verschlüsselungsalgorithmus +section +Base64 +RRSIG +Effizienzgründen +RRset +Gültigkeitszeit +Chain +ISC +#ddresse +Addresse/! +#rspürnglich +urspürnglich/! +Records +Address +Toplevel +options +Lookaside +Wichtung +Traffics +Malware +Pilotinstallation +Content +Updateszenarien +Blacklisting +Connector +HAVP +Lachmuth +jetzt +regards +from +Germany +Gruppenrichtlinie +Protocol +Discovery diff -r 000000000000 -r 86954f5fc4d2 .vim/spell/de.utf-8.add.spl Binary file .vim/spell/de.utf-8.add.spl has changed diff -r 000000000000 -r 86954f5fc4d2 .vim/spell/de.utf-8.spl Binary file .vim/spell/de.utf-8.spl has changed diff -r 000000000000 -r 86954f5fc4d2 .vim/spell/de.utf-8.sug Binary file .vim/spell/de.utf-8.sug has changed diff -r 000000000000 -r 86954f5fc4d2 .vim/spell/en.utf-8.add --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/spell/en.utf-8.add Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,42 @@ +Schlittermann +Heiko +schlittermann +internet +unix +Medizintechnik +Ardenne +Hochschule +Technische +Ilmenau +Diplom +Ingenieur +Elektroprojekt +VEB +Abitur +und +Anlagenbau +NVA +GDR +Exim +Debian +Mitsumi +CDROM +CGI +middleware +Exim4 +Bind9 +IPv4 +paragliding +CMAS +paraglider +HTTPS +OpenSSL +GnuTLS +Plugins +Icinga +Nagios +SSL +DNS +DNSSec +IMAP +Dovecot diff -r 000000000000 -r 86954f5fc4d2 .vim/spell/en.utf-8.add.spl Binary file .vim/spell/en.utf-8.add.spl has changed diff -r 000000000000 -r 86954f5fc4d2 .vim/syntax/asciidoc.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/syntax/asciidoc.vim Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,1 @@ +../../src/asciidoc/vim/syntax/asciidoc.vim \ No newline at end of file diff -r 000000000000 -r 86954f5fc4d2 .vim/view/~=+public_html=+osten-ui=+Pages=+Evn.pm= --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vim/view/~=+public_html=+osten-ui=+Pages=+Evn.pm= Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,84 @@ +let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0 +argglobal +setlocal autoindent +setlocal autoread +setlocal nobinary +setlocal bufhidden= +setlocal buflisted +setlocal buftype= +setlocal nocindent +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e +setlocal cinoptions= +setlocal cinwords=if,else,while,do,for,switch +setlocal comments=b:# +setlocal commentstring=/*%s*/ +setlocal complete=.,w,b,u,t,i +setlocal define=[^A-Za-z_] +setlocal dictionary= +setlocal nodiff +setlocal equalprg= +setlocal errorformat= +setlocal noexpandtab +if &filetype != 'perl' +setlocal filetype=perl +endif +setlocal foldcolumn=0 +setlocal foldenable +setlocal foldexpr=0 +setlocal foldignore=# +setlocal foldlevel=0 +setlocal foldmarker={{{,}}} +setlocal foldmethod=indent +setlocal foldminlines=1 +setlocal foldnestmax=20 +setlocal foldtext=foldtext() +setlocal formatoptions=crqol +setlocal grepprg= +setlocal iminsert=0 +setlocal imsearch=0 +setlocal include=\\<\\(use|require\\)\\s* +setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','') +setlocal indentexpr= +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e +setlocal noinfercase +setlocal iskeyword=48-57,_,A-Z,a-z,: +setlocal keymap= +setlocal nolinebreak +setlocal nolisp +setlocal nolist +setlocal makeprg= +setlocal matchpairs=(:),{:},[:] +setlocal modeline +setlocal modifiable +setlocal nrformats=octal,hex +setlocal nonumber +setlocal path=/usr/local/lib/perl/5.6.1,/usr/local/share/perl/5.6.1,/usr/lib/perl5,/usr/share/perl5,/usr/lib/perl/5.6.1,/usr/share/perl/5.6.1,/usr/local/lib/site_perl/i386-linux,/usr/local/lib/site_perl,, +setlocal nopreviewwindow +setlocal noreadonly +setlocal noscrollbind +setlocal shiftwidth=4 +setlocal noshortname +setlocal smartindent +setlocal softtabstop=4 +setlocal suffixesadd= +setlocal swapfile +if &syntax != '' +setlocal syntax= +endif +setlocal tabstop=8 +setlocal tags= +setlocal textwidth=72 +setlocal thesaurus= +setlocal wrap +setlocal wrapmargin=0 +23 +normal zo +23 +normal zo +let s:l = 34 - ((25 * winheight(0) + 11) / 22) +if s:l < 1 | let s:l = 1 | endif +exe s:l +normal zt +34 +normal 0 +let &so = s:so_save | let &siso = s:siso_save diff -r 000000000000 -r 86954f5fc4d2 .vimrc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.vimrc Tue May 29 08:41:42 2012 +0200 @@ -0,0 +1,47 @@ +syntax on +set modeline +filetype plugin on + +set pastetoggle= +set ts=8 sts=4 sw=4 +set autoindent +set autowrite +set textwidth=72 +set visualbell +set linebreak +set showbreak=» +set listchars=tab:⇒·,trail:· +set incsearch + + +iabb (O!!date -IA)JkgJEa +iabb dd:r~/.templates/mwst}'^ +iabb dd:r~/.templates/gpl3'^ +iabb dd:r~/.templates/sig'^ +iabb dd:r~/.templates/shortsig'^ + + +imap '' “ +imap ,, „ +imap ... … +imap :-) ☺ +imap (.) (…) + +vmap gc :s/^/#/ +vmap gC :s/^#// + +"set cursorcolumn +"set cursorline +hi CursorLine cterm=none ctermbg=7 +" let perl_include_pod=1 +" + +fun! ShowFuncName() + let lnum = line(".") + let col = col(".") + echohl ModeMsg + echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW')) + echohl None + call search("\\%" . lnum . "l" . "\\%" . col . "c") +endfun +cmap ,f :call ShowFuncName()