在Vim的状态栏中显示Rails测试的状态?

3

是否有已知的Vim插件,可以通过显示绿色或红色条来显示Rails测试是否通过或失败。我个人觉得Growl通知相当分散注意力,正在寻找替代方法,但找不到任何东西。 类似这样的东西就是我想要的。

编辑:我在OSX 10.6上使用MacVim


1
那是Gary的屏幕录像吗?实际上,我写了他用来显示彩色条的例程。我一回到电脑前就会把它发布为答案。 - rossipedia
是的,这是Gary Bernhardt在Python视频中展示的令人惊叹的字符串计算器kata。非常感谢! - user650230
2个回答

0
你尝试过Autotest::Screen吗?
我不是Ruby专家,但这个技巧并不复杂。你只需要检测特定项目目录下的文件更改,运行测试,然后将测试结果带回到Screen的状态栏即可。

我在OSX 10.6上使用MacVim。我应该早点提到这一点,我的错误。因此,无法使用Screen。 - user650230

0

这是我在$VIMFILES/ftplugin/python/tests.vim文件中的内容:

function! RunAllTests(args)
    silent ! echo -e "\033[1;36mRunning all unit tests\033[0m"
    if filereadable(getcwd() . "/runtests.py")
        set makeprg=./runtests.py\ --with-machineout
    elseif filereadable(getcwd() . "/manage.py") && filereadable(getcwd() . "/settings.py")
        set makeprg=./manage.py\ test\ --with-machineout\ --verbosity=0
    else
        set makeprg=nosetests\ --with-machineout
    endif
    exec "make! " . a:args
endfunction

function! JumpToError()
    if getqflist() != []
        for error in getqflist()
            if error['valid']
                break
            endif
        endfor
        let error_message = substitute(error['text'], '^ *', '', 'g')
        silent cc!
        if error['bufnr'] != 0
            exec ":sbuffer " . error['bufnr']
        endif
        call RedBar()
        echo error_message
    else
        call GreenBar()
        echo "All tests passed"
    endif
endfunction

function! RedBar()
    hi RedBar ctermfg=white ctermbg=red guibg=red
    echohl RedBar
    echon repeat(" ",&columns - 1)
    echohl None
endfunction

function! GreenBar()
    hi GreenBar ctermfg=white ctermbg=green guibg=green
    echohl GreenBar
    echon repeat(" ",&columns - 1)
    echohl None
endfunction

let maplocalleader=","
nmap <LocalLeader>a :call RunAllTests("--machine-out")<cr>:redraw<cr>:call JumpToError()<cr>
nmap <LocalLeader>A :call RunAllTests("")<cr>

我最初是基于Gary的.vimrc进行修改的,然后移动了一些东西并重新编写了显示栏的方法。

我相信它可以很容易地适应Ruby和它用于测试运行的任何内容(我不是Ruby专家)。目前,它使用nosetests来运行Python测试。

希望这有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接