#1428 Show multiline hover messages, and document the new command

This commit is contained in:
w0rp
2018-04-24 21:03:06 +01:00
parent 93a046a78f
commit ebbf7d0353
5 changed files with 48 additions and 12 deletions

View File

@@ -62,12 +62,7 @@ function! ale#hover#HandleLSPResponse(conn_id, response) abort
let l:str = substitute(l:str, '^\s*\(.\{-}\)\s*$', '\1', '')
if !empty(l:str)
" Compress multi-line hover messages into one line.
let l:str = substitute(l:str, "\n", ' ', 'g')
let l:str = substitute(l:str, ' \+', ' ', 'g')
let l:str = substitute(l:str, '^\s*\(.\{-}\)\s*$', '\1', '')
call ale#util#Echo(l:str)
call ale#util#ShowMessage(l:str)
endif
endif
endif

View File

@@ -11,9 +11,18 @@ function! ale#util#FeedKeys(...) abort
return call('feedkeys', a:000)
endfunction
" A wrapper function for echo so we can test calls for it.
function! ale#util#Echo(string) abort
execute 'echo a:string'
" Show a message in as small a window as possible.
"
" Vim 8 does not support echoing long messages from asynchronous callbacks,
" but NeoVim does. Small messages can be echoed in Vim 8, and larger messages
" have to be shown in preview windows.
function! ale#util#ShowMessage(string) abort
" We have to assume the user is using a monospace font.
if has('nvim') || (a:string !~? "\n" && len(a:string) < &columns)
execute 'echo a:string'
else
call ale#preview#Show(split(a:string, "\n"))
endif
endfunction
" A wrapper function for execute, so we can test executing some commands.