Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions autoload/lsp.vim
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ function! s:on_text_document_did_open() abort
call lsp#log('s:on_text_document_did_open()', bufnr('%'), &filetype, getcwd(), lsp#utils#get_buffer_uri(bufnr('%')))
for l:server_name in lsp#get_whitelisted_servers()
call s:ensure_flush(bufnr('%'), l:server_name, function('s:Noop'))
if g:lsp_hover_balloon_eval
setlocal ballooneval balloonexpr=lsp#ui#vim#balloon()
endif
endfor
endfunction

Expand Down
29 changes: 29 additions & 0 deletions autoload/lsp/ui/vim.vim
Original file line number Diff line number Diff line change
@@ -1,6 +1,30 @@
let s:last_req_id = 0
let s:diagnostics = {} " { uri: { 'server_name': response } }

function! lsp#ui#vim#balloon() abort
let l:servers = filter(lsp#get_whitelisted_servers(), 'lsp#capabilities#has_hover_provider(v:val)')
let s:last_req_id = s:last_req_id + 1

if len(l:servers) == 0
echom 'Retrieving hover not supported for ' . &filetype
return ''
endif

for l:server in l:servers
call lsp#send_request(l:server, {
\ 'method': 'textDocument/hover',
\ 'params': {
\ 'textDocument': lsp#get_text_document_identifier(),
\ 'position': { 'line': v:beval_lnum - 1, 'character': v:beval_col - 1 }
\ },
\ 'on_notification': function('s:handle_hover', [l:server, s:last_req_id, 'balloon']),
\ })
endfor

echom 'Retrieving hover ...'
return ''
endfunction

function! lsp#ui#vim#definition() abort
let l:servers = filter(lsp#get_whitelisted_servers(), 'lsp#capabilities#has_definition_provider(v:val)')
let s:last_req_id = s:last_req_id + 1
Expand Down Expand Up @@ -359,6 +383,11 @@ function! s:handle_hover(server, last_req_id, type, data) abort
endfor
endif

if a:type == 'balloon'
call balloon_show(join(map(l:contents, 'v:val.text'), "\n"))
return
endif

call setqflist(l:contents)

" autocmd FileType qf setlocal wrap
Expand Down
1 change: 1 addition & 0 deletions plugin/lsp.vim
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ endif
let g:lsp_loaded = 1

let g:lsp_auto_enable = get(g:, 'lsp_auto_enable', 1)
let g:lsp_hover_balloon_eval = get(g:, 'lsp_hover_balloon_eval', has('balloon_eval'))
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need to support this scenario. let g:lsp_hover_ui = 'echo,preview,balloon'

let g:lsp_async_completion = get(g:, 'lsp_async_completion', 0)
let g:lsp_log_file = get(g:, 'lsp_log_file', '')
let g:lsp_log_verbose = get(g:, 'lsp_log_verbose', 1)
Expand Down