Created
August 16, 2013 22:01
-
-
Save guelfey/6253836 to your computer and use it in GitHub Desktop.
Vim plugin for Go test coverage profiles
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" cover.vim - Vim plugin for Go test coverage profiles | |
" install in ftplugin/go | |
" | |
" ":Cover coverprofile" will open the current file in a new read-only window, | |
" highlighting the code regarding to whether it is covered by tests or not. | |
" You can change the colors by highlighting goTestCovered and goTestNotCovered | |
" from your vimrc. | |
if exists("b:did_ftplugin_go_cover") | |
finish | |
endif | |
if &t_Co > 255 | |
highlight default goTestNotCovered ctermfg=124 guifg=#C00000 | |
highlight default goTestCovered ctermfg=42 guifg=#2cd495 | |
else | |
highlight default goTestNotCovered ctermfg=DarkRed guifg=#C00000 | |
highlight default goTestCovered ctermfg=DarkGreen guifg=#2cd495 | |
endif | |
command! -buffer -complete=file -nargs=1 Cover call s:GoCover(<f-args>) | |
function! s:GoCover(fname) | |
let contents = getbufline("", 1, "$") | |
let fullname = expand("%:p") | |
new | |
setlocal buftype=nofile bufhidden=hide noswapfile | |
call setline(1, contents[0]) | |
for line in contents[1:] | |
call append(line("$"), line) | |
endfor | |
syn clear | |
let lines = readfile(a:fname) | |
for line in lines[1:] | |
let tokens = matchlist(line, '^\(.\+\):\(\d\+\).\(\d\+\),\(\d\+\).\(\d\+\) \d\+ \(\d\)') | |
if empty(tokens) | |
continue | |
endif | |
let gopath = split($GOPATH, ":") | |
for path in gopath | |
if fullname == path . "/src/" . tokens[1] | |
if tokens[6] == 0 | |
let group = "goTestNotCovered" | |
else | |
let group = "goTestCovered" | |
endif | |
execute "syn region " . group . " start=/\\%" . tokens[2] . "l\\%" . tokens[3] . "c/ end=/\\%" . tokens[4] . "l\\%" . tokens[5] . "c/" | |
endif | |
endfor | |
endfor | |
setlocal noma | |
endfunction | |
let b:did_ftplugin_go_cover = 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment