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




Reply via email to