@@ -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)
515516endfunction
516517
517518function ! 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
529529endfunction
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+
531548function ! 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
0 commit comments