initial
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Tue, 29 May 2012 08:41:42 +0200
changeset 0 86954f5fc4d2
child 1 bc7458fa65e1
child 2 f99780d966f7
initial
.inputrc
.perltidyrc
.vim/.VimballRecord
.vim/.netrwhist
.vim/autoload/DrawIt.vim
.vim/autoload/vimball.vim
.vim/doc/DrawIt.txt
.vim/doc/pi_vimball.txt
.vim/doc/tags
.vim/ftplugin/cpp_hs12.vim
.vim/ftplugin/mail_hs12.vim
.vim/ftplugin/perl_hs12.vim
.vim/ftplugin/pod_hs12.vim
.vim/ftplugin/tex_hs12.vim
.vim/ftplugin/wiki2beamer_hs12.vim
.vim/plugin/DrawItPlugin.vim
.vim/plugin/cecutil.vim
.vim/plugin/cscope_maps.vim
.vim/plugin/vimballPlugin.vim
.vim/spell/de.utf-8.add
.vim/spell/de.utf-8.add.spl
.vim/spell/de.utf-8.spl
.vim/spell/de.utf-8.sug
.vim/spell/en.utf-8.add
.vim/spell/en.utf-8.add.spl
.vim/syntax/asciidoc.vim
.vim/view/~=+public_html=+osten-ui=+Pages=+Evn.pm=
.vimrc
--- /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
--- /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
--- /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')
--- /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'
--- /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 <line1>,<line2>call DrawIt#SetBrush(<q-args>)
+
+  " 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><v^","DrawIt")
+  call SaveUserMaps("n","","<left>","DrawIt")
+  call SaveUserMaps("n","","<right>","DrawIt")
+  call SaveUserMaps("n","","<up>","DrawIt")
+  call SaveUserMaps("n","","<down>","DrawIt")
+  call SaveUserMaps("n","","<left>","DrawIt")
+  call SaveUserMaps("n","","<s-right>","DrawIt")
+  call SaveUserMaps("n","","<s-up>","DrawIt")
+  call SaveUserMaps("n","","<s-down>","DrawIt")
+  call SaveUserMaps("n","","<space>","DrawIt")
+  call SaveUserMaps("n","","<home>","DrawIt")
+  call SaveUserMaps("n","","<end>","DrawIt")
+  call SaveUserMaps("n","","<pageup>","DrawIt")
+  call SaveUserMaps("n","","<pagedown>","DrawIt")
+  call SaveUserMaps("n","","<leftmouse>","DrawIt")
+  call SaveUserMaps("n","","<middlemouse>","DrawIt")
+  call SaveUserMaps("n","","<rightmouse>","DrawIt")
+  call SaveUserMaps("n","","<leftdrag>","DrawIt")
+  call SaveUserMaps("n","","<s-leftmouse>","DrawIt")
+  call SaveUserMaps("n","","<s-leftdrag>","DrawIt")
+  call SaveUserMaps("n","","<s-leftrelease>","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","","<left>","DrawIt")
+   call SaveUserMaps("i","","<right>","DrawIt")
+   call SaveUserMaps("i","","<up>","DrawIt")
+   call SaveUserMaps("i","","<down>","DrawIt")
+   call SaveUserMaps("i","","<left>","DrawIt")
+   call SaveUserMaps("i","","<s-right>","DrawIt")
+   call SaveUserMaps("i","","<s-up>","DrawIt")
+   call SaveUserMaps("i","","<s-down>","DrawIt")
+   call SaveUserMaps("i","","<home>","DrawIt")
+   call SaveUserMaps("i","","<end>","DrawIt")
+   call SaveUserMaps("i","","<pageup>","DrawIt")
+   call SaveUserMaps("i","","<pagedown>","DrawIt")
+   call SaveUserMaps("i","","<leftmouse>","DrawIt")
+  endif
+  call SaveUserMaps("n","",":\<c-v>","DrawIt")
+
+  " DrawIt maps (Charles Campbell) {{{3
+  nmap <silent> <left>     :set lz<CR>:silent! call <SID>DrawLeft()<CR>:set nolz<CR>
+  nmap <silent> <right>    :set lz<CR>:silent! call <SID>DrawRight()<CR>:set nolz<CR>
+  nmap <silent> <up>       :set lz<CR>:silent! call <SID>DrawUp()<CR>:set nolz<CR>
+  nmap <silent> <down>     :set lz<CR>:silent! call <SID>DrawDown()<CR>:set nolz<CR>
+  nmap <silent> <s-left>   :set lz<CR>:silent! call <SID>MoveLeft()<CR>:set nolz<CR>
+  nmap <silent> <s-right>  :set lz<CR>:silent! call <SID>MoveRight()<CR>:set nolz<CR>
+  nmap <silent> <s-up>     :set lz<CR>:silent! call <SID>MoveUp()<CR>:set nolz<CR>
+  nmap <silent> <s-down>   :set lz<CR>:silent! call <SID>MoveDown()<CR>:set nolz<CR>
+  nmap <silent> <space>    :set lz<CR>:silent! call <SID>DrawErase()<CR>:set nolz<CR>
+  nmap <silent> >          :set lz<CR>:silent! call <SID>DrawSpace('>',1)<CR>:set nolz<CR>
+  nmap <silent> <          :set lz<CR>:silent! call <SID>DrawSpace('<',2)<CR>:set nolz<CR>
+  nmap <silent> ^          :set lz<CR>:silent! call <SID>DrawSpace('^',3)<CR>:set nolz<CR>
+  nmap <silent> v          :set lz<CR>:silent! call <SID>DrawSpace('v',4)<CR>:set nolz<CR>
+  nmap <silent> <home>     :set lz<CR>:silent! call <SID>DrawSlantUpLeft()<CR>:set nolz<CR>
+  nmap <silent> <end>      :set lz<CR>:silent! call <SID>DrawSlantDownLeft()<CR>:set nolz<CR>
+  nmap <silent> <pageup>   :set lz<CR>:silent! call <SID>DrawSlantUpRight()<CR>:set nolz<CR>
+  nmap <silent> <pagedown> :set lz<CR>:silent! call <SID>DrawSlantDownRight()<CR>:set nolz<CR>
+  nmap <silent> <Leader>>	:set lz<CR>:silent! call <SID>DrawFatRArrow()<CR>:set nolz<CR>
+  nmap <silent> <Leader><	:set lz<CR>:silent! call <SID>DrawFatLArrow()<CR>:set nolz<CR>
+  nmap <silent> <Leader>^	:set lz<CR>:silent! call <SID>DrawFatUArrow()<CR>:set nolz<CR>
+  nmap <silent> <Leader>v	:set lz<CR>:silent! call <SID>DrawFatDArrow()<CR>:set nolz<CR>
+  nmap <silent> <Leader>f  :call <SID>Flood()<cr>
+
+  " Set up insertmode maps {{{3
+  if exists("g:drawit_insertmode") && g:drawit_insertmode
+   imap <silent> <left>     <Esc><left>a
+   imap <silent> <right>    <Esc><right>a
+   imap <silent> <up>       <Esc><up>a
+   imap <silent> <down>     <Esc><down>a
+   imap <silent> <left>   <Esc><left>a
+   imap <silent> <s-right>  <Esc><s-right>a
+   imap <silent> <s-up>     <Esc><s-up>a
+   imap <silent> <s-down>   <Esc><s-down>a
+   imap <silent> <home>     <Esc><home>a
+   imap <silent> <end>      <Esc><end>a
+   imap <silent> <pageup>   <Esc><pageup>a
+   imap <silent> <pagedown> <Esc><pagedown>a
+  endif
+
+  " set up drawing mode mappings (Sylvain Viart) {{{3
+"  nnoremap <silent> <c-v>      :call <SID>LeftStart()<CR><c-v>
+  nnoremap <silent> <c-v>      :call <SID>LeftStart()<CR><c-v>
+  vmap     <silent> <Leader>a  :<c-u>call <SID>Call_corner('Arrow')<CR>
+  vmap     <silent> <Leader>b  :<c-u>call <SID>Call_corner('Box')<cr>
+  nmap              <Leader>h  :call <SID>Holer()<cr>
+  vmap     <silent> <Leader>l  :<c-u>call <SID>Call_corner('DrawPlainLine')<CR>
+  vmap     <silent> <Leader>s  :<c-u>call <SID>Spacer(line("'<"), line("'>"))<cr>
+
+  " set up drawing mode mappings (Charles Campbell) {{{3
+  " \pa ... \pb : blanks are transparent
+  " \ra ... \rb : blanks copy over
+  vmap <silent> <Leader>e   :<c-u>call <SID>Call_corner('Ellipse')<CR>
+  
+  let allreg= "abcdefghijklmnopqrstuvwxyz"
+  while strlen(allreg) > 0
+   let ireg= strpart(allreg,0,1)
+   exe "nmap <silent> <Leader>p".ireg.'  :<c-u>set lz<cr>:silent! call <SID>PutBlock("'.ireg.'",0)<cr>:set nolz<cr>'
+   exe "nmap <silent> <Leader>r".ireg.'  :<c-u>set lz<cr>:silent! call <SID>PutBlock("'.ireg.'",1)<cr>:set nolz<cr>'
+   let allreg= strpart(allreg,1)
+  endwhile
+
+  " mouse maps  (Sylvain Viart) {{{3
+  " start visual-block with leftmouse
+  nnoremap <silent> <leftmouse>    <leftmouse>:call <SID>LeftStart()<CR><c-v>
+  vnoremap <silent> <rightmouse>   <leftmouse>:<c-u>call <SID>RightStart(1)<cr>
+  vnoremap <silent> <middlemouse>  <leftmouse>:<c-u>call <SID>RightStart(0)<cr>
+
+  " mouse maps (Charles Campbell) {{{3
+  " Draw with current brush
+  nnoremap <silent> <s-leftmouse>  <leftmouse>:call <SID>SLeftStart()<CR><c-v>
+
+ " Menu support {{{3
+ if has("gui_running") && has("menu") && &go =~ 'm'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Stop\ \ DrawIt<tab>\\ds				<Leader>ds'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Toggle\ Erase\ Mode<tab><space>	<space>'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Arrow<tab>\\a					<Leader>a'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Box<tab>\\b						<Leader>b'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Ellipse<tab>\\e					<Leader>e'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Flood<tab>\\e					<Leader>f'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Draw\ Line<tab>\\l						<Leader>l'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Make\ Blank\ Zone<tab>\\h			<Leader>h'
+  exe 'menu '.g:DrChipTopLvlMenu.'DrawIt.Append\ Blanks<tab>\\s				<Leader>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<tab>\\di		<Leader>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."\<Esc>"
+  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."\<Esc>"
+  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."\<Esc>"
+  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."\<Esc>"
+  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."\<Esc>"
+  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."\<Esc>"
+  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 \<Esc>"
+  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 \<Esc>"
+   elseif curcol == 0
+     exe "norm! YP:s/./ /ge\<CR>0r "
+   else
+     exe "norm! YP:s/./ /ge\<CR>0".curcol."lr "
+   endif
+  else
+   let curcol= col(".")
+   norm! k
+   while col("$") <= curcol
+     exe "norm! A \<Esc>"
+   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 \<Esc>"
+   elseif curcol == 0
+    exe "norm! Yp:s/./ /ge\<CR>0r "
+   else
+    exe "norm! Yp:s/./ /ge\<CR>0".curcol."lr "
+   endif
+  else
+   let curcol= col(".")
+   norm! j
+   while col("$") <= curcol
+    exe "norm! A \<Esc>"
+   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."\<Esc>"
+  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."\<Esc>"
+  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\<CR>"
+  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\<CR>"
+
+  " 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."\<Bar>"
+
+"  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."\<Bar>"
+  norm! vy
+  let ret= @0 =~ s:bndry
+  if a:row != orow || a:col != ocol
+   exe "norm! ".orow."G".ocol."\<Bar>"
+  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) > <SID>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 <silent> <leftrelease> <leftrelease>:<c-u>call <SID>LeftRelease()<cr>
+"  call Decho("LeftStart()")
+endf!
+
+" ---------------------------------------------------------------------
+" LeftRelease: {{{2
+fun! s:LeftRelease()
+"  call Dfunc("LeftRelease()")
+  vunmap <leftrelease>
+  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 <silent> <s-leftdrag>    <leftmouse>:<c-u>call <SID>SLeftDrag()<cr>
+  noremap <silent> <s-leftrelease> <leftmouse>:<c-u>call <SID>SLeftRelease()<cr>
+"  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 <s-leftdrag>
+  nunmap <s-leftrelease>
+"  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() == "\<c-v>" && ((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
--- /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 =~ '\<plugin/'
+   	let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
+	if filereadable(anfname)
+"	 call Decho("using anfname<".anfname."> 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,'^\(.*\<doc\)[/\\][^.]*\.txt$','\1','')
+"	call Decho("didhelp<".didhelp.">")
+   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 <cr> 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
--- /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.  <NdrchipO@ScampbellPfamily.AbizM>
+          Sylvain Viart             <molo@multimania.com>
+	  (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:                                        ||
+ ||            +-----------------------------------------------------------++
+ || <left>     | move and draw left                                        ||
+ || <right>    | move and draw right, inserting lines/space as needed      ||
+ || <up>       | move and draw up, inserting lines/space as needed         ||
+ || <down>     | move and draw down, inserting lines/space as needed       ||
+ || <s-left>   | move left                                                 ||
+ || <s-right>  | move right, inserting lines/space as needed               ||
+ || <s-up>     | move up, inserting lines/space as needed                  ||
+ || <s-down>   | move down, inserting lines/space as needed                ||
+ || <space>    | 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)              ||
+ || <pgdn>     | replace with a \, move down and right, and insert a \     ||
+ || <end>      | replace with a /, move down and left,  and insert a /     ||
+ || <pgup>     | replace with a /, move up   and right, and insert a /     ||
+ || <home>     | 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 <drawit.vim> 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
+(<s-up>) produced <Esc>[161q, but vim didn't know that sequence was a <s-up>.
+I merely made a nmap:
+
+	nmap <Esc>[161q	<s-up>
+
+and vim thereafter recognized the <s-up> command.
+
+
+ERASING							*drawit-erase*
+<space>
+
+The <space> 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 <space>
+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
+>
+ <shift-leftmouse>
+<
+	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
--- /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.  <NdrOchip@ScampbellPfamily.AbizM>
+	  (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
--- /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*
--- /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 <C-G>f :call HS_format()<ENTER>
+
+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:
--- /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
--- /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 <C-G>f :call HS_format()<ENTER>
+nmap <C-G>p :call HS_pod()<ENTER>
+nmap <C-G>c :call HS_check()<ENTER>
+
+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:
--- /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 <C-G>p :call HS_pod()<ENTER>
+
+command! Pod  :call HS_pod()
+
+function! HS_pod()
+    :!perldoc %
+endfunc
+
+" vim:ft=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
--- /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
--- /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<tab>\\di		<Leader>di'
+endif
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+if !hasmapto('<Plug>StartDrawIt')
+  map <unique> <Leader>di <Plug>StartDrawIt
+endif
+map <silent> <Plug>StartDrawIt  :set lz<cr>:call DrawIt#StartDrawIt()<cr>:set nolz<cr>
+com! -nargs=0 DIstart set lz|call DrawIt#StartDrawIt()|set nolz
+
+if !hasmapto('<Plug>StopDrawIt')
+  map <unique> <Leader>ds <Plug>StopDrawIt
+endif
+map <silent> <Plug>StopDrawIt :set lz<cr>:call DrawIt#StopDrawIt()<cr>:set nolz<cr>
+com! -nargs=0 DIstop set lz|call DrawIt#StopDrawIt()|set nolz
+
+" ---------------------------------------------------------------------
+"  Cleanup And Modelines:
+"  vim: fdm=marker
+let &cpo= s:keepcpo
+unlet s:keepcpo
--- /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('<Plug>SaveWinPosn')
+ map <unique> <Leader>swp <Plug>SaveWinPosn
+endif
+if !hasmapto('<Plug>RestoreWinPosn')
+ map <unique> <Leader>rwp <Plug>RestoreWinPosn
+endif
+nmap <silent> <Plug>SaveWinPosn		:call SaveWinPosn()<CR>
+nmap <silent> <Plug>RestoreWinPosn	:call RestoreWinPosn()<CR>
+
+" Command Interface: {{{2
+com -bar -nargs=0 SWP	call SaveWinPosn()
+com -bar -nargs=0 RWP	call RestoreWinPosn()
+com -bar -nargs=1 SM	call SaveMark(<q-args>)
+com -bar -nargs=1 RM	call RestoreMark(<q-args>)
+com -bar -nargs=1 DM	call DestroyMark(<q-args>)
+
+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\<cr>"
+  if swwline > 0
+   let savedposn= savedposn.":".s:modifier."norm! ".swwline."\<c-y>\<cr>"
+  endif
+  if swwcol > 0
+   let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
+  endif
+  let savedposn = savedposn.":".s:modifier."call cursor(".swline.",".swcol.")\<cr>"
+
+  " 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  - "<something>" handled as a single map item.
+"                    ex. "<left>"
+"                  - "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 == "\<c-v>"
+    let amap= "\<c-v>".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),'|','<bar>','ge')
+"	let maprhs= substitute(maprhs,'"<CR>',"\<cr>",'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 <something>
+  elseif strpart(a:mapchx,0,1) == '<'
+   let amap       = a:mapchx
+   if amap == "|" || amap == "\<c-v>"
+    let amap= "\<c-v>".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),'|','<bar>','ge')
+"	let maprhs= substitute(maprhs,'"<CR>',"\<cr>",'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 == "\<c-v>"
+	 let amap= "\<c-v>".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),'|','<bar>','ge')
+"	 let maprhs= substitute(maprhs,'"<CR>',"\<cr>",'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
--- /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 <cfile> macro use '^<cfile>$': this is so
+    " that searches over '#include <time.h>" 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 <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>	
+    nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
+    nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>	
+
+
+    " 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 <C-@>s <C-W><C-S> :cs find s <C-R>=expand("<cword>")<CR><CR>	
+
+    nmap <C-@>s :scs find s <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-@>g :scs find g <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-@>c :scs find c <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-@>t :scs find t <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-@>e :scs find e <C-R>=expand("<cword>")<CR><CR>	
+    nmap <C-@>f :scs find f <C-R>=expand("<cfile>")<CR><CR>	
+    nmap <C-@>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>	
+    nmap <C-@>d :scs find d <C-R>=expand("<cword>")<CR><CR>	
+
+
+    " 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 <C-@><C-@>s :vert scs find s <C-R>=expand("<cword>")<CR><CR>
+    nmap <C-@><C-@>g :vert scs find g <C-R>=expand("<cword>")<CR><CR>
+    nmap <C-@><C-@>c :vert scs find c <C-R>=expand("<cword>")<CR><CR>
+    nmap <C-@><C-@>t :vert scs find t <C-R>=expand("<cword>")<CR><CR>
+    nmap <C-@><C-@>e :vert scs find e <C-R>=expand("<cword>")<CR><CR>
+    nmap <C-@><C-@>f :vert scs find f <C-R>=expand("<cfile>")<CR><CR>	
+    nmap <C-@><C-@>i :vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>	
+    nmap <C-@><C-@>d :vert scs find d <C-R>=expand("<cword>")<CR><CR>
+
+
+    """"""""""""" 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 <F1>), 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 <F1>).
+    "
+    "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
+
+
--- /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(<line1>,<line2>,<bang>0,<f-args>)
+com! -na=? -complete=dir UseVimball  call vimball#Vimball(1,<f-args>)
+com! -na=0               VimballList call vimball#Vimball(0)
+com! -na=* -complete=dir RmVimball   call vimball#RmVimball(<f-args>)
+au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))
+au BufEnter *.vba 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
--- /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
Binary file .vim/spell/de.utf-8.add.spl has changed
Binary file .vim/spell/de.utf-8.spl has changed
Binary file .vim/spell/de.utf-8.sug has changed
--- /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
Binary file .vim/spell/en.utf-8.add.spl has changed
--- /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
--- /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
--- /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=<F12>
+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 <date> (<ENTER><ESC>O<ESC>!!date -I<ENTER>A)<ESC>JkgJEa
+iabb <mwst> <ESC>dd:r~/.templates/mwst<ENTER>}'^
+iabb <gpl> <ESC>dd:r~/.templates/gpl3<ENTER>'^
+iabb <sig> <ESC>dd:r~/.templates/sig<ENTER>'^
+iabb <s> <ESC>dd:r~/.templates/shortsig<ENTER>'^
+
+
+imap '' “
+imap ,, „
+imap ... …
+imap :-) ☺
+imap (.) (…)
+
+vmap gc :s/^/#/<ENTER>
+vmap gC :s/^#//<ENTER>
+
+"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() <CR>