vim/notreallybundles/vimkata/ftplugin/kata.vim @ 52be542a43c1
vim: add custom foldtext
| author | Steve Losh <steve@dwaiter.com> |
|---|---|
| date | Thu, 10 Jun 2010 14:25:12 -0400 |
| parents | 79b5e20cd96a |
| children | (none) |
" Vim filetype plugin " Language: VimKata " Maintainer: Duane Johnson " Only do this when not done yet for this buffer if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 " preserve user's options let s:save_cpo = &cpo set cpo&vim setlocal commentstring=#%s foldmethod=marker setlocal nospell nohlsearch function! s:Renumber() range let b:k_count = 1 exe a:firstline . ',' . a:lastline . "g/^(\\d\\+/s//\\='('.b:k_count/ | let b:k_count += 1" endfunction function! s:GroupRenumber() let group_boundary = '^\[.\{-}\]$' " Locate the boundary of the group we're in let firstline = search(group_boundary,'bnW') + 1 let lastline = search(group_boundary, 'nW') - 1 if lastline < 0 let lastline = line('$') endif exe firstline . ',' . lastline 'call s:Renumber()' endfunction function! s:NextQuestion() call search("^(\\d\\+)") normal j endfunction function! s:NextQuestionWithPrep() call s:NextQuestion() call s:ExecutePreparation() endfunction function! s:PrevQuestion() call s:ThisQuestion() normal k call s:ThisInput() endfunction function! s:ThisQuestion() call search("^(\\d\\+)", "bc") endfunction function! s:ThisInput() call s:ThisQuestion() normal j endfunction function! s:ThisAnswer() call s:ThisQuestion() call search("^>") normal ll endfunction function! s:ThisPreparationLine() call s:ThisQuestion() let prepline = search("^<", "nW") let nextqline = search("^(\\d\\+)", "nW") if nextqline < 0 nextqline = search("$", "nW") end if prepline > 0 && prepline < nextqline return prepline else return -1 endif endfunction function! s:ExecuteAnswer() call s:ThisAnswer() exe "normal \"ay$" call s:ThisInput() exe "normal @a" endfunction function! s:ExecutePreparation() let prepline = s:ThisPreparationLine() if prepline > 0 exe prepline + "G" normal ll exe "normal \"ay$" call s:ThisInput() exe "normal @a" else call s:ThisInput() end endfunction " maps if !hasmapto('<Plug>Renumber') nmap <unique> <LocalLeader>kr <Plug>Renumber endif nnoremap <unique> <buffer> <silent> <script> <Plug>Renumber <SID>Renumber nnoremap <SID>Renumber ms:1,$ call <SID>Renumber()<CR>`s if !hasmapto('<Plug>GroupRenumber') nmap <unique> <LocalLeader>kgr <Plug>GroupRenumber endif nnoremap <unique> <buffer> <silent> <script> <Plug>GroupRenumber <SID>GroupRenumber nnoremap <SID>GroupRenumber ms:call <SID>GroupRenumber()<CR>`s if !hasmapto('<Plug>NextQuestionWithPrep') nmap <unique> Q <Plug>NextQuestionWithPrep endif nnoremap <unique> <buffer> <silent> <script> <Plug>NextQuestionWithPrep <SID>NextQuestionWithPrep nnoremap <SID>NextQuestionWithPrep :call <SID>NextQuestionWithPrep()<CR> if !hasmapto('<Plug>NextQuestion') nmap <unique> <LocalLeader>kn <Plug>NextQuestion endif nnoremap <unique> <buffer> <silent> <script> <Plug>NextQuestion <SID>NextQuestion nnoremap <SID>NextQuestion :call <SID>NextQuestion()<CR> if !hasmapto('<Plug>PrevQuestion') nmap <unique> <LocalLeader>kp <Plug>PrevQuestion endif nnoremap <unique> <buffer> <silent> <script> <Plug>PrevQuestion <SID>PrevQuestion nnoremap <SID>PrevQuestion :call <SID>PrevQuestion()<CR> if !hasmapto('<Plug>ThisQuestion') nmap <unique> <LocalLeader>kq <Plug>ThisQuestion endif nnoremap <unique> <buffer> <silent> <script> <Plug>ThisQuestion <SID>ThisQuestion nnoremap <SID>ThisQuestion :call <SID>ThisQuestion()<CR> if !hasmapto('<Plug>ThisInput') nmap <unique> <LocalLeader>ki <Plug>ThisInput endif nnoremap <unique> <buffer> <silent> <script> <Plug>ThisInput <SID>ThisInput nnoremap <SID>ThisInput :call <SID>ThisInput()<CR> if !hasmapto('<Plug>ThisAnswer') nmap <unique> <LocalLeader>ka <Plug>ThisAnswer endif nnoremap <unique> <buffer> <silent> <script> <Plug>ThisAnswer <SID>ThisAnswer nnoremap <SID>ThisAnswer :call <SID>ThisAnswer()<CR> if !hasmapto('<Plug>ExecutePreparation') nmap <unique> <LocalLeader>kx <Plug>ExecutePreparation endif nnoremap <unique> <buffer> <silent> <script> <Plug>ExecutePreparation <SID>ExecutePreparation nnoremap <SID>ExecutePreparation :call <SID>ExecutePreparation()<CR> if !hasmapto('<Plug>ExecuteAnswer') nmap <unique> <LocalLeader>ke <Plug>ExecuteAnswer endif nnoremap <unique> <buffer> <silent> <script> <Plug>ExecuteAnswer <SID>ExecuteAnswer nnoremap <SID>ExecuteAnswer :call <SID>ExecuteAnswer()<CR> " restore user's options let &cpo = s:save_cpo " vim:set sw=2: