Address some feedback

This commit is contained in:
Jasper Woudenberg 2017-03-02 18:40:07 -08:00
parent 70711022db
commit f5ddc51d85
2 changed files with 36 additions and 31 deletions

View File

@ -38,34 +38,32 @@ function! ale#cursor#TruncatedEcho(message) abort
endtry endtry
endfunction endfunction
function! s:FindItemAtCursor() abort
let l:info = get(g:ale_buffer_info, bufnr('%'), {'loclist': []})
let l:pos = getcurpos()
let l:index = ale#util#BinarySearch(l:info.loclist, l:pos[1], l:pos[2])
let l:loc = l:index >= 0 ? l:info.loclist[l:index] : {}
return [l:info, l:loc]
endfunction
function! ale#cursor#EchoCursorWarning(...) abort function! ale#cursor#EchoCursorWarning(...) abort
" Only echo the warnings in normal mode, otherwise we will get problems. " Only echo the warnings in normal mode, otherwise we will get problems.
if mode() !=# 'n' if mode() !=# 'n'
return return
endif endif
let l:buffer = bufnr('%') let [l:info, l:loc] = s:FindItemAtCursor()
if !has_key(g:ale_buffer_info, l:buffer) if !empty(l:loc)
return
endif
let l:pos = getcurpos()
let l:loclist = g:ale_buffer_info[l:buffer].loclist
let l:index = ale#util#BinarySearch(l:loclist, l:pos[1], l:pos[2])
if l:index >= 0
let l:loc = l:loclist[l:index]
let l:msg = s:GetMessage(l:loc.linter_name, l:loc.type, l:loc.text) let l:msg = s:GetMessage(l:loc.linter_name, l:loc.type, l:loc.text)
call ale#cursor#TruncatedEcho(l:msg) call ale#cursor#TruncatedEcho(l:msg)
let g:ale_buffer_info[l:buffer].echoed = 1 let l:info.echoed = 1
else elseif get(l:info, 'echoed')
" We'll only clear the echoed message when moving off errors once, " We'll only clear the echoed message when moving off errors once,
" so we don't continually clear the echo line. " so we don't continually clear the echo line.
if get(g:ale_buffer_info[l:buffer], 'echoed') echo
echo let l:info.echoed = 1
let g:ale_buffer_info[l:buffer].echoed = 0
endif
endif endif
endfunction endfunction
@ -94,27 +92,19 @@ function! ale#cursor#EchoCursorWarningWithDelay() abort
endif endif
endfunction endfunction
function! ale#cursor#ShowCursorDetail(...) abort function! ale#cursor#ShowCursorDetail(...) abort
" Only show the details in normal mode, otherwise we will get problems. " Only echo the warnings in normal mode, otherwise we will get problems.
if mode() !=# 'n' if mode() !=# 'n'
return return
endif endif
let l:buffer = bufnr('%') let [l:info, l:loc] = s:FindItemAtCursor()
if !has_key(g:ale_buffer_info, l:buffer) if !empty(l:loc)
return
endif
let l:pos = getcurpos()
let l:loclist = g:ale_buffer_info[l:buffer].loclist
let l:index = ale#util#BinarySearch(l:loclist, l:pos[1], l:pos[2])
if l:index >= 0
let l:loc = l:loclist[l:index]
if has_key(l:loc, 'detail') if has_key(l:loc, 'detail')
echo l:loc.detail echo l:loc.detail
else
echo l:loc.text
endif endif
endif endif
endfunction endfunction

View File

@ -95,4 +95,19 @@ Then(Check the cursor output):
:mess :mess
redir END redir END
AssertEqual "Every statement should end with a semicolon", g:output[-1] let g:lines = split(g:output, "\n")
AssertEqual "Every statement should end with a semicolon", g:lines[-1]
Execute(Evaluate the cursor detail function at line 2):
:2
call ale#cursor#ShowCursorDetail()
Then(Check the cursor output):
redir => g:output
:mess
redir END
let g:lines = split(g:output, "\n")
AssertEqual "Infix operators must be spaced. (space-infix-ops)", g:lines[-1]