Fix #757 - Show :ALEDetail messages in a window

This commit is contained in:
w0rp 2017-11-14 23:25:01 +00:00
parent 6b2c61a5cc
commit d48506f9c1
4 changed files with 36 additions and 12 deletions

View File

@ -125,9 +125,7 @@ function! ale#cursor#ShowCursorDetail() abort
if !empty(l:loc)
let l:message = get(l:loc, 'detail', l:loc.text)
call s:EchoWithShortMess('off', l:message)
" Set the echo marker, so we can clear it by moving the cursor.
let l:info.echoed = 1
call ale#preview#Show(split(l:message, "\n"))
echo
endif
endfunction

18
autoload/ale/preview.vim Normal file
View File

@ -0,0 +1,18 @@
" Author: w0rp <devw0rp@gmail.com>
" Description: Preview windows for showing whatever information in.
" Open a preview window and show some lines in it.
function! ale#preview#Show(lines) abort
silent pedit ALEPreviewWindow
wincmd P
setlocal modifiable
setlocal noreadonly
setlocal nobuflisted
setlocal filetype=ale-preview
setlocal buftype=nofile
setlocal bufhidden=wipe
:%d
call setline(1, a:lines)
setlocal nomodifiable
setlocal readonly
endfunction

2
ftplugin/ale-preview.vim Normal file
View File

@ -0,0 +1,2 @@
" Close the ALEPreviewWindow window with the q key.
noremap <buffer> q :q!<CR>

View File

@ -97,6 +97,11 @@ After:
" carried over between test cases.
echomsg ''
" Close the preview window if it's open.
if &filetype is# 'ale-preview'
noautocmd :q!
endif
Given javascript(A Javscript file with warnings/errors):
var x = 3 + 12345678
var x = 5*2 + parseInt("10");
@ -138,20 +143,21 @@ Execute(The message at the cursor should be shown on InsertLeave):
Execute(ALEDetail should print 'detail' attributes):
call cursor(1, 1)
redir => g:output
ALEDetail
redir END
ALEDetail
AssertEqual "\nEvery statement should end with a semicolon\nsecond line", g:output
AssertEqual
\ ['Every statement should end with a semicolon', 'second line'],
\ getline(1, '$')
Execute(ALEDetail should print regular 'text' attributes):
call cursor(2, 10)
redir => g:output
ALEDetail
redir END
ALEDetail
AssertEqual "\nInfix operators must be spaced.", g:output
" ALEDetail opens a window, so check the text in it.
AssertEqual
\ ['Infix operators must be spaced.'],
\ getline(1, '$')
Execute(ALEDetail should not capitlise cursor messages):
call cursor(3, 1)