diff --git a/autoload/lsp/internal/document_hover/under_cursor.vim b/autoload/lsp/internal/document_hover/under_cursor.vim index 458ad6b16..919cba7c1 100644 --- a/autoload/lsp/internal/document_hover/under_cursor.vim +++ b/autoload/lsp/internal/document_hover/under_cursor.vim @@ -81,11 +81,30 @@ function! lsp#internal#document_hover#under_cursor#getpreviewwinid() abort return v:null endfunction +function s:check_hover_response_empty(response) abort + if !has_key(a:response, 'result') + return 1 + endif + + if empty(a:response['result']) + return 1 + endif + + if empty(a:response['result']['contents']) + return 1 + endif + + return 0 +endfunction + function! s:show_hover(ui, server_name, request, response) abort - if !has_key(a:response, 'result') || empty(a:response['result']) || - \ empty(a:response['result']['contents']) - call lsp#utils#error('No hover information found in server - ' . a:server_name) - return + if s:check_hover_response_empty(a:response) + if g:lsp_hover_echo_empty_message + call lsp#utils#error('No hover information found in server - ' . a:server_name) + return + else + return + endif endif echo '' diff --git a/doc/vim-lsp.txt b/doc/vim-lsp.txt index bf5676ea9..4515fc89b 100644 --- a/doc/vim-lsp.txt +++ b/doc/vim-lsp.txt @@ -84,6 +84,7 @@ CONTENTS *vim-lsp-contents* g:lsp_fold_enabled |g:lsp_fold_enabled| g:lsp_hover_conceal |g:lsp_hover_conceal| g:lsp_hover_ui |g:lsp_hover_ui| + g:lsp_hover_echo_empty_message |g:lsp_hover_echo_empty_message| g:lsp_ignorecase |g:lsp_ignorecase| g:lsp_log_file |g:lsp_log_file| g:lsp_log_verbose |g:lsp_log_verbose| @@ -1080,6 +1081,18 @@ g:lsp_hover_ui *g:lsp_hover_ui* let g:lsp_hover_ui = 'float' let g:lsp_hover_ui = 'preview' +g:lsp_hover_echo_empty_message *g:lsp_hover_echo_empty_message* + Type: |Boolean| + Default: `1` + + Determines whether or not to echo empty hover messages. Set to `1` to + enable. + + Example: > + let g:lsp_hover_echo_empty_message = 1 + let g:lsp_hover_echo_empty_message = 0 + + g:lsp_ignorecase *g:lsp_ignorecase* Type: |Boolean| Default: the value of 'ignorecase' diff --git a/plugin/lsp.vim b/plugin/lsp.vim index 11a2b4428..619b0f7fc 100644 --- a/plugin/lsp.vim +++ b/plugin/lsp.vim @@ -69,6 +69,7 @@ let g:lsp_show_workspace_edits = get(g:, 'lsp_show_workspace_edits', 0) let g:lsp_fold_enabled = get(g:, 'lsp_fold_enabled', 1) let g:lsp_hover_conceal = get(g:, 'lsp_hover_conceal', 1) let g:lsp_hover_ui = get(g:, 'lsp_hover_ui', '') +let g:lsp_hover_echo_empty_message = get(g:, 'lsp_hover_echo_empty_message', 1) let g:lsp_ignorecase = get(g:, 'lsp_ignorecase', &ignorecase) let g:lsp_semantic_enabled = get(g:, 'lsp_semantic_enabled', 0) let g:lsp_semantic_delay = get(g:, 'lsp_semantic_delay', 500)