diff --git a/autoload/lsp/ui/vim/output.vim b/autoload/lsp/ui/vim/output.vim index 98efed60b..aa657846a 100644 --- a/autoload/lsp/ui/vim/output.vim +++ b/autoload/lsp/ui/vim/output.vim @@ -4,12 +4,16 @@ function! lsp#ui#vim#output#preview(data) abort let l:current_window_id = win_getid() - execute &previewheight.'new' + execute g:lsp_preview_position.' '.&previewheight.'new' let l:ft = s:append(a:data) " Delete first empty line 0delete + if g:lsp_preview_auto_resize + execute 'resize ' . line('$') + endif + setlocal readonly nomodifiable let &l:filetype = l:ft . '.lsp-hover' diff --git a/doc/vim-lsp.txt b/doc/vim-lsp.txt index 101255b42..5ffb0f125 100644 --- a/doc/vim-lsp.txt +++ b/doc/vim-lsp.txt @@ -13,6 +13,8 @@ CONTENTS *vim-lsp-contents* g:lsp_diagnostics_enabled |g:lsp_diagnostics_enabled| g:lsp_auto_enable |g:lsp_auto_enable| g:lsp_preview_keep_focus |g:lsp_preview_keep_focus| + g:lsp_preview_position |g:lsp_preview_position| + g:lsp_preview_auto_resize |g:lsp_preview_auto_resize| g:lsp_insert_text_enabled |g:lsp_insert_text_enabled| Functions |vim-lsp-functions| enable |vim-lsp-enable| @@ -136,6 +138,20 @@ g:lsp_preview_keep_focus *g:lsp_preview_keep_focus* * |preview-window| can be closed using the default vim mapping - ``. +g:lsp_preview_position *g:lsp_preview_position* + Type: |String| + Default: `above` + + Indicates the position of the |preview-window| when a |preview-window| is + opened by vim-lsp. It can be `above` or `below`. + +g:lsp_preview_auto_resize *g:lsp_preview_auto_resize* + Type: |Number| + Default: `0` + + Indicates if the |preview-window| should be automatically resized to fit + its content when it is opened by vim-lsp. + g:lsp_insert_text_enabled *g:lsp_insert_text_enabled* Type: |Number| Default: `1` @@ -147,7 +163,6 @@ g:lsp_insert_text_enabled *g:lsp_insert_text_enabled* let g:lsp_insert_text_enabled = 1 let g:lsp_insert_text_enabled = 0 - =============================================================================== FUNCTIONS *vim-lsp-functions* @@ -371,6 +386,10 @@ Gets the hover information and displays it in the |preview-window|. * |preview-window| can be closed using the default vim mapping - ``. * To control the default focus of |preview-window| for |LspHover| configure |g:lsp_preview_keep_focus|. + * To control the default position of |preview-window| for |LspHover| + configure |g:lsp_preview_position|. + * To control the auto-resizing of the |preview-window| for |LspHover| + configure |g:lsp_preview_auto_resize|. LspNextError *LspNextError* diff --git a/plugin/lsp.vim b/plugin/lsp.vim index bb92767ae..a8cc27462 100644 --- a/plugin/lsp.vim +++ b/plugin/lsp.vim @@ -18,6 +18,8 @@ let g:lsp_diagnostics_echo_cursor = get(g:, 'lsp_diagnostics_echo_cursor', 0) let g:lsp_diagnostics_echo_delay = get(g:, 'lsp_diagnostics_echo_delay', 500) let g:lsp_next_sign_id = get(g:, 'lsp_next_sign_id', 6999) let g:lsp_preview_keep_focus = get(g:, 'lsp_preview_keep_focus', 1) +let g:lsp_preview_position = get(g:, 'lsp_preview_position', 'above') +let g:lsp_preview_auto_resize = get(g:, 'lsp_preview_auto_resize', 0) let g:lsp_use_event_queue = get(g:, 'lsp_use_event_queue', 0) let g:lsp_insert_text_enabled= get(g:, 'lsp_insert_text_enabled', 1)