monaco-editor-core 0.55.0-dev-20251023 → 0.55.0-dev-20251025
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/esm/nls.messages.cs.js +1 -1
- package/esm/nls.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.pl.js +1 -1
- package/esm/nls.messages.pt-br.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.tr.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js +6 -7
- package/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js.map +1 -1
- package/esm/vs/base/browser/ui/iconLabel/iconLabel.js +11 -6
- package/esm/vs/base/browser/ui/iconLabel/iconLabel.js.map +1 -1
- package/esm/vs/base/browser/ui/iconLabel/iconlabel.css +5 -0
- package/esm/vs/base/browser/ui/toggle/toggle.js +2 -2
- package/esm/vs/base/browser/ui/toggle/toggle.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js +7 -0
- package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTree.js +3 -0
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTreeModel.js +20 -0
- package/esm/vs/base/browser/ui/tree/objectTreeModel.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +5 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/network.js +5 -1
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/platform.js +0 -1
- package/esm/vs/base/common/platform.js.map +1 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +13 -9
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +4 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +13 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.js +28 -1
- package/esm/vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +1 -0
- package/esm/vs/platform/configuration/common/configurationRegistry.js +12 -0
- package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +2 -0
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -0
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTree.js +9 -9
- package/esm/vs/platform/quickinput/browser/tree/quickInputTree.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +19 -26
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeSorter.js +46 -0
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeSorter.js.map +1 -0
- package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
- package/monaco.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.ts","vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.ts"],"names":[],"mappings":"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","file":"viewportSemanticTokens.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { getDocumentRangeSemanticTokens, hasDocumentRangeSemanticTokensProvider } from '../common/getSemanticTokens.js';\nimport { isSemanticColoringEnabled, SEMANTIC_HIGHLIGHTING_SETTING_ID } from '../common/semanticTokensConfig.js';\nimport { toMultilineTokens2 } from '../../../common/services/semanticTokensProviderStyling.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { DocumentRangeSemanticTokensProvider } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ISemanticTokensStylingService } from '../../../common/services/semanticTokensStyling.js';\n\nexport class ViewportSemanticTokensContribution extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.viewportSemanticTokens';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _provider: LanguageFeatureRegistry<DocumentRangeSemanticTokensProvider>;\n\tprivate readonly _debounceInformation: IFeatureDebounceInformation;\n\tprivate readonly _tokenizeViewport: RunOnceScheduler;\n\tprivate _outstandingRequests: CancelablePromise<any>[];\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ISemanticTokensStylingService private readonly _semanticTokensStylingService: ISemanticTokensStylingService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._provider = languageFeaturesService.documentRangeSemanticTokensProvider;\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(this._provider, 'DocumentRangeSemanticTokens', { min: 100, max: 500 });\n\t\tthis._tokenizeViewport = this._register(new RunOnceScheduler(() => this._tokenizeViewportNow(), 100));\n\t\tthis._outstandingRequests = [];\n\t\tconst scheduleTokenizeViewport = () => {\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tthis._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()));\n\t\t\t}\n\t\t};\n\t\tthis._register(this._editor.onDidScrollChange(() => {\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModel(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModelContent((e) => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._provider.onDidChange(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\n\t\t\t\tthis._cancelAll();\n\t\t\t\tscheduleTokenizeViewport();\n\t\t\t}\n\t\t}));\n\t\tthis._register(this._themeService.onDidColorThemeChange(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tscheduleTokenizeViewport();\n\t}\n\n\tprivate _cancelAll(): void {\n\t\tfor (const request of this._outstandingRequests) {\n\t\t\trequest.cancel();\n\t\t}\n\t\tthis._outstandingRequests = [];\n\t}\n\n\tprivate _removeOutstandingRequest(req: CancelablePromise<any>): void {\n\t\tfor (let i = 0, len = this._outstandingRequests.length; i < len; i++) {\n\t\t\tif (this._outstandingRequests[i] === req) {\n\t\t\t\tthis._outstandingRequests.splice(i, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _tokenizeViewportNow(): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tif (model.tokenization.hasCompleteSemanticTokens()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!isSemanticColoringEnabled(model, this._themeService, this._configurationService)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!hasDocumentRangeSemanticTokensProvider(this._provider, model)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n\n\t\tthis._outstandingRequests = this._outstandingRequests.concat(visibleRanges.map(range => this._requestRange(model, range)));\n\t}\n\n\tprivate _requestRange(model: ITextModel, range: Range): CancelablePromise<any> {\n\t\tconst requestVersionId = model.getVersionId();\n\t\tconst request = createCancelablePromise(token => Promise.resolve(getDocumentRangeSemanticTokens(this._provider, model, range, token)));\n\t\tconst sw = new StopWatch(false);\n\t\trequest.then((r) => {\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\tif (!r || !r.tokens || model.isDisposed() || model.getVersionId() !== requestVersionId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { provider, tokens: result } = r;\n\t\t\tconst styling = this._semanticTokensStylingService.getStyling(provider);\n\t\t\tmodel.tokenization.setPartialSemanticTokens(range, toMultilineTokens2(result, styling, model.getLanguageId()));\n\t\t}).then(() => this._removeOutstandingRequest(request), () => this._removeOutstandingRequest(request));\n\t\treturn request;\n\t}\n}\n\nregisterEditorContribution(ViewportSemanticTokensContribution.ID, ViewportSemanticTokensContribution, EditorContributionInstantiation.AfterFirstRender);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { getDocumentRangeSemanticTokens, hasDocumentRangeSemanticTokensProvider } from '../common/getSemanticTokens.js';\nimport { isSemanticColoringEnabled, SEMANTIC_HIGHLIGHTING_SETTING_ID } from '../common/semanticTokensConfig.js';\nimport { toMultilineTokens2 } from '../../../common/services/semanticTokensProviderStyling.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { DocumentRangeSemanticTokensProvider } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ISemanticTokensStylingService } from '../../../common/services/semanticTokensStyling.js';\n\nexport class ViewportSemanticTokensContribution extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.viewportSemanticTokens';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _provider: LanguageFeatureRegistry<DocumentRangeSemanticTokensProvider>;\n\tprivate readonly _debounceInformation: IFeatureDebounceInformation;\n\tprivate readonly _tokenizeViewport: RunOnceScheduler;\n\tprivate _outstandingRequests: CancelablePromise<any>[];\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ISemanticTokensStylingService private readonly _semanticTokensStylingService: ISemanticTokensStylingService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._provider = languageFeaturesService.documentRangeSemanticTokensProvider;\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(this._provider, 'DocumentRangeSemanticTokens', { min: 100, max: 500 });\n\t\tthis._tokenizeViewport = this._register(new RunOnceScheduler(() => this._tokenizeViewportNow(), 100));\n\t\tthis._outstandingRequests = [];\n\t\tconst scheduleTokenizeViewport = () => {\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tthis._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()));\n\t\t\t}\n\t\t};\n\t\tthis._register(this._editor.onDidScrollChange(() => {\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModel(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModelContent((e) => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._provider.onDidChange(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\n\t\t\t\tthis._cancelAll();\n\t\t\t\tscheduleTokenizeViewport();\n\t\t\t}\n\t\t}));\n\t\tthis._register(this._themeService.onDidColorThemeChange(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tscheduleTokenizeViewport();\n\t}\n\n\tprivate _cancelAll(): void {\n\t\tfor (const request of this._outstandingRequests) {\n\t\t\trequest.cancel();\n\t\t}\n\t\tthis._outstandingRequests = [];\n\t}\n\n\tprivate _removeOutstandingRequest(req: CancelablePromise<any>): void {\n\t\tfor (let i = 0, len = this._outstandingRequests.length; i < len; i++) {\n\t\t\tif (this._outstandingRequests[i] === req) {\n\t\t\t\tthis._outstandingRequests.splice(i, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _tokenizeViewportNow(): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tif (model.tokenization.hasCompleteSemanticTokens()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!isSemanticColoringEnabled(model, this._themeService, this._configurationService)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!hasDocumentRangeSemanticTokensProvider(this._provider, model)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n\n\t\tthis._outstandingRequests = this._outstandingRequests.concat(visibleRanges.map(range => this._requestRange(model, range)));\n\t}\n\n\tprivate _requestRange(model: ITextModel, range: Range): CancelablePromise<any> {\n\t\tconst requestVersionId = model.getVersionId();\n\t\tconst request = createCancelablePromise(token => Promise.resolve(getDocumentRangeSemanticTokens(this._provider, model, range, token)));\n\t\tconst sw = new StopWatch(false);\n\t\trequest.then((r) => {\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\tif (!r || !r.tokens || model.isDisposed() || model.getVersionId() !== requestVersionId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { provider, tokens: result } = r;\n\t\t\tconst styling = this._semanticTokensStylingService.getStyling(provider);\n\t\t\tmodel.tokenization.setPartialSemanticTokens(range, toMultilineTokens2(result, styling, model.getLanguageId()));\n\t\t}).then(() => this._removeOutstandingRequest(request), () => this._removeOutstandingRequest(request));\n\t\treturn request;\n\t}\n}\n\nregisterEditorContribution(ViewportSemanticTokensContribution.ID, ViewportSemanticTokensContribution, EditorContributionInstantiation.AfterFirstRender);\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.ts","vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.ts"],"names":[],"mappings":"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","file":"viewportSemanticTokens.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable, dispose, IDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { getDocumentRangeSemanticTokens, hasDocumentRangeSemanticTokensProvider } from '../common/getSemanticTokens.js';\nimport { isSemanticColoringEnabled, SEMANTIC_HIGHLIGHTING_SETTING_ID } from '../common/semanticTokensConfig.js';\nimport { toMultilineTokens2 } from '../../../common/services/semanticTokensProviderStyling.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { DocumentRangeSemanticTokensProvider } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ISemanticTokensStylingService } from '../../../common/services/semanticTokensStyling.js';\n\nexport class ViewportSemanticTokensContribution extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.viewportSemanticTokens';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _provider: LanguageFeatureRegistry<DocumentRangeSemanticTokensProvider>;\n\tprivate readonly _debounceInformation: IFeatureDebounceInformation;\n\tprivate readonly _tokenizeViewport: RunOnceScheduler;\n\tprivate _outstandingRequests: CancelablePromise<any>[];\n\tprivate _rangeProvidersChangeListeners: IDisposable[];\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ISemanticTokensStylingService private readonly _semanticTokensStylingService: ISemanticTokensStylingService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._provider = languageFeaturesService.documentRangeSemanticTokensProvider;\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(this._provider, 'DocumentRangeSemanticTokens', { min: 100, max: 500 });\n\t\tthis._tokenizeViewport = this._register(new RunOnceScheduler(() => this._tokenizeViewportNow(), 100));\n\t\tthis._outstandingRequests = [];\n\t\tthis._rangeProvidersChangeListeners = [];\n\t\tconst scheduleTokenizeViewport = () => {\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tthis._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()));\n\t\t\t}\n\t\t};\n\t\tconst bindRangeProvidersChangeListeners = () => {\n\t\t\tthis._cleanupProviderListeners();\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tconst model = this._editor.getModel();\n\t\t\t\tfor (const provider of this._provider.all(model)) {\n\t\t\t\t\tconst disposable = provider.onDidChange?.(() => {\n\t\t\t\t\t\tthis._cancelAll();\n\t\t\t\t\t\tscheduleTokenizeViewport();\n\t\t\t\t\t});\n\t\t\t\t\tif (disposable) {\n\t\t\t\t\t\tthis._rangeProvidersChangeListeners.push(disposable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis._register(this._editor.onDidScrollChange(() => {\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModel(() => {\n\t\t\tbindRangeProvidersChangeListeners();\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModelContent((e) => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\n\t\tbindRangeProvidersChangeListeners();\n\t\tthis._register(this._provider.onDidChange(() => {\n\t\t\tbindRangeProvidersChangeListeners();\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\n\t\t\t\tthis._cancelAll();\n\t\t\t\tscheduleTokenizeViewport();\n\t\t\t}\n\t\t}));\n\t\tthis._register(this._themeService.onDidColorThemeChange(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tscheduleTokenizeViewport();\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._cleanupProviderListeners();\n\t\tsuper.dispose();\n\t}\n\n\tprivate _cleanupProviderListeners(): void {\n\t\tdispose(this._rangeProvidersChangeListeners);\n\t\tthis._rangeProvidersChangeListeners = [];\n\t}\n\n\tprivate _cancelAll(): void {\n\t\tfor (const request of this._outstandingRequests) {\n\t\t\trequest.cancel();\n\t\t}\n\t\tthis._outstandingRequests = [];\n\t}\n\n\tprivate _removeOutstandingRequest(req: CancelablePromise<any>): void {\n\t\tfor (let i = 0, len = this._outstandingRequests.length; i < len; i++) {\n\t\t\tif (this._outstandingRequests[i] === req) {\n\t\t\t\tthis._outstandingRequests.splice(i, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _tokenizeViewportNow(): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tif (model.tokenization.hasCompleteSemanticTokens()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!isSemanticColoringEnabled(model, this._themeService, this._configurationService)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!hasDocumentRangeSemanticTokensProvider(this._provider, model)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n\n\t\tthis._outstandingRequests = this._outstandingRequests.concat(visibleRanges.map(range => this._requestRange(model, range)));\n\t}\n\n\tprivate _requestRange(model: ITextModel, range: Range): CancelablePromise<any> {\n\t\tconst requestVersionId = model.getVersionId();\n\t\tconst request = createCancelablePromise(token => Promise.resolve(getDocumentRangeSemanticTokens(this._provider, model, range, token)));\n\t\tconst sw = new StopWatch(false);\n\t\trequest.then((r) => {\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\tif (!r || !r.tokens || model.isDisposed() || model.getVersionId() !== requestVersionId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { provider, tokens: result } = r;\n\t\t\tconst styling = this._semanticTokensStylingService.getStyling(provider);\n\t\t\tmodel.tokenization.setPartialSemanticTokens(range, toMultilineTokens2(result, styling, model.getLanguageId()));\n\t\t}).then(() => this._removeOutstandingRequest(request), () => this._removeOutstandingRequest(request));\n\t\treturn request;\n\t}\n}\n\nregisterEditorContribution(ViewportSemanticTokensContribution.ID, ViewportSemanticTokensContribution, EditorContributionInstantiation.AfterFirstRender);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable, dispose, IDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { getDocumentRangeSemanticTokens, hasDocumentRangeSemanticTokensProvider } from '../common/getSemanticTokens.js';\nimport { isSemanticColoringEnabled, SEMANTIC_HIGHLIGHTING_SETTING_ID } from '../common/semanticTokensConfig.js';\nimport { toMultilineTokens2 } from '../../../common/services/semanticTokensProviderStyling.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { DocumentRangeSemanticTokensProvider } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ISemanticTokensStylingService } from '../../../common/services/semanticTokensStyling.js';\n\nexport class ViewportSemanticTokensContribution extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.viewportSemanticTokens';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _provider: LanguageFeatureRegistry<DocumentRangeSemanticTokensProvider>;\n\tprivate readonly _debounceInformation: IFeatureDebounceInformation;\n\tprivate readonly _tokenizeViewport: RunOnceScheduler;\n\tprivate _outstandingRequests: CancelablePromise<any>[];\n\tprivate _rangeProvidersChangeListeners: IDisposable[];\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ISemanticTokensStylingService private readonly _semanticTokensStylingService: ISemanticTokensStylingService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._provider = languageFeaturesService.documentRangeSemanticTokensProvider;\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(this._provider, 'DocumentRangeSemanticTokens', { min: 100, max: 500 });\n\t\tthis._tokenizeViewport = this._register(new RunOnceScheduler(() => this._tokenizeViewportNow(), 100));\n\t\tthis._outstandingRequests = [];\n\t\tthis._rangeProvidersChangeListeners = [];\n\t\tconst scheduleTokenizeViewport = () => {\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tthis._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()));\n\t\t\t}\n\t\t};\n\t\tconst bindRangeProvidersChangeListeners = () => {\n\t\t\tthis._cleanupProviderListeners();\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tconst model = this._editor.getModel();\n\t\t\t\tfor (const provider of this._provider.all(model)) {\n\t\t\t\t\tconst disposable = provider.onDidChange?.(() => {\n\t\t\t\t\t\tthis._cancelAll();\n\t\t\t\t\t\tscheduleTokenizeViewport();\n\t\t\t\t\t});\n\t\t\t\t\tif (disposable) {\n\t\t\t\t\t\tthis._rangeProvidersChangeListeners.push(disposable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis._register(this._editor.onDidScrollChange(() => {\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModel(() => {\n\t\t\tbindRangeProvidersChangeListeners();\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._editor.onDidChangeModelContent((e) => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\n\t\tbindRangeProvidersChangeListeners();\n\t\tthis._register(this._provider.onDidChange(() => {\n\t\t\tbindRangeProvidersChangeListeners();\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\n\t\t\t\tthis._cancelAll();\n\t\t\t\tscheduleTokenizeViewport();\n\t\t\t}\n\t\t}));\n\t\tthis._register(this._themeService.onDidColorThemeChange(() => {\n\t\t\tthis._cancelAll();\n\t\t\tscheduleTokenizeViewport();\n\t\t}));\n\t\tscheduleTokenizeViewport();\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._cleanupProviderListeners();\n\t\tsuper.dispose();\n\t}\n\n\tprivate _cleanupProviderListeners(): void {\n\t\tdispose(this._rangeProvidersChangeListeners);\n\t\tthis._rangeProvidersChangeListeners = [];\n\t}\n\n\tprivate _cancelAll(): void {\n\t\tfor (const request of this._outstandingRequests) {\n\t\t\trequest.cancel();\n\t\t}\n\t\tthis._outstandingRequests = [];\n\t}\n\n\tprivate _removeOutstandingRequest(req: CancelablePromise<any>): void {\n\t\tfor (let i = 0, len = this._outstandingRequests.length; i < len; i++) {\n\t\t\tif (this._outstandingRequests[i] === req) {\n\t\t\t\tthis._outstandingRequests.splice(i, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _tokenizeViewportNow(): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tif (model.tokenization.hasCompleteSemanticTokens()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!isSemanticColoringEnabled(model, this._themeService, this._configurationService)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!hasDocumentRangeSemanticTokensProvider(this._provider, model)) {\n\t\t\tif (model.tokenization.hasSomeSemanticTokens()) {\n\t\t\t\tmodel.tokenization.setSemanticTokens(null, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n\n\t\tthis._outstandingRequests = this._outstandingRequests.concat(visibleRanges.map(range => this._requestRange(model, range)));\n\t}\n\n\tprivate _requestRange(model: ITextModel, range: Range): CancelablePromise<any> {\n\t\tconst requestVersionId = model.getVersionId();\n\t\tconst request = createCancelablePromise(token => Promise.resolve(getDocumentRangeSemanticTokens(this._provider, model, range, token)));\n\t\tconst sw = new StopWatch(false);\n\t\trequest.then((r) => {\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\tif (!r || !r.tokens || model.isDisposed() || model.getVersionId() !== requestVersionId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { provider, tokens: result } = r;\n\t\t\tconst styling = this._semanticTokensStylingService.getStyling(provider);\n\t\t\tmodel.tokenization.setPartialSemanticTokens(range, toMultilineTokens2(result, styling, model.getLanguageId()));\n\t\t}).then(() => this._removeOutstandingRequest(request), () => this._removeOutstandingRequest(request));\n\t\treturn request;\n\t}\n}\n\nregisterEditorContribution(ViewportSemanticTokensContribution.ID, ViewportSemanticTokensContribution, EditorContributionInstantiation.AfterFirstRender);\n"]}
|
|
@@ -105,6 +105,12 @@ class ConfigurationRegistry extends Disposable {
|
|
|
105
105
|
}
|
|
106
106
|
updateDefaultOverrideProperty(key, newDefaultOverride, source) {
|
|
107
107
|
const property = {
|
|
108
|
+
section: {
|
|
109
|
+
id: this.defaultLanguageConfigurationOverridesNode.id,
|
|
110
|
+
title: this.defaultLanguageConfigurationOverridesNode.title,
|
|
111
|
+
order: this.defaultLanguageConfigurationOverridesNode.order,
|
|
112
|
+
extensionInfo: this.defaultLanguageConfigurationOverridesNode.extensionInfo
|
|
113
|
+
},
|
|
108
114
|
type: 'object',
|
|
109
115
|
default: newDefaultOverride.value,
|
|
110
116
|
description: nls.localize(1661, "Configure settings to be overridden for {0}.", getLanguageTagSettingPlainKey(key)),
|
|
@@ -198,6 +204,12 @@ class ConfigurationRegistry extends Disposable {
|
|
|
198
204
|
if (properties) {
|
|
199
205
|
for (const key in properties) {
|
|
200
206
|
const property = properties[key];
|
|
207
|
+
property.section = {
|
|
208
|
+
id: configuration.id,
|
|
209
|
+
title: configuration.title,
|
|
210
|
+
order: configuration.order,
|
|
211
|
+
extensionInfo: configuration.extensionInfo
|
|
212
|
+
};
|
|
201
213
|
if (validate && validateProperty(key, property)) {
|
|
202
214
|
delete properties[key];
|
|
203
215
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/platform/configuration/common/configurationRegistry.ts"],"names":[],"mappings":"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","file":"configurationRegistry.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { distinct } from '../../../base/common/arrays.js';\nimport { IStringDictionary } from '../../../base/common/collections.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { IJSONSchema } from '../../../base/common/jsonSchema.js';\nimport * as types from '../../../base/common/types.js';\nimport * as nls from '../../../nls.js';\nimport { getLanguageTagSettingPlainKey } from './configuration.js';\nimport { Extensions as JSONExtensions, IJSONContributionRegistry } from '../../jsonschemas/common/jsonContributionRegistry.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { IPolicy, PolicyName } from '../../../base/common/policy.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\n\nexport const Extensions = {\n\tConfiguration: 'base.contributions.configuration'\n};\n\nexport interface IConfigurationRegistry {\n\n\t/**\n\t * Register a configuration to the registry.\n\t */\n\tregisterConfiguration(configuration: IConfigurationNode): IConfigurationNode;\n\n\t/**\n\t * Register multiple default configurations to the registry.\n\t */\n\tregisterDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[]): void;\n\n\t/**\n\t * Returns all configurations settings of all configuration nodes contributed to this registry.\n\t */\n\tgetConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\n\t/**\n\t * Returns all excluded configurations settings of all configuration nodes contributed to this registry.\n\t */\n\tgetExcludedConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\n\t/**\n\t * Register the identifiers for editor configurations\n\t */\n\tregisterOverrideIdentifiers(identifiers: string[]): void;\n}\n\nexport const enum ConfigurationScope {\n\t/**\n\t * Application specific configuration, which can be configured only in default profile user settings.\n\t */\n\tAPPLICATION = 1,\n\t/**\n\t * Machine specific configuration, which can be configured only in local and remote user settings.\n\t */\n\tMACHINE,\n\t/**\n\t * An application machine specific configuration, which can be configured only in default profile user settings and remote user settings.\n\t */\n\tAPPLICATION_MACHINE,\n\t/**\n\t * Window specific configuration, which can be configured in the user or workspace settings.\n\t */\n\tWINDOW,\n\t/**\n\t * Resource specific configuration, which can be configured in the user, workspace or folder settings.\n\t */\n\tRESOURCE,\n\t/**\n\t * Resource specific configuration that can be configured in language specific settings\n\t */\n\tLANGUAGE_OVERRIDABLE,\n\t/**\n\t * Machine specific configuration that can also be configured in workspace or folder settings.\n\t */\n\tMACHINE_OVERRIDABLE,\n}\n\n\nexport interface IConfigurationPropertySchema extends IJSONSchema {\n\n\tscope?: ConfigurationScope;\n\n\t/**\n\t * When restricted, value of this configuration will be read only from trusted sources.\n\t * For eg., If the workspace is not trusted, then the value of this configuration is not read from workspace settings file.\n\t */\n\trestricted?: boolean;\n\n\t/**\n\t * When `false` this property is excluded from the registry. Default is to include.\n\t */\n\tincluded?: boolean;\n\n\t/**\n\t * List of tags associated to the property.\n\t * - A tag can be used for filtering\n\t * - Use `experimental` tag for marking the setting as experimental.\n\t */\n\ttags?: string[];\n\n\t/**\n\t * Disallow extensions to contribute configuration default value for this setting.\n\t */\n\tdisallowConfigurationDefault?: boolean;\n\n\t/**\n\t * When specified, this setting's value can always be overwritten by\n\t * a system-wide policy.\n\t */\n\tpolicy?: IPolicy;\n\n\t/**\n\t * When specified, this setting's default value can always be overwritten by\n\t * an experiment.\n\t */\n\texperiment?: {\n\t\t/**\n\t\t * The mode of the experiment.\n\t\t * - `startup`: The setting value is updated to the experiment value only on startup.\n\t\t * - `auto`: The setting value is updated to the experiment value automatically (whenever the experiment value changes).\n\t\t */\n\t\tmode: 'startup' | 'auto';\n\n\t\t/**\n\t\t * The name of the experiment. By default, this is `config.${settingId}`\n\t\t */\n\t\tname?: string;\n\t};\n}\n\nexport interface IExtensionInfo {\n}\n\nexport interface IConfigurationNode {\n\tid?: string;\n\torder?: number;\n\ttype?: string | string[];\n\ttitle?: string;\n\tproperties?: IStringDictionary<IConfigurationPropertySchema>;\n\tallOf?: IConfigurationNode[];\n\tscope?: ConfigurationScope;\n\textensionInfo?: IExtensionInfo;\n\trestrictedProperties?: string[];\n}\n\nexport type ConfigurationDefaultValueSource = IExtensionInfo | Map<string, IExtensionInfo>;\n\nexport interface IConfigurationDefaults {\n\toverrides: IStringDictionary<any>;\n\tsource?: IExtensionInfo;\n}\n\nexport type IRegisteredConfigurationPropertySchema = IConfigurationPropertySchema & {\n\tdefaultDefaultValue?: any;\n\tsource?: IExtensionInfo; // Source of the Property\n\tdefaultValueSource?: ConfigurationDefaultValueSource; // Source of the Default Value\n};\n\nexport interface IConfigurationDefaultOverride {\n\treadonly value: any;\n\treadonly source?: IExtensionInfo; // Source of the default override\n}\n\nexport interface IConfigurationDefaultOverrideValue {\n\treadonly value: any;\n\treadonly source?: ConfigurationDefaultValueSource;\n}\n\nexport const allSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const applicationSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const applicationMachineSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const machineSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const machineOverridableSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const windowSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const resourceSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\n\nexport const resourceLanguageSettingsSchemaId = 'vscode://schemas/settings/resourceLanguage';\n\nconst contributionRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);\n\nclass ConfigurationRegistry extends Disposable implements IConfigurationRegistry {\n\n\tprivate readonly registeredConfigurationDefaults: IConfigurationDefaults[] = [];\n\tprivate readonly configurationDefaultsOverrides: Map<string, { configurationDefaultOverrides: IConfigurationDefaultOverride[]; configurationDefaultOverrideValue?: IConfigurationDefaultOverrideValue }>;\n\tprivate readonly defaultLanguageConfigurationOverridesNode: IConfigurationNode;\n\tprivate readonly configurationContributors: IConfigurationNode[];\n\tprivate readonly configurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\tprivate readonly policyConfigurations: Map<PolicyName, string>;\n\tprivate readonly excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\tprivate readonly resourceLanguageSettingsSchema: IJSONSchema;\n\tprivate readonly overrideIdentifiers = new Set<string>();\n\n\tprivate readonly _onDidSchemaChange = this._register(new Emitter<void>());\n\n\tprivate readonly _onDidUpdateConfiguration = this._register(new Emitter<{ properties: ReadonlySet<string>; defaultsOverrides?: boolean }>());\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.configurationDefaultsOverrides = new Map();\n\t\tthis.defaultLanguageConfigurationOverridesNode = {\n\t\t\tid: 'defaultOverrides',\n\t\t\ttitle: nls.localize('defaultLanguageConfigurationOverrides.title', \"Default Language Configuration Overrides\"),\n\t\t\tproperties: {}\n\t\t};\n\t\tthis.configurationContributors = [this.defaultLanguageConfigurationOverridesNode];\n\t\tthis.resourceLanguageSettingsSchema = {\n\t\t\tproperties: {},\n\t\t\tpatternProperties: {},\n\t\t\tadditionalProperties: true,\n\t\t\tallowTrailingCommas: true,\n\t\t\tallowComments: true\n\t\t};\n\t\tthis.configurationProperties = {};\n\t\tthis.policyConfigurations = new Map<PolicyName, string>();\n\t\tthis.excludedConfigurationProperties = {};\n\n\t\tcontributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\n\t\tthis.registerOverridePropertyPatternKey();\n\t}\n\n\tpublic registerConfiguration(configuration: IConfigurationNode, validate: boolean = true): IConfigurationNode {\n\t\tthis.registerConfigurations([configuration], validate);\n\t\treturn configuration;\n\t}\n\n\tpublic registerConfigurations(configurations: IConfigurationNode[], validate: boolean = true): void {\n\t\tconst properties = new Set<string>();\n\t\tthis.doRegisterConfigurations(configurations, validate, properties);\n\n\t\tcontributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\n\t\tthis._onDidSchemaChange.fire();\n\t\tthis._onDidUpdateConfiguration.fire({ properties });\n\t}\n\n\tpublic registerDefaultConfigurations(configurationDefaults: IConfigurationDefaults[]): void {\n\t\tconst properties = new Set<string>();\n\t\tthis.doRegisterDefaultConfigurations(configurationDefaults, properties);\n\t\tthis._onDidSchemaChange.fire();\n\t\tthis._onDidUpdateConfiguration.fire({ properties, defaultsOverrides: true });\n\t}\n\n\tprivate doRegisterDefaultConfigurations(configurationDefaults: IConfigurationDefaults[], bucket: Set<string>) {\n\n\t\tthis.registeredConfigurationDefaults.push(...configurationDefaults);\n\n\t\tconst overrideIdentifiers: string[] = [];\n\n\t\tfor (const { overrides, source } of configurationDefaults) {\n\t\t\tfor (const key in overrides) {\n\t\t\t\tbucket.add(key);\n\n\t\t\t\tconst configurationDefaultOverridesForKey = this.configurationDefaultsOverrides.get(key)\n\t\t\t\t\t?? this.configurationDefaultsOverrides.set(key, { configurationDefaultOverrides: [] }).get(key)!;\n\n\t\t\t\tconst value = overrides[key];\n\t\t\t\tconfigurationDefaultOverridesForKey.configurationDefaultOverrides.push({ value, source });\n\n\t\t\t\t// Configuration defaults for Override Identifiers\n\t\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\t\tconst newDefaultOverride = this.mergeDefaultConfigurationsForOverrideIdentifier(key, value, source, configurationDefaultOverridesForKey.configurationDefaultOverrideValue);\n\t\t\t\t\tif (!newDefaultOverride) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconfigurationDefaultOverridesForKey.configurationDefaultOverrideValue = newDefaultOverride;\n\t\t\t\t\tthis.updateDefaultOverrideProperty(key, newDefaultOverride, source);\n\t\t\t\t\toverrideIdentifiers.push(...overrideIdentifiersFromKey(key));\n\t\t\t\t}\n\n\t\t\t\t// Configuration defaults for Configuration Properties\n\t\t\t\telse {\n\t\t\t\t\tconst newDefaultOverride = this.mergeDefaultConfigurationsForConfigurationProperty(key, value, source, configurationDefaultOverridesForKey.configurationDefaultOverrideValue);\n\t\t\t\t\tif (!newDefaultOverride) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconfigurationDefaultOverridesForKey.configurationDefaultOverrideValue = newDefaultOverride;\n\t\t\t\t\tconst property = this.configurationProperties[key];\n\t\t\t\t\tif (property) {\n\t\t\t\t\t\tthis.updatePropertyDefaultValue(key, property);\n\t\t\t\t\t\tthis.updateSchema(key, property);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tthis.doRegisterOverrideIdentifiers(overrideIdentifiers);\n\t}\n\n\tprivate updateDefaultOverrideProperty(key: string, newDefaultOverride: IConfigurationDefaultOverrideValue, source: IExtensionInfo | undefined): void {\n\t\tconst property: IRegisteredConfigurationPropertySchema = {\n\t\t\ttype: 'object',\n\t\t\tdefault: newDefaultOverride.value,\n\t\t\tdescription: nls.localize('defaultLanguageConfiguration.description', \"Configure settings to be overridden for {0}.\", getLanguageTagSettingPlainKey(key)),\n\t\t\t$ref: resourceLanguageSettingsSchemaId,\n\t\t\tdefaultDefaultValue: newDefaultOverride.value,\n\t\t\tsource,\n\t\t\tdefaultValueSource: source\n\t\t};\n\t\tthis.configurationProperties[key] = property;\n\t\tthis.defaultLanguageConfigurationOverridesNode.properties![key] = property;\n\t}\n\n\tprivate mergeDefaultConfigurationsForOverrideIdentifier(overrideIdentifier: string, configurationValueObject: IStringDictionary<any>, valueSource: IExtensionInfo | undefined, existingDefaultOverride: IConfigurationDefaultOverrideValue | undefined): IConfigurationDefaultOverrideValue | undefined {\n\t\tconst defaultValue = existingDefaultOverride?.value || {};\n\t\tconst source = existingDefaultOverride?.source ?? new Map<string, IExtensionInfo>();\n\n\t\t// This should not happen\n\t\tif (!(source instanceof Map)) {\n\t\t\tconsole.error('objectConfigurationSources is not a Map');\n\t\t\treturn undefined;\n\t\t}\n\n\t\tfor (const propertyKey of Object.keys(configurationValueObject)) {\n\t\t\tconst propertyDefaultValue = configurationValueObject[propertyKey];\n\n\t\t\tconst isObjectSetting = types.isObject(propertyDefaultValue) &&\n\t\t\t\t(types.isUndefined(defaultValue[propertyKey]) || types.isObject(defaultValue[propertyKey]));\n\n\t\t\t// If the default value is an object, merge the objects and store the source of each keys\n\t\t\tif (isObjectSetting) {\n\t\t\t\tdefaultValue[propertyKey] = { ...(defaultValue[propertyKey] ?? {}), ...propertyDefaultValue };\n\t\t\t\t// Track the source of each value in the object\n\t\t\t\tif (valueSource) {\n\t\t\t\t\tfor (const objectKey in propertyDefaultValue) {\n\t\t\t\t\t\tsource.set(`${propertyKey}.${objectKey}`, valueSource);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Primitive values are overridden\n\t\t\telse {\n\t\t\t\tdefaultValue[propertyKey] = propertyDefaultValue;\n\t\t\t\tif (valueSource) {\n\t\t\t\t\tsource.set(propertyKey, valueSource);\n\t\t\t\t} else {\n\t\t\t\t\tsource.delete(propertyKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { value: defaultValue, source };\n\t}\n\n\tprivate mergeDefaultConfigurationsForConfigurationProperty(propertyKey: string, value: any, valuesSource: IExtensionInfo | undefined, existingDefaultOverride: IConfigurationDefaultOverrideValue | undefined): IConfigurationDefaultOverrideValue | undefined {\n\t\tconst property = this.configurationProperties[propertyKey];\n\t\tconst existingDefaultValue = existingDefaultOverride?.value ?? property?.defaultDefaultValue;\n\t\tlet source: ConfigurationDefaultValueSource | undefined = valuesSource;\n\n\t\tconst isObjectSetting = types.isObject(value) &&\n\t\t\t(\n\t\t\t\tproperty !== undefined && property.type === 'object' ||\n\t\t\t\tproperty === undefined && (types.isUndefined(existingDefaultValue) || types.isObject(existingDefaultValue))\n\t\t\t);\n\n\t\t// If the default value is an object, merge the objects and store the source of each keys\n\t\tif (isObjectSetting) {\n\t\t\tsource = existingDefaultOverride?.source ?? new Map<string, IExtensionInfo>();\n\n\t\t\t// This should not happen\n\t\t\tif (!(source instanceof Map)) {\n\t\t\t\tconsole.error('defaultValueSource is not a Map');\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tfor (const objectKey in value) {\n\t\t\t\tif (valuesSource) {\n\t\t\t\t\tsource.set(`${propertyKey}.${objectKey}`, valuesSource);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = { ...(types.isObject(existingDefaultValue) ? existingDefaultValue : {}), ...value };\n\t\t}\n\n\t\treturn { value, source };\n\t}\n\n\tpublic registerOverrideIdentifiers(overrideIdentifiers: string[]): void {\n\t\tthis.doRegisterOverrideIdentifiers(overrideIdentifiers);\n\t\tthis._onDidSchemaChange.fire();\n\t}\n\n\tprivate doRegisterOverrideIdentifiers(overrideIdentifiers: string[]) {\n\t\tfor (const overrideIdentifier of overrideIdentifiers) {\n\t\t\tthis.overrideIdentifiers.add(overrideIdentifier);\n\t\t}\n\t\tthis.updateOverridePropertyPatternKey();\n\t}\n\n\tprivate doRegisterConfigurations(configurations: IConfigurationNode[], validate: boolean, bucket: Set<string>): void {\n\n\t\tconfigurations.forEach(configuration => {\n\n\t\t\tthis.validateAndRegisterProperties(configuration, validate, configuration.extensionInfo, configuration.restrictedProperties, undefined, bucket);\n\n\t\t\tthis.configurationContributors.push(configuration);\n\t\t\tthis.registerJSONConfiguration(configuration);\n\t\t});\n\t}\n\n\tprivate validateAndRegisterProperties(configuration: IConfigurationNode, validate: boolean = true, extensionInfo: IExtensionInfo | undefined, restrictedProperties: string[] | undefined, scope: ConfigurationScope = ConfigurationScope.WINDOW, bucket: Set<string>): void {\n\t\tscope = types.isUndefinedOrNull(configuration.scope) ? scope : configuration.scope;\n\t\tconst properties = configuration.properties;\n\t\tif (properties) {\n\t\t\tfor (const key in properties) {\n\t\t\t\tconst property: IRegisteredConfigurationPropertySchema = properties[key];\n\t\t\t\tif (validate && validateProperty(key, property)) {\n\t\t\t\t\tdelete properties[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tproperty.source = extensionInfo;\n\n\t\t\t\t// update default value\n\t\t\t\tproperty.defaultDefaultValue = properties[key].default;\n\t\t\t\tthis.updatePropertyDefaultValue(key, property);\n\n\t\t\t\t// update scope\n\t\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\t\tproperty.scope = undefined; // No scope for overridable properties `[${identifier}]`\n\t\t\t\t} else {\n\t\t\t\t\tproperty.scope = types.isUndefinedOrNull(property.scope) ? scope : property.scope;\n\t\t\t\t\tproperty.restricted = types.isUndefinedOrNull(property.restricted) ? !!restrictedProperties?.includes(key) : property.restricted;\n\t\t\t\t}\n\n\t\t\t\tif (property.experiment) {\n\t\t\t\t\tif (!property.tags?.some(tag => tag.toLowerCase() === 'onexp')) {\n\t\t\t\t\t\tproperty.tags = property.tags ?? [];\n\t\t\t\t\t\tproperty.tags.push('onExP');\n\t\t\t\t\t}\n\t\t\t\t} else if (property.tags?.some(tag => tag.toLowerCase() === 'onexp')) {\n\t\t\t\t\tconsole.error(`Invalid tag 'onExP' found for property '${key}'. Please use 'experiment' property instead.`);\n\t\t\t\t\tproperty.experiment = { mode: 'startup' };\n\t\t\t\t}\n\n\t\t\t\tconst excluded = properties[key].hasOwnProperty('included') && !properties[key].included;\n\t\t\t\tconst policyName = properties[key].policy?.name;\n\n\t\t\t\tif (excluded) {\n\t\t\t\t\tthis.excludedConfigurationProperties[key] = properties[key];\n\t\t\t\t\tif (policyName) {\n\t\t\t\t\t\tthis.policyConfigurations.set(policyName, key);\n\t\t\t\t\t\tbucket.add(key);\n\t\t\t\t\t}\n\t\t\t\t\tdelete properties[key];\n\t\t\t\t} else {\n\t\t\t\t\tbucket.add(key);\n\t\t\t\t\tif (policyName) {\n\t\t\t\t\t\tthis.policyConfigurations.set(policyName, key);\n\t\t\t\t\t}\n\t\t\t\t\tthis.configurationProperties[key] = properties[key];\n\t\t\t\t\tif (!properties[key].deprecationMessage && properties[key].markdownDeprecationMessage) {\n\t\t\t\t\t\t// If not set, default deprecationMessage to the markdown source\n\t\t\t\t\t\tproperties[key].deprecationMessage = properties[key].markdownDeprecationMessage;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t}\n\t\t}\n\t\tconst subNodes = configuration.allOf;\n\t\tif (subNodes) {\n\t\t\tfor (const node of subNodes) {\n\t\t\t\tthis.validateAndRegisterProperties(node, validate, extensionInfo, restrictedProperties, scope, bucket);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema> {\n\t\treturn this.configurationProperties;\n\t}\n\n\tgetPolicyConfigurations(): Map<PolicyName, string> {\n\t\treturn this.policyConfigurations;\n\t}\n\n\tgetExcludedConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema> {\n\t\treturn this.excludedConfigurationProperties;\n\t}\n\n\tprivate registerJSONConfiguration(configuration: IConfigurationNode) {\n\t\tconst register = (configuration: IConfigurationNode) => {\n\t\t\tconst properties = configuration.properties;\n\t\t\tif (properties) {\n\t\t\t\tfor (const key in properties) {\n\t\t\t\t\tthis.updateSchema(key, properties[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst subNodes = configuration.allOf;\n\t\t\tsubNodes?.forEach(register);\n\t\t};\n\t\tregister(configuration);\n\t}\n\n\tprivate updateSchema(key: string, property: IConfigurationPropertySchema): void {\n\t\tallSettings.properties[key] = property;\n\t\tswitch (property.scope) {\n\t\t\tcase ConfigurationScope.APPLICATION:\n\t\t\t\tapplicationSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.MACHINE:\n\t\t\t\tmachineSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.APPLICATION_MACHINE:\n\t\t\t\tapplicationMachineSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.MACHINE_OVERRIDABLE:\n\t\t\t\tmachineOverridableSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.WINDOW:\n\t\t\t\twindowSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.RESOURCE:\n\t\t\t\tresourceSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.LANGUAGE_OVERRIDABLE:\n\t\t\t\tresourceSettings.properties[key] = property;\n\t\t\t\tthis.resourceLanguageSettingsSchema.properties![key] = property;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate updateOverridePropertyPatternKey(): void {\n\t\tfor (const overrideIdentifier of this.overrideIdentifiers.values()) {\n\t\t\tconst overrideIdentifierProperty = `[${overrideIdentifier}]`;\n\t\t\tconst resourceLanguagePropertiesSchema: IJSONSchema = {\n\t\t\t\ttype: 'object',\n\t\t\t\tdescription: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\n\t\t\t\terrorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\n\t\t\t\t$ref: resourceLanguageSettingsSchemaId,\n\t\t\t};\n\t\t\tthis.updatePropertyDefaultValue(overrideIdentifierProperty, resourceLanguagePropertiesSchema);\n\t\t\tallSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tapplicationSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tapplicationMachineSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tmachineSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tmachineOverridableSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\twindowSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tresourceSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t}\n\t}\n\n\tprivate registerOverridePropertyPatternKey(): void {\n\t\tconst resourceLanguagePropertiesSchema: IJSONSchema = {\n\t\t\ttype: 'object',\n\t\t\tdescription: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\n\t\t\terrorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\n\t\t\t$ref: resourceLanguageSettingsSchemaId,\n\t\t};\n\t\tallSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tapplicationSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tapplicationMachineSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tmachineSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tmachineOverridableSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\twindowSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tresourceSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tthis._onDidSchemaChange.fire();\n\t}\n\n\tprivate updatePropertyDefaultValue(key: string, property: IRegisteredConfigurationPropertySchema): void {\n\t\tconst configurationdefaultOverride = this.configurationDefaultsOverrides.get(key)?.configurationDefaultOverrideValue;\n\t\tlet defaultValue = undefined;\n\t\tlet defaultSource = undefined;\n\t\tif (configurationdefaultOverride\n\t\t\t&& (!property.disallowConfigurationDefault || !configurationdefaultOverride.source) // Prevent overriding the default value if the property is disallowed to be overridden by configuration defaults from extensions\n\t\t) {\n\t\t\tdefaultValue = configurationdefaultOverride.value;\n\t\t\tdefaultSource = configurationdefaultOverride.source;\n\t\t}\n\t\tif (types.isUndefined(defaultValue)) {\n\t\t\tdefaultValue = property.defaultDefaultValue;\n\t\t\tdefaultSource = undefined;\n\t\t}\n\t\tif (types.isUndefined(defaultValue)) {\n\t\t\tdefaultValue = getDefaultValue(property.type);\n\t\t}\n\t\tproperty.default = defaultValue;\n\t\tproperty.defaultValueSource = defaultSource;\n\t}\n}\n\nconst OVERRIDE_IDENTIFIER_PATTERN = `\\\\[([^\\\\]]+)\\\\]`;\nconst OVERRIDE_IDENTIFIER_REGEX = new RegExp(OVERRIDE_IDENTIFIER_PATTERN, 'g');\nexport const OVERRIDE_PROPERTY_PATTERN = `^(${OVERRIDE_IDENTIFIER_PATTERN})+$`;\nexport const OVERRIDE_PROPERTY_REGEX = new RegExp(OVERRIDE_PROPERTY_PATTERN);\n\nexport function overrideIdentifiersFromKey(key: string): string[] {\n\tconst identifiers: string[] = [];\n\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\tlet matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);\n\t\twhile (matches?.length) {\n\t\t\tconst identifier = matches[1].trim();\n\t\t\tif (identifier) {\n\t\t\t\tidentifiers.push(identifier);\n\t\t\t}\n\t\t\tmatches = OVERRIDE_IDENTIFIER_REGEX.exec(key);\n\t\t}\n\t}\n\treturn distinct(identifiers);\n}\n\nexport function getDefaultValue(type: string | string[] | undefined) {\n\tconst t = Array.isArray(type) ? (<string[]>type)[0] : <string>type;\n\tswitch (t) {\n\t\tcase 'boolean':\n\t\t\treturn false;\n\t\tcase 'integer':\n\t\tcase 'number':\n\t\t\treturn 0;\n\t\tcase 'string':\n\t\t\treturn '';\n\t\tcase 'array':\n\t\t\treturn [];\n\t\tcase 'object':\n\t\t\treturn {};\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nconst configurationRegistry = new ConfigurationRegistry();\nRegistry.add(Extensions.Configuration, configurationRegistry);\n\nexport function validateProperty(property: string, schema: IRegisteredConfigurationPropertySchema): string | null {\n\tif (!property.trim()) {\n\t\treturn nls.localize('config.property.empty', \"Cannot register an empty property\");\n\t}\n\tif (OVERRIDE_PROPERTY_REGEX.test(property)) {\n\t\treturn nls.localize('config.property.languageDefault', \"Cannot register '{0}'. This matches property pattern '\\\\\\\\[.*\\\\\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.\", property);\n\t}\n\tif (configurationRegistry.getConfigurationProperties()[property] !== undefined) {\n\t\treturn nls.localize('config.property.duplicate', \"Cannot register '{0}'. This property is already registered.\", property);\n\t}\n\tif (schema.policy?.name && configurationRegistry.getPolicyConfigurations().get(schema.policy?.name) !== undefined) {\n\t\treturn nls.localize('config.policy.duplicate', \"Cannot register '{0}'. The associated policy {1} is already registered with {2}.\", property, schema.policy?.name, configurationRegistry.getPolicyConfigurations().get(schema.policy?.name));\n\t}\n\treturn null;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/platform/configuration/common/configurationRegistry.ts"],"names":[],"mappings":"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","file":"configurationRegistry.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { distinct } from '../../../base/common/arrays.js';\nimport { IStringDictionary } from '../../../base/common/collections.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { IJSONSchema } from '../../../base/common/jsonSchema.js';\nimport * as types from '../../../base/common/types.js';\nimport * as nls from '../../../nls.js';\nimport { getLanguageTagSettingPlainKey } from './configuration.js';\nimport { Extensions as JSONExtensions, IJSONContributionRegistry } from '../../jsonschemas/common/jsonContributionRegistry.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { IPolicy, PolicyName } from '../../../base/common/policy.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\n\nexport const Extensions = {\n\tConfiguration: 'base.contributions.configuration'\n};\n\nexport interface IConfigurationRegistry {\n\n\t/**\n\t * Register a configuration to the registry.\n\t */\n\tregisterConfiguration(configuration: IConfigurationNode): IConfigurationNode;\n\n\t/**\n\t * Register multiple default configurations to the registry.\n\t */\n\tregisterDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[]): void;\n\n\t/**\n\t * Returns all configurations settings of all configuration nodes contributed to this registry.\n\t */\n\tgetConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\n\t/**\n\t * Returns all excluded configurations settings of all configuration nodes contributed to this registry.\n\t */\n\tgetExcludedConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\n\t/**\n\t * Register the identifiers for editor configurations\n\t */\n\tregisterOverrideIdentifiers(identifiers: string[]): void;\n}\n\nexport const enum ConfigurationScope {\n\t/**\n\t * Application specific configuration, which can be configured only in default profile user settings.\n\t */\n\tAPPLICATION = 1,\n\t/**\n\t * Machine specific configuration, which can be configured only in local and remote user settings.\n\t */\n\tMACHINE,\n\t/**\n\t * An application machine specific configuration, which can be configured only in default profile user settings and remote user settings.\n\t */\n\tAPPLICATION_MACHINE,\n\t/**\n\t * Window specific configuration, which can be configured in the user or workspace settings.\n\t */\n\tWINDOW,\n\t/**\n\t * Resource specific configuration, which can be configured in the user, workspace or folder settings.\n\t */\n\tRESOURCE,\n\t/**\n\t * Resource specific configuration that can be configured in language specific settings\n\t */\n\tLANGUAGE_OVERRIDABLE,\n\t/**\n\t * Machine specific configuration that can also be configured in workspace or folder settings.\n\t */\n\tMACHINE_OVERRIDABLE,\n}\n\n\nexport interface IConfigurationPropertySchema extends IJSONSchema {\n\n\tscope?: ConfigurationScope;\n\n\t/**\n\t * When restricted, value of this configuration will be read only from trusted sources.\n\t * For eg., If the workspace is not trusted, then the value of this configuration is not read from workspace settings file.\n\t */\n\trestricted?: boolean;\n\n\t/**\n\t * When `false` this property is excluded from the registry. Default is to include.\n\t */\n\tincluded?: boolean;\n\n\t/**\n\t * List of tags associated to the property.\n\t * - A tag can be used for filtering\n\t * - Use `experimental` tag for marking the setting as experimental.\n\t */\n\ttags?: string[];\n\n\t/**\n\t * Disallow extensions to contribute configuration default value for this setting.\n\t */\n\tdisallowConfigurationDefault?: boolean;\n\n\t/**\n\t * When specified, this setting's value can always be overwritten by\n\t * a system-wide policy.\n\t */\n\tpolicy?: IPolicy;\n\n\t/**\n\t * When specified, this setting's default value can always be overwritten by\n\t * an experiment.\n\t */\n\texperiment?: {\n\t\t/**\n\t\t * The mode of the experiment.\n\t\t * - `startup`: The setting value is updated to the experiment value only on startup.\n\t\t * - `auto`: The setting value is updated to the experiment value automatically (whenever the experiment value changes).\n\t\t */\n\t\tmode: 'startup' | 'auto';\n\n\t\t/**\n\t\t * The name of the experiment. By default, this is `config.${settingId}`\n\t\t */\n\t\tname?: string;\n\t};\n}\n\nexport interface IExtensionInfo {\n}\n\nexport interface IConfigurationNode {\n\tid?: string;\n\torder?: number;\n\ttype?: string | string[];\n\ttitle?: string;\n\tproperties?: IStringDictionary<IConfigurationPropertySchema>;\n\tallOf?: IConfigurationNode[];\n\tscope?: ConfigurationScope;\n\textensionInfo?: IExtensionInfo;\n\trestrictedProperties?: string[];\n}\n\nexport type ConfigurationDefaultValueSource = IExtensionInfo | Map<string, IExtensionInfo>;\n\nexport interface IConfigurationDefaults {\n\toverrides: IStringDictionary<any>;\n\tsource?: IExtensionInfo;\n}\n\nexport type IRegisteredConfigurationPropertySchema = IConfigurationPropertySchema & {\n\tsection?: {\n\t\tid?: string;\n\t\ttitle?: string;\n\t\torder?: number;\n\t\textensionInfo?: IExtensionInfo;\n\t};\n\tdefaultDefaultValue?: any;\n\tsource?: IExtensionInfo; // Source of the Property\n\tdefaultValueSource?: ConfigurationDefaultValueSource; // Source of the Default Value\n};\n\nexport interface IConfigurationDefaultOverride {\n\treadonly value: any;\n\treadonly source?: IExtensionInfo; // Source of the default override\n}\n\nexport interface IConfigurationDefaultOverrideValue {\n\treadonly value: any;\n\treadonly source?: ConfigurationDefaultValueSource;\n}\n\nexport const allSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const applicationSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const applicationMachineSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const machineSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const machineOverridableSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const windowSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\nexport const resourceSettings: { properties: IStringDictionary<IConfigurationPropertySchema>; patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };\n\nexport const resourceLanguageSettingsSchemaId = 'vscode://schemas/settings/resourceLanguage';\n\nconst contributionRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);\n\nclass ConfigurationRegistry extends Disposable implements IConfigurationRegistry {\n\n\tprivate readonly registeredConfigurationDefaults: IConfigurationDefaults[] = [];\n\tprivate readonly configurationDefaultsOverrides: Map<string, { configurationDefaultOverrides: IConfigurationDefaultOverride[]; configurationDefaultOverrideValue?: IConfigurationDefaultOverrideValue }>;\n\tprivate readonly defaultLanguageConfigurationOverridesNode: IConfigurationNode;\n\tprivate readonly configurationContributors: IConfigurationNode[];\n\tprivate readonly configurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\tprivate readonly policyConfigurations: Map<PolicyName, string>;\n\tprivate readonly excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>;\n\tprivate readonly resourceLanguageSettingsSchema: IJSONSchema;\n\tprivate readonly overrideIdentifiers = new Set<string>();\n\n\tprivate readonly _onDidSchemaChange = this._register(new Emitter<void>());\n\n\tprivate readonly _onDidUpdateConfiguration = this._register(new Emitter<{ properties: ReadonlySet<string>; defaultsOverrides?: boolean }>());\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.configurationDefaultsOverrides = new Map();\n\t\tthis.defaultLanguageConfigurationOverridesNode = {\n\t\t\tid: 'defaultOverrides',\n\t\t\ttitle: nls.localize('defaultLanguageConfigurationOverrides.title', \"Default Language Configuration Overrides\"),\n\t\t\tproperties: {}\n\t\t};\n\t\tthis.configurationContributors = [this.defaultLanguageConfigurationOverridesNode];\n\t\tthis.resourceLanguageSettingsSchema = {\n\t\t\tproperties: {},\n\t\t\tpatternProperties: {},\n\t\t\tadditionalProperties: true,\n\t\t\tallowTrailingCommas: true,\n\t\t\tallowComments: true\n\t\t};\n\t\tthis.configurationProperties = {};\n\t\tthis.policyConfigurations = new Map<PolicyName, string>();\n\t\tthis.excludedConfigurationProperties = {};\n\n\t\tcontributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\n\t\tthis.registerOverridePropertyPatternKey();\n\t}\n\n\tpublic registerConfiguration(configuration: IConfigurationNode, validate: boolean = true): IConfigurationNode {\n\t\tthis.registerConfigurations([configuration], validate);\n\t\treturn configuration;\n\t}\n\n\tpublic registerConfigurations(configurations: IConfigurationNode[], validate: boolean = true): void {\n\t\tconst properties = new Set<string>();\n\t\tthis.doRegisterConfigurations(configurations, validate, properties);\n\n\t\tcontributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\n\t\tthis._onDidSchemaChange.fire();\n\t\tthis._onDidUpdateConfiguration.fire({ properties });\n\t}\n\n\tpublic registerDefaultConfigurations(configurationDefaults: IConfigurationDefaults[]): void {\n\t\tconst properties = new Set<string>();\n\t\tthis.doRegisterDefaultConfigurations(configurationDefaults, properties);\n\t\tthis._onDidSchemaChange.fire();\n\t\tthis._onDidUpdateConfiguration.fire({ properties, defaultsOverrides: true });\n\t}\n\n\tprivate doRegisterDefaultConfigurations(configurationDefaults: IConfigurationDefaults[], bucket: Set<string>) {\n\n\t\tthis.registeredConfigurationDefaults.push(...configurationDefaults);\n\n\t\tconst overrideIdentifiers: string[] = [];\n\n\t\tfor (const { overrides, source } of configurationDefaults) {\n\t\t\tfor (const key in overrides) {\n\t\t\t\tbucket.add(key);\n\n\t\t\t\tconst configurationDefaultOverridesForKey = this.configurationDefaultsOverrides.get(key)\n\t\t\t\t\t?? this.configurationDefaultsOverrides.set(key, { configurationDefaultOverrides: [] }).get(key)!;\n\n\t\t\t\tconst value = overrides[key];\n\t\t\t\tconfigurationDefaultOverridesForKey.configurationDefaultOverrides.push({ value, source });\n\n\t\t\t\t// Configuration defaults for Override Identifiers\n\t\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\t\tconst newDefaultOverride = this.mergeDefaultConfigurationsForOverrideIdentifier(key, value, source, configurationDefaultOverridesForKey.configurationDefaultOverrideValue);\n\t\t\t\t\tif (!newDefaultOverride) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconfigurationDefaultOverridesForKey.configurationDefaultOverrideValue = newDefaultOverride;\n\t\t\t\t\tthis.updateDefaultOverrideProperty(key, newDefaultOverride, source);\n\t\t\t\t\toverrideIdentifiers.push(...overrideIdentifiersFromKey(key));\n\t\t\t\t}\n\n\t\t\t\t// Configuration defaults for Configuration Properties\n\t\t\t\telse {\n\t\t\t\t\tconst newDefaultOverride = this.mergeDefaultConfigurationsForConfigurationProperty(key, value, source, configurationDefaultOverridesForKey.configurationDefaultOverrideValue);\n\t\t\t\t\tif (!newDefaultOverride) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconfigurationDefaultOverridesForKey.configurationDefaultOverrideValue = newDefaultOverride;\n\t\t\t\t\tconst property = this.configurationProperties[key];\n\t\t\t\t\tif (property) {\n\t\t\t\t\t\tthis.updatePropertyDefaultValue(key, property);\n\t\t\t\t\t\tthis.updateSchema(key, property);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tthis.doRegisterOverrideIdentifiers(overrideIdentifiers);\n\t}\n\n\tprivate updateDefaultOverrideProperty(key: string, newDefaultOverride: IConfigurationDefaultOverrideValue, source: IExtensionInfo | undefined): void {\n\t\tconst property: IRegisteredConfigurationPropertySchema = {\n\t\t\tsection: {\n\t\t\t\tid: this.defaultLanguageConfigurationOverridesNode.id,\n\t\t\t\ttitle: this.defaultLanguageConfigurationOverridesNode.title,\n\t\t\t\torder: this.defaultLanguageConfigurationOverridesNode.order,\n\t\t\t\textensionInfo: this.defaultLanguageConfigurationOverridesNode.extensionInfo\n\t\t\t},\n\t\t\ttype: 'object',\n\t\t\tdefault: newDefaultOverride.value,\n\t\t\tdescription: nls.localize('defaultLanguageConfiguration.description', \"Configure settings to be overridden for {0}.\", getLanguageTagSettingPlainKey(key)),\n\t\t\t$ref: resourceLanguageSettingsSchemaId,\n\t\t\tdefaultDefaultValue: newDefaultOverride.value,\n\t\t\tsource,\n\t\t\tdefaultValueSource: source\n\t\t};\n\t\tthis.configurationProperties[key] = property;\n\t\tthis.defaultLanguageConfigurationOverridesNode.properties![key] = property;\n\t}\n\n\tprivate mergeDefaultConfigurationsForOverrideIdentifier(overrideIdentifier: string, configurationValueObject: IStringDictionary<any>, valueSource: IExtensionInfo | undefined, existingDefaultOverride: IConfigurationDefaultOverrideValue | undefined): IConfigurationDefaultOverrideValue | undefined {\n\t\tconst defaultValue = existingDefaultOverride?.value || {};\n\t\tconst source = existingDefaultOverride?.source ?? new Map<string, IExtensionInfo>();\n\n\t\t// This should not happen\n\t\tif (!(source instanceof Map)) {\n\t\t\tconsole.error('objectConfigurationSources is not a Map');\n\t\t\treturn undefined;\n\t\t}\n\n\t\tfor (const propertyKey of Object.keys(configurationValueObject)) {\n\t\t\tconst propertyDefaultValue = configurationValueObject[propertyKey];\n\n\t\t\tconst isObjectSetting = types.isObject(propertyDefaultValue) &&\n\t\t\t\t(types.isUndefined(defaultValue[propertyKey]) || types.isObject(defaultValue[propertyKey]));\n\n\t\t\t// If the default value is an object, merge the objects and store the source of each keys\n\t\t\tif (isObjectSetting) {\n\t\t\t\tdefaultValue[propertyKey] = { ...(defaultValue[propertyKey] ?? {}), ...propertyDefaultValue };\n\t\t\t\t// Track the source of each value in the object\n\t\t\t\tif (valueSource) {\n\t\t\t\t\tfor (const objectKey in propertyDefaultValue) {\n\t\t\t\t\t\tsource.set(`${propertyKey}.${objectKey}`, valueSource);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Primitive values are overridden\n\t\t\telse {\n\t\t\t\tdefaultValue[propertyKey] = propertyDefaultValue;\n\t\t\t\tif (valueSource) {\n\t\t\t\t\tsource.set(propertyKey, valueSource);\n\t\t\t\t} else {\n\t\t\t\t\tsource.delete(propertyKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { value: defaultValue, source };\n\t}\n\n\tprivate mergeDefaultConfigurationsForConfigurationProperty(propertyKey: string, value: any, valuesSource: IExtensionInfo | undefined, existingDefaultOverride: IConfigurationDefaultOverrideValue | undefined): IConfigurationDefaultOverrideValue | undefined {\n\t\tconst property = this.configurationProperties[propertyKey];\n\t\tconst existingDefaultValue = existingDefaultOverride?.value ?? property?.defaultDefaultValue;\n\t\tlet source: ConfigurationDefaultValueSource | undefined = valuesSource;\n\n\t\tconst isObjectSetting = types.isObject(value) &&\n\t\t\t(\n\t\t\t\tproperty !== undefined && property.type === 'object' ||\n\t\t\t\tproperty === undefined && (types.isUndefined(existingDefaultValue) || types.isObject(existingDefaultValue))\n\t\t\t);\n\n\t\t// If the default value is an object, merge the objects and store the source of each keys\n\t\tif (isObjectSetting) {\n\t\t\tsource = existingDefaultOverride?.source ?? new Map<string, IExtensionInfo>();\n\n\t\t\t// This should not happen\n\t\t\tif (!(source instanceof Map)) {\n\t\t\t\tconsole.error('defaultValueSource is not a Map');\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tfor (const objectKey in value) {\n\t\t\t\tif (valuesSource) {\n\t\t\t\t\tsource.set(`${propertyKey}.${objectKey}`, valuesSource);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = { ...(types.isObject(existingDefaultValue) ? existingDefaultValue : {}), ...value };\n\t\t}\n\n\t\treturn { value, source };\n\t}\n\n\tpublic registerOverrideIdentifiers(overrideIdentifiers: string[]): void {\n\t\tthis.doRegisterOverrideIdentifiers(overrideIdentifiers);\n\t\tthis._onDidSchemaChange.fire();\n\t}\n\n\tprivate doRegisterOverrideIdentifiers(overrideIdentifiers: string[]) {\n\t\tfor (const overrideIdentifier of overrideIdentifiers) {\n\t\t\tthis.overrideIdentifiers.add(overrideIdentifier);\n\t\t}\n\t\tthis.updateOverridePropertyPatternKey();\n\t}\n\n\tprivate doRegisterConfigurations(configurations: IConfigurationNode[], validate: boolean, bucket: Set<string>): void {\n\n\t\tconfigurations.forEach(configuration => {\n\n\t\t\tthis.validateAndRegisterProperties(configuration, validate, configuration.extensionInfo, configuration.restrictedProperties, undefined, bucket);\n\n\t\t\tthis.configurationContributors.push(configuration);\n\t\t\tthis.registerJSONConfiguration(configuration);\n\t\t});\n\t}\n\n\tprivate validateAndRegisterProperties(configuration: IConfigurationNode, validate: boolean = true, extensionInfo: IExtensionInfo | undefined, restrictedProperties: string[] | undefined, scope: ConfigurationScope = ConfigurationScope.WINDOW, bucket: Set<string>): void {\n\t\tscope = types.isUndefinedOrNull(configuration.scope) ? scope : configuration.scope;\n\t\tconst properties = configuration.properties;\n\t\tif (properties) {\n\t\t\tfor (const key in properties) {\n\t\t\t\tconst property: IRegisteredConfigurationPropertySchema = properties[key];\n\t\t\t\tproperty.section = {\n\t\t\t\t\tid: configuration.id,\n\t\t\t\t\ttitle: configuration.title,\n\t\t\t\t\torder: configuration.order,\n\t\t\t\t\textensionInfo: configuration.extensionInfo\n\t\t\t\t};\n\t\t\t\tif (validate && validateProperty(key, property)) {\n\t\t\t\t\tdelete properties[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tproperty.source = extensionInfo;\n\n\t\t\t\t// update default value\n\t\t\t\tproperty.defaultDefaultValue = properties[key].default;\n\t\t\t\tthis.updatePropertyDefaultValue(key, property);\n\n\t\t\t\t// update scope\n\t\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\t\tproperty.scope = undefined; // No scope for overridable properties `[${identifier}]`\n\t\t\t\t} else {\n\t\t\t\t\tproperty.scope = types.isUndefinedOrNull(property.scope) ? scope : property.scope;\n\t\t\t\t\tproperty.restricted = types.isUndefinedOrNull(property.restricted) ? !!restrictedProperties?.includes(key) : property.restricted;\n\t\t\t\t}\n\n\t\t\t\tif (property.experiment) {\n\t\t\t\t\tif (!property.tags?.some(tag => tag.toLowerCase() === 'onexp')) {\n\t\t\t\t\t\tproperty.tags = property.tags ?? [];\n\t\t\t\t\t\tproperty.tags.push('onExP');\n\t\t\t\t\t}\n\t\t\t\t} else if (property.tags?.some(tag => tag.toLowerCase() === 'onexp')) {\n\t\t\t\t\tconsole.error(`Invalid tag 'onExP' found for property '${key}'. Please use 'experiment' property instead.`);\n\t\t\t\t\tproperty.experiment = { mode: 'startup' };\n\t\t\t\t}\n\n\t\t\t\tconst excluded = properties[key].hasOwnProperty('included') && !properties[key].included;\n\t\t\t\tconst policyName = properties[key].policy?.name;\n\n\t\t\t\tif (excluded) {\n\t\t\t\t\tthis.excludedConfigurationProperties[key] = properties[key];\n\t\t\t\t\tif (policyName) {\n\t\t\t\t\t\tthis.policyConfigurations.set(policyName, key);\n\t\t\t\t\t\tbucket.add(key);\n\t\t\t\t\t}\n\t\t\t\t\tdelete properties[key];\n\t\t\t\t} else {\n\t\t\t\t\tbucket.add(key);\n\t\t\t\t\tif (policyName) {\n\t\t\t\t\t\tthis.policyConfigurations.set(policyName, key);\n\t\t\t\t\t}\n\t\t\t\t\tthis.configurationProperties[key] = properties[key];\n\t\t\t\t\tif (!properties[key].deprecationMessage && properties[key].markdownDeprecationMessage) {\n\t\t\t\t\t\t// If not set, default deprecationMessage to the markdown source\n\t\t\t\t\t\tproperties[key].deprecationMessage = properties[key].markdownDeprecationMessage;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t}\n\t\t}\n\t\tconst subNodes = configuration.allOf;\n\t\tif (subNodes) {\n\t\t\tfor (const node of subNodes) {\n\t\t\t\tthis.validateAndRegisterProperties(node, validate, extensionInfo, restrictedProperties, scope, bucket);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema> {\n\t\treturn this.configurationProperties;\n\t}\n\n\tgetPolicyConfigurations(): Map<PolicyName, string> {\n\t\treturn this.policyConfigurations;\n\t}\n\n\tgetExcludedConfigurationProperties(): IStringDictionary<IRegisteredConfigurationPropertySchema> {\n\t\treturn this.excludedConfigurationProperties;\n\t}\n\n\tprivate registerJSONConfiguration(configuration: IConfigurationNode) {\n\t\tconst register = (configuration: IConfigurationNode) => {\n\t\t\tconst properties = configuration.properties;\n\t\t\tif (properties) {\n\t\t\t\tfor (const key in properties) {\n\t\t\t\t\tthis.updateSchema(key, properties[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst subNodes = configuration.allOf;\n\t\t\tsubNodes?.forEach(register);\n\t\t};\n\t\tregister(configuration);\n\t}\n\n\tprivate updateSchema(key: string, property: IConfigurationPropertySchema): void {\n\t\tallSettings.properties[key] = property;\n\t\tswitch (property.scope) {\n\t\t\tcase ConfigurationScope.APPLICATION:\n\t\t\t\tapplicationSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.MACHINE:\n\t\t\t\tmachineSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.APPLICATION_MACHINE:\n\t\t\t\tapplicationMachineSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.MACHINE_OVERRIDABLE:\n\t\t\t\tmachineOverridableSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.WINDOW:\n\t\t\t\twindowSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.RESOURCE:\n\t\t\t\tresourceSettings.properties[key] = property;\n\t\t\t\tbreak;\n\t\t\tcase ConfigurationScope.LANGUAGE_OVERRIDABLE:\n\t\t\t\tresourceSettings.properties[key] = property;\n\t\t\t\tthis.resourceLanguageSettingsSchema.properties![key] = property;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate updateOverridePropertyPatternKey(): void {\n\t\tfor (const overrideIdentifier of this.overrideIdentifiers.values()) {\n\t\t\tconst overrideIdentifierProperty = `[${overrideIdentifier}]`;\n\t\t\tconst resourceLanguagePropertiesSchema: IJSONSchema = {\n\t\t\t\ttype: 'object',\n\t\t\t\tdescription: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\n\t\t\t\terrorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\n\t\t\t\t$ref: resourceLanguageSettingsSchemaId,\n\t\t\t};\n\t\t\tthis.updatePropertyDefaultValue(overrideIdentifierProperty, resourceLanguagePropertiesSchema);\n\t\t\tallSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tapplicationSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tapplicationMachineSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tmachineSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tmachineOverridableSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\twindowSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t\tresourceSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n\t\t}\n\t}\n\n\tprivate registerOverridePropertyPatternKey(): void {\n\t\tconst resourceLanguagePropertiesSchema: IJSONSchema = {\n\t\t\ttype: 'object',\n\t\t\tdescription: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\n\t\t\terrorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\n\t\t\t$ref: resourceLanguageSettingsSchemaId,\n\t\t};\n\t\tallSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tapplicationSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tapplicationMachineSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tmachineSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tmachineOverridableSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\twindowSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tresourceSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n\t\tthis._onDidSchemaChange.fire();\n\t}\n\n\tprivate updatePropertyDefaultValue(key: string, property: IRegisteredConfigurationPropertySchema): void {\n\t\tconst configurationdefaultOverride = this.configurationDefaultsOverrides.get(key)?.configurationDefaultOverrideValue;\n\t\tlet defaultValue = undefined;\n\t\tlet defaultSource = undefined;\n\t\tif (configurationdefaultOverride\n\t\t\t&& (!property.disallowConfigurationDefault || !configurationdefaultOverride.source) // Prevent overriding the default value if the property is disallowed to be overridden by configuration defaults from extensions\n\t\t) {\n\t\t\tdefaultValue = configurationdefaultOverride.value;\n\t\t\tdefaultSource = configurationdefaultOverride.source;\n\t\t}\n\t\tif (types.isUndefined(defaultValue)) {\n\t\t\tdefaultValue = property.defaultDefaultValue;\n\t\t\tdefaultSource = undefined;\n\t\t}\n\t\tif (types.isUndefined(defaultValue)) {\n\t\t\tdefaultValue = getDefaultValue(property.type);\n\t\t}\n\t\tproperty.default = defaultValue;\n\t\tproperty.defaultValueSource = defaultSource;\n\t}\n}\n\nconst OVERRIDE_IDENTIFIER_PATTERN = `\\\\[([^\\\\]]+)\\\\]`;\nconst OVERRIDE_IDENTIFIER_REGEX = new RegExp(OVERRIDE_IDENTIFIER_PATTERN, 'g');\nexport const OVERRIDE_PROPERTY_PATTERN = `^(${OVERRIDE_IDENTIFIER_PATTERN})+$`;\nexport const OVERRIDE_PROPERTY_REGEX = new RegExp(OVERRIDE_PROPERTY_PATTERN);\n\nexport function overrideIdentifiersFromKey(key: string): string[] {\n\tconst identifiers: string[] = [];\n\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\tlet matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);\n\t\twhile (matches?.length) {\n\t\t\tconst identifier = matches[1].trim();\n\t\t\tif (identifier) {\n\t\t\t\tidentifiers.push(identifier);\n\t\t\t}\n\t\t\tmatches = OVERRIDE_IDENTIFIER_REGEX.exec(key);\n\t\t}\n\t}\n\treturn distinct(identifiers);\n}\n\nexport function getDefaultValue(type: string | string[] | undefined) {\n\tconst t = Array.isArray(type) ? (<string[]>type)[0] : <string>type;\n\tswitch (t) {\n\t\tcase 'boolean':\n\t\t\treturn false;\n\t\tcase 'integer':\n\t\tcase 'number':\n\t\t\treturn 0;\n\t\tcase 'string':\n\t\t\treturn '';\n\t\tcase 'array':\n\t\t\treturn [];\n\t\tcase 'object':\n\t\t\treturn {};\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nconst configurationRegistry = new ConfigurationRegistry();\nRegistry.add(Extensions.Configuration, configurationRegistry);\n\nexport function validateProperty(property: string, schema: IRegisteredConfigurationPropertySchema): string | null {\n\tif (!property.trim()) {\n\t\treturn nls.localize('config.property.empty', \"Cannot register an empty property\");\n\t}\n\tif (OVERRIDE_PROPERTY_REGEX.test(property)) {\n\t\treturn nls.localize('config.property.languageDefault', \"Cannot register '{0}'. This matches property pattern '\\\\\\\\[.*\\\\\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.\", property);\n\t}\n\tif (configurationRegistry.getConfigurationProperties()[property] !== undefined) {\n\t\treturn nls.localize('config.property.duplicate', \"Cannot register '{0}'. This property is already registered.\", property);\n\t}\n\tif (schema.policy?.name && configurationRegistry.getPolicyConfigurations().get(schema.policy?.name) !== undefined) {\n\t\treturn nls.localize('config.policy.duplicate', \"Cannot register '{0}'. The associated policy {1} is already registered with {2}.\", property, schema.policy?.name, configurationRegistry.getPolicyConfigurations().get(schema.policy?.name));\n\t}\n\treturn null;\n}\n"]}
|
|
@@ -247,11 +247,13 @@ export class QuickInput extends Disposable {
|
|
|
247
247
|
this.busyDelay.setIfNotSet(() => {
|
|
248
248
|
if (this.visible) {
|
|
249
249
|
this.ui.progressBar.infinite();
|
|
250
|
+
this.ui.progressBar.getContainer().removeAttribute('aria-hidden');
|
|
250
251
|
}
|
|
251
252
|
}, 800);
|
|
252
253
|
}
|
|
253
254
|
if (!this.busy && this.busyDelay) {
|
|
254
255
|
this.ui.progressBar.stop();
|
|
256
|
+
this.ui.progressBar.getContainer().setAttribute('aria-hidden', 'true');
|
|
255
257
|
this.busyDelay.cancel();
|
|
256
258
|
this.busyDelay = undefined;
|
|
257
259
|
}
|