@codingame/monaco-vscode-api 1.83.2 → 1.83.3-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/extensions.d.ts +3 -3
- package/extensions.js +31 -33
- package/l10n.d.ts +4 -0
- package/l10n.js +10 -0
- package/missing-services.js +4 -2
- package/monaco-editor-treemending.patch +12268 -1070
- package/monaco-treemending.js +8 -2
- package/package.json +8 -1
- package/service-override/extensions.js +2 -2
- package/service-override/layout.js +2 -2
- package/tools/l10n.js +177 -0
- package/tools.js +22 -1
- package/vscode/src/vs/base/browser/ui/menu/menubar.js +1 -1
- package/vscode/src/vs/base/browser/ui/splitview/paneview.js +2 -2
- package/vscode/src/vs/base/common/date.js +55 -55
- package/vscode/src/vs/base/common/jsonErrorMessages.js +10 -10
- package/vscode/src/vs/base/common/tfIdf.js +137 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +23 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +115 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +112 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +334 -0
- package/vscode/src/vs/platform/dialogs/common/dialogs.js +10 -14
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagement.js +3 -0
- package/vscode/src/vs/platform/extensionManagement/common/extensionNls.js +2 -2
- package/vscode/src/vs/platform/files/common/fileService.js +28 -37
- package/vscode/src/vs/platform/files/common/files.js +6 -6
- package/vscode/src/vs/platform/files/common/io.js +2 -2
- package/vscode/src/vs/platform/keyboardLayout/common/keyboardConfig.js +3 -9
- package/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.js +300 -0
- package/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.js +59 -0
- package/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess.js +212 -0
- package/vscode/src/vs/platform/request/common/request.js +2 -2
- package/vscode/src/vs/platform/theme/common/tokenClassificationRegistry.js +42 -63
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +13 -32
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +3 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +4 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +38 -50
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +21 -53
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +4 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +4 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +6 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +4 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +2 -12
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +15 -9
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +2 -6
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +6 -28
- package/vscode/src/vs/workbench/api/browser/statusBarExtensionPoint.js +60 -0
- package/vscode/src/vs/workbench/api/common/extHostChat.js +3 -3
- package/vscode/src/vs/workbench/api/common/extHostDiagnostics.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostExtensionService.js +2 -2
- package/vscode/src/vs/workbench/api/common/extHostLanguageFeatures.js +3 -11
- package/vscode/src/vs/workbench/api/common/extHostLogService.js +2 -2
- package/vscode/src/vs/workbench/api/common/extHostNotebook.js +3 -3
- package/vscode/src/vs/workbench/api/common/extHostProgress.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostStatusBar.js +3 -7
- package/vscode/src/vs/workbench/api/common/extHostTelemetry.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostTerminalService.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostTreeViews.js +2 -2
- package/vscode/src/vs/workbench/api/common/extHostTunnelService.js +2 -2
- package/vscode/src/vs/workbench/api/common/extHostWorkspace.js +2 -7
- package/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint.js +9 -34
- package/vscode/src/vs/workbench/browser/actions/layoutActions.js +898 -68
- package/vscode/src/vs/workbench/browser/actions/quickAccessActions.js +7 -7
- package/vscode/src/vs/workbench/browser/actions/windowActions.js +32 -38
- package/vscode/src/vs/workbench/browser/actions/workspaceActions.js +103 -13
- package/vscode/src/vs/workbench/browser/actions/workspaceCommands.js +2 -2
- package/vscode/src/vs/workbench/browser/editor.js +3 -3
- package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarActions.js +12 -27
- package/vscode/src/vs/workbench/browser/parts/compositeBarActions.js +12 -12
- package/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor.js +2 -7
- package/vscode/src/vs/workbench/browser/parts/editor/binaryEditor.js +4 -7
- package/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs.js +42 -90
- package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +140 -272
- package/vscode/src/vs/workbench/browser/parts/editor/editorActions.js +115 -148
- package/vscode/src/vs/workbench/browser/parts/editor/editorCommands.js +21 -33
- package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +7 -19
- package/vscode/src/vs/workbench/browser/parts/editor/editorPlaceholder.js +10 -26
- package/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess.js +7 -17
- package/vscode/src/vs/workbench/browser/parts/editor/editorStatus.js +60 -81
- package/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/editor/textCodeEditor.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.js +4 -11
- package/vscode/src/vs/workbench/browser/parts/editor/textEditor.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.js +8 -8
- package/vscode/src/vs/workbench/browser/parts/panel/panelActions.js +69 -34
- package/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.js +58 -34
- package/vscode/src/vs/workbench/browser/parts/views/viewFilter.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/views/viewPane.js +3 -9
- package/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.js +6 -6
- package/vscode/src/vs/workbench/browser/parts/views/viewsService.js +7 -11
- package/vscode/src/vs/workbench/browser/quickaccess.js +7 -3
- package/vscode/src/vs/workbench/browser/workbench.contribution.js +186 -683
- package/vscode/src/vs/workbench/common/configuration.js +12 -15
- package/vscode/src/vs/workbench/common/contextkeys.js +272 -90
- package/vscode/src/vs/workbench/common/editor/diffEditorInput.js +2 -2
- package/vscode/src/vs/workbench/common/editor/sideBySideEditorInput.js +2 -7
- package/vscode/src/vs/workbench/common/editor/textEditorModel.js +2 -6
- package/vscode/src/vs/workbench/common/editor.js +5 -5
- package/vscode/src/vs/workbench/common/theme.js +137 -527
- package/vscode/src/vs/workbench/common/views.js +4 -8
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.js +15 -55
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityContributions.js +3 -8
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleView.js +22 -60
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleViewActions.js +9 -15
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +18 -48
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatAgents.js +5 -10
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +5 -13
- package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +8 -27
- package/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js +5 -17
- package/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js +6 -15
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +7 -20
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js +2 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js +63 -216
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js +4 -7
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js +5 -8
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js +8 -11
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +5 -15
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js +3 -3
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js +5 -5
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js +3 -6
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js +3 -6
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +10 -9
- package/vscode/src/vs/workbench/contrib/comments/browser/commentColors.js +6 -15
- package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +5 -20
- package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +3 -10
- package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +4 -4
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +3 -20
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadHeader.js +9 -3
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +4 -13
- package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +26 -77
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +5 -17
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +7 -12
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +10 -29
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.js +8 -8
- package/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.js +25 -21
- package/vscode/src/vs/workbench/contrib/comments/common/commentModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +1 -4
- package/vscode/src/vs/workbench/contrib/debug/browser/debugColors.js +13 -13
- package/vscode/src/vs/workbench/contrib/debug/browser/debugIcons.js +56 -98
- package/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.js +2 -2
- package/vscode/src/vs/workbench/contrib/debug/common/debug.js +96 -180
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsIcons.js +25 -79
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/configuration.js +4 -15
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService.js +4 -8
- package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +56 -19
- package/vscode/src/vs/workbench/contrib/files/browser/fileActions.js +76 -230
- package/vscode/src/vs/workbench/contrib/files/browser/fileConstants.js +6 -5
- package/vscode/src/vs/workbench/contrib/files/browser/fileImportExport.js +33 -103
- package/vscode/src/vs/workbench/contrib/files/browser/files.contribution.js +228 -99
- package/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.js +1 -1
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js +5 -9
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.js +5 -5
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.js +15 -35
- package/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.js +5 -8
- package/vscode/src/vs/workbench/contrib/files/common/files.js +27 -48
- package/vscode/src/vs/workbench/contrib/folding/browser/folding.contribution.js +3 -6
- package/vscode/src/vs/workbench/contrib/format/browser/formatModified.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlayHints/browser/inlayHintsAccessibilty.js +5 -8
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +112 -52
- package/vscode/src/vs/workbench/contrib/keybindings/browser/keybindings.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +30 -96
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +3 -3
- package/vscode/src/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +42 -0
- package/vscode/src/vs/workbench/contrib/output/browser/output.contribution.js +23 -29
- package/vscode/src/vs/workbench/contrib/output/browser/outputView.js +3 -3
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +13 -16
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +15 -34
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js +12 -17
- package/vscode/src/vs/workbench/contrib/scm/browser/dirtyDiffSwitcher.js +2 -2
- package/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js +26 -75
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js +4 -19
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.js +4 -4
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.js +10 -41
- package/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js +5 -14
- package/vscode/src/vs/workbench/contrib/tasks/common/taskService.js +26 -13
- package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +8 -6
- package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +5 -17
- package/vscode/src/vs/workbench/contrib/terminal/common/terminal.js +7 -28
- package/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +21 -78
- package/vscode/src/vs/workbench/contrib/terminal/common/terminalContextKey.js +21 -53
- package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +2 -2
- package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.js +2 -5
- package/vscode/src/vs/workbench/services/actions/common/menusExtensionPoint.js +113 -348
- package/vscode/src/vs/workbench/services/assignment/common/assignmentService.js +2 -5
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +31 -1
- package/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.js +1 -4
- package/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.js +16 -16
- package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +2 -2
- package/vscode/src/vs/workbench/services/editor/common/editorResolverService.js +2 -5
- package/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.js +4 -4
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +10 -45
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +1 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.js +80 -296
- package/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +6 -21
- package/vscode/src/vs/workbench/services/host/browser/browserHostService.js +3 -6
- package/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.js +24 -81
- package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayoutService.js +2 -2
- package/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing.js +11 -17
- package/vscode/src/vs/workbench/services/language/common/languageService.js +23 -98
- package/vscode/src/vs/workbench/services/remote/common/tunnelModel.js +9 -11
- package/vscode/src/vs/workbench/services/search/common/queryBuilder.js +1 -5
- package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +11 -23
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.js +2 -2
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.js +2 -7
- package/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.js +2 -2
- package/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.js +16 -53
- package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +50 -1
- package/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js +25 -99
- package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfile.js +6 -3
- package/vscode/src/vs/workbench/services/userDataSync/common/userDataSync.js +15 -3
- package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopySaveParticipant.js +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
|
|
2
2
|
import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
|
|
3
3
|
import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
|
|
4
4
|
import { workbenchConfigurationNodeBase } from '../../../common/configuration.js';
|
|
@@ -10,10 +10,7 @@ registry.registerConfiguration({
|
|
|
10
10
|
'properties': {
|
|
11
11
|
'workbench.enableExperiments': {
|
|
12
12
|
'type': 'boolean',
|
|
13
|
-
'description': (
|
|
14
|
-
'workbench.enableExperiments',
|
|
15
|
-
"Fetches experiments to run from a Microsoft online service."
|
|
16
|
-
)),
|
|
13
|
+
'description': localizeWithPath('vs/workbench/services/assignment/common/assignmentService', 'workbench.enableExperiments', "Fetches experiments to run from a Microsoft online service."),
|
|
17
14
|
'default': true,
|
|
18
15
|
'scope': 1 ,
|
|
19
16
|
'restricted': true,
|
|
@@ -5,6 +5,7 @@ import { CommandsRegistry } from 'monaco-editor/esm/vs/platform/commands/common/
|
|
|
5
5
|
import { ContextKeyExpr } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
|
|
6
6
|
import '../../../../../../../override/vs/platform/dialogs/common/dialogs.js';
|
|
7
7
|
import { IBrowserWorkbenchEnvironmentService } from '../../environment/browser/environmentService.js';
|
|
8
|
+
import { ExtensionsRegistry } from '../../extensions/common/extensionsRegistry.js';
|
|
8
9
|
function getAuthenticationProviderActivationEvent(id) { return `onAuthenticationRequest:${id}`; }
|
|
9
10
|
function readAccountUsages(storageService, providerId, accountName) {
|
|
10
11
|
const accountKey = `${providerId}-${accountName}-usages`;
|
|
@@ -76,10 +77,39 @@ CommandsRegistry.registerCommand('workbench.getCodeExchangeProxyEndpoints', func
|
|
|
76
77
|
const environmentService = accessor.get(IBrowserWorkbenchEnvironmentService);
|
|
77
78
|
return environmentService.options?.codeExchangeProxyEndpoints;
|
|
78
79
|
});
|
|
80
|
+
const authenticationDefinitionSchema = {
|
|
81
|
+
type: 'object',
|
|
82
|
+
additionalProperties: false,
|
|
83
|
+
properties: {
|
|
84
|
+
id: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
description: nls.localizeWithPath('vs/workbench/services/authentication/browser/authenticationService', 'authentication.id', 'The id of the authentication provider.')
|
|
87
|
+
},
|
|
88
|
+
label: {
|
|
89
|
+
type: 'string',
|
|
90
|
+
description: nls.localizeWithPath('vs/workbench/services/authentication/browser/authenticationService', 'authentication.label', 'The human readable name of the authentication provider.'),
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
( ExtensionsRegistry.registerExtensionPoint({
|
|
95
|
+
extensionPoint: 'authentication',
|
|
96
|
+
jsonSchema: {
|
|
97
|
+
description: nls.localizeWithPath('vs/workbench/services/authentication/browser/authenticationService', { key: 'authenticationExtensionPoint', comment: [`'Contributes' means adds here`] }, 'Contributes authentication'),
|
|
98
|
+
type: 'array',
|
|
99
|
+
items: authenticationDefinitionSchema
|
|
100
|
+
},
|
|
101
|
+
activationEventsGenerator: (authenticationProviders, result) => {
|
|
102
|
+
for (const authenticationProvider of authenticationProviders) {
|
|
103
|
+
if (authenticationProvider.id) {
|
|
104
|
+
result.push(`onAuthenticationRequest:${authenticationProvider.id}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}));
|
|
79
109
|
MenuRegistry.appendMenuItem(MenuId.AccountsContext, {
|
|
80
110
|
command: {
|
|
81
111
|
id: 'noAuthenticationProviders',
|
|
82
|
-
title:
|
|
112
|
+
title: nls.localizeWithPath('vs/workbench/services/authentication/browser/authenticationService', 'authentication.Placeholder', "No accounts requested yet..."),
|
|
83
113
|
precondition: ContextKeyExpr.false()
|
|
84
114
|
},
|
|
85
115
|
});
|
|
@@ -103,10 +103,7 @@ let JSONEditingService = class JSONEditingService {
|
|
|
103
103
|
toErrorMessage(error) {
|
|
104
104
|
switch (error) {
|
|
105
105
|
case 0 : {
|
|
106
|
-
return (
|
|
107
|
-
'errorInvalidFile',
|
|
108
|
-
"Unable to write into the file. Please open the file to correct errors/warnings in the file and try again."
|
|
109
|
-
));
|
|
106
|
+
return nls.localizeWithPath('vs/workbench/services/configuration/common/jsonEditingService', 'errorInvalidFile', "Unable to write into the file. Please open the file to correct errors/warnings in the file and try again.");
|
|
110
107
|
}
|
|
111
108
|
}
|
|
112
109
|
}
|
|
@@ -4,7 +4,7 @@ import * as types from 'monaco-editor/esm/vs/base/common/types.js';
|
|
|
4
4
|
import * as objects from 'monaco-editor/esm/vs/base/common/objects.js';
|
|
5
5
|
import { isWindows, isMacintosh, isLinux } from 'monaco-editor/esm/vs/base/common/platform.js';
|
|
6
6
|
import { normalizeDriveLetter } from 'monaco-editor/esm/vs/base/common/labels.js';
|
|
7
|
-
import {
|
|
7
|
+
import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
|
|
8
8
|
import { VariableKind, VariableError } from './configurationResolver.js';
|
|
9
9
|
import { replaceAsync } from 'monaco-editor/esm/vs/base/common/strings.js';
|
|
10
10
|
class AbstractVariableResolverService {
|
|
@@ -133,7 +133,7 @@ class AbstractVariableResolverService {
|
|
|
133
133
|
if (filePath) {
|
|
134
134
|
return normalizeDriveLetter(filePath);
|
|
135
135
|
}
|
|
136
|
-
throw new VariableError(variableKind, (
|
|
136
|
+
throw new VariableError(variableKind, (localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotResolveFile', "Variable {0} can not be resolved. Please open an editor.", match)));
|
|
137
137
|
};
|
|
138
138
|
const getFolderPathForFile = (variableKind) => {
|
|
139
139
|
const filePath = getFilePath(variableKind);
|
|
@@ -143,7 +143,7 @@ class AbstractVariableResolverService {
|
|
|
143
143
|
return normalizeDriveLetter(folderPath);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
throw new VariableError(variableKind,
|
|
146
|
+
throw new VariableError(variableKind, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotResolveFolderForFile', "Variable {0}: can not find workspace folder of '{1}'.", match, path.basename(filePath)));
|
|
147
147
|
};
|
|
148
148
|
const getFolderUri = (variableKind) => {
|
|
149
149
|
if (argument) {
|
|
@@ -151,15 +151,15 @@ class AbstractVariableResolverService {
|
|
|
151
151
|
if (folder) {
|
|
152
152
|
return folder;
|
|
153
153
|
}
|
|
154
|
-
throw new VariableError(variableKind,
|
|
154
|
+
throw new VariableError(variableKind, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotFindFolder', "Variable {0} can not be resolved. No such folder '{1}'.", match, argument));
|
|
155
155
|
}
|
|
156
156
|
if (folderUri) {
|
|
157
157
|
return folderUri;
|
|
158
158
|
}
|
|
159
159
|
if (this._context.getWorkspaceFolderCount() > 1) {
|
|
160
|
-
throw new VariableError(variableKind,
|
|
160
|
+
throw new VariableError(variableKind, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotResolveWorkspaceFolderMultiRoot', "Variable {0} can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.", match));
|
|
161
161
|
}
|
|
162
|
-
throw new VariableError(variableKind,
|
|
162
|
+
throw new VariableError(variableKind, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotResolveWorkspaceFolder', "Variable {0} can not be resolved. Please open a folder.", match));
|
|
163
163
|
};
|
|
164
164
|
switch (variable) {
|
|
165
165
|
case 'env':
|
|
@@ -172,19 +172,19 @@ class AbstractVariableResolverService {
|
|
|
172
172
|
}
|
|
173
173
|
return '';
|
|
174
174
|
}
|
|
175
|
-
throw new VariableError(VariableKind.Env,
|
|
175
|
+
throw new VariableError(VariableKind.Env, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'missingEnvVarName', "Variable {0} can not be resolved because no environment variable name is given.", match));
|
|
176
176
|
case 'config':
|
|
177
177
|
if (argument) {
|
|
178
178
|
const config = this._context.getConfigurationValue(folderUri, argument);
|
|
179
179
|
if (types.isUndefinedOrNull(config)) {
|
|
180
|
-
throw new VariableError(VariableKind.Config,
|
|
180
|
+
throw new VariableError(VariableKind.Config, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'configNotFound', "Variable {0} can not be resolved because setting '{1}' not found.", match, argument));
|
|
181
181
|
}
|
|
182
182
|
if (types.isObject(config)) {
|
|
183
|
-
throw new VariableError(VariableKind.Config,
|
|
183
|
+
throw new VariableError(VariableKind.Config, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'configNoString', "Variable {0} can not be resolved because '{1}' is a structured value.", match, argument));
|
|
184
184
|
}
|
|
185
185
|
return config;
|
|
186
186
|
}
|
|
187
|
-
throw new VariableError(VariableKind.Config,
|
|
187
|
+
throw new VariableError(VariableKind.Config, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'missingConfigName', "Variable {0} can not be resolved because no settings name is given.", match));
|
|
188
188
|
case 'command':
|
|
189
189
|
return this.resolveFromMap(VariableKind.Command, match, argument, commandValueMapping, 'command');
|
|
190
190
|
case 'input':
|
|
@@ -193,11 +193,11 @@ class AbstractVariableResolverService {
|
|
|
193
193
|
if (argument) {
|
|
194
194
|
const ext = await this._context.getExtension(argument);
|
|
195
195
|
if (!ext) {
|
|
196
|
-
throw new VariableError(VariableKind.ExtensionInstallFolder,
|
|
196
|
+
throw new VariableError(VariableKind.ExtensionInstallFolder, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'extensionNotInstalled', "Variable {0} can not be resolved because the extension {1} is not installed.", match, argument));
|
|
197
197
|
}
|
|
198
198
|
return this.fsPath(ext.extensionLocation);
|
|
199
199
|
}
|
|
200
|
-
throw new VariableError(VariableKind.ExtensionInstallFolder,
|
|
200
|
+
throw new VariableError(VariableKind.ExtensionInstallFolder, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'missingExtensionName', "Variable {0} can not be resolved because no extension name is given.", match));
|
|
201
201
|
default: {
|
|
202
202
|
switch (variable) {
|
|
203
203
|
case 'workspaceRoot':
|
|
@@ -212,21 +212,21 @@ class AbstractVariableResolverService {
|
|
|
212
212
|
if (environment.userHome) {
|
|
213
213
|
return environment.userHome;
|
|
214
214
|
}
|
|
215
|
-
throw new VariableError(VariableKind.UserHome,
|
|
215
|
+
throw new VariableError(VariableKind.UserHome, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotResolveUserHome', "Variable {0} can not be resolved. UserHome path is not defined", match));
|
|
216
216
|
}
|
|
217
217
|
case 'lineNumber': {
|
|
218
218
|
const lineNumber = this._context.getLineNumber();
|
|
219
219
|
if (lineNumber) {
|
|
220
220
|
return lineNumber;
|
|
221
221
|
}
|
|
222
|
-
throw new VariableError(VariableKind.LineNumber,
|
|
222
|
+
throw new VariableError(VariableKind.LineNumber, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotResolveLineNumber', "Variable {0} can not be resolved. Make sure to have a line selected in the active editor.", match));
|
|
223
223
|
}
|
|
224
224
|
case 'selectedText': {
|
|
225
225
|
const selectedText = this._context.getSelectedText();
|
|
226
226
|
if (selectedText) {
|
|
227
227
|
return selectedText;
|
|
228
228
|
}
|
|
229
|
-
throw new VariableError(VariableKind.SelectedText,
|
|
229
|
+
throw new VariableError(VariableKind.SelectedText, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'canNotResolveSelectedText', "Variable {0} can not be resolved. Make sure to have some text selected in the active editor.", match));
|
|
230
230
|
}
|
|
231
231
|
case 'file':
|
|
232
232
|
return getFilePath(VariableKind.File);
|
|
@@ -291,7 +291,7 @@ class AbstractVariableResolverService {
|
|
|
291
291
|
if (typeof v === 'string') {
|
|
292
292
|
return v;
|
|
293
293
|
}
|
|
294
|
-
throw new VariableError(variableKind,
|
|
294
|
+
throw new VariableError(variableKind, localizeWithPath('vs/workbench/services/configurationResolver/common/variableResolver', 'noValueForCommand', "Variable {0} can not be resolved because the command has no value.", match));
|
|
295
295
|
}
|
|
296
296
|
return match;
|
|
297
297
|
}
|
|
@@ -8,7 +8,7 @@ import { createCSSRule, asCSSPropertyValue, removeCSSRulesContainingSelector, cr
|
|
|
8
8
|
import { IThemeService } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
|
|
9
9
|
import { ThemeIcon } from 'monaco-editor/esm/vs/base/common/themables.js';
|
|
10
10
|
import { isFalsyOrWhitespace } from 'monaco-editor/esm/vs/base/common/strings.js';
|
|
11
|
-
import {
|
|
11
|
+
import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
|
|
12
12
|
import { isCancellationError } from 'monaco-editor/esm/vs/base/common/errors.js';
|
|
13
13
|
import { CancellationTokenSource } from 'monaco-editor/esm/vs/base/common/cancellation.js';
|
|
14
14
|
import { hash } from 'monaco-editor/esm/vs/base/common/hash.js';
|
|
@@ -147,7 +147,7 @@ class DecorationStyles {
|
|
|
147
147
|
const strikethrough = ( data.some(d => d.strikethrough));
|
|
148
148
|
if (onlyChildren) {
|
|
149
149
|
badgeClassName = rule.bubbleBadgeClassName;
|
|
150
|
-
tooltip = (
|
|
150
|
+
tooltip = localizeWithPath('vs/workbench/services/decorations/browser/decorationsService', 'bubbleTitle', "Contains emphasized items");
|
|
151
151
|
}
|
|
152
152
|
return {
|
|
153
153
|
labelClassName,
|
|
@@ -2,7 +2,7 @@ import * as glob from 'monaco-editor/esm/vs/base/common/glob.js';
|
|
|
2
2
|
import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
|
|
3
3
|
import { posix } from 'monaco-editor/esm/vs/base/common/path.js';
|
|
4
4
|
import { basename } from 'monaco-editor/esm/vs/base/common/resources.js';
|
|
5
|
-
import {
|
|
5
|
+
import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
|
|
6
6
|
import { workbenchConfigurationNodeBase } from '../../../common/configuration.js';
|
|
7
7
|
import { Extensions } from 'monaco-editor/esm/vs/platform/configuration/common/configurationRegistry.js';
|
|
8
8
|
import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
|
|
@@ -15,10 +15,7 @@ const editorAssociationsConfigurationNode = {
|
|
|
15
15
|
properties: {
|
|
16
16
|
'workbench.editorAssociations': {
|
|
17
17
|
type: 'object',
|
|
18
|
-
markdownDescription: (
|
|
19
|
-
'editor.editorAssociations',
|
|
20
|
-
"Configure [glob patterns](https://aka.ms/vscode-glob-patterns) to editors (for example `\"*.hex\": \"hexEditor.hexedit\"`). These have precedence over the default behavior."
|
|
21
|
-
)),
|
|
18
|
+
markdownDescription: localizeWithPath('vs/workbench/services/editor/common/editorResolverService', 'editor.editorAssociations', "Configure [glob patterns](https://aka.ms/vscode-glob-patterns) to editors (for example `\"*.hex\": \"hexEditor.hexedit\"`). These have precedence over the default behavior."),
|
|
22
19
|
additionalProperties: {
|
|
23
20
|
type: 'string'
|
|
24
21
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import {
|
|
2
|
+
import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
|
|
3
3
|
import '../../../../../../../override/vs/platform/dialogs/common/dialogs.js';
|
|
4
4
|
import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
|
|
5
5
|
import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
|
|
@@ -67,8 +67,8 @@ class ManageAuthorizedExtensionURIsAction extends Action2 {
|
|
|
67
67
|
constructor() {
|
|
68
68
|
super({
|
|
69
69
|
id: 'workbench.extensions.action.manageAuthorizedExtensionURIs',
|
|
70
|
-
title: { value: (
|
|
71
|
-
category: { value: (
|
|
70
|
+
title: { value: localizeWithPath('vs/workbench/services/extensions/browser/extensionUrlHandler', 'manage', "Manage Authorized Extension URIs..."), original: 'Manage Authorized Extension URIs...' },
|
|
71
|
+
category: { value: localizeWithPath('vs/workbench/services/extensions/browser/extensionUrlHandler', 'extensions', "Extensions"), original: 'Extensions' },
|
|
72
72
|
menu: {
|
|
73
73
|
id: MenuId.CommandPalette,
|
|
74
74
|
when: ( IsWebContext.toNegated())
|
|
@@ -81,7 +81,7 @@ class ManageAuthorizedExtensionURIsAction extends Action2 {
|
|
|
81
81
|
const storage = ( new UserTrustedExtensionIdStorage(storageService));
|
|
82
82
|
const items = ( storage.extensions.map(label => ({ label, picked: true })));
|
|
83
83
|
if (items.length === 0) {
|
|
84
|
-
await quickInputService.pick([{ label: (
|
|
84
|
+
await quickInputService.pick([{ label: localizeWithPath('vs/workbench/services/extensions/browser/extensionUrlHandler', 'no', 'There are currently no authorized extension URIs.') }]);
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
87
|
const result = await quickInputService.pick(items, { canPickMany: true });
|
|
@@ -224,11 +224,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
224
224
|
if (result.removedDueToLooping.length > 0) {
|
|
225
225
|
this._notificationService.notify({
|
|
226
226
|
severity: Severity.Error,
|
|
227
|
-
message: (
|
|
228
|
-
'looping',
|
|
229
|
-
"The following extensions contain dependency loops and have been disabled: {0}",
|
|
230
|
-
( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(', ')
|
|
231
|
-
))
|
|
227
|
+
message: nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'looping', "The following extensions contain dependency loops and have been disabled: {0}", ( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(', '))
|
|
232
228
|
});
|
|
233
229
|
}
|
|
234
230
|
this._doHandleExtensionPoints([].concat(toAdd).concat(toRemove));
|
|
@@ -380,11 +376,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
380
376
|
if (result.removedDueToLooping.length > 0) {
|
|
381
377
|
this._notificationService.notify({
|
|
382
378
|
severity: Severity.Error,
|
|
383
|
-
message: (
|
|
384
|
-
'looping',
|
|
385
|
-
"The following extensions contain dependency loops and have been disabled: {0}",
|
|
386
|
-
( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(', ')
|
|
387
|
-
))
|
|
379
|
+
message: nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'looping', "The following extensions contain dependency loops and have been disabled: {0}", ( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(', '))
|
|
388
380
|
});
|
|
389
381
|
}
|
|
390
382
|
this._doHandleExtensionPoints(this._registry.getAllExtensionDescriptions());
|
|
@@ -395,11 +387,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
395
387
|
}
|
|
396
388
|
const extensionHostManager = this.findTestExtensionHost(this._environmentService.extensionTestsLocationURI);
|
|
397
389
|
if (!extensionHostManager) {
|
|
398
|
-
const msg = (
|
|
399
|
-
'extensionTestError',
|
|
400
|
-
"No extension host found that can launch the test runner at {0}.",
|
|
401
|
-
( this._environmentService.extensionTestsLocationURI.toString())
|
|
402
|
-
));
|
|
390
|
+
const msg = nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'extensionTestError', "No extension host found that can launch the test runner at {0}.", ( this._environmentService.extensionTestsLocationURI.toString()));
|
|
403
391
|
console.error(msg);
|
|
404
392
|
this._notificationService.error(msg);
|
|
405
393
|
return;
|
|
@@ -561,12 +549,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
561
549
|
vetoReasons.add(reason);
|
|
562
550
|
}
|
|
563
551
|
}).catch(error => {
|
|
564
|
-
vetoReasons.add(
|
|
565
|
-
'extensionStopVetoError',
|
|
566
|
-
"{0} (Error: {1})",
|
|
567
|
-
reason,
|
|
568
|
-
toErrorMessage(error)
|
|
569
|
-
)));
|
|
552
|
+
vetoReasons.add(nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'extensionStopVetoError', "{0} (Error: {1})", reason, toErrorMessage(error)));
|
|
570
553
|
});
|
|
571
554
|
}
|
|
572
555
|
}
|
|
@@ -578,21 +561,9 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
578
561
|
else {
|
|
579
562
|
const vetoReasonsArray = Array.from(vetoReasons);
|
|
580
563
|
this._logService.warn(`Extension host was not stopped because of veto (stop reason: ${reason}, veto reason: ${vetoReasonsArray.join(', ')})`);
|
|
581
|
-
await this._dialogService.warn((
|
|
582
|
-
'
|
|
583
|
-
"The
|
|
584
|
-
reason
|
|
585
|
-
)), vetoReasonsArray.length === 1 ?
|
|
586
|
-
( nls.localize(
|
|
587
|
-
'extensionStopVetoDetailsOne',
|
|
588
|
-
"The reason for blocking the operation: {0}",
|
|
589
|
-
vetoReasonsArray[0]
|
|
590
|
-
)) :
|
|
591
|
-
( nls.localize(
|
|
592
|
-
'extensionStopVetoDetailsMany',
|
|
593
|
-
"The reasons for blocking the operation:\n- {0}",
|
|
594
|
-
vetoReasonsArray.join('\n -')
|
|
595
|
-
)));
|
|
564
|
+
await this._dialogService.warn(nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'extensionStopVetoMessage', "The following operation was blocked: {0}", reason), vetoReasonsArray.length === 1 ?
|
|
565
|
+
nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'extensionStopVetoDetailsOne', "The reason for blocking the operation: {0}", vetoReasonsArray[0]) :
|
|
566
|
+
nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'extensionStopVetoDetailsMany', "The reasons for blocking the operation:\n- {0}", vetoReasonsArray.join('\n -')));
|
|
596
567
|
}
|
|
597
568
|
return !veto;
|
|
598
569
|
}
|
|
@@ -683,18 +654,12 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
683
654
|
this._remoteCrashTracker.registerCrash();
|
|
684
655
|
if (this._remoteCrashTracker.shouldAutomaticallyRestart()) {
|
|
685
656
|
this._logService.info(`Automatically restarting the remote extension host.`);
|
|
686
|
-
this._notificationService.status((
|
|
687
|
-
'extensionService.autoRestart',
|
|
688
|
-
"The remote extension host terminated unexpectedly. Restarting..."
|
|
689
|
-
)), { hideAfter: 5000 });
|
|
657
|
+
this._notificationService.status(nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'extensionService.autoRestart', "The remote extension host terminated unexpectedly. Restarting..."), { hideAfter: 5000 });
|
|
690
658
|
this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
|
|
691
659
|
}
|
|
692
660
|
else {
|
|
693
|
-
this._notificationService.prompt(Severity.Error, (
|
|
694
|
-
|
|
695
|
-
"Remote Extension host terminated unexpectedly 3 times within the last 5 minutes."
|
|
696
|
-
)), [{
|
|
697
|
-
label: ( nls.localize('restart', "Restart Remote Extension Host")),
|
|
661
|
+
this._notificationService.prompt(Severity.Error, nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'extensionService.crash', "Remote Extension host terminated unexpectedly 3 times within the last 5 minutes."), [{
|
|
662
|
+
label: nls.localizeWithPath('vs/workbench/services/extensions/common/abstractExtensionService', 'restart', "Restart Remote Extension Host"),
|
|
698
663
|
run: () => {
|
|
699
664
|
this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
|
|
700
665
|
}
|
|
@@ -606,7 +606,7 @@ registerAction2(class MeasureExtHostLatencyAction extends Action2 {
|
|
|
606
606
|
super({
|
|
607
607
|
id: 'editor.action.measureExtHostLatency',
|
|
608
608
|
title: {
|
|
609
|
-
value:
|
|
609
|
+
value: nls.localizeWithPath('vs/workbench/services/extensions/common/extensionHostManager', 'measureExtHostLatency', "Measure Extension Host Latency"),
|
|
610
610
|
original: 'Measure Extension Host Latency'
|
|
611
611
|
},
|
|
612
612
|
category: Categories.Developer,
|