@@ -10,7 +10,7 @@ import AbstractSupport from './abstractProvider';
1010import * as protocol from '../omnisharp/protocol' ;
1111import * as serverUtils from '../omnisharp/utils' ;
1212import { createRequest } from '../omnisharp/typeConvertion' ;
13- import { CompletionItemProvider , CompletionItem , CompletionItemKind , CancellationToken , TextDocument , Range , Position } from 'vscode' ;
13+ import { CompletionItemProvider , CompletionItem , CompletionItemKind , CancellationToken , TextDocument , Range , Position , CompletionList } from 'vscode' ;
1414
1515export default class OmniSharpCompletionItemProvider extends AbstractSupport implements CompletionItemProvider {
1616
@@ -25,7 +25,7 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp
2525 ';' , '+' , '-' , '*' , '/' , '%' , '&' , '|' , '^' , '!' ,
2626 '~' , '=' , '<' , '>' , '?' , '@' , '#' , '\'' , '\"' , '\\' ] ;
2727
28- public provideCompletionItems ( document : TextDocument , position : Position , token : CancellationToken ) : Promise < CompletionItem [ ] > {
28+ public provideCompletionItems ( document : TextDocument , position : Position , token : CancellationToken ) : Promise < CompletionList > {
2929
3030 let wordToComplete = '' ;
3131 let range = document . getWordRangeAtPosition ( position ) ;
@@ -93,7 +93,9 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp
9393 result . push ( suggestion ) ;
9494 }
9595
96- return result ;
96+ // for short completions (up to 1 character), treat the list as incomplete
97+ // because the server has likely witheld some matches due to performance constraints
98+ return new CompletionList ( result , wordToComplete . length > 1 ? false : true ) ;
9799 } ) ;
98100 }
99101}
0 commit comments