@@ -20,12 +20,13 @@ import {
20
20
TextEditor ,
21
21
} from 'atom' ;
22
22
import * as ac from 'atom/autocomplete-plus' ;
23
+ import { Suggestion , TextSuggestion , SnippetSuggestion } from 'atom-ide' ;
23
24
24
25
interface SuggestionCacheEntry {
25
26
isIncomplete : boolean ;
26
27
triggerPoint : Point ;
27
28
triggerChar : string ;
28
- suggestionMap : Map < ac . AnySuggestion , PossiblyResolvedCompletionItem > ;
29
+ suggestionMap : Map < Suggestion , PossiblyResolvedCompletionItem > ;
29
30
}
30
31
31
32
type CompletionItemAdjuster =
@@ -93,7 +94,7 @@ export default class AutocompleteAdapter {
93
94
}
94
95
95
96
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 ;
97
98
}
98
99
99
100
private shouldTrigger (
@@ -113,7 +114,7 @@ export default class AutocompleteAdapter {
113
114
triggerChar : string ,
114
115
triggerOnly : boolean ,
115
116
onDidConvertCompletionItem ?: CompletionItemAdjuster ,
116
- ) : Promise < ac . AnySuggestion [ ] > {
117
+ ) : Promise < Suggestion [ ] > {
117
118
const cache = this . _suggestionCache . get ( server ) ;
118
119
119
120
const triggerColumn = ( triggerChar !== '' && triggerOnly )
@@ -134,7 +135,7 @@ export default class AutocompleteAdapter {
134
135
) ;
135
136
136
137
// 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 ;
138
139
const suggestionMap = this . completionItemsToSuggestions ( completions , request , onDidConvertCompletionItem ) ;
139
140
this . _suggestionCache . set ( server , { isIncomplete : ! isComplete , triggerChar, triggerPoint, suggestionMap } ) ;
140
141
@@ -281,13 +282,16 @@ export default class AutocompleteAdapter {
281
282
completionItems : CompletionItem [ ] | CompletionList | null ,
282
283
request : ac . SuggestionsRequestedEvent ,
283
284
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
286
290
. sort ( ( a , b ) => ( a . sortText || a . label ) . localeCompare ( b . sortText || b . label ) )
287
- . map < [ ac . AnySuggestion , PossiblyResolvedCompletionItem ] > (
291
+ . map < [ Suggestion , PossiblyResolvedCompletionItem ] > (
288
292
( s ) => [
289
293
AutocompleteAdapter . completionItemToSuggestion (
290
- s , { } as ac . AnySuggestion , request , onDidConvertCompletionItem ) ,
294
+ s , { } as Suggestion , request , onDidConvertCompletionItem ) ,
291
295
new PossiblyResolvedCompletionItem ( s , false ) ] ) ) ;
292
296
}
293
297
@@ -302,15 +306,15 @@ export default class AutocompleteAdapter {
302
306
// Returns the {atom$AutocompleteSuggestion} passed in as suggestion with the conversion applied.
303
307
public static completionItemToSuggestion (
304
308
item : CompletionItem ,
305
- suggestion : ac . AnySuggestion ,
309
+ suggestion : Suggestion ,
306
310
request : ac . SuggestionsRequestedEvent ,
307
311
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 ) ;
312
316
if ( onDidConvertCompletionItem != null ) {
313
- onDidConvertCompletionItem ( item , suggestion , request ) ;
317
+ onDidConvertCompletionItem ( item , suggestion as ac . AnySuggestion , request ) ;
314
318
}
315
319
316
320
return suggestion ;
@@ -319,14 +323,15 @@ export default class AutocompleteAdapter {
319
323
// Public: Convert the primary parts of a language server protocol CompletionItem to an AutoComplete+ suggestion.
320
324
//
321
325
// * `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.
323
327
//
324
- // Returns an {atom$AutocompleteSuggestion} created from the {CompletionItem}.
328
+ // Returns the {Suggestion} with details added from the {CompletionItem}.
325
329
public static applyCompletionItemToSuggestion (
326
330
item : CompletionItem ,
327
- suggestion : ac . TextSuggestion ,
331
+ suggestion : TextSuggestion ,
328
332
) {
329
333
suggestion . text = item . insertText || item . label ;
334
+ suggestion . filterText = item . filterText || item . label ;
330
335
suggestion . displayText = item . label ;
331
336
suggestion . type = AutocompleteAdapter . completionKindToSuggestionType ( item . kind ) ;
332
337
suggestion . rightLabel = item . detail ;
@@ -356,7 +361,7 @@ export default class AutocompleteAdapter {
356
361
public static applyTextEditToSuggestion (
357
362
textEdit : TextEdit | undefined ,
358
363
editor : TextEditor ,
359
- suggestion : ac . TextSuggestion ,
364
+ suggestion : TextSuggestion ,
360
365
) : void {
361
366
if ( textEdit ) {
362
367
suggestion . replacementPrefix = editor . getTextInBufferRange ( Convert . lsRangeToAtomRange ( textEdit . range ) ) ;
@@ -370,7 +375,7 @@ export default class AutocompleteAdapter {
370
375
// * `item` An {CompletionItem} containing the completion items to be merged into.
371
376
// * `suggestion` The {atom$AutocompleteSuggestion} to merge the conversion into.
372
377
//
373
- public static applySnippetToSuggestion ( item : CompletionItem , suggestion : ac . SnippetSuggestion ) : void {
378
+ public static applySnippetToSuggestion ( item : CompletionItem , suggestion : SnippetSuggestion ) : void {
374
379
if ( item . insertTextFormat === InsertTextFormat . Snippet ) {
375
380
suggestion . snippet = item . textEdit != null ? item . textEdit . newText : ( item . insertText || '' ) ;
376
381
}
0 commit comments