mirror of
https://github.com/Microsoft/vscode
synced 2024-09-19 10:40:41 +00:00
wire up editor.suggest.filterGraceful
#52789
This commit is contained in:
parent
32d9f16388
commit
91e82ed2fe
|
@ -9,6 +9,7 @@ import { fuzzyScore, fuzzyScoreGracefulAggressive, anyScore } from 'vs/base/comm
|
|||
import { isDisposable } from 'vs/base/common/lifecycle';
|
||||
import { ISuggestResult, ISuggestSupport } from 'vs/editor/common/modes';
|
||||
import { ISuggestionItem, SnippetConfig } from './suggest';
|
||||
import { ISuggestOptions } from 'vs/editor/common/config/editorOptions';
|
||||
|
||||
export interface ICompletionItem extends ISuggestionItem {
|
||||
matches?: number[];
|
||||
|
@ -46,8 +47,9 @@ const enum Refilter {
|
|||
|
||||
export class CompletionModel {
|
||||
|
||||
private readonly _column: number;
|
||||
private readonly _items: ICompletionItem[];
|
||||
private readonly _column: number;
|
||||
private readonly _options: ISuggestOptions;
|
||||
private readonly _snippetCompareFn = CompletionModel._compareCompletionItems;
|
||||
|
||||
private _lineContext: LineContext;
|
||||
|
@ -56,9 +58,10 @@ export class CompletionModel {
|
|||
private _isIncomplete: Set<ISuggestSupport>;
|
||||
private _stats: ICompletionStats;
|
||||
|
||||
constructor(items: ISuggestionItem[], column: number, lineContext: LineContext, snippetConfig?: SnippetConfig) {
|
||||
constructor(items: ISuggestionItem[], column: number, lineContext: LineContext, options: ISuggestOptions = { filterGraceful: true }, snippetConfig?: SnippetConfig) {
|
||||
this._items = items;
|
||||
this._column = column;
|
||||
this._options = options;
|
||||
this._refilterKind = Refilter.All;
|
||||
this._lineContext = lineContext;
|
||||
|
||||
|
@ -146,8 +149,9 @@ export class CompletionModel {
|
|||
const target: typeof source = [];
|
||||
|
||||
// picks a score function based on the number of
|
||||
// items that we have to score/filter
|
||||
const scoreFn = source.length > 2000 ? fuzzyScore : fuzzyScoreGracefulAggressive;
|
||||
// items that we have to score/filter and based on the
|
||||
// user-configuration
|
||||
const scoreFn = (!this._options.filterGraceful || source.length > 2000) ? fuzzyScore : fuzzyScoreGracefulAggressive;
|
||||
|
||||
for (let i = 0; i < source.length; i++) {
|
||||
|
||||
|
|
|
@ -381,7 +381,10 @@ export class SuggestModel implements IDisposable {
|
|||
this._completionModel = new CompletionModel(items, this._context.column, {
|
||||
leadingLineContent: ctx.leadingLineContent,
|
||||
characterCountDelta: this._context ? ctx.column - this._context.column : 0
|
||||
}, this._editor.getConfiguration().contribInfo.snippetSuggestions);
|
||||
},
|
||||
this._editor.getConfiguration().contribInfo.suggest,
|
||||
this._editor.getConfiguration().contribInfo.snippetSuggestions
|
||||
);
|
||||
this._onNewContext(ctx);
|
||||
|
||||
}).then(null, onUnexpectedError);
|
||||
|
|
|
@ -167,7 +167,7 @@ suite('CompletionModel', function () {
|
|||
], 1, {
|
||||
leadingLineContent: 's',
|
||||
characterCountDelta: 0
|
||||
}, 'top');
|
||||
}, undefined, 'top');
|
||||
|
||||
assert.equal(model.items.length, 2);
|
||||
const [a, b] = model.items;
|
||||
|
@ -186,7 +186,7 @@ suite('CompletionModel', function () {
|
|||
], 1, {
|
||||
leadingLineContent: 's',
|
||||
characterCountDelta: 0
|
||||
}, 'bottom');
|
||||
}, undefined, 'bottom');
|
||||
|
||||
assert.equal(model.items.length, 2);
|
||||
const [a, b] = model.items;
|
||||
|
@ -204,7 +204,7 @@ suite('CompletionModel', function () {
|
|||
], 1, {
|
||||
leadingLineContent: 's',
|
||||
characterCountDelta: 0
|
||||
}, 'inline');
|
||||
}, undefined, 'inline');
|
||||
|
||||
assert.equal(model.items.length, 2);
|
||||
const [a, b] = model.items;
|
||||
|
@ -267,7 +267,7 @@ suite('CompletionModel', function () {
|
|||
], 1, {
|
||||
leadingLineContent: '',
|
||||
characterCountDelta: 0
|
||||
}, 'inline');
|
||||
}, undefined, 'inline');
|
||||
|
||||
assert.equal(model.items.length, 5);
|
||||
|
||||
|
@ -294,7 +294,7 @@ suite('CompletionModel', function () {
|
|||
], 1, {
|
||||
leadingLineContent: '',
|
||||
characterCountDelta: 0
|
||||
}, 'inline');
|
||||
}, undefined, 'inline');
|
||||
|
||||
// query gets longer, narrow down the narrow-down'ed-set from before
|
||||
model.lineContext = { leadingLineContent: 'rlut', characterCountDelta: 4 };
|
||||
|
@ -316,7 +316,7 @@ suite('CompletionModel', function () {
|
|||
], 1, {
|
||||
leadingLineContent: '',
|
||||
characterCountDelta: 0
|
||||
}, 'inline');
|
||||
}, undefined, 'inline');
|
||||
|
||||
model.lineContext = { leadingLineContent: 'form', characterCountDelta: 4 };
|
||||
assert.equal(model.items.length, 5);
|
||||
|
|
Loading…
Reference in a new issue