----- 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