@@ -6,6 +6,11 @@ module ts.server {
66 writeMessage ( message : string ) : void ;
77 }
88
9+ interface CompletionEntry extends CompletionInfo {
10+ fileName : string ;
11+ position : number ;
12+ }
13+
914 interface RenameEntry extends RenameInfo {
1015 fileName : string ;
1116 position : number ;
@@ -19,6 +24,7 @@ module ts.server {
1924 private fileMapping : ts . Map < string > = { } ;
2025 private lineMaps : ts . Map < number [ ] > = { } ;
2126 private messages : string [ ] = [ ] ;
27+ private lastCompletionEntry : CompletionEntry ;
2228 private lastRenameEntry : RenameEntry ;
2329
2430 constructor ( private host : SessionClientHost ) {
@@ -195,13 +201,30 @@ module ts.server {
195201 var request = this . processRequest < ServerProtocol . CompletionsRequest > ( CommandNames . Completions , args ) ;
196202 var response = this . processResponse < ServerProtocol . CompletionsResponse > ( request ) ;
197203
198- return {
204+ return this . lastCompletionEntry = {
199205 isMemberCompletion : false ,
200206 isNewIdentifierLocation : false ,
201- entries : response . body . map ( entry => ( { kind : entry . kind , kindModifiers : entry . kindModifiers , name : entry . name } ) )
207+ entries : response . body . map ( entry => ( {
208+ kind : entry . kind ,
209+ kindModifiers : entry . kindModifiers ,
210+ name : entry . name ,
211+ displayParts : entry . displayParts ,
212+ documentation : entry . documentation
213+ } ) ) ,
214+ fileName : fileName ,
215+ position : position
202216 } ;
203217 }
204218
219+ getCompletionEntryDetails ( fileName : string , position : number , entryName : string ) : CompletionEntryDetails {
220+ debugger ;
221+ if ( ! this . lastCompletionEntry || this . lastCompletionEntry . fileName !== fileName || this . lastCompletionEntry . position !== position ) {
222+ this . getCompletionsAtPosition ( fileName , position ) ;
223+ }
224+
225+ return < CompletionEntryDetails > this . lastCompletionEntry . entries . filter ( entry => entry . name === entryName ) [ 0 ] ;
226+ }
227+
205228 getNavigateToItems ( searchTerm : string ) : NavigateToItem [ ] {
206229 var args : ServerProtocol . NavtoRequestArgs = {
207230 searchTerm,
@@ -466,10 +489,6 @@ module ts.server {
466489 throw new Error ( "Not Implemented Yet." ) ;
467490 }
468491
469- getCompletionEntryDetails ( fileName : string , position : number , entryName : string ) : CompletionEntryDetails {
470- throw new Error ( "Not Implemented Yet." ) ;
471- }
472-
473492 getProgram ( ) : Program {
474493 throw new Error ( "SourceFile objects are not serializable through the server protocol." ) ;
475494 }
0 commit comments