----- Original Message ----
From: chromatic <[EMAIL PROTECTED]>
> map ,ton <ESC>:%s/More tests =>/More 'no_plan'; # tests =>/<CR>
> map ,toff <ESC>:%s/More 'no_plan'; # /More /<CR>$b
>
> My standard just-created test file has the line:
>
> use Test::More 'no_plan'; # tests => 1;
>
> Then I use ,toff and ,ton as necessary. ,toff also puts my cursor in the
> right place to change the test number, by the way.
This could use a lot of work, but here's a quick file you might want to save as
~/.vim/plugin/ToggleTestPlan.vim
if exists( "toggle_test_plan" )
finish
endif
let toggle_test_plan = 1
map ,tp :call ToggleTestPlan()<cr>
function ToggleTestPlan()
call SavePosition()
let curr_line = 1
while curr_line <= line("$")
if match(getline(curr_line), 'More\s*tests') > -1
%s/More tests =>/More 'no_plan'; # tests =>/
call RestorePosition()
elseif match(getline(curr_line), 'More\s*''no_plan') > -1
%s/More 'no_plan';\s*# /More /
endif
let curr_line = curr_line + 1
endwhile
endfunction
function SavePosition()
let s:curLine = winline()
let s:curColumn = wincol()
endfunction
function RestorePosition()
exe s:curLine
exe "normal! ".s:curColumn."|"
endfunction
Basically, that maps ,tp to ToggleTestPlan() and toggles your test plan back
and forth. If you switch to 'no_plan', it leaves your cursor where it is. If
you switch to 'tests => $num_tests', it puts your cursor on the right line to
change the test num. I could add more, but since I'm such a vim scripting
newbie, I figure others are better placed to fix other issues. For example,
the stuff for saving and restoring position were originally called like this
(ganked from another plugin):
call <SID>SaveCursorPosition()
And defined like this:
" SaveCursorPosition
function! <SID>SaveCursorPosition()
let s:curLine = winline()
let s:curColumn = wincol()
endfunction
Why were they defined like that? Who knows? Any explanations appreciated.
Cheers,
Ovid