Fix #757 - Show :ALEDetail messages in a window
This commit is contained in:
parent
6b2c61a5cc
commit
d48506f9c1
4 changed files with 36 additions and 12 deletions
|
@ -125,9 +125,7 @@ function! ale#cursor#ShowCursorDetail() abort
|
||||||
if !empty(l:loc)
|
if !empty(l:loc)
|
||||||
let l:message = get(l:loc, 'detail', l:loc.text)
|
let l:message = get(l:loc, 'detail', l:loc.text)
|
||||||
|
|
||||||
call s:EchoWithShortMess('off', l:message)
|
call ale#preview#Show(split(l:message, "\n"))
|
||||||
|
echo
|
||||||
" Set the echo marker, so we can clear it by moving the cursor.
|
|
||||||
let l:info.echoed = 1
|
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
18
autoload/ale/preview.vim
Normal file
18
autoload/ale/preview.vim
Normal 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
2
ftplugin/ale-preview.vim
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
" Close the ALEPreviewWindow window with the q key.
|
||||||
|
noremap <buffer> q :q!<CR>
|
|
@ -97,6 +97,11 @@ After:
|
||||||
" carried over between test cases.
|
" carried over between test cases.
|
||||||
echomsg ''
|
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):
|
Given javascript(A Javscript file with warnings/errors):
|
||||||
var x = 3 + 12345678
|
var x = 3 + 12345678
|
||||||
var x = 5*2 + parseInt("10");
|
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):
|
Execute(ALEDetail should print 'detail' attributes):
|
||||||
call cursor(1, 1)
|
call cursor(1, 1)
|
||||||
|
|
||||||
redir => g:output
|
ALEDetail
|
||||||
ALEDetail
|
|
||||||
redir END
|
|
||||||
|
|
||||||
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):
|
Execute(ALEDetail should print regular 'text' attributes):
|
||||||
call cursor(2, 10)
|
call cursor(2, 10)
|
||||||
|
|
||||||
redir => g:output
|
ALEDetail
|
||||||
ALEDetail
|
|
||||||
redir END
|
|
||||||
|
|
||||||
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):
|
Execute(ALEDetail should not capitlise cursor messages):
|
||||||
call cursor(3, 1)
|
call cursor(3, 1)
|
||||||
|
|
Reference in a new issue