monaco-editor11 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/monaco-editor11.es.js +11 -16
- package/dist/monaco-editor11.umd.js +1 -1
- package/package.json +2 -2
- package/dist/monaco.d.ts +0 -8
- package/dist/workers/common/initialize.js +0 -16
- package/dist/workers/common/workers.js +0 -141
- package/dist/workers/editor/common/abstractSyntaxTokenBackend.js +0 -128
- package/dist/workers/editor/common/abstractText.js +0 -89
- package/dist/workers/editor/common/ast.js +0 -485
- package/dist/workers/editor/common/autoIndent.js +0 -390
- package/dist/workers/editor/common/beforeEditPositionMapper.js +0 -110
- package/dist/workers/editor/common/bracketPairsImpl.js +0 -717
- package/dist/workers/editor/common/bracketPairsTree.js +0 -343
- package/dist/workers/editor/common/brackets.js +0 -108
- package/dist/workers/editor/common/characterClassifier.js +0 -59
- package/dist/workers/editor/common/characterPair.js +0 -40
- package/dist/workers/editor/common/colorizedBracketPairsDecorationProvider.js +0 -97
- package/dist/workers/editor/common/columnRange.js +0 -35
- package/dist/workers/editor/common/combineTextEditInfos.js +0 -124
- package/dist/workers/editor/common/common.js +0 -20
- package/dist/workers/editor/common/computeMovedLines.js +0 -249
- package/dist/workers/editor/common/concat23Trees.js +0 -192
- package/dist/workers/editor/common/contiguousMultilineTokens.js +0 -32
- package/dist/workers/editor/common/contiguousMultilineTokensBuilder.js +0 -23
- package/dist/workers/editor/common/contiguousTokensEditing.js +0 -128
- package/dist/workers/editor/common/contiguousTokensStore.js +0 -207
- package/dist/workers/editor/common/coordinatesConverter.js +0 -51
- package/dist/workers/editor/common/cursor.js +0 -899
- package/dist/workers/editor/common/cursorAtomicMoveOperations.js +0 -145
- package/dist/workers/editor/common/cursorCollection.js +0 -194
- package/dist/workers/editor/common/cursorColumnSelection.js +0 -93
- package/dist/workers/editor/common/cursorColumns.js +0 -112
- package/dist/workers/editor/common/cursorCommon.js +0 -250
- package/dist/workers/editor/common/cursorContext.js +0 -15
- package/dist/workers/editor/common/cursorDeleteOperations.js +0 -231
- package/dist/workers/editor/common/cursorMoveCommands.js +0 -676
- package/dist/workers/editor/common/cursorMoveOperations.js +0 -290
- package/dist/workers/editor/common/cursorTypeEditOperations.js +0 -968
- package/dist/workers/editor/common/cursorTypeOperations.js +0 -173
- package/dist/workers/editor/common/cursorUtils.js +0 -75
- package/dist/workers/editor/common/cursorWordOperations.js +0 -720
- package/dist/workers/editor/common/defaultDocumentColorsComputer.js +0 -138
- package/dist/workers/editor/common/defaultLinesDiffComputer.js +0 -188
- package/dist/workers/editor/common/diffAlgorithm.js +0 -139
- package/dist/workers/editor/common/diffEditor.js +0 -38
- package/dist/workers/editor/common/dynamicProgrammingDiffing.js +0 -101
- package/dist/workers/editor/common/edit.js +0 -183
- package/dist/workers/editor/common/editOperation.js +0 -36
- package/dist/workers/editor/common/editStack.js +0 -363
- package/dist/workers/editor/common/editorAction.js +0 -26
- package/dist/workers/editor/common/editorBaseApi.js +0 -43
- package/dist/workers/editor/common/editorColorRegistry.js +0 -102
- package/dist/workers/editor/common/editorCommon.js +0 -13
- package/dist/workers/editor/common/editorConfigurationSchema.js +0 -338
- package/dist/workers/editor/common/editorContextKeys.js +0 -84
- package/dist/workers/editor/common/editorFeatures.js +0 -17
- package/dist/workers/editor/common/editorOptions.js +0 -3440
- package/dist/workers/editor/common/editorTheme.js +0 -23
- package/dist/workers/editor/common/editorWebWorker.js +0 -299
- package/dist/workers/editor/common/editorWorker.js +0 -9
- package/dist/workers/editor/common/editorWorkerHost.js +0 -15
- package/dist/workers/editor/common/editorZoom.js +0 -26
- package/dist/workers/editor/common/electricCharacter.js +0 -55
- package/dist/workers/editor/common/encodedTokenAttributes.js +0 -79
- package/dist/workers/editor/common/enterAction.js +0 -53
- package/dist/workers/editor/common/eolCounter.js +0 -44
- package/dist/workers/editor/common/findSectionHeaders.js +0 -128
- package/dist/workers/editor/common/fixBrackets.js +0 -67
- package/dist/workers/editor/common/fixedArray.js +0 -70
- package/dist/workers/editor/common/fontInfo.js +0 -172
- package/dist/workers/editor/common/fontInfoFromSettings.js +0 -29
- package/dist/workers/editor/common/getIconClasses.js +0 -106
- package/dist/workers/editor/common/getPositionOffsetTransformerFromTextModel.js +0 -24
- package/dist/workers/editor/common/glyphLanesModel.js +0 -61
- package/dist/workers/editor/common/guidesTextModelPart.js +0 -405
- package/dist/workers/editor/common/heuristicSequenceOptimizations.js +0 -374
- package/dist/workers/editor/common/indentRules.js +0 -63
- package/dist/workers/editor/common/indentation.js +0 -39
- package/dist/workers/editor/common/indentationGuesser.js +0 -178
- package/dist/workers/editor/common/indentationLineProcessor.js +0 -193
- package/dist/workers/editor/common/inlineDecorations.js +0 -26
- package/dist/workers/editor/common/inplaceReplaceSupport.js +0 -87
- package/dist/workers/editor/common/inputMode.js +0 -22
- package/dist/workers/editor/common/intervalTree.js +0 -1002
- package/dist/workers/editor/common/language.js +0 -9
- package/dist/workers/editor/common/languageBracketsConfiguration.js +0 -133
- package/dist/workers/editor/common/languageConfiguration.js +0 -138
- package/dist/workers/editor/common/languageConfigurationRegistry.js +0 -361
- package/dist/workers/editor/common/languageFeatureDebounce.js +0 -137
- package/dist/workers/editor/common/languageFeatureRegistry.js +0 -180
- package/dist/workers/editor/common/languageFeatures.js +0 -9
- package/dist/workers/editor/common/languageFeaturesService.js +0 -47
- package/dist/workers/editor/common/languageSelector.js +0 -112
- package/dist/workers/editor/common/languageService.js +0 -92
- package/dist/workers/editor/common/languages.js +0 -522
- package/dist/workers/editor/common/languagesAssociations.js +0 -193
- package/dist/workers/editor/common/languagesRegistry.js +0 -237
- package/dist/workers/editor/common/legacyLinesDiffComputer.js +0 -468
- package/dist/workers/editor/common/length.js +0 -129
- package/dist/workers/editor/common/lineDecorations.js +0 -208
- package/dist/workers/editor/common/lineEdit.js +0 -75
- package/dist/workers/editor/common/lineHeights.js +0 -370
- package/dist/workers/editor/common/linePart.js +0 -25
- package/dist/workers/editor/common/lineRange.js +0 -312
- package/dist/workers/editor/common/lineSequence.js +0 -36
- package/dist/workers/editor/common/lineTokens.js +0 -405
- package/dist/workers/editor/common/linesDiffComputer.js +0 -29
- package/dist/workers/editor/common/linesDiffComputers.js +0 -13
- package/dist/workers/editor/common/linesLayout.js +0 -765
- package/dist/workers/editor/common/linesSliceCharSequence.js +0 -205
- package/dist/workers/editor/common/linkComputer.js +0 -269
- package/dist/workers/editor/common/markerDecorations.js +0 -9
- package/dist/workers/editor/common/markerDecorationsService.js +0 -248
- package/dist/workers/editor/common/minimapTokensColorTracker.js +0 -58
- package/dist/workers/editor/common/mirrorTextModel.js +0 -117
- package/dist/workers/editor/common/model.js +0 -9
- package/dist/workers/editor/common/modelLineProjection.js +0 -350
- package/dist/workers/editor/common/modelLineProjectionData.js +0 -297
- package/dist/workers/editor/common/modelService.js +0 -413
- package/dist/workers/editor/common/modesRegistry.js +0 -75
- package/dist/workers/editor/common/monospaceLineBreaksComputer.js +0 -473
- package/dist/workers/editor/common/myersDiffAlgorithm.js +0 -159
- package/dist/workers/editor/common/nodeReader.js +0 -127
- package/dist/workers/editor/common/nullTokenize.js +0 -29
- package/dist/workers/editor/common/offsetRange.js +0 -225
- package/dist/workers/editor/common/onEnter.js +0 -109
- package/dist/workers/editor/common/oneCursor.js +0 -117
- package/dist/workers/editor/common/overviewZoneManager.js +0 -176
- package/dist/workers/editor/common/parser.js +0 -121
- package/dist/workers/editor/common/pieceTreeBase.js +0 -1473
- package/dist/workers/editor/common/pieceTreeTextBuffer.js +0 -461
- package/dist/workers/editor/common/pieceTreeTextBufferBuilder.js +0 -140
- package/dist/workers/editor/common/point.js +0 -50
- package/dist/workers/editor/common/position.js +0 -142
- package/dist/workers/editor/common/positionToOffset.js +0 -17
- package/dist/workers/editor/common/positionToOffsetImpl.js +0 -98
- package/dist/workers/editor/common/prefixSumComputer.js +0 -226
- package/dist/workers/editor/common/range.js +0 -421
- package/dist/workers/editor/common/rangeMapping.js +0 -229
- package/dist/workers/editor/common/rangeSingleLine.js +0 -17
- package/dist/workers/editor/common/rbTreeBase.js +0 -362
- package/dist/workers/editor/common/rect.js +0 -163
- package/dist/workers/editor/common/replaceCommand.js +0 -158
- package/dist/workers/editor/common/resolverService.js +0 -5
- package/dist/workers/editor/common/rgba.js +0 -35
- package/dist/workers/editor/common/richEditBrackets.js +0 -356
- package/dist/workers/editor/common/selection.js +0 -145
- package/dist/workers/editor/common/semanticTokensDto.js +0 -82
- package/dist/workers/editor/common/semanticTokensProviderStyling.js +0 -263
- package/dist/workers/editor/common/semanticTokensStyling.js +0 -9
- package/dist/workers/editor/common/semanticTokensStylingService.js +0 -47
- package/dist/workers/editor/common/shiftCommand.js +0 -241
- package/dist/workers/editor/common/smallImmutableSet.js +0 -108
- package/dist/workers/editor/common/sparseMultilineTokens.js +0 -548
- package/dist/workers/editor/common/sparseTokensStore.js +0 -210
- package/dist/workers/editor/common/standaloneEnums.js +0 -1017
- package/dist/workers/editor/common/standaloneStrings.js +0 -42
- package/dist/workers/editor/common/stringBuilder.js +0 -122
- package/dist/workers/editor/common/stringEdit.js +0 -165
- package/dist/workers/editor/common/supports.js +0 -58
- package/dist/workers/editor/common/surroundSelectionCommand.js +0 -44
- package/dist/workers/editor/common/textChange.js +0 -248
- package/dist/workers/editor/common/textEdit.js +0 -269
- package/dist/workers/editor/common/textLength.js +0 -87
- package/dist/workers/editor/common/textModel.js +0 -2031
- package/dist/workers/editor/common/textModelBracketPairs.js +0 -45
- package/dist/workers/editor/common/textModelDefaults.js +0 -18
- package/dist/workers/editor/common/textModelEditSource.js +0 -166
- package/dist/workers/editor/common/textModelEvents.js +0 -216
- package/dist/workers/editor/common/textModelGuides.js +0 -40
- package/dist/workers/editor/common/textModelPart.js +0 -23
- package/dist/workers/editor/common/textModelSearch.js +0 -455
- package/dist/workers/editor/common/textModelStringEdit.js +0 -11
- package/dist/workers/editor/common/textModelSync.impl.js +0 -307
- package/dist/workers/editor/common/textModelText.js +0 -26
- package/dist/workers/editor/common/textModelTokens.js +0 -436
- package/dist/workers/editor/common/textResourceConfiguration.js +0 -6
- package/dist/workers/editor/common/textToHtmlTokenizer.js +0 -139
- package/dist/workers/editor/common/tokenStore.js +0 -407
- package/dist/workers/editor/common/tokenWithTextArray.js +0 -73
- package/dist/workers/editor/common/tokenization.js +0 -287
- package/dist/workers/editor/common/tokenizationRegistry.js +0 -123
- package/dist/workers/editor/common/tokenizationTextModelPart.js +0 -275
- package/dist/workers/editor/common/tokenizer.js +0 -301
- package/dist/workers/editor/common/tokenizerSyntaxTokenBackend.js +0 -261
- package/dist/workers/editor/common/treeSitterLibraryService.js +0 -9
- package/dist/workers/editor/common/treeSitterSyntaxTokenBackend.js +0 -167
- package/dist/workers/editor/common/treeSitterThemeService.js +0 -9
- package/dist/workers/editor/common/treeSitterTokenizationImpl.js +0 -713
- package/dist/workers/editor/common/treeSitterTree.js +0 -395
- package/dist/workers/editor/common/treeViewsDnd.js +0 -24
- package/dist/workers/editor/common/treeViewsDndService.js +0 -12
- package/dist/workers/editor/common/trimTrailingWhitespaceCommand.js +0 -98
- package/dist/workers/editor/common/unicodeTextModelHighlighter.js +0 -188
- package/dist/workers/editor/common/utils.js +0 -62
- package/dist/workers/editor/common/viewContext.js +0 -22
- package/dist/workers/editor/common/viewEventHandler.js +0 -186
- package/dist/workers/editor/common/viewEvents.js +0 -180
- package/dist/workers/editor/common/viewLayout.js +0 -368
- package/dist/workers/editor/common/viewLineRenderer.js +0 -948
- package/dist/workers/editor/common/viewLinesViewportData.js +0 -30
- package/dist/workers/editor/common/viewModel.js +0 -98
- package/dist/workers/editor/common/viewModelDecoration.js +0 -55
- package/dist/workers/editor/common/viewModelDecorations.js +0 -132
- package/dist/workers/editor/common/viewModelEventDispatcher.js +0 -398
- package/dist/workers/editor/common/viewModelImpl.js +0 -1163
- package/dist/workers/editor/common/viewModelLines.js +0 -938
- package/dist/workers/editor/common/wordCharacterClassifier.js +0 -87
- package/dist/workers/editor/common/wordHelper.js +0 -127
- package/dist/workers/language/cssMode.js +0 -198
- package/dist/workers/language/cssWorker.js +0 -183
- package/dist/workers/language/htmlMode.js +0 -213
- package/dist/workers/language/htmlWorker.js +0 -126
- package/dist/workers/language/jsonMode.js +0 -224
- package/dist/workers/language/jsonWorker.js +0 -187
- package/dist/workers/language/languageFeatures.js +0 -1009
- package/dist/workers/language/lib.index.js +0 -103
- package/dist/workers/language/lib.js +0 -1107
- package/dist/workers/language/lspLanguageFeatures.js +0 -716
- package/dist/workers/language/monaco.contribution.js +0 -144
- package/dist/workers/language/tokenization.js +0 -189
- package/dist/workers/language/tsMode.js +0 -212
- package/dist/workers/language/tsWorker.js +0 -352
- package/dist/workers/language/typescriptServices.js +0 -210154
- package/dist/workers/language/typescriptServicesMetadata.js +0 -3
- package/dist/workers/language/workerManager.js +0 -65
- /package/dist/workers/{language/css.worker.js → css.worker.js} +0 -0
- /package/dist/workers/{editor/editor.worker.js → editor.worker.js} +0 -0
- /package/dist/workers/{language/html.worker.js → html.worker.js} +0 -0
- /package/dist/workers/{language/json.worker.js → json.worker.js} +0 -0
- /package/dist/workers/{language/ts.worker.js → ts.worker.js} +0 -0
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { doHash } from '../../../base/common/hash.js';
|
|
2
|
-
import { LRUCache } from '../../../base/common/map.js';
|
|
3
|
-
import { MovingAverage, clamp, SlidingWindowAverage } from '../../../base/common/numbers.js';
|
|
4
|
-
import { IEnvironmentService } from '../../../platform/environment/common/environment.js';
|
|
5
|
-
import { registerSingleton } from '../../../platform/instantiation/common/extensions.js';
|
|
6
|
-
import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';
|
|
7
|
-
import { ILogService } from '../../../platform/log/common/log.js';
|
|
8
|
-
import { matchesScheme } from '../../../base/common/network.js';
|
|
9
|
-
|
|
10
|
-
/*---------------------------------------------------------------------------------------------
|
|
11
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
12
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
13
|
-
*--------------------------------------------------------------------------------------------*/
|
|
14
|
-
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
15
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
16
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
17
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
18
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
19
|
-
};
|
|
20
|
-
var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
|
|
21
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
22
|
-
};
|
|
23
|
-
const ILanguageFeatureDebounceService = createDecorator('ILanguageFeatureDebounceService');
|
|
24
|
-
var IdentityHash;
|
|
25
|
-
(function (IdentityHash) {
|
|
26
|
-
const _hashes = new WeakMap();
|
|
27
|
-
let pool = 0;
|
|
28
|
-
function of(obj) {
|
|
29
|
-
let value = _hashes.get(obj);
|
|
30
|
-
if (value === undefined) {
|
|
31
|
-
value = ++pool;
|
|
32
|
-
_hashes.set(obj, value);
|
|
33
|
-
}
|
|
34
|
-
return value;
|
|
35
|
-
}
|
|
36
|
-
IdentityHash.of = of;
|
|
37
|
-
})(IdentityHash || (IdentityHash = {}));
|
|
38
|
-
class NullDebounceInformation {
|
|
39
|
-
constructor(_default) {
|
|
40
|
-
this._default = _default;
|
|
41
|
-
}
|
|
42
|
-
get(_model) {
|
|
43
|
-
return this._default;
|
|
44
|
-
}
|
|
45
|
-
update(_model, _value) {
|
|
46
|
-
return this._default;
|
|
47
|
-
}
|
|
48
|
-
default() {
|
|
49
|
-
return this._default;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
class FeatureDebounceInformation {
|
|
53
|
-
constructor(_logService, _name, _registry, _default, _min, _max) {
|
|
54
|
-
this._logService = _logService;
|
|
55
|
-
this._name = _name;
|
|
56
|
-
this._registry = _registry;
|
|
57
|
-
this._default = _default;
|
|
58
|
-
this._min = _min;
|
|
59
|
-
this._max = _max;
|
|
60
|
-
this._cache = new LRUCache(50, 0.7);
|
|
61
|
-
}
|
|
62
|
-
_key(model) {
|
|
63
|
-
return model.id + this._registry.all(model).reduce((hashVal, obj) => doHash(IdentityHash.of(obj), hashVal), 0);
|
|
64
|
-
}
|
|
65
|
-
get(model) {
|
|
66
|
-
const key = this._key(model);
|
|
67
|
-
const avg = this._cache.get(key);
|
|
68
|
-
return avg
|
|
69
|
-
? clamp(avg.value, this._min, this._max)
|
|
70
|
-
: this.default();
|
|
71
|
-
}
|
|
72
|
-
update(model, value) {
|
|
73
|
-
const key = this._key(model);
|
|
74
|
-
let avg = this._cache.get(key);
|
|
75
|
-
if (!avg) {
|
|
76
|
-
avg = new SlidingWindowAverage(6);
|
|
77
|
-
this._cache.set(key, avg);
|
|
78
|
-
}
|
|
79
|
-
const newValue = clamp(avg.update(value), this._min, this._max);
|
|
80
|
-
if (!matchesScheme(model.uri, 'output')) {
|
|
81
|
-
this._logService.trace(`[DEBOUNCE: ${this._name}] for ${model.uri.toString()} is ${newValue}ms`);
|
|
82
|
-
}
|
|
83
|
-
return newValue;
|
|
84
|
-
}
|
|
85
|
-
_overall() {
|
|
86
|
-
const result = new MovingAverage();
|
|
87
|
-
for (const [, avg] of this._cache) {
|
|
88
|
-
result.update(avg.value);
|
|
89
|
-
}
|
|
90
|
-
return result.value;
|
|
91
|
-
}
|
|
92
|
-
default() {
|
|
93
|
-
const value = (this._overall() | 0) || this._default;
|
|
94
|
-
return clamp(value, this._min, this._max);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
let LanguageFeatureDebounceService = class LanguageFeatureDebounceService {
|
|
98
|
-
constructor(_logService, envService) {
|
|
99
|
-
this._logService = _logService;
|
|
100
|
-
this._data = new Map();
|
|
101
|
-
this._isDev = envService.isExtensionDevelopment || !envService.isBuilt;
|
|
102
|
-
}
|
|
103
|
-
for(feature, name, config) {
|
|
104
|
-
const min = config?.min ?? 50;
|
|
105
|
-
const max = config?.max ?? min ** 2;
|
|
106
|
-
const extra = config?.key ?? undefined;
|
|
107
|
-
const key = `${IdentityHash.of(feature)},${min}${extra ? ',' + extra : ''}`;
|
|
108
|
-
let info = this._data.get(key);
|
|
109
|
-
if (!info) {
|
|
110
|
-
if (this._isDev) {
|
|
111
|
-
this._logService.debug(`[DEBOUNCE: ${name}] is disabled in developed mode`);
|
|
112
|
-
info = new NullDebounceInformation(min * 1.5);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
info = new FeatureDebounceInformation(this._logService, name, feature, (this._overallAverage() | 0) || (min * 1.5), // default is overall default or derived from min-value
|
|
116
|
-
min, max);
|
|
117
|
-
}
|
|
118
|
-
this._data.set(key, info);
|
|
119
|
-
}
|
|
120
|
-
return info;
|
|
121
|
-
}
|
|
122
|
-
_overallAverage() {
|
|
123
|
-
// Average of all language features. Not a great value but an approximation
|
|
124
|
-
const result = new MovingAverage();
|
|
125
|
-
for (const info of this._data.values()) {
|
|
126
|
-
result.update(info.default());
|
|
127
|
-
}
|
|
128
|
-
return result.value;
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
LanguageFeatureDebounceService = __decorate([
|
|
132
|
-
__param(0, ILogService),
|
|
133
|
-
__param(1, IEnvironmentService)
|
|
134
|
-
], LanguageFeatureDebounceService);
|
|
135
|
-
registerSingleton(ILanguageFeatureDebounceService, LanguageFeatureDebounceService, 1 /* InstantiationType.Delayed */);
|
|
136
|
-
|
|
137
|
-
export { ILanguageFeatureDebounceService, LanguageFeatureDebounceService };
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import { Emitter } from '../../base/common/event.js';
|
|
2
|
-
import { toDisposable } from '../../base/common/lifecycle.js';
|
|
3
|
-
import { shouldSynchronizeModel } from './model.js';
|
|
4
|
-
import { score } from './languageSelector.js';
|
|
5
|
-
|
|
6
|
-
/*---------------------------------------------------------------------------------------------
|
|
7
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
9
|
-
*--------------------------------------------------------------------------------------------*/
|
|
10
|
-
function isExclusive(selector) {
|
|
11
|
-
if (typeof selector === 'string') {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
else if (Array.isArray(selector)) {
|
|
15
|
-
return selector.every(isExclusive);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
return !!selector.exclusive; // TODO: microsoft/TypeScript#42768
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
class MatchCandidate {
|
|
22
|
-
constructor(uri, languageId, notebookUri, notebookType, recursive) {
|
|
23
|
-
this.uri = uri;
|
|
24
|
-
this.languageId = languageId;
|
|
25
|
-
this.notebookUri = notebookUri;
|
|
26
|
-
this.notebookType = notebookType;
|
|
27
|
-
this.recursive = recursive;
|
|
28
|
-
}
|
|
29
|
-
equals(other) {
|
|
30
|
-
return this.notebookType === other.notebookType
|
|
31
|
-
&& this.languageId === other.languageId
|
|
32
|
-
&& this.uri.toString() === other.uri.toString()
|
|
33
|
-
&& this.notebookUri?.toString() === other.notebookUri?.toString()
|
|
34
|
-
&& this.recursive === other.recursive;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
class LanguageFeatureRegistry {
|
|
38
|
-
get onDidChange() { return this._onDidChange.event; }
|
|
39
|
-
constructor(_notebookInfoResolver) {
|
|
40
|
-
this._notebookInfoResolver = _notebookInfoResolver;
|
|
41
|
-
this._clock = 0;
|
|
42
|
-
this._entries = [];
|
|
43
|
-
this._onDidChange = new Emitter();
|
|
44
|
-
}
|
|
45
|
-
register(selector, provider) {
|
|
46
|
-
let entry = {
|
|
47
|
-
selector,
|
|
48
|
-
provider,
|
|
49
|
-
_score: -1,
|
|
50
|
-
_time: this._clock++
|
|
51
|
-
};
|
|
52
|
-
this._entries.push(entry);
|
|
53
|
-
this._lastCandidate = undefined;
|
|
54
|
-
this._onDidChange.fire(this._entries.length);
|
|
55
|
-
return toDisposable(() => {
|
|
56
|
-
if (entry) {
|
|
57
|
-
const idx = this._entries.indexOf(entry);
|
|
58
|
-
if (idx >= 0) {
|
|
59
|
-
this._entries.splice(idx, 1);
|
|
60
|
-
this._lastCandidate = undefined;
|
|
61
|
-
this._onDidChange.fire(this._entries.length);
|
|
62
|
-
entry = undefined;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
has(model) {
|
|
68
|
-
return this.all(model).length > 0;
|
|
69
|
-
}
|
|
70
|
-
all(model) {
|
|
71
|
-
if (!model) {
|
|
72
|
-
return [];
|
|
73
|
-
}
|
|
74
|
-
this._updateScores(model, false);
|
|
75
|
-
const result = [];
|
|
76
|
-
// from registry
|
|
77
|
-
for (const entry of this._entries) {
|
|
78
|
-
if (entry._score > 0) {
|
|
79
|
-
result.push(entry.provider);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
ordered(model, recursive = false) {
|
|
85
|
-
const result = [];
|
|
86
|
-
this._orderedForEach(model, recursive, entry => result.push(entry.provider));
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
orderedGroups(model) {
|
|
90
|
-
const result = [];
|
|
91
|
-
let lastBucket;
|
|
92
|
-
let lastBucketScore;
|
|
93
|
-
this._orderedForEach(model, false, entry => {
|
|
94
|
-
if (lastBucket && lastBucketScore === entry._score) {
|
|
95
|
-
lastBucket.push(entry.provider);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
lastBucketScore = entry._score;
|
|
99
|
-
lastBucket = [entry.provider];
|
|
100
|
-
result.push(lastBucket);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
_orderedForEach(model, recursive, callback) {
|
|
106
|
-
this._updateScores(model, recursive);
|
|
107
|
-
for (const entry of this._entries) {
|
|
108
|
-
if (entry._score > 0) {
|
|
109
|
-
callback(entry);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
_updateScores(model, recursive) {
|
|
114
|
-
const notebookInfo = this._notebookInfoResolver?.(model.uri);
|
|
115
|
-
// use the uri (scheme, pattern) of the notebook info iff we have one
|
|
116
|
-
// otherwise it's the model's/document's uri
|
|
117
|
-
const candidate = notebookInfo
|
|
118
|
-
? new MatchCandidate(model.uri, model.getLanguageId(), notebookInfo.uri, notebookInfo.type, recursive)
|
|
119
|
-
: new MatchCandidate(model.uri, model.getLanguageId(), undefined, undefined, recursive);
|
|
120
|
-
if (this._lastCandidate?.equals(candidate)) {
|
|
121
|
-
// nothing has changed
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
this._lastCandidate = candidate;
|
|
125
|
-
for (const entry of this._entries) {
|
|
126
|
-
entry._score = score(entry.selector, candidate.uri, candidate.languageId, shouldSynchronizeModel(model), candidate.notebookUri, candidate.notebookType);
|
|
127
|
-
if (isExclusive(entry.selector) && entry._score > 0) {
|
|
128
|
-
if (recursive) {
|
|
129
|
-
entry._score = 0;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
// support for one exclusive selector that overwrites
|
|
133
|
-
// any other selector
|
|
134
|
-
for (const entry of this._entries) {
|
|
135
|
-
entry._score = 0;
|
|
136
|
-
}
|
|
137
|
-
entry._score = 1000;
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
// needs sorting
|
|
143
|
-
this._entries.sort(LanguageFeatureRegistry._compareByScoreAndTime);
|
|
144
|
-
}
|
|
145
|
-
static _compareByScoreAndTime(a, b) {
|
|
146
|
-
if (a._score < b._score) {
|
|
147
|
-
return 1;
|
|
148
|
-
}
|
|
149
|
-
else if (a._score > b._score) {
|
|
150
|
-
return -1;
|
|
151
|
-
}
|
|
152
|
-
// De-prioritize built-in providers
|
|
153
|
-
if (isBuiltinSelector(a.selector) && !isBuiltinSelector(b.selector)) {
|
|
154
|
-
return 1;
|
|
155
|
-
}
|
|
156
|
-
else if (!isBuiltinSelector(a.selector) && isBuiltinSelector(b.selector)) {
|
|
157
|
-
return -1;
|
|
158
|
-
}
|
|
159
|
-
if (a._time < b._time) {
|
|
160
|
-
return 1;
|
|
161
|
-
}
|
|
162
|
-
else if (a._time > b._time) {
|
|
163
|
-
return -1;
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
return 0;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
function isBuiltinSelector(selector) {
|
|
171
|
-
if (typeof selector === 'string') {
|
|
172
|
-
return false;
|
|
173
|
-
}
|
|
174
|
-
if (Array.isArray(selector)) {
|
|
175
|
-
return selector.some(isBuiltinSelector);
|
|
176
|
-
}
|
|
177
|
-
return Boolean(selector.isBuiltin);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
export { LanguageFeatureRegistry };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';
|
|
2
|
-
|
|
3
|
-
/*---------------------------------------------------------------------------------------------
|
|
4
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
6
|
-
*--------------------------------------------------------------------------------------------*/
|
|
7
|
-
const ILanguageFeaturesService = createDecorator('ILanguageFeaturesService');
|
|
8
|
-
|
|
9
|
-
export { ILanguageFeaturesService };
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { LanguageFeatureRegistry } from '../languageFeatureRegistry.js';
|
|
2
|
-
import { ILanguageFeaturesService } from './languageFeatures.js';
|
|
3
|
-
import { registerSingleton } from '../../../platform/instantiation/common/extensions.js';
|
|
4
|
-
|
|
5
|
-
/*---------------------------------------------------------------------------------------------
|
|
6
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
7
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
8
|
-
*--------------------------------------------------------------------------------------------*/
|
|
9
|
-
class LanguageFeaturesService {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.referenceProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
12
|
-
this.renameProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
13
|
-
this.newSymbolNamesProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
14
|
-
this.codeActionProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
15
|
-
this.definitionProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
16
|
-
this.typeDefinitionProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
17
|
-
this.declarationProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
18
|
-
this.implementationProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
19
|
-
this.documentSymbolProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
20
|
-
this.inlayHintsProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
21
|
-
this.colorProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
22
|
-
this.codeLensProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
23
|
-
this.documentFormattingEditProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
24
|
-
this.documentRangeFormattingEditProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
25
|
-
this.onTypeFormattingEditProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
26
|
-
this.signatureHelpProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
27
|
-
this.hoverProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
28
|
-
this.documentHighlightProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
29
|
-
this.multiDocumentHighlightProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
30
|
-
this.selectionRangeProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
31
|
-
this.foldingRangeProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
32
|
-
this.linkProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
33
|
-
this.inlineCompletionsProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
34
|
-
this.completionProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
35
|
-
this.linkedEditingRangeProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
36
|
-
this.documentRangeSemanticTokensProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
37
|
-
this.documentSemanticTokensProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
38
|
-
this.documentDropEditProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
39
|
-
this.documentPasteEditProvider = new LanguageFeatureRegistry(this._score.bind(this));
|
|
40
|
-
}
|
|
41
|
-
_score(uri) {
|
|
42
|
-
return this._notebookTypeResolver?.(uri);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
registerSingleton(ILanguageFeaturesService, LanguageFeaturesService, 1 /* InstantiationType.Delayed */);
|
|
46
|
-
|
|
47
|
-
export { LanguageFeaturesService };
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { match } from '../../base/common/glob.js';
|
|
2
|
-
import { normalize } from '../../base/common/path.js';
|
|
3
|
-
|
|
4
|
-
/*---------------------------------------------------------------------------------------------
|
|
5
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
6
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
7
|
-
*--------------------------------------------------------------------------------------------*/
|
|
8
|
-
function score(selector, candidateUri, candidateLanguage, candidateIsSynchronized, candidateNotebookUri, candidateNotebookType) {
|
|
9
|
-
if (Array.isArray(selector)) {
|
|
10
|
-
// array -> take max individual value
|
|
11
|
-
let ret = 0;
|
|
12
|
-
for (const filter of selector) {
|
|
13
|
-
const value = score(filter, candidateUri, candidateLanguage, candidateIsSynchronized, candidateNotebookUri, candidateNotebookType);
|
|
14
|
-
if (value === 10) {
|
|
15
|
-
return value; // already at the highest
|
|
16
|
-
}
|
|
17
|
-
if (value > ret) {
|
|
18
|
-
ret = value;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return ret;
|
|
22
|
-
}
|
|
23
|
-
else if (typeof selector === 'string') {
|
|
24
|
-
if (!candidateIsSynchronized) {
|
|
25
|
-
return 0;
|
|
26
|
-
}
|
|
27
|
-
// short-hand notion, desugars to
|
|
28
|
-
// 'fooLang' -> { language: 'fooLang'}
|
|
29
|
-
// '*' -> { language: '*' }
|
|
30
|
-
if (selector === '*') {
|
|
31
|
-
return 5;
|
|
32
|
-
}
|
|
33
|
-
else if (selector === candidateLanguage) {
|
|
34
|
-
return 10;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
return 0;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else if (selector) {
|
|
41
|
-
// filter -> select accordingly, use defaults for scheme
|
|
42
|
-
const { language, pattern, scheme, hasAccessToAllModels, notebookType } = selector; // TODO: microsoft/TypeScript#42768
|
|
43
|
-
if (!candidateIsSynchronized && !hasAccessToAllModels) {
|
|
44
|
-
return 0;
|
|
45
|
-
}
|
|
46
|
-
// selector targets a notebook -> use the notebook uri instead
|
|
47
|
-
// of the "normal" document uri.
|
|
48
|
-
if (notebookType && candidateNotebookUri) {
|
|
49
|
-
candidateUri = candidateNotebookUri;
|
|
50
|
-
}
|
|
51
|
-
let ret = 0;
|
|
52
|
-
if (scheme) {
|
|
53
|
-
if (scheme === candidateUri.scheme) {
|
|
54
|
-
ret = 10;
|
|
55
|
-
}
|
|
56
|
-
else if (scheme === '*') {
|
|
57
|
-
ret = 5;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
return 0;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (language) {
|
|
64
|
-
if (language === candidateLanguage) {
|
|
65
|
-
ret = 10;
|
|
66
|
-
}
|
|
67
|
-
else if (language === '*') {
|
|
68
|
-
ret = Math.max(ret, 5);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
return 0;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (notebookType) {
|
|
75
|
-
if (notebookType === candidateNotebookType) {
|
|
76
|
-
ret = 10;
|
|
77
|
-
}
|
|
78
|
-
else if (notebookType === '*' && candidateNotebookType !== undefined) {
|
|
79
|
-
ret = Math.max(ret, 5);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
return 0;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (pattern) {
|
|
86
|
-
let normalizedPattern;
|
|
87
|
-
if (typeof pattern === 'string') {
|
|
88
|
-
normalizedPattern = pattern;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
// Since this pattern has a `base` property, we need
|
|
92
|
-
// to normalize this path first before passing it on
|
|
93
|
-
// because we will compare it against `Uri.fsPath`
|
|
94
|
-
// which uses platform specific separators.
|
|
95
|
-
// Refs: https://github.com/microsoft/vscode/issues/99938
|
|
96
|
-
normalizedPattern = { ...pattern, base: normalize(pattern.base) };
|
|
97
|
-
}
|
|
98
|
-
if (normalizedPattern === candidateUri.fsPath || match(normalizedPattern, candidateUri.fsPath)) {
|
|
99
|
-
ret = 10;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
return 0;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return ret;
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
return 0;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export { score };
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { Emitter, Event } from '../../../base/common/event.js';
|
|
2
|
-
import { Disposable } from '../../../base/common/lifecycle.js';
|
|
3
|
-
import { LanguagesRegistry } from './languagesRegistry.js';
|
|
4
|
-
import { TokenizationRegistry } from '../languages.js';
|
|
5
|
-
import { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';
|
|
6
|
-
import '../../../base/common/observableInternal/index.js';
|
|
7
|
-
import { observableFromEvent } from '../../../base/common/observableInternal/observables/observableFromEvent.js';
|
|
8
|
-
|
|
9
|
-
/*---------------------------------------------------------------------------------------------
|
|
10
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
11
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
12
|
-
*--------------------------------------------------------------------------------------------*/
|
|
13
|
-
class LanguageService extends Disposable {
|
|
14
|
-
static { this.instanceCount = 0; }
|
|
15
|
-
constructor(warnOnOverwrite = false) {
|
|
16
|
-
super();
|
|
17
|
-
this._onDidRequestBasicLanguageFeatures = this._register(new Emitter());
|
|
18
|
-
this.onDidRequestBasicLanguageFeatures = this._onDidRequestBasicLanguageFeatures.event;
|
|
19
|
-
this._onDidRequestRichLanguageFeatures = this._register(new Emitter());
|
|
20
|
-
this.onDidRequestRichLanguageFeatures = this._onDidRequestRichLanguageFeatures.event;
|
|
21
|
-
this._onDidChange = this._register(new Emitter({ leakWarningThreshold: 200 /* https://github.com/microsoft/vscode/issues/119968 */ }));
|
|
22
|
-
this.onDidChange = this._onDidChange.event;
|
|
23
|
-
this._requestedBasicLanguages = new Set();
|
|
24
|
-
this._requestedRichLanguages = new Set();
|
|
25
|
-
LanguageService.instanceCount++;
|
|
26
|
-
this._registry = this._register(new LanguagesRegistry(true, warnOnOverwrite));
|
|
27
|
-
this.languageIdCodec = this._registry.languageIdCodec;
|
|
28
|
-
this._register(this._registry.onDidChange(() => this._onDidChange.fire()));
|
|
29
|
-
}
|
|
30
|
-
dispose() {
|
|
31
|
-
LanguageService.instanceCount--;
|
|
32
|
-
super.dispose();
|
|
33
|
-
}
|
|
34
|
-
isRegisteredLanguageId(languageId) {
|
|
35
|
-
return this._registry.isRegisteredLanguageId(languageId);
|
|
36
|
-
}
|
|
37
|
-
getLanguageIdByLanguageName(languageName) {
|
|
38
|
-
return this._registry.getLanguageIdByLanguageName(languageName);
|
|
39
|
-
}
|
|
40
|
-
getLanguageIdByMimeType(mimeType) {
|
|
41
|
-
return this._registry.getLanguageIdByMimeType(mimeType);
|
|
42
|
-
}
|
|
43
|
-
guessLanguageIdByFilepathOrFirstLine(resource, firstLine) {
|
|
44
|
-
const languageIds = this._registry.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);
|
|
45
|
-
return languageIds.at(0) ?? null;
|
|
46
|
-
}
|
|
47
|
-
createById(languageId) {
|
|
48
|
-
return new LanguageSelection(this.onDidChange, () => {
|
|
49
|
-
return this._createAndGetLanguageIdentifier(languageId);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
createByFilepathOrFirstLine(resource, firstLine) {
|
|
53
|
-
return new LanguageSelection(this.onDidChange, () => {
|
|
54
|
-
const languageId = this.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);
|
|
55
|
-
return this._createAndGetLanguageIdentifier(languageId);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
_createAndGetLanguageIdentifier(languageId) {
|
|
59
|
-
if (!languageId || !this.isRegisteredLanguageId(languageId)) {
|
|
60
|
-
// Fall back to plain text if language is unknown
|
|
61
|
-
languageId = PLAINTEXT_LANGUAGE_ID;
|
|
62
|
-
}
|
|
63
|
-
return languageId;
|
|
64
|
-
}
|
|
65
|
-
requestBasicLanguageFeatures(languageId) {
|
|
66
|
-
if (!this._requestedBasicLanguages.has(languageId)) {
|
|
67
|
-
this._requestedBasicLanguages.add(languageId);
|
|
68
|
-
this._onDidRequestBasicLanguageFeatures.fire(languageId);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
requestRichLanguageFeatures(languageId) {
|
|
72
|
-
if (!this._requestedRichLanguages.has(languageId)) {
|
|
73
|
-
this._requestedRichLanguages.add(languageId);
|
|
74
|
-
// Ensure basic features are requested
|
|
75
|
-
this.requestBasicLanguageFeatures(languageId);
|
|
76
|
-
// Ensure tokenizers are created
|
|
77
|
-
TokenizationRegistry.getOrCreate(languageId);
|
|
78
|
-
this._onDidRequestRichLanguageFeatures.fire(languageId);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
class LanguageSelection {
|
|
83
|
-
constructor(onDidChangeLanguages, selector) {
|
|
84
|
-
this._value = observableFromEvent(this, onDidChangeLanguages, () => selector());
|
|
85
|
-
this.onDidChange = Event.fromObservable(this._value);
|
|
86
|
-
}
|
|
87
|
-
get languageId() {
|
|
88
|
-
return this._value.get();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export { LanguageService };
|