--- a/vim/.vimrc Wed Mar 09 19:55:25 2011 -0500
+++ b/vim/.vimrc Wed Mar 09 19:59:45 2011 -0500
@@ -40,6 +40,9 @@
set listchars=tab:▸\ ,eol:¬
set shell=/bin/bash
set lazyredraw
+set wildignore+=*.pyc,.hg,.git
+set matchtime=3
+set showbreak=↪
" Save when losing focus
au FocusLost * :wa
@@ -51,9 +54,9 @@
set softtabstop=4
set expandtab
set wrap
-set textwidth=79
+set textwidth=85
set formatoptions=qrn1
-set colorcolumn=85
+set colorcolumn=+1
" }}}
" Status line {{{
@@ -75,7 +78,7 @@
let maplocalleader = "\\"
" }}}
-" Color scheme (terminal) {{{
+" Color scheme {{{
syntax on
set background=dark
@@ -84,43 +87,63 @@
" }}}
" }}}
-" Useful Abbreviations -------------------------------------------------------- {{{
+" Useful abbreviations -------------------------------------------------------- {{{
iabbrev ldis ಠ_ಠ
+iabbrev sl/ http://stevelosh.com/
+iabbrev bb/ http://bitbucket.org/
+iabbrev bbs/ http://bitbucket.org/sjl/
+iabbrev sl@ steve@stevelosh.com
" }}}
-" Searching and Movement ------------------------------------------------------ {{{
+" Searching and movement ------------------------------------------------------ {{{
+" Use sane regexes.
nnoremap / /\v
vnoremap / /\v
set ignorecase
set smartcase
+
set incsearch
set showmatch
set hlsearch
+
set gdefault
map <leader><space> :noh<cr>
runtime macros/matchit.vim
-nmap <tab> %
-vmap <tab> %
+map <tab> %
nnoremap Y y$
nnoremap D d$
+" Keep search matches in the middle of the window.
+nnoremap * *zz
+nnoremap ? ?zz
nnoremap n nzz
nnoremap N Nzz
-nnoremap L $
-vnoremap L $
-onoremap L $
+" L is easier to type, and I never use the default behavior.
+noremap L $
+" Error navigation {{{
+"
+" Location List QuickFix Window
+" (i.e. Syntastic) (i.e. Ack)
+" ----------------------------------
+" Next | M-k M-Down |
+" Previous | M-l M-Up |
+" ----------------------------------
+"
nnoremap ˚ :lnext<cr>
nnoremap ¬ :lprevious<cr>
inoremap ˚ <esc>:lnext<cr>
inoremap ¬ <esc>:lprevious<cr>
+nnoremap <m-Down> :cnext<cr>
+nnoremap <m-Up> :cprevious<cr>
+" }}}
" Directional Keys {{{
@@ -150,8 +173,13 @@
" Folding --------------------------------------------------------------------- {{{
set foldlevelstart=0
+
+" Space to toggle folds.
nnoremap <Space> za
vnoremap <Space> za
+
+" Make zO recursively open whatever top level fold we're in, no matter where the
+" cursor happens to be.
nnoremap zO zCzO
function! MyFoldText() " {{{
@@ -176,8 +204,8 @@
" Fuck you, help key.
set fuoptions=maxvert,maxhorz
+noremap <F1> :set invfullscreen<CR>
inoremap <F1> <ESC>:set invfullscreen<CR>a
-noremap <F1> :set invfullscreen<CR>
" Fuck you too, manual key.
nnoremap K <nop>
@@ -189,78 +217,156 @@
" Various filetype-specific stuff --------------------------------------------- {{{
" Cram {{{
+
au BufNewFile,BufRead *.t set filetype=cram
+
let cram_fold=1
autocmd Syntax cram setlocal foldlevel=1
+
" }}}
" Clojure {{{
-au BufNewFile,BufRead *.clj nmap <localleader>ee 0;\et
+
au FileType clojure call TurnOnClojureFolding()
+
+" Eval toplevel form, even when you're on the opening paren.
+au FileType clojure nmap <localleader>ee 0;\et
+
" }}}
" C {{{
-au BufNewFile,BufRead *.c setlocal foldmethod=syntax
+au FileType c setlocal foldmethod=syntax
" }}}
" HTML and HTMLDjango {{{
+
au BufNewFile,BufRead *.html setlocal filetype=htmldjango
au BufNewFile,BufRead *.html setlocal foldmethod=manual
+
+" Use <localleader>f to fold the current tag.
au BufNewFile,BufRead *.html nnoremap <buffer> <localleader>f Vatzf
+
+" Use Shift-Return to turn this:
+" <tag>|</tag>
+"
+" into this:
+" <tag>
+" |
+" </tag>
au BufNewFile,BufRead *.html inoremap <buffer> <s-cr> <cr><esc>kA<cr>
-au BufNewFile,BufRead *.html imap <buffer> <d-e><cr> <d-e><s-cr>
-au BufNewFile,BufRead *.html imap <buffer> <d-e><space> <d-e>.<bs>
-au BufNewFile,BufRead *.html nnoremap <s-cr> vit<esc>a<cr><esc>vito<esc>i<cr><esc>
+au BufNewFile,BufRead *.html nnoremap <buffer> <s-cr> vit<esc>a<cr><esc>vito<esc>i<cr><esc>
+
+" Sparkup mappings:
+"
+" <c-e><space> to expand sparkup normally:
+" <p>|</p>
+"
+" <c-e><return> to force an expanded sparkup.
+" <p>
+" |
+" </p>
+au BufNewFile,BufRead *.html imap <buffer> <c-e><cr> <c-e><s-cr>
+au BufNewFile,BufRead *.html imap <buffer> <c-e><space> <c-e>.<bs>
+
" }}}
-" CSS {{{
-au BufNewFile,BufRead *.css setlocal foldmethod=marker
-au BufNewFile,BufRead *.css setlocal foldmarker={,}
-au BufNewFile,BufRead *.css nnoremap <buffer> cc ddko
-au BufNewFile,BufRead *.css nnoremap <buffer> <localleader>S ?{<CR>jV/^\s*\}?$<CR>k:sort<CR>:noh<CR>
-au BufNewFile,BufRead *.css inoremap <buffer> {<cr> {}<left><cr>.<cr><esc>kA<bs><space><space><space><space>
-" }}}
-" LessCSS {{{
+" CSS and LessCSS {{{
+
au BufNewFile,BufRead *.less setlocal filetype=less
+
+au BufNewFile,BufRead *.css setlocal foldmethod=marker
au BufNewFile,BufRead *.less setlocal foldmethod=marker
+
+au BufNewFile,BufRead *.css setlocal foldmarker={,}
au BufNewFile,BufRead *.less setlocal foldmarker={,}
+
+" Use cc to change lines without borking the indentation.
+au BufNewFile,BufRead *.css nnoremap <buffer> cc ddko
au BufNewFile,BufRead *.less nnoremap <buffer> cc ddko
-au BufNewFile,BufRead *.less nnoremap <buffer> <localleader>S ?{<CR>jV/^\s*\}?$<CR>k:sort<CR>:noh<CR>
+
+" Use <leader>S to sort properties. Turns this:
+"
+" p {
+" width: 200px;
+" height: 100px;
+" background: red;
+"
+" ...
+" }
+"
+" into this:
+
+" p {
+" background: red;
+" height: 100px;
+" width: 200px;
+"
+" ...
+" }
+"
+au BufNewFile,BufRead *.css nnoremap <buffer> <localleader>S ?{<CR>jV/\v^\s*\}?$<CR>k:sort<CR>:noh<CR>
+au BufNewFile,BufRead *.less nnoremap <buffer> <localleader>S ?{<CR>jV/\v^\s*\}?$<CR>k:sort<CR>:noh<CR>
+
+" Make {<cr> insert a pair of brackets in such a way that the cursor is correctly
+" positioned inside of them AND the following code doesn't get unfolded.
+au BufNewFile,BufRead *.css inoremap <buffer> {<cr> {}<left><cr>.<cr><esc>kA<bs><space><space><space><space>
au BufNewFile,BufRead *.less inoremap <buffer> {<cr> {}<left><cr>.<cr><esc>kA<bs><space><space><space><space>
+
" }}}
" Javascript {{{
-au BufNewFile,BufRead *.js setlocal foldmethod=marker
-au BufNewFile,BufRead *.js setlocal foldmarker={,}
+
+au FileType javascript setlocal foldmethod=marker
+au FileType javascript setlocal foldmarker={,}
+
" }}}
" Confluence {{{
+
au BufRead,BufNewFile *.confluencewiki setlocal filetype=confluencewiki
-au BufRead,BufNewFile *.confluencewiki setlocal wrap linebreak nolist
+
+" Wiki pages should be soft-wrapped.
+au FileType confluencewiki setlocal wrap linebreak nolist
+
" }}}
" Fish {{{
+
au BufNewFile,BufRead *.fish setlocal filetype=fish
+
" }}}
" Markdown {{{
+
au BufNewFile,BufRead *.m*down setlocal filetype=markdown
+
+" Use <localleader>1/2/3 to add headings.
au Filetype markdown nnoremap <buffer> <localleader>1 yypVr=
au Filetype markdown nnoremap <buffer> <localleader>2 yypVr-
au Filetype markdown nnoremap <buffer> <localleader>3 I### <ESC>
+
" }}}
" Vim {{{
+
au FileType vim setlocal foldmethod=marker
+au FileType help setlocal textwidth=78
+
" }}}
" Python {{{
+
au Filetype python noremap <localleader>rr :RopeRename<CR>
au Filetype python vnoremap <localleader>rm :RopeExtractMethod<CR>
au Filetype python noremap <localleader>ri :RopeOrganizeImports<CR>
+
" }}}
" Django {{{
+
au BufNewFile,BufRead urls.py setlocal nowrap
au BufNewFile,BufRead urls.py normal! zR
au BufNewFile,BufRead settings.py normal! zR
au BufNewFile,BufRead dashboard.py normal! zR
+
" }}}
" Nginx {{{
-au BufRead,BufNewFile /etc/nginx/conf/* set ft=nginx
-au BufRead,BufNewFile /etc/nginx/sites-available/* set ft=nginx
+
+au BufRead,BufNewFile /etc/nginx/conf/* set ft=nginx
+au BufRead,BufNewFile /etc/nginx/sites-available/* set ft=nginx
au BufRead,BufNewFile /usr/local/etc/nginx/sites-available/* set ft=nginx
+
" }}}
" }}}
@@ -278,9 +384,6 @@
" Formatting, TextMate-style
nnoremap <leader>q gqip
-" Faster Make
-nnoremap <leader>m :make<cr>
-
" Easier linewise reselection
nnoremap <leader>v V`]
@@ -290,13 +393,20 @@
" Faster Esc
inoremap jk <ESC>
-" TextMate-Style Autocomplete
-inoremap <ESC> <C-P>
-inoremap <S-ESC> <C-N>
+" Marks and Quotes
+noremap ' `
+noremap æ '
+noremap ` <C-^>
" Scratch
nmap <leader><tab> :Sscratch<cr><C-W>x<C-j>:resize 15<cr>
+" Better Completion
+set completeopt=longest,menuone
+inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
+inoremap <expr> <C-p> pumvisible() ? '<C-n>' : '<C-n><C-r>=pumvisible() ? "\<lt>up>" : ""<CR>'
+inoremap <expr> <C-n> pumvisible() ? '<C-n>' : '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
+
" Make selecting inside an HTML tag less dumb
nnoremap Vit vitVkoj
nnoremap Vat vatV
@@ -329,51 +439,77 @@
cmap Wq wq
" }}}
-" Plugin Settings ------------------------------------------------------------- {{{
+" Plugin settings ------------------------------------------------------------- {{{
" NERD Tree {{{
+
map <F2> :NERDTreeToggle<cr>
let NERDTreeIgnore=['.vim$', '\~$', '.*\.pyc$', 'pip-log\.txt$', 'whoosh_index', 'xapian_index', '.*.pid', 'monitor.py', '.*-fixtures-.*.json', '.*\.o']
+
" }}}
" HTML5 {{{
+
let g:event_handler_attributes_complete = 0
let g:rdfa_attributes_complete = 0
let g:microdata_attributes_complete = 0
let g:atia_attributes_complete = 0
+
" }}}
" Rope {{{
+
let ropevim_enable_shortcuts = 0
let ropevim_guess_project = 1
let ropevim_global_prefix = '<C-c>p'
source $HOME/.vim/sadness/sadness.vim
+
" }}}
" Gundo {{{
+
nnoremap <F5> :GundoToggle<CR>
let g:gundo_debug = 1
let g:gundo_preview_bottom = 1
+
" }}}
" VimClojure {{{
+
let vimclojure#HighlightBuiltins = 1
let vimclojure#ParenRainbow = 1
let vimclojure#WantNailgun = 1
let vimclojure#NailgunClient = $HOME . "/.vim/bundle/vimclojure/bin/ng"
let vimclojure#SplitPos = "right"
+
" }}}
" Syntastic {{{
+
let g:syntastic_enable_signs=1
let g:syntastic_disabled_filetypes = ['html', 'python']
+
+" }}}
+" Command-T {{{
+
+let g:CommandTMaxHeight = 20
+
+" }}}
+" LISP (built-in) {{{
+
+let g:lisp_rainbow = 1
+
" }}}
" }}}
" Synstack -------------------------------------------------------------------- {{{
+" Show the stack of syntax hilighting classes affecting whatever is under the
+" cursor.
function! SynStack() " {{{
if !exists("*synstack")
return
endif
+
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc " }}}
+
nmap <C-S> :call SynStack()<CR>
" }}}
@@ -443,11 +579,9 @@
inoremap <s-cr> <esc>A:<cr>
" }}}
-" Error toggle ---------------------------------------------------------------- {{{
+" Error toggles --------------------------------------------------------------- {{{
-nmap <silent> <f3> :ErrorsToggle<cr>
command! ErrorsToggle call ErrorsToggle()
-
function! ErrorsToggle() " {{{
if exists("w:is_error_window")
unlet w:is_error_window
@@ -459,12 +593,27 @@
endif
endfunction " }}}
+command! -bang -nargs=? QFixToggle call QFixToggle(<bang>0)
+function! QFixToggle(forced) " {{{
+ if exists("g:qfix_win") && a:forced == 0
+ cclose
+ unlet g:qfix_win
+ else
+ copen 10
+ let g:qfix_win = bufnr("$")
+ endif
+endfunction " }}}
+
+nmap <silent> <f3> :ErrorsToggle<cr>
+nmap <silent> <f4> :QFixToggle<cr>
+
" }}}
" Open quoted ----------------------------------------------------------------- {{{
nnoremap <silent> <c-o> :OpenQuoted<cr>
command! OpenQuoted call OpenQuoted()
+" Open the file in the current (or next) set of quotes.
function! OpenQuoted() " {{{
let @r = ''
@@ -483,28 +632,42 @@
endfunction " }}}
" }}}
+" Ctags ----------------------------------------------------------------------- {{{
+
+map <leader>T :!/usr/local/bin/ctags -R . $(test -f .venv && echo ~/lib/virtualenvs/`cat .venv`)<CR>
+
+" }}}
" MacVim ---------------------------------------------------------------------- {{{
if has('gui_running')
set guifont=Menlo:h12
+ " Remove all the UI cruft
set go-=T
set go-=l
set go-=L
set go-=r
set go-=R
+ " PeepOpen
if has("gui_macvim")
macmenu &File.New\ Tab key=<nop>
- map <leader>t <Plug>PeepOpen
- map <leader><leader> ,w<Plug>PeepOpen
+ map <leader><leader> <Plug>PeepOpen
end
- let g:sparkupExecuteMapping = '<D-e>'
+ " Only map Sparkup to ⌘+e when running in MacVim.
+ let g:sparkupExecuteMapping = '<c-e>'
+ let g:sparkupNextMapping = '<c-q>'
highlight SpellBad term=underline gui=undercurl guisp=Orange
-else
- set nocursorline
+
+ " Use a line-drawing char for pretty vertical splits.
+ set fillchars=vert:│
+
+ " Different cursors for different modes.
+ set guicursor=n-c:block-Cursor-blinkon0
+ set guicursor+=v:block-vCursor-blinkon0
+ set guicursor+=i-ci:ver20-iCursor
endif
" }}}
--- a/vim/bundle/rainbow/autoload/rainbow_parentheses.vim Wed Mar 09 19:55:25 2011 -0500
+++ b/vim/bundle/rainbow/autoload/rainbow_parentheses.vim Wed Mar 09 19:59:45 2011 -0500
@@ -1,31 +1,13 @@
"------------------------------------------------------------------------------
-" Description: Rainbow colors for parentheses
-" Copyright: Copyright (C) 2007 Martin Krischik
-" Maintainer: Martin Krischik (krischik@users.sourceforge.net)
-" John Gilmore
-" Luc Hermitte (hermitte@free.fr)
-" Version: 4.0
-" History: 24.05.2006 MK Unified Headers
-" 15.10.2006 MK Bram's suggestion for runtime integration
-" 06.09.2007 LH Buffer friendly (can be used in different buffers),
-" can be toggled
-" 09.09.2007 MK Use on LH's suggestion but use autoload to
-" impove memory consumtion and startup performance
-" 09.10.2007 MK Now with round, square brackets, curly and angle
-" brackets.
-" Usage: copy to autoload directory.
-"------------------------------------------------------------------------------
-" This is a simple script. It extends the syntax highlighting to
-" highlight each matching set of parens in different colors, to make
-" it visually obvious what matches which.
-"
-" Obviously, most useful when working with lisp or Ada. But it's also nice other
-" times.
+" Description: Rainbow colors for parentheses, based on rainbow_parenthsis.vim
+" by Martin Krischik and others. This version cleans things up,
+" simplifies a few things, and changes "parenthsis" to
+" "parentheses".
"------------------------------------------------------------------------------
" Section: highlight {{{1
-function rainbow_parentheses#Activate()
+function! rainbow_parentheses#Activate()
highlight default level1c guifg=OrangeRed1
highlight default level2c guifg=LightGoldenRod1
highlight default level3c guifg=DeepSkyBlue1
@@ -42,36 +24,36 @@
highlight default level14c guifg=HotPink1
highlight default level15c guifg=chartreuse1
highlight default level16c guifg=Yellow
- let s:rainbow_parenthesis_active = 1
+ let s:rainbow_paren_active = 1
endfunction
-function rainbow_parentheses#Clear()
+function! rainbow_parentheses#Clear()
let i = 0
while i != 16
let i = i + 1
exe 'highlight clear level' . i . 'c'
endwhile
- let s:rainbow_parenthesis_active = 0
+ let s:rainbow_paren_active = 0
endfunction
-function rainbow_parentheses#Toggle ()
- if ! exists('rainbow_parenthesis_active')
- call rainbow_parentheses#LoadRound ()
+function! rainbow_parentheses#Toggle ()
+ if !exists('s:rainbow_paren_active')
+ call rainbow_parentheses#LoadRound()
endif
- if s:rainbow_parenthesis_active != 0
- call rainbow_parentheses#Clear ()
+ if s:rainbow_paren_active != 0
+ call rainbow_parentheses#Clear()
else
- call rainbow_parentheses#Activate ()
+ call rainbow_parentheses#Activate()
endif
endfunction
" Section: syntax {{{1
-"
+
syntax cluster rainbow_parentheses contains=@TOP,level1,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15,level16,NoInParens
" Subsection: parentheses or round brackets: {{{2
"
-function rainbow_parentheses#LoadRound ()
+function! rainbow_parentheses#LoadRound ()
syntax region level1 matchgroup=level1c start=/(/ end=/)/ contains=TOP,level1,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level2 matchgroup=level2c start=/(/ end=/)/ contains=TOP,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level3 matchgroup=level3c start=/(/ end=/)/ contains=TOP,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
@@ -88,12 +70,12 @@
syntax region level14 matchgroup=level14c start=/(/ end=/)/ contains=TOP,level14,level15, level16,NoInParens
syntax region level15 matchgroup=level15c start=/(/ end=/)/ contains=TOP,level15, level16,NoInParens
syntax region level16 matchgroup=level16c start=/(/ end=/)/ contains=TOP,level16,NoInParens
- let s:rainbow_parenthesis_active = 0
+ let s:rainbow_paren_active = 0
endfunction
" Subsection: box brackets or square brackets: {{{2
"
-function rainbow_parentheses#LoadSquare ()
+function! rainbow_parentheses#LoadSquare ()
syntax region level1 matchgroup=level1c start=/\[/ end=/\]/ contains=TOP,level1,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level2 matchgroup=level2c start=/\[/ end=/\]/ contains=TOP,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level3 matchgroup=level3c start=/\[/ end=/\]/ contains=TOP,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
@@ -110,12 +92,12 @@
syntax region level14 matchgroup=level14c start=/\[/ end=/\]/ contains=TOP,level14,level15, level16,NoInParens
syntax region level15 matchgroup=level15c start=/\[/ end=/\]/ contains=TOP,level15, level16,NoInParens
syntax region level16 matchgroup=level16c start=/\[/ end=/\]/ contains=TOP,level16,NoInParens
- let s:rainbow_parenthesis_active = 0
+ let s:rainbow_paren_active = 0
endfunction
" Subsection: curly brackets or braces: {{{2
"
-function rainbow_parentheses#LoadBraces ()
+function! rainbow_parentheses#LoadBraces ()
syntax region level1 matchgroup=level1c start=/{/ end=/}/ contains=TOP,level1,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level2 matchgroup=level2c start=/{/ end=/}/ contains=TOP,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level3 matchgroup=level3c start=/{/ end=/}/ contains=TOP,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
@@ -132,12 +114,12 @@
syntax region level14 matchgroup=level14c start=/{/ end=/}/ contains=TOP,level14,level15, level16,NoInParens
syntax region level15 matchgroup=level15c start=/{/ end=/}/ contains=TOP,level15, level16,NoInParens
syntax region level16 matchgroup=level16c start=/{/ end=/}/ contains=TOP,level16,NoInParens
- let s:rainbow_parenthesis_active = 0
+ let s:rainbow_paren_active = 0
endfunction
" Subsection: angle brackets or chevrons: {{{2
"
-function rainbow_parentheses#LoadChevrons ()
+function! rainbow_parentheses#LoadChevrons ()
syntax region level1 matchgroup=level1c start=/</ end=/>/ contains=TOP,level1,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level2 matchgroup=level2c start=/</ end=/>/ contains=TOP,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
syntax region level3 matchgroup=level3c start=/</ end=/>/ contains=TOP,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15, level16,NoInParens
@@ -154,16 +136,9 @@
syntax region level14 matchgroup=level14c start=/</ end=/>/ contains=TOP,level14,level15, level16,NoInParens
syntax region level15 matchgroup=level15c start=/</ end=/>/ contains=TOP,level15, level16,NoInParens
syntax region level16 matchgroup=level16c start=/</ end=/>/ contains=TOP,level16,NoInParens
- let s:rainbow_parenthesis_active = 0
+ let s:rainbow_paren_active = 0
endfunction
- " }}}1
-finish
+" }}}1
-"------------------------------------------------------------------------------
-" Copyright (C) 2006 Martin Krischik
-"
-" Vim is Charityware - see ":help license" or uganda.txt for licence details.
-"------------------------------------------------------------------------------
-" vim: textwidth=78 wrap tabstop=8 shiftwidth=4 softtabstop=4 expandtab
-" vim: filetype=vim foldmethod=marker
+finish