@@ -20,12 +20,13 @@ import {
2020 TextEditor ,
2121} from 'atom' ;
2222import * as ac from 'atom/autocomplete-plus' ;
23+ import { Suggestion , TextSuggestion , SnippetSuggestion } from 'atom-ide' ;
2324
2425interface SuggestionCacheEntry {
2526 isIncomplete : boolean ;
2627 triggerPoint : Point ;
2728 triggerChar : string ;
28- suggestionMap : Map < ac . AnySuggestion , PossiblyResolvedCompletionItem > ;
29+ suggestionMap : Map < Suggestion , PossiblyResolvedCompletionItem > ;
2930}
3031
3132type CompletionItemAdjuster =
@@ -93,7 +94,7 @@ export default class AutocompleteAdapter {
9394 }
9495
9596 const filtered = ! ( request . prefix === "" || ( triggerChar !== '' && triggerOnly ) ) ;
96- return filtered ? filter ( suggestions , request . prefix , { key : 'text ' } ) : suggestions ;
97+ return filtered ? filter ( suggestions , request . prefix , { key : 'filterText ' } ) : suggestions ;
9798 }
9899
99100 private shouldTrigger (
@@ -113,7 +114,7 @@ export default class AutocompleteAdapter {
113114 triggerChar : string ,
114115 triggerOnly : boolean ,
115116 onDidConvertCompletionItem ?: CompletionItemAdjuster ,
116- ) : Promise < ac . AnySuggestion [ ] > {
117+ ) : Promise < Suggestion [ ] > {
117118 const cache = this . _suggestionCache . get ( server ) ;
118119
119120 const triggerColumn = ( triggerChar !== '' && triggerOnly )
@@ -134,7 +135,7 @@ export default class AutocompleteAdapter {
134135 ) ;
135136
136137 // Setup the cache for subsequent filtered results
137- const isComplete = completions == null || Array . isArray ( completions ) || completions . isIncomplete === false ;
138+ const isComplete = completions === null || Array . isArray ( completions ) || completions . isIncomplete === false ;
138139 const suggestionMap = this . completionItemsToSuggestions ( completions , request , onDidConvertCompletionItem ) ;
139140 this . _suggestionCache . set ( server , { isIncomplete : ! isComplete , triggerChar, triggerPoint, suggestionMap } ) ;
140141
@@ -281,13 +282,16 @@ export default class AutocompleteAdapter {
281282 completionItems : CompletionItem [ ] | CompletionList | null ,
282283 request : ac . SuggestionsRequestedEvent ,
283284 onDidConvertCompletionItem ?: CompletionItemAdjuster ,
284- ) : Map < ac . AnySuggestion , PossiblyResolvedCompletionItem > {
285- return new Map ( ( Array . isArray ( completionItems ) ? completionItems : ( completionItems && completionItems . items || [ ] ) )
285+ ) : Map < Suggestion , PossiblyResolvedCompletionItem > {
286+ const completionsArray = Array . isArray ( completionItems )
287+ ? completionItems
288+ : ( completionItems && completionItems . items ) || [ ] ;
289+ return new Map ( completionsArray
286290 . sort ( ( a , b ) => ( a . sortText || a . label ) . localeCompare ( b . sortText || b . label ) )
287- . map < [ ac . AnySuggestion , PossiblyResolvedCompletionItem ] > (
291+ . map < [ Suggestion , PossiblyResolvedCompletionItem ] > (
288292 ( s ) => [
289293 AutocompleteAdapter . completionItemToSuggestion (
290- s , { } as ac . AnySuggestion , request , onDidConvertCompletionItem ) ,
294+ s , { } as Suggestion , request , onDidConvertCompletionItem ) ,
291295 new PossiblyResolvedCompletionItem ( s , false ) ] ) ) ;
292296 }
293297
@@ -302,15 +306,15 @@ export default class AutocompleteAdapter {
302306 // Returns the {atom$AutocompleteSuggestion} passed in as suggestion with the conversion applied.
303307 public static completionItemToSuggestion (
304308 item : CompletionItem ,
305- suggestion : ac . AnySuggestion ,
309+ suggestion : Suggestion ,
306310 request : ac . SuggestionsRequestedEvent ,
307311 onDidConvertCompletionItem ?: CompletionItemAdjuster ,
308- ) : ac . AnySuggestion {
309- AutocompleteAdapter . applyCompletionItemToSuggestion ( item , suggestion as ac . TextSuggestion ) ;
310- AutocompleteAdapter . applyTextEditToSuggestion ( item . textEdit , request . editor , suggestion as ac . TextSuggestion ) ;
311- AutocompleteAdapter . applySnippetToSuggestion ( item , suggestion as ac . SnippetSuggestion ) ;
312+ ) : Suggestion {
313+ AutocompleteAdapter . applyCompletionItemToSuggestion ( item , suggestion as TextSuggestion ) ;
314+ AutocompleteAdapter . applyTextEditToSuggestion ( item . textEdit , request . editor , suggestion as TextSuggestion ) ;
315+ AutocompleteAdapter . applySnippetToSuggestion ( item , suggestion as SnippetSuggestion ) ;
312316 if ( onDidConvertCompletionItem != null ) {
313- onDidConvertCompletionItem ( item , suggestion , request ) ;
317+ onDidConvertCompletionItem ( item , suggestion as ac . AnySuggestion , request ) ;
314318 }
315319
316320 return suggestion ;
@@ -319,14 +323,15 @@ export default class AutocompleteAdapter {
319323 // Public: Convert the primary parts of a language server protocol CompletionItem to an AutoComplete+ suggestion.
320324 //
321325 // * `item` An {CompletionItem} containing the completion items to be merged into.
322- // * `suggestion` The {atom$AutocompleteSuggestion } to merge the conversion into.
326+ // * `suggestion` The {Suggestion } to merge the conversion into.
323327 //
324- // Returns an {atom$AutocompleteSuggestion} created from the {CompletionItem}.
328+ // Returns the {Suggestion} with details added from the {CompletionItem}.
325329 public static applyCompletionItemToSuggestion (
326330 item : CompletionItem ,
327- suggestion : ac . TextSuggestion ,
331+ suggestion : TextSuggestion ,
328332 ) {
329333 suggestion . text = item . insertText || item . label ;
334+ suggestion . filterText = item . filterText || item . label ;
330335 suggestion . displayText = item . label ;
331336 suggestion . type = AutocompleteAdapter . completionKindToSuggestionType ( item . kind ) ;
332337 suggestion . rightLabel = item . detail ;
@@ -356,7 +361,7 @@ export default class AutocompleteAdapter {
356361 public static applyTextEditToSuggestion (
357362 textEdit : TextEdit | undefined ,
358363 editor : TextEditor ,
359- suggestion : ac . TextSuggestion ,
364+ suggestion : TextSuggestion ,
360365 ) : void {
361366 if ( textEdit ) {
362367 suggestion . replacementPrefix = editor . getTextInBufferRange ( Convert . lsRangeToAtomRange ( textEdit . range ) ) ;
@@ -370,7 +375,7 @@ export default class AutocompleteAdapter {
370375 // * `item` An {CompletionItem} containing the completion items to be merged into.
371376 // * `suggestion` The {atom$AutocompleteSuggestion} to merge the conversion into.
372377 //
373- public static applySnippetToSuggestion ( item : CompletionItem , suggestion : ac . SnippetSuggestion ) : void {
378+ public static applySnippetToSuggestion ( item : CompletionItem , suggestion : SnippetSuggestion ) : void {
374379 if ( item . insertTextFormat === InsertTextFormat . Snippet ) {
375380 suggestion . snippet = item . textEdit != null ? item . textEdit . newText : ( item . insertText || '' ) ;
376381 }
0 commit comments