@@ -631,7 +631,7 @@ function! lsp#default_get_supported_capabilities(server_info) abort
631
631
\ ' window' : {
632
632
\ ' workDoneProgress' : g: lsp_work_done_progress_enabled ? v: true : v: false ,
633
633
\ ' showDocument' : {
634
- \ ' support' : g: lsp_experimental_show_document ? v: true : v: false ,
634
+ \ ' support' : g: lsp_show_document ? v: true : v: false ,
635
635
\ },
636
636
\ },
637
637
\ ' workspace' : {
@@ -948,13 +948,36 @@ function! s:on_request(server_name, id, request) abort
948
948
elseif a: request [' method' ] == # ' window/workDoneProgress/create'
949
949
call s: send_response (a: server_name , { ' id' : a: request [' id' ], ' result' : v: null })
950
950
elseif a: request [' method' ] == # ' window/showDocument'
951
- if ! g: lsp_experimental_show_document | return | endif
952
- let l: cmd = g: lsp_show_document_command
951
+ if ! g: lsp_show_document | return | endif
952
+ let l: uri = a: request [' params' ][' uri' ]
953
+ if ! lsp#utils#is_file_uri (l: uri )
954
+ call s: send_response (a: server_name , { ' id' : a: request [' id' ], ' result' : {' success' : v: false }})
955
+ return
956
+ endif
957
+ let l: path = lsp#utils#uri_to_path (l: uri )
958
+ let l: loc = {
959
+ \ ' filename' : l: path ,
960
+ \ ' lnum' : 1 ,
961
+ \ ' col' : 1 ,
962
+ \ }
953
963
if has_key (a: request [' params' ], ' selection' )
954
- let l: cmd .= ' +' . a: request [' params' ][' selection' ][' start' ][' line' ]
964
+ let [l: line , l: col ] = lsp#utils#position#lsp_to_vim (l: path , a: request [' selection' ][' start' ])
965
+ let l: loc [' lnum' ] = l: line
966
+ let l: loc [' col' ] = l: col
967
+ endif
968
+
969
+ let l: takefocus = v: true
970
+ if has_key (a: request [' params' ], ' takeFocus' ) && (! a: request [' params' ][' takeFocus' ])
971
+ let l: takefocus = v: false
972
+ endif
973
+ let l: lastbuf = bufnr (' %' )
974
+ let l: lastlnum = line (' .' )
975
+ let l: lastcol = col (' .' )
976
+
977
+ call lsp#utils#location#_open_vim_list_item (l: loc , ' ' )
978
+ if ! l: takefocus
979
+ execute ' buffer ' . l: lastbuf . ' | call cursor(' .l: lastlnum .' ,' .l: lastcol .' )'
955
980
endif
956
- let l: cmd .= ' ' . lsp#utils#uri_to_path (a: request [' params' ][' uri' ])
957
- execute l: cmd
958
981
call s: send_response (a: server_name , { ' id' : a: request [' id' ], ' result' : {' success' : v: true }})
959
982
else
960
983
" TODO: for now comment this out until we figure out a better solution.
0 commit comments