@@ -85,6 +85,10 @@ function! lsp#get_server_info(server_name) abort
85
85
return s: servers [a: server_name ][' server_info' ]
86
86
endfunction
87
87
88
+ function ! lsp#get_server_root_uri (server_name) abort
89
+ return get (s: servers [a: server_name ][' server_info' ], ' _root_uri_resolved' , ' ' )
90
+ endfunction
91
+
88
92
function ! lsp#get_server_capabilities (server_name) abort
89
93
let l: server = s: servers [a: server_name ]
90
94
return has_key (l: server , ' init_result' ) ? l: server [' init_result' ][' result' ][' capabilities' ] : {}
@@ -209,6 +213,12 @@ function! s:on_text_document_did_open() abort
209
213
if getbufvar (l: buf , ' &buftype' ) == # ' terminal' | return | endif
210
214
if getcmdwintype () !=# ' ' | return | endif
211
215
call lsp#log (' s:on_text_document_did_open()' , l: buf , &filetype , getcwd (), lsp#utils#get_buffer_uri (l: buf ))
216
+
217
+ " Some language server notify diagnostics to the buffer that has not been loaded yet.
218
+ " This diagnostics was stored `autoload/lsp/ui/vim/diagnostics.vim` but not highlighted.
219
+ " So we should refresh highlights when buffer opened.
220
+ call lsp#ui#vim#diagnostics#force_refresh (l: buf )
221
+
212
222
for l: server_name in lsp#get_whitelisted_servers (l: buf )
213
223
call s: ensure_flush (l: buf , l: server_name , function (' s:fire_lsp_buffer_enabled' , [l: server_name , l: buf ]))
214
224
endfor
@@ -508,18 +518,13 @@ function! s:ensure_init(buf, server_name, cb) abort
508
518
" server has already started, but not initialized
509
519
510
520
let l: server_info = l: server [' server_info' ]
511
- if has_key (l: server_info , ' root_uri' )
512
- let l: root_uri = l: server_info [' root_uri' ](l: server_info )
513
- else
514
- let l: root_uri = lsp#utils#get_default_root_uri ()
515
- endif
516
-
521
+ let l: root_uri = has_key (l: server_info , ' root_uri' ) ? l: server_info [' root_uri' ](l: server_info ) : ' '
517
522
if empty (l: root_uri )
518
523
let l: msg = s: new_rpc_error (' ignore initialization lsp server due to empty root_uri' , { ' server_name' : a: server_name , ' lsp_id' : l: server [' lsp_id' ] })
519
524
call lsp#log (l: msg )
520
- call a: cb (l: msg )
521
- return
525
+ let l: root_uri = lsp#utils#get_default_root_uri ()
522
526
endif
527
+ let l: server [' server_info' ][' _root_uri_resolved' ] = l: root_uri
523
528
524
529
if has_key (l: server_info , ' capabilities' )
525
530
let l: capabilities = l: server_info [' capabilities' ]
0 commit comments