X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/70dbe15ae4ea0cfb6aaa66eaa75a8b25c7c22291..c7cd8a4be43b26e91ce7a27954f5300910657fe2:/autoload/flake8.vim diff --git a/autoload/flake8.vim b/autoload/flake8.vim index d21664e..157a717 100644 --- a/autoload/flake8.vim +++ b/autoload/flake8.vim @@ -20,6 +20,10 @@ function! flake8#Flake8UnplaceMarkers() call s:Warnings() endfunction +function! flake8#ShowErrorMessage() + call s:ShowErrorMessage() +endfunction + "" }}} "" ** internal ** {{{ @@ -27,7 +31,7 @@ endfunction "" warnings let s:displayed_warnings = 0 -function s:Warnings() +function! s:Warnings() if !s:displayed_warnings let l:show_website_url = 0 @@ -101,6 +105,9 @@ function! s:Setup() " {{{ let s:markerdata['F'].marker = s:flake8_pyflake_marker let s:markerdata['C'].marker = s:flake8_complexity_marker let s:markerdata['N'].marker = s:flake8_naming_marker + + + endfunction " }}} "" do flake8 @@ -125,6 +132,8 @@ function! s:Flake8() " {{{ let l:old_gfm=&grepformat let l:old_gp=&grepprg let l:old_shellpipe=&shellpipe + let l:old_t_ti=&t_ti + let l:old_t_te=&t_te " write any changes before continuing if &readonly == 0 @@ -133,8 +142,10 @@ function! s:Flake8() " {{{ set lazyredraw " delay redrawing - " set shellpipe to > instead of tee (suppressing output) + " prevent terminal from blinking set shellpipe=> + set t_ti= + set t_te= " perform the grep itself let &grepformat="%f:%l:%c: %m\,%f:%l: %m" @@ -148,11 +159,20 @@ function! s:Flake8() " {{{ let &grepformat=l:old_gfm let &grepprg=l:old_gp let &shellpipe=l:old_shellpipe + let &t_ti=l:old_t_ti + let &t_te=l:old_t_te + " store mapping of line number to error string " process results + let s:resultDict = {} + let l:results=getqflist() let l:has_results=results != [] if l:has_results + " save line number of each error message + for result in a:results: + s:resultDict[result.lnum] = result.text + " markers if !s:flake8_show_in_gutter == 0 || !s:flake8_show_in_file == 0 call s:PlaceMarkers(l:results) @@ -179,7 +199,6 @@ function! s:Flake8() " {{{ endfunction " }}} "" markers - function! s:PlaceMarkers(results) " {{{ " in gutter? if !s:flake8_show_in_gutter == 0 @@ -247,6 +266,29 @@ function! s:UnplaceMarkers() " {{{ endfor endfunction " }}} +function! s:ShowErrorMessage() " {{{ + let l:cursorPos = getpos(".") + if !exists('s:resultDict') + return + endif + + " if there is a message on the current line, + " then echo it + if has_key(s:matchDict, s:cursorPos[1]) + let l:errorText = get(s:matchDict, l:cursorPos[1]) + echo strpart(l:errorText, 0, &columns-1) + let b:showing_message = 1 + endif + + " if a message is already being shown, + " then clear it + if !b:showing_message == 0 + echo + let b:showing_message = 0 + endif + +endfunction " }}} + "" }}} let &cpo = s:save_cpo