33 CompletionParams ,
44 Position ,
55 Range ,
6+ CompletionList ,
67} from "vscode-languageserver" ;
78
89import fuzzy from "../../common/fuzzy" ;
@@ -25,7 +26,7 @@ import { getProvider } from "./provider";
2526
2627const provider = getProvider ( ) ;
2728
28- export const completionProvider = ( params : CompletionParams ) : CompletionItem [ ] => {
29+ export const completionProvider = ( params : CompletionParams ) : CompletionList | CompletionItem [ ] => {
2930
3031 const { textDocument, position } = params ;
3132 const textDoc = documents . get ( textDocument . uri ) ;
@@ -34,18 +35,24 @@ export const completionProvider = (params: CompletionParams): CompletionItem[] =
3435 Position . create ( position . line , 0 ) ,
3536 position ,
3637 ) ) ;
37- const completionItems = provider ( line , textDoc . uri , position , [ ] ) ;
38- if ( ! config . snippetSupport ) {
39- return removeSnippets ( completionItems ) ;
40- }
4138 const words = getWordFromPosition ( textDoc , { line : position . line , character : position . character - 1 } ) ;
4239 let word = words && words . word || "" ;
4340 if ( word === "" && words && words . wordRight . trim ( ) === ":" ) {
4441 word = ":" ;
4542 }
4643 // options items start with &
4744 const invalidLength = word . replace ( / ^ & / , "" ) . length ;
48- return completionItems . filter ( ( item ) => fuzzy ( item . label , word ) >= invalidLength ) ;
45+ const completionItems = provider ( line , textDoc . uri , position , word , invalidLength , [ ] ) ;
46+ if ( ! config . snippetSupport ) {
47+ return {
48+ isIncomplete : true ,
49+ items : removeSnippets ( completionItems )
50+ }
51+ }
52+ return {
53+ isIncomplete : true ,
54+ items : completionItems
55+ }
4956 }
5057 return [ ] ;
5158} ;
0 commit comments