Skip to content

Commit 35aec2d

Browse files
committed
add ts support #358add ts support #358
1 parent 1716ffe commit 35aec2d

File tree

3 files changed

+31
-8
lines changed

3 files changed

+31
-8
lines changed

autoload/easycomplete/action/hover.vim

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,8 @@ function! s:HandleLspCallback(server, data) abort
6969
endtry
7070
endfunction
7171

72-
" ['foo', '', 'bar', '', '', ''] → ['foo', '', 'bar']
7372
function! s:RemoveTrailingEmptyStrings(list)
74-
while !empty(a:list) && get(a:list, -1, '') == ''
75-
call remove(a:list, -1)
76-
endwhile
77-
return a:list
73+
return easycomplete#util#RemoveTrailingEmptyStrings(a:list)
7874
endfunction
7975

8076
function! s:log(...)

autoload/easycomplete/sources/ts.vim

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ function! easycomplete#sources#ts#constructor(opt, ctx)
131131
call s:RegistEventCallback('easycomplete#sources#ts#DiagnosticsCallback', 'diagnostics')
132132
call s:RegistResponseCallback('easycomplete#sources#ts#CompleteCallback', 'completions')
133133
call s:RegistResponseCallback('easycomplete#sources#ts#SignatureCallback', 'signatureHelp')
134+
call s:RegistResponseCallback('easycomplete#sources#ts#QuickInfoCallback', 'quickinfo')
134135
call s:RegistResponseCallback('easycomplete#sources#ts#ReferenceCallback', 'references')
135136
call s:RegistResponseCallback('easycomplete#sources#ts#RenameCallback', 'rename')
136137
call s:RegistResponseCallback('easycomplete#sources#ts#DefinationCallback', 'definition')
@@ -515,19 +516,35 @@ function! easycomplete#sources#ts#ReferenceCallback(data)
515516
endfunction
516517

517518
function! easycomplete#sources#ts#hover()
518-
return
519519
call s:TsserverReload()
520520
let ctx = easycomplete#context()
521521
let offset = ctx['col']
522522
let file = ctx['filepath']
523523
let l:args = {'file': file, 'line': line("."), 'offset': offset}
524524
call timer_start(20,
525525
\ {
526-
\ -> s:SendCommandAsyncResponse('hover', l:args)
526+
\ -> s:SendCommandAsyncResponse('quickinfo', l:args)
527527
\ })
528528

529529
endfunction
530530

531+
function! easycomplete#sources#ts#QuickInfoCallback(response)
532+
if s:get(a:response, "command") == "quickinfo" && s:get(a:response, "success") == v:false
533+
call s:log(s:get(a:response, "message"))
534+
return
535+
endif
536+
if s:get(a:response, "success") == v:true
537+
let content = s:get(a:response, "body", "displayString")
538+
let content = substitute(content, "```\\w\\+", "", "g")
539+
let content = substitute(content, "```", "", "g")
540+
let content = split(content, "\\n")
541+
let content = easycomplete#util#RemoveTrailingEmptyStrings(content)
542+
if !empty(content)
543+
call easycomplete#popup#float(content, 'Pmenu', 0, "", [0, 0], 'signature')
544+
endif
545+
endif
546+
endfunction
547+
531548
function! easycomplete#sources#ts#signature()
532549
if !easycomplete#ok('g:easycomplete_signature_enable') | return | endif
533550
call s:TsserverReload()
@@ -951,17 +968,19 @@ function! s:MessageHandler(msg)
951968
return
952969
endif
953970

971+
954972
" Ignore messages.
955973
if has_key(l:res_item, 'event') && index(s:ignore_response_events, get(l:res_item, 'event')) >= 0
956974
return
957975
endif
958976

977+
959978
let l:item = l:res_item
960979
let l:event_name = s:GetTsserverEventType(l:item)
961980
let l:response_name = s:GetTsserverResponseType(l:item)
962981

963982
if easycomplete#util#NotInsertMode() && !empty(l:response_name) && empty(l:event_name) " Normal mod
964-
if index(['definition', 'references', 'rename'], l:response_name) < 0
983+
if index(['definition', 'references', 'rename', 'quickinfo'], l:response_name) < 0
965984
return
966985
endif
967986
endif

autoload/easycomplete/util.vim

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2170,6 +2170,14 @@ function! easycomplete#util#get(obj, ...) " {{{
21702170
return tmp
21712171
endfunction " }}}
21722172

2173+
" ['foo', '', 'bar', '', '', ''] → ['foo', '', 'bar']
2174+
function! easycomplete#util#RemoveTrailingEmptyStrings(list) " {{{
2175+
while !empty(a:list) && get(a:list, -1, '') == ''
2176+
call remove(a:list, -1)
2177+
endwhile
2178+
return a:list
2179+
endfunction " }}}
2180+
21732181
function! easycomplete#util#ConfigRoot() " {{{
21742182
let config_dir = expand('~/.config/vim-easycomplete')
21752183
return config_dir

0 commit comments

Comments
 (0)