Skip to content

Commit 7d0f18a

Browse files
committed
Fixes microsoft#6628: Add isBuiltin flag to language feature registration to get the previous sorting/behaviour for builtin language supports
1 parent 0973ecc commit 7d0f18a

12 files changed

Lines changed: 57 additions & 51 deletions

File tree

src/vs/editor/common/modes/abstractMode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ export class FrankensteinMode extends AbstractMode {
230230
super(descriptor.id);
231231

232232
if (editorWorkerService) {
233-
modes.SuggestRegistry.register(this.getId(), new TextualSuggestSupport(this.getId(), editorWorkerService, configurationService));
233+
modes.SuggestRegistry.register(this.getId(), new TextualSuggestSupport(this.getId(), editorWorkerService, configurationService), true);
234234
}
235235
}
236236
}

src/vs/editor/common/modes/languageFeatureRegistry.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {LanguageSelector, score} from 'vs/editor/common/modes/languageSelector';
1313
interface Entry<T> {
1414
selector: LanguageSelector;
1515
provider: T;
16+
isBuiltin: boolean;
1617
_score: number;
1718
_time: number;
1819
}
@@ -30,11 +31,12 @@ export default class LanguageFeatureRegistry<T> {
3031
return this._onDidChange.event;
3132
}
3233

33-
register(selector: LanguageSelector, provider: T): IDisposable {
34+
register(selector: LanguageSelector, provider: T, isBuiltin = false): IDisposable {
3435

3536
let entry: Entry<T> = {
3637
selector,
3738
provider,
39+
isBuiltin,
3840
_score: -1,
3941
_time: this._clock++
4042
};
@@ -141,6 +143,10 @@ export default class LanguageFeatureRegistry<T> {
141143

142144
for (let entry of this._entries) {
143145
entry._score = score(entry.selector, model.uri, model.getModeId());
146+
if (entry.isBuiltin && entry._score > 0) {
147+
entry._score = .5;
148+
entry._time = -1;
149+
}
144150
}
145151

146152
// needs sorting

src/vs/languages/css/common/css.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -331,45 +331,45 @@ export class CSSMode extends AbstractMode {
331331
provideDocumentHighlights: (model, position, token): Thenable<modes.DocumentHighlight[]> => {
332332
return wireCancellationToken(token, this._provideDocumentHighlights(model.uri, position));
333333
}
334-
});
334+
}, true);
335335

336336
modes.HoverProviderRegistry.register(this.getId(), {
337337
provideHover: (model, position, token): Thenable<modes.Hover> => {
338338
return wireCancellationToken(token, this._provideHover(model.uri, position));
339339
}
340-
});
340+
}, true);
341341

342342
modes.ReferenceProviderRegistry.register(this.getId(), {
343343
provideReferences: (model, position, context, token): Thenable<modes.Location[]> => {
344344
return wireCancellationToken(token, this._provideReferences(model.uri, position));
345345
}
346-
});
346+
}, true);
347347

348348
modes.DocumentSymbolProviderRegistry.register(this.getId(), {
349349
provideDocumentSymbols: (model, token): Thenable<modes.SymbolInformation[]> => {
350350
return wireCancellationToken(token, this._provideDocumentSymbols(model.uri));
351351
}
352-
});
352+
}, true);
353353

354354
modes.DefinitionProviderRegistry.register(this.getId(), {
355355
provideDefinition: (model, position, token): Thenable<modes.Definition> => {
356356
return wireCancellationToken(token, this._provideDefinition(model.uri, position));
357357
}
358-
});
358+
}, true);
359359

360360
modes.SuggestRegistry.register(this.getId(), {
361361
triggerCharacters: [' ', ':'],
362362
shouldAutotriggerSuggest: true,
363363
provideCompletionItems: (model, position, token): Thenable<modes.ISuggestResult[]> => {
364364
return wireCancellationToken(token, this._provideCompletionItems(model.uri, position));
365365
}
366-
});
366+
}, true);
367367

368368
modes.CodeActionProviderRegistry.register(this.getId(), {
369369
provideCodeActions: (model, range, token): Thenable<modes.IQuickFix[]> => {
370370
return wireCancellationToken(token, this._provideCodeActions(model.uri, range));
371371
}
372-
});
372+
}, true);
373373
}
374374

375375
public creationDone(): void {

src/vs/languages/handlebars/common/handlebars.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,33 +121,33 @@ export class HandlebarsMode extends htmlMode.HTMLMode<htmlWorker.HTMLWorker> {
121121
provideHover: (model, position, token): Thenable<modes.Hover> => {
122122
return wireCancellationToken(token, this._provideHover(model.uri, position));
123123
}
124-
});
124+
}, true);
125125

126126
modes.ReferenceProviderRegistry.register(this.getId(), {
127127
provideReferences: (model, position, context, token): Thenable<modes.Location[]> => {
128128
return wireCancellationToken(token, this._provideReferences(model.uri, position, context));
129129
}
130-
});
130+
}, true);
131131

132132
modes.SuggestRegistry.register(this.getId(), {
133133
triggerCharacters: ['.', ':', '<', '"', '=', '/'],
134134
shouldAutotriggerSuggest: true,
135135
provideCompletionItems: (model, position, token): Thenable<modes.ISuggestResult[]> => {
136136
return wireCancellationToken(token, this._provideCompletionItems(model.uri, position));
137137
}
138-
});
138+
}, true);
139139

140140
modes.DocumentHighlightProviderRegistry.register(this.getId(), {
141141
provideDocumentHighlights: (model, position, token): Thenable<modes.DocumentHighlight[]> => {
142142
return wireCancellationToken(token, this._provideDocumentHighlights(model.uri, position));
143143
}
144-
});
144+
}, true);
145145

146146
modes.LinkProviderRegistry.register(this.getId(), {
147147
provideLinks: (model, token): Thenable<modes.ILink[]> => {
148148
return wireCancellationToken(token, this._provideLinks(model.uri));
149149
}
150-
});
150+
}, true);
151151
}
152152

153153
protected _createRichEditSupport(): modes.IRichEditSupport {

src/vs/languages/html/common/html.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,39 +329,39 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl
329329
provideHover: (model, position, token): Thenable<modes.Hover> => {
330330
return wireCancellationToken(token, this._provideHover(model.uri, position));
331331
}
332-
});
332+
}, true);
333333

334334
modes.ReferenceProviderRegistry.register(this.getId(), {
335335
provideReferences: (model, position, context, token): Thenable<modes.Location[]> => {
336336
return wireCancellationToken(token, this._provideReferences(model.uri, position, context));
337337
}
338-
});
338+
}, true);
339339

340340
modes.SuggestRegistry.register(this.getId(), {
341341
triggerCharacters: ['.', ':', '<', '"', '=', '/'],
342342
shouldAutotriggerSuggest: true,
343343
provideCompletionItems: (model, position, token): Thenable<modes.ISuggestResult[]> => {
344344
return wireCancellationToken(token, this._provideCompletionItems(model.uri, position));
345345
}
346-
});
346+
}, true);
347347

348348
modes.DocumentHighlightProviderRegistry.register(this.getId(), {
349349
provideDocumentHighlights: (model, position, token): Thenable<modes.DocumentHighlight[]> => {
350350
return wireCancellationToken(token, this._provideDocumentHighlights(model.uri, position));
351351
}
352-
});
352+
}, true);
353353

354354
modes.DocumentRangeFormattingEditProviderRegistry.register(this.getId(), {
355355
provideDocumentRangeFormattingEdits: (model, range, options, token): Thenable<editorCommon.ISingleEditOperation[]> => {
356356
return wireCancellationToken(token, this._provideDocumentRangeFormattingEdits(model.uri, range, options));
357357
}
358-
});
358+
}, true);
359359

360360
modes.LinkProviderRegistry.register(this.getId(), {
361361
provideLinks: (model, token): Thenable<modes.ILink[]> => {
362362
return wireCancellationToken(token, this._provideLinks(model.uri));
363363
}
364-
});
364+
}, true);
365365
}
366366

367367
protected _createModeWorkerManager(descriptor:modes.IModeDescriptor, instantiationService: IInstantiationService): ModeWorkerManager<W> {

src/vs/languages/json/common/json.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export class JSONMode extends AbstractMode {
6767
provideHover: (model, position, token): Thenable<modes.Hover> => {
6868
return wireCancellationToken(token, this._provideHover(model.uri, position));
6969
}
70-
});
70+
}, true);
7171

7272
this.inplaceReplaceSupport = this;
7373

@@ -78,27 +78,27 @@ export class JSONMode extends AbstractMode {
7878
provideDocumentSymbols: (model, token): Thenable<modes.SymbolInformation[]> => {
7979
return wireCancellationToken(token, this._provideDocumentSymbols(model.uri));
8080
}
81-
});
81+
}, true);
8282

8383
modes.DocumentFormattingEditProviderRegistry.register(this.getId(), {
8484
provideDocumentFormattingEdits: (model, options, token): Thenable<editorCommon.ISingleEditOperation[]> => {
8585
return wireCancellationToken(token, this._provideDocumentFormattingEdits(model.uri, options));
8686
}
87-
});
87+
}, true);
8888

8989
modes.DocumentRangeFormattingEditProviderRegistry.register(this.getId(), {
9090
provideDocumentRangeFormattingEdits: (model, range, options, token): Thenable<editorCommon.ISingleEditOperation[]> => {
9191
return wireCancellationToken(token, this._provideDocumentRangeFormattingEdits(model.uri, range, options));
9292
}
93-
});
93+
}, true);
9494

9595
modes.SuggestRegistry.register(this.getId(), {
9696
triggerCharacters: [],
9797
shouldAutotriggerSuggest: true,
9898
provideCompletionItems: (model, position, token): Thenable<modes.ISuggestResult[]> => {
9999
return wireCancellationToken(token, this._provideCompletionItems(model.uri, position));
100100
}
101-
});
101+
}, true);
102102
}
103103

104104
public creationDone(): void {

src/vs/languages/less/common/less.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ export class LESSMode extends AbstractMode {
207207
provideHover: (model, position, token): Thenable<modes.Hover> => {
208208
return wireCancellationToken(token, this._provideHover(model.uri, position));
209209
}
210-
});
210+
}, true);
211211

212212
this.inplaceReplaceSupport = this;
213213

@@ -217,27 +217,27 @@ export class LESSMode extends AbstractMode {
217217
provideReferences: (model, position, context, token): Thenable<modes.Location[]> => {
218218
return wireCancellationToken(token, this._provideReferences(model.uri, position));
219219
}
220-
});
220+
}, true);
221221

222222
modes.DefinitionProviderRegistry.register(this.getId(), {
223223
provideDefinition: (model, position, token): Thenable<modes.Definition> => {
224224
return wireCancellationToken(token, this._provideDefinition(model.uri, position));
225225
}
226-
});
226+
}, true);
227227

228228
modes.DocumentSymbolProviderRegistry.register(this.getId(), {
229229
provideDocumentSymbols: (model, token): Thenable<modes.SymbolInformation[]> => {
230230
return wireCancellationToken(token, this._provideDocumentSymbols(model.uri));
231231
}
232-
});
232+
}, true);
233233

234234
modes.SuggestRegistry.register(this.getId(), {
235235
triggerCharacters: [],
236236
shouldAutotriggerSuggest: true,
237237
provideCompletionItems: (model, position, token): Thenable<modes.ISuggestResult[]> => {
238238
return wireCancellationToken(token, this._provideCompletionItems(model.uri, position));
239239
}
240-
});
240+
}, true);
241241

242242
this.tokenizationSupport = createTokenizationSupport(modeService, this, lexer);
243243

src/vs/languages/markdown/common/markdown.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ export class MarkdownMode extends AbstractMode implements Modes.IEmitOutputSuppo
243243
provideCompletionItems: (model, position, token) => {
244244
return wireCancellationToken(token, editorWorkerService.textualSuggest(model.uri, position));
245245
}
246-
});
246+
}, true);
247247
}
248248

249249
private _worker<T>(runner:(worker:MarkdownWorker.MarkdownWorker)=>WinJS.TPromise<T>): WinJS.TPromise<T> {

src/vs/languages/php/common/php.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ export class PHPMode extends AbstractMode implements ITokenizationCustomization
494494
});
495495

496496
if (editorWorkerService) {
497-
Modes.SuggestRegistry.register(this.getId(), new TextualSuggestSupport(this.getId(), editorWorkerService, configurationService));
497+
Modes.SuggestRegistry.register(this.getId(), new TextualSuggestSupport(this.getId(), editorWorkerService, configurationService), true);
498498
}
499499
}
500500

src/vs/languages/razor/common/razor.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,33 +70,33 @@ export class RAZORMode extends htmlMode.HTMLMode<RAZORWorker> {
7070
provideHover: (model, position, token): Thenable<modes.Hover> => {
7171
return wireCancellationToken(token, this._provideHover(model.uri, position));
7272
}
73-
});
73+
}, true);
7474

7575
modes.ReferenceProviderRegistry.register(this.getId(), {
7676
provideReferences: (model, position, context, token): Thenable<modes.Location[]> => {
7777
return wireCancellationToken(token, this._provideReferences(model.uri, position, context));
7878
}
79-
});
79+
}, true);
8080

8181
modes.SuggestRegistry.register(this.getId(), {
8282
triggerCharacters: ['.', ':', '<', '"', '=', '/'],
8383
shouldAutotriggerSuggest: true,
8484
provideCompletionItems: (model, position, token): Thenable<modes.ISuggestResult[]> => {
8585
return wireCancellationToken(token, this._provideCompletionItems(model.uri, position));
8686
}
87-
});
87+
}, true);
8888

8989
modes.DocumentHighlightProviderRegistry.register(this.getId(), {
9090
provideDocumentHighlights: (model, position, token): Thenable<modes.DocumentHighlight[]> => {
9191
return wireCancellationToken(token, this._provideDocumentHighlights(model.uri, position));
9292
}
93-
});
93+
}, true);
9494

9595
modes.LinkProviderRegistry.register(this.getId(), {
9696
provideLinks: (model, token): Thenable<modes.ILink[]> => {
9797
return wireCancellationToken(token, this._provideLinks(model.uri));
9898
}
99-
});
99+
}, true);
100100
}
101101

102102
protected _createModeWorkerManager(descriptor:modes.IModeDescriptor, instantiationService: IInstantiationService): ModeWorkerManager<RAZORWorker> {

0 commit comments

Comments
 (0)