Skip to content

Commit eba9ca2

Browse files
committed
Show error description
1 parent 3f6b3cf commit eba9ca2

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

autoload/lsp/client.vim

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,11 @@ function! s:lsp_is_error(obj_or_response) abort
240240
return has_key(a:obj_or_response, 'error')
241241
endfunction
242242

243+
function! s:lsp_is_error(obj_or_response) abort
244+
return has_key(a:obj_or_response, 'error')
245+
endfunction
246+
247+
243248
function! s:is_server_instantiated_notification(notification) abort
244249
return !has_key(a:notification, 'request')
245250
endfunction
@@ -270,6 +275,18 @@ function! lsp#client#is_error(obj_or_response) abort
270275
return s:lsp_is_error(a:obj_or_response)
271276
endfunction
272277

278+
function! lsp#client#error_message(obj_or_response) abort
279+
try
280+
return a:obj_or_response['error']['data']['message']
281+
catch
282+
endtry
283+
try
284+
return a:obj_or_response['error']['message']
285+
catch
286+
endtry
287+
return string(a:obj_or_response)
288+
endfunction
289+
273290
function! lsp#client#is_server_instantiated_notification(notification) abort
274291
return s:is_server_instantiated_notification(a:notification)
275292
endfunction

autoload/lsp/ui/vim.vim

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ function! s:handle_symbol(server, last_req_id, type, data) abort
298298
endif
299299

300300
if lsp#client#is_error(a:data['response'])
301-
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server)
301+
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
302302
return
303303
endif
304304

@@ -322,7 +322,7 @@ function! s:handle_location(ctx, server, type, data) abort "ctx = {counter, list
322322
let a:ctx['counter'] = a:ctx['counter'] - 1
323323

324324
if lsp#client#is_error(a:data['response'])
325-
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server)
325+
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
326326
else
327327
let a:ctx['list'] = a:ctx['list'] + lsp#ui#vim#utils#locations_to_loc_list(a:data)
328328
endif
@@ -353,8 +353,8 @@ function! s:handle_workspace_edit(server, last_req_id, type, data) abort
353353
return
354354
endif
355355

356-
if lsp#client#is_error(a:data)
357-
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server)
356+
if lsp#client#is_error(a:data['response'])
357+
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
358358
return
359359
endif
360360

@@ -369,7 +369,7 @@ function! s:handle_text_edit(server, last_req_id, type, data) abort
369369
endif
370370

371371
if lsp#client#is_error(a:data['response'])
372-
call lsp#utils#error('Failed to '. a:type . ' for ' . a:server)
372+
call lsp#utils#error('Failed to '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
373373
return
374374
endif
375375

0 commit comments

Comments
 (0)