@codingame/monaco-vscode-api 1.83.2 → 1.83.3
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 +11880 -682
- 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
|
@@ -51,18 +51,18 @@ import { KeyChord } from 'monaco-editor/esm/vs/base/common/keyCodes.js';
|
|
|
51
51
|
import { Categories } from 'monaco-editor/esm/vs/platform/action/common/actionCommonCategories.js';
|
|
52
52
|
import { IDialogService, getFileNamesMessage } from '../../../../platform/dialogs/common/dialogs.js';
|
|
53
53
|
const NEW_FILE_COMMAND_ID = 'explorer.newFile';
|
|
54
|
-
const NEW_FILE_LABEL =
|
|
54
|
+
const NEW_FILE_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'newFile', "New File...");
|
|
55
55
|
const NEW_FOLDER_COMMAND_ID = 'explorer.newFolder';
|
|
56
|
-
const NEW_FOLDER_LABEL =
|
|
57
|
-
const TRIGGER_RENAME_LABEL =
|
|
58
|
-
const MOVE_FILE_TO_TRASH_LABEL =
|
|
59
|
-
const COPY_FILE_LABEL =
|
|
60
|
-
const PASTE_FILE_LABEL =
|
|
56
|
+
const NEW_FOLDER_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'newFolder', "New Folder...");
|
|
57
|
+
const TRIGGER_RENAME_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'rename', "Rename...");
|
|
58
|
+
const MOVE_FILE_TO_TRASH_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'delete', "Delete");
|
|
59
|
+
const COPY_FILE_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'copyFile', "Copy");
|
|
60
|
+
const PASTE_FILE_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'pasteFile', "Paste");
|
|
61
61
|
const FileCopiedContext = ( new RawContextKey('fileCopied', false));
|
|
62
62
|
const DOWNLOAD_COMMAND_ID = 'explorer.download';
|
|
63
|
-
const DOWNLOAD_LABEL =
|
|
63
|
+
const DOWNLOAD_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'download', "Download...");
|
|
64
64
|
const UPLOAD_COMMAND_ID = 'explorer.upload';
|
|
65
|
-
const UPLOAD_LABEL =
|
|
65
|
+
const UPLOAD_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'upload', "Upload...");
|
|
66
66
|
const CONFIRM_DELETE_SETTING_KEY = 'explorer.confirmDelete';
|
|
67
67
|
const MAX_UNDO_FILE_SIZE = 5000000;
|
|
68
68
|
function onError(notificationService, error) {
|
|
@@ -79,16 +79,10 @@ async function refreshIfSeparator(value, explorerService) {
|
|
|
79
79
|
async function deleteFiles(explorerService, workingCopyFileService, dialogService, configurationService, elements, useTrash, skipConfirm = false, ignoreIfNotExists = false) {
|
|
80
80
|
let primaryButton;
|
|
81
81
|
if (useTrash) {
|
|
82
|
-
primaryButton = isWindows ?
|
|
83
|
-
{ key: 'deleteButtonLabelTrash', comment: ['&& denotes a mnemonic'] },
|
|
84
|
-
"&&Move to Trash"
|
|
85
|
-
));
|
|
82
|
+
primaryButton = isWindows ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'deleteButtonLabelRecycleBin', "&&Move to Recycle Bin") : nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'deleteButtonLabelTrash', comment: ['&& denotes a mnemonic'] }, "&&Move to Trash");
|
|
86
83
|
}
|
|
87
84
|
else {
|
|
88
|
-
primaryButton =
|
|
89
|
-
{ key: 'deleteButtonLabel', comment: ['&& denotes a mnemonic'] },
|
|
90
|
-
"&&Delete"
|
|
91
|
-
));
|
|
85
|
+
primaryButton = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'deleteButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Delete");
|
|
92
86
|
}
|
|
93
87
|
const distinctElements = resources.distinctParents(elements, e => e.resource);
|
|
94
88
|
const dirtyWorkingCopies = ( new Set());
|
|
@@ -101,39 +95,23 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
101
95
|
if (dirtyWorkingCopies.size) {
|
|
102
96
|
let message;
|
|
103
97
|
if (distinctElements.length > 1) {
|
|
104
|
-
message = (
|
|
105
|
-
'dirtyMessageFilesDelete',
|
|
106
|
-
"You are deleting files with unsaved changes. Do you want to continue?"
|
|
107
|
-
));
|
|
98
|
+
message = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'dirtyMessageFilesDelete', "You are deleting files with unsaved changes. Do you want to continue?");
|
|
108
99
|
}
|
|
109
100
|
else if (distinctElements[0].isDirectory) {
|
|
110
101
|
if (dirtyWorkingCopies.size === 1) {
|
|
111
|
-
message = (
|
|
112
|
-
'dirtyMessageFolderOneDelete',
|
|
113
|
-
"You are deleting a folder {0} with unsaved changes in 1 file. Do you want to continue?",
|
|
114
|
-
distinctElements[0].name
|
|
115
|
-
));
|
|
102
|
+
message = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'dirtyMessageFolderOneDelete', "You are deleting a folder {0} with unsaved changes in 1 file. Do you want to continue?", distinctElements[0].name);
|
|
116
103
|
}
|
|
117
104
|
else {
|
|
118
|
-
message = (
|
|
119
|
-
'dirtyMessageFolderDelete',
|
|
120
|
-
"You are deleting a folder {0} with unsaved changes in {1} files. Do you want to continue?",
|
|
121
|
-
distinctElements[0].name,
|
|
122
|
-
dirtyWorkingCopies.size
|
|
123
|
-
));
|
|
105
|
+
message = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'dirtyMessageFolderDelete', "You are deleting a folder {0} with unsaved changes in {1} files. Do you want to continue?", distinctElements[0].name, dirtyWorkingCopies.size);
|
|
124
106
|
}
|
|
125
107
|
}
|
|
126
108
|
else {
|
|
127
|
-
message = (
|
|
128
|
-
'dirtyMessageFileDelete',
|
|
129
|
-
"You are deleting {0} with unsaved changes. Do you want to continue?",
|
|
130
|
-
distinctElements[0].name
|
|
131
|
-
));
|
|
109
|
+
message = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'dirtyMessageFileDelete', "You are deleting {0} with unsaved changes. Do you want to continue?", distinctElements[0].name);
|
|
132
110
|
}
|
|
133
111
|
const response = await dialogService.confirm({
|
|
134
112
|
type: 'warning',
|
|
135
113
|
message,
|
|
136
|
-
detail:
|
|
114
|
+
detail: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'dirtyWarning', "Your changes will be lost if you don't save them."),
|
|
137
115
|
primaryButton
|
|
138
116
|
});
|
|
139
117
|
if (!response.confirmed) {
|
|
@@ -147,8 +125,8 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
147
125
|
return;
|
|
148
126
|
}
|
|
149
127
|
let confirmation;
|
|
150
|
-
const deleteDetail = ( distinctElements.some(e => e.isDirectory)) ?
|
|
151
|
-
distinctElements.length > 1 ?
|
|
128
|
+
const deleteDetail = ( distinctElements.some(e => e.isDirectory)) ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'irreversible', "This action is irreversible!") :
|
|
129
|
+
distinctElements.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'restorePlural', "You can restore these files using the Undo command") : nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'restore', "You can restore this file using the Undo command");
|
|
152
130
|
if (skipConfirm || (useTrash && configurationService.getValue(CONFIRM_DELETE_SETTING_KEY) === false)) {
|
|
153
131
|
confirmation = { confirmed: true };
|
|
154
132
|
}
|
|
@@ -156,17 +134,17 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
156
134
|
let { message, detail } = getMoveToTrashMessage(distinctElements);
|
|
157
135
|
detail += detail ? '\n' : '';
|
|
158
136
|
if (isWindows) {
|
|
159
|
-
detail += distinctElements.length > 1 ?
|
|
137
|
+
detail += distinctElements.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'undoBinFiles', "You can restore these files from the Recycle Bin.") : nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'undoBin', "You can restore this file from the Recycle Bin.");
|
|
160
138
|
}
|
|
161
139
|
else {
|
|
162
|
-
detail += distinctElements.length > 1 ?
|
|
140
|
+
detail += distinctElements.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'undoTrashFiles', "You can restore these files from the Trash.") : nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'undoTrash', "You can restore this file from the Trash.");
|
|
163
141
|
}
|
|
164
142
|
confirmation = await dialogService.confirm({
|
|
165
143
|
message,
|
|
166
144
|
detail,
|
|
167
145
|
primaryButton,
|
|
168
146
|
checkbox: {
|
|
169
|
-
label:
|
|
147
|
+
label: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'doNotAskAgain', "Do not ask me again")
|
|
170
148
|
}
|
|
171
149
|
});
|
|
172
150
|
}
|
|
@@ -194,24 +172,8 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
194
172
|
{ recursive: true, folder: e.isDirectory, ignoreIfNotExists, skipTrashBin: !useTrash, maxSize: MAX_UNDO_FILE_SIZE }
|
|
195
173
|
))));
|
|
196
174
|
const options = {
|
|
197
|
-
undoLabel: distinctElements.length > 1 ? ( nls.
|
|
198
|
-
|
|
199
|
-
"Delete {0} files",
|
|
200
|
-
distinctElements.length
|
|
201
|
-
)) : ( nls.localize(
|
|
202
|
-
{ key: 'deleteFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file deleted'] },
|
|
203
|
-
"Delete {0}",
|
|
204
|
-
distinctElements[0].name
|
|
205
|
-
)),
|
|
206
|
-
progressLabel: distinctElements.length > 1 ? ( nls.localize(
|
|
207
|
-
{ key: 'deletingBulkEdit', comment: ['Placeholder will be replaced by the number of files deleted'] },
|
|
208
|
-
"Deleting {0} files",
|
|
209
|
-
distinctElements.length
|
|
210
|
-
)) : ( nls.localize(
|
|
211
|
-
{ key: 'deletingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file deleted'] },
|
|
212
|
-
"Deleting {0}",
|
|
213
|
-
distinctElements[0].name
|
|
214
|
-
)),
|
|
175
|
+
undoLabel: distinctElements.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'deleteBulkEdit', comment: ['Placeholder will be replaced by the number of files deleted'] }, "Delete {0} files", distinctElements.length) : nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'deleteFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file deleted'] }, "Delete {0}", distinctElements[0].name),
|
|
176
|
+
progressLabel: distinctElements.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'deletingBulkEdit', comment: ['Placeholder will be replaced by the number of files deleted'] }, "Deleting {0} files", distinctElements.length) : nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'deletingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file deleted'] }, "Deleting {0}", distinctElements[0].name),
|
|
215
177
|
};
|
|
216
178
|
await explorerService.applyBulkEdit(resourceFileEdits, options);
|
|
217
179
|
}
|
|
@@ -220,22 +182,13 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
220
182
|
let detailMessage;
|
|
221
183
|
let primaryButton;
|
|
222
184
|
if (useTrash) {
|
|
223
|
-
errorMessage = isWindows ? ( nls.
|
|
224
|
-
'binFailed',
|
|
225
|
-
"Failed to delete using the Recycle Bin. Do you want to permanently delete instead?"
|
|
226
|
-
)) : ( nls.localize(
|
|
227
|
-
'trashFailed',
|
|
228
|
-
"Failed to delete using the Trash. Do you want to permanently delete instead?"
|
|
229
|
-
));
|
|
185
|
+
errorMessage = isWindows ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'binFailed', "Failed to delete using the Recycle Bin. Do you want to permanently delete instead?") : nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'trashFailed', "Failed to delete using the Trash. Do you want to permanently delete instead?");
|
|
230
186
|
detailMessage = deleteDetail;
|
|
231
|
-
primaryButton =
|
|
232
|
-
{ key: 'deletePermanentlyButtonLabel', comment: ['&& denotes a mnemonic'] },
|
|
233
|
-
"&&Delete Permanently"
|
|
234
|
-
));
|
|
187
|
+
primaryButton = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'deletePermanentlyButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Delete Permanently");
|
|
235
188
|
}
|
|
236
189
|
else {
|
|
237
190
|
errorMessage = toErrorMessage(error, false);
|
|
238
|
-
primaryButton =
|
|
191
|
+
primaryButton = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'retryButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Retry");
|
|
239
192
|
}
|
|
240
193
|
const res = await dialogService.confirm({
|
|
241
194
|
type: 'warning',
|
|
@@ -256,90 +209,50 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
256
209
|
function getMoveToTrashMessage(distinctElements) {
|
|
257
210
|
if (containsBothDirectoryAndFile(distinctElements)) {
|
|
258
211
|
return {
|
|
259
|
-
message: (
|
|
260
|
-
'confirmMoveTrashMessageFilesAndDirectories',
|
|
261
|
-
"Are you sure you want to delete the following {0} files/directories and their contents?",
|
|
262
|
-
distinctElements.length
|
|
263
|
-
)),
|
|
212
|
+
message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmMoveTrashMessageFilesAndDirectories', "Are you sure you want to delete the following {0} files/directories and their contents?", distinctElements.length),
|
|
264
213
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
265
214
|
};
|
|
266
215
|
}
|
|
267
216
|
if (distinctElements.length > 1) {
|
|
268
217
|
if (distinctElements[0].isDirectory) {
|
|
269
218
|
return {
|
|
270
|
-
message: (
|
|
271
|
-
'confirmMoveTrashMessageMultipleDirectories',
|
|
272
|
-
"Are you sure you want to delete the following {0} directories and their contents?",
|
|
273
|
-
distinctElements.length
|
|
274
|
-
)),
|
|
219
|
+
message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmMoveTrashMessageMultipleDirectories', "Are you sure you want to delete the following {0} directories and their contents?", distinctElements.length),
|
|
275
220
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
276
221
|
};
|
|
277
222
|
}
|
|
278
223
|
return {
|
|
279
|
-
message: (
|
|
280
|
-
'confirmMoveTrashMessageMultiple',
|
|
281
|
-
"Are you sure you want to delete the following {0} files?",
|
|
282
|
-
distinctElements.length
|
|
283
|
-
)),
|
|
224
|
+
message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmMoveTrashMessageMultiple', "Are you sure you want to delete the following {0} files?", distinctElements.length),
|
|
284
225
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
285
226
|
};
|
|
286
227
|
}
|
|
287
228
|
if (distinctElements[0].isDirectory && !distinctElements[0].isSymbolicLink) {
|
|
288
|
-
return { message: (
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
distinctElements[0].name
|
|
292
|
-
)), detail: '' };
|
|
293
|
-
}
|
|
294
|
-
return { message: ( nls.localize(
|
|
295
|
-
'confirmMoveTrashMessageFile',
|
|
296
|
-
"Are you sure you want to delete '{0}'?",
|
|
297
|
-
distinctElements[0].name
|
|
298
|
-
)), detail: '' };
|
|
229
|
+
return { message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmMoveTrashMessageFolder', "Are you sure you want to delete '{0}' and its contents?", distinctElements[0].name), detail: '' };
|
|
230
|
+
}
|
|
231
|
+
return { message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmMoveTrashMessageFile', "Are you sure you want to delete '{0}'?", distinctElements[0].name), detail: '' };
|
|
299
232
|
}
|
|
300
233
|
function getDeleteMessage(distinctElements) {
|
|
301
234
|
if (containsBothDirectoryAndFile(distinctElements)) {
|
|
302
235
|
return {
|
|
303
|
-
message: (
|
|
304
|
-
'confirmDeleteMessageFilesAndDirectories',
|
|
305
|
-
"Are you sure you want to permanently delete the following {0} files/directories and their contents?",
|
|
306
|
-
distinctElements.length
|
|
307
|
-
)),
|
|
236
|
+
message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmDeleteMessageFilesAndDirectories', "Are you sure you want to permanently delete the following {0} files/directories and their contents?", distinctElements.length),
|
|
308
237
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
309
238
|
};
|
|
310
239
|
}
|
|
311
240
|
if (distinctElements.length > 1) {
|
|
312
241
|
if (distinctElements[0].isDirectory) {
|
|
313
242
|
return {
|
|
314
|
-
message: (
|
|
315
|
-
'confirmDeleteMessageMultipleDirectories',
|
|
316
|
-
"Are you sure you want to permanently delete the following {0} directories and their contents?",
|
|
317
|
-
distinctElements.length
|
|
318
|
-
)),
|
|
243
|
+
message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmDeleteMessageMultipleDirectories', "Are you sure you want to permanently delete the following {0} directories and their contents?", distinctElements.length),
|
|
319
244
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
320
245
|
};
|
|
321
246
|
}
|
|
322
247
|
return {
|
|
323
|
-
message: (
|
|
324
|
-
'confirmDeleteMessageMultiple',
|
|
325
|
-
"Are you sure you want to permanently delete the following {0} files?",
|
|
326
|
-
distinctElements.length
|
|
327
|
-
)),
|
|
248
|
+
message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmDeleteMessageMultiple', "Are you sure you want to permanently delete the following {0} files?", distinctElements.length),
|
|
328
249
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
329
250
|
};
|
|
330
251
|
}
|
|
331
252
|
if (distinctElements[0].isDirectory) {
|
|
332
|
-
return { message: (
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
distinctElements[0].name
|
|
336
|
-
)), detail: '' };
|
|
337
|
-
}
|
|
338
|
-
return { message: ( nls.localize(
|
|
339
|
-
'confirmDeleteMessageFile',
|
|
340
|
-
"Are you sure you want to permanently delete '{0}'?",
|
|
341
|
-
distinctElements[0].name
|
|
342
|
-
)), detail: '' };
|
|
253
|
+
return { message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmDeleteMessageFolder', "Are you sure you want to permanently delete '{0}' and its contents?", distinctElements[0].name), detail: '' };
|
|
254
|
+
}
|
|
255
|
+
return { message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmDeleteMessageFile', "Are you sure you want to permanently delete '{0}'?", distinctElements[0].name), detail: '' };
|
|
343
256
|
}
|
|
344
257
|
function containsBothDirectoryAndFile(distinctElements) {
|
|
345
258
|
const directory = distinctElements.find(element => element.isDirectory);
|
|
@@ -466,18 +379,14 @@ async function askForOverwrite(fileService, dialogService, targetResource) {
|
|
|
466
379
|
}
|
|
467
380
|
const { confirmed } = await dialogService.confirm({
|
|
468
381
|
type: Severity.Warning,
|
|
469
|
-
message: (
|
|
470
|
-
|
|
471
|
-
"A file or folder with the name '{0}' already exists in the destination folder. Do you want to replace it?",
|
|
472
|
-
basename(targetResource.path)
|
|
473
|
-
)),
|
|
474
|
-
primaryButton: ( nls.localize('replaceButtonLabel', "&&Replace"))
|
|
382
|
+
message: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'confirmOverwrite', "A file or folder with the name '{0}' already exists in the destination folder. Do you want to replace it?", basename(targetResource.path)),
|
|
383
|
+
primaryButton: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'replaceButtonLabel', "&&Replace")
|
|
475
384
|
});
|
|
476
385
|
return confirmed;
|
|
477
386
|
}
|
|
478
387
|
class GlobalCompareResourcesAction extends Action2 {
|
|
479
388
|
static { this.ID = 'workbench.files.action.compareFileWith'; }
|
|
480
|
-
static { this.LABEL =
|
|
389
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'globalCompareFile', "Compare Active File With..."); }
|
|
481
390
|
constructor() {
|
|
482
391
|
super({
|
|
483
392
|
id: GlobalCompareResourcesAction.ID,
|
|
@@ -510,7 +419,7 @@ class GlobalCompareResourcesAction extends Action2 {
|
|
|
510
419
|
}
|
|
511
420
|
class ToggleAutoSaveAction extends Action2 {
|
|
512
421
|
static { this.ID = 'workbench.action.toggleAutoSave'; }
|
|
513
|
-
static { this.LABEL =
|
|
422
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'toggleAutoSave', "Toggle Auto Save"); }
|
|
514
423
|
constructor() {
|
|
515
424
|
super({
|
|
516
425
|
id: ToggleAutoSaveAction.ID,
|
|
@@ -560,7 +469,7 @@ BaseSaveAllAction = ( __decorate([
|
|
|
560
469
|
], BaseSaveAllAction));
|
|
561
470
|
class SaveAllInGroupAction extends BaseSaveAllAction {
|
|
562
471
|
static { this.ID = 'workbench.files.action.saveAllInGroup'; }
|
|
563
|
-
static { this.LABEL =
|
|
472
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'saveAllInGroup', "Save All in Group"); }
|
|
564
473
|
get class() {
|
|
565
474
|
return 'explorer-action ' + ThemeIcon.asClassName(Codicon.saveAll);
|
|
566
475
|
}
|
|
@@ -570,7 +479,7 @@ class SaveAllInGroupAction extends BaseSaveAllAction {
|
|
|
570
479
|
}
|
|
571
480
|
let CloseGroupAction = class CloseGroupAction extends Action {
|
|
572
481
|
static { this.ID = 'workbench.files.action.closeGroup'; }
|
|
573
|
-
static { this.LABEL =
|
|
482
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'closeGroup', "Close Group"); }
|
|
574
483
|
constructor(id, label, commandService) {
|
|
575
484
|
super(id, label, ThemeIcon.asClassName(Codicon.closeAll));
|
|
576
485
|
this.commandService = commandService;
|
|
@@ -584,7 +493,7 @@ CloseGroupAction = ( __decorate([
|
|
|
584
493
|
], CloseGroupAction));
|
|
585
494
|
class FocusFilesExplorer extends Action2 {
|
|
586
495
|
static { this.ID = 'workbench.files.action.focusFilesExplorer'; }
|
|
587
|
-
static { this.LABEL =
|
|
496
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'focusFilesExplorer', "Focus on Files Explorer"); }
|
|
588
497
|
constructor() {
|
|
589
498
|
super({
|
|
590
499
|
id: FocusFilesExplorer.ID,
|
|
@@ -600,7 +509,7 @@ class FocusFilesExplorer extends Action2 {
|
|
|
600
509
|
}
|
|
601
510
|
class ShowActiveFileInExplorer extends Action2 {
|
|
602
511
|
static { this.ID = 'workbench.files.action.showActiveFileInExplorer'; }
|
|
603
|
-
static { this.LABEL =
|
|
512
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'showInExplorer', "Reveal Active File in Explorer View"); }
|
|
604
513
|
constructor() {
|
|
605
514
|
super({
|
|
606
515
|
id: ShowActiveFileInExplorer.ID,
|
|
@@ -620,7 +529,7 @@ class ShowActiveFileInExplorer extends Action2 {
|
|
|
620
529
|
}
|
|
621
530
|
class ShowOpenedFileInNewWindow extends Action2 {
|
|
622
531
|
static { this.ID = 'workbench.action.files.showOpenedFileInNewWindow'; }
|
|
623
|
-
static { this.LABEL =
|
|
532
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'openFileInNewWindow', "Open Active File in New Window"); }
|
|
624
533
|
constructor() {
|
|
625
534
|
super({
|
|
626
535
|
id: ShowOpenedFileInNewWindow.ID,
|
|
@@ -642,10 +551,7 @@ class ShowOpenedFileInNewWindow extends Action2 {
|
|
|
642
551
|
hostService.openWindow([{ fileUri: fileResource }], { forceNewWindow: true });
|
|
643
552
|
}
|
|
644
553
|
else {
|
|
645
|
-
dialogService.error((
|
|
646
|
-
'openFileToShowInNewWindow.unsupportedschema',
|
|
647
|
-
"The active editor must contain an openable resource."
|
|
648
|
-
)));
|
|
554
|
+
dialogService.error(nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'openFileToShowInNewWindow.unsupportedschema', "The active editor must contain an openable resource."));
|
|
649
555
|
}
|
|
650
556
|
}
|
|
651
557
|
}
|
|
@@ -654,16 +560,13 @@ function validateFileName(pathService, item, name, os) {
|
|
|
654
560
|
name = getWellFormedFileName(name);
|
|
655
561
|
if (!name || name.length === 0 || /^\s+$/.test(name)) {
|
|
656
562
|
return {
|
|
657
|
-
content:
|
|
563
|
+
content: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'emptyFileNameError', "A file or folder name must be provided."),
|
|
658
564
|
severity: Severity.Error
|
|
659
565
|
};
|
|
660
566
|
}
|
|
661
567
|
if (name[0] === '/' || name[0] === '\\') {
|
|
662
568
|
return {
|
|
663
|
-
content: (
|
|
664
|
-
'fileNameStartsWithSlashError',
|
|
665
|
-
"A file or folder name cannot start with a slash."
|
|
666
|
-
)),
|
|
569
|
+
content: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'fileNameStartsWithSlashError', "A file or folder name cannot start with a slash."),
|
|
667
570
|
severity: Severity.Error
|
|
668
571
|
};
|
|
669
572
|
}
|
|
@@ -673,11 +576,7 @@ function validateFileName(pathService, item, name, os) {
|
|
|
673
576
|
const child = parent?.getChild(name);
|
|
674
577
|
if (child && child !== item) {
|
|
675
578
|
return {
|
|
676
|
-
content: (
|
|
677
|
-
'fileNameExistsError',
|
|
678
|
-
"A file or folder **{0}** already exists at this location. Please choose a different name.",
|
|
679
|
-
name
|
|
680
|
-
)),
|
|
579
|
+
content: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'fileNameExistsError', "A file or folder **{0}** already exists at this location. Please choose a different name.", name),
|
|
681
580
|
severity: Severity.Error
|
|
682
581
|
};
|
|
683
582
|
}
|
|
@@ -685,20 +584,13 @@ function validateFileName(pathService, item, name, os) {
|
|
|
685
584
|
if (( names.some(folderName => !pathService.hasValidBasename(item.resource, os, folderName)))) {
|
|
686
585
|
const escapedName = name.replace(/\*/g, '\\*');
|
|
687
586
|
return {
|
|
688
|
-
content: (
|
|
689
|
-
'invalidFileNameError',
|
|
690
|
-
"The name **{0}** is not valid as a file or folder name. Please choose a different name.",
|
|
691
|
-
trimLongName(escapedName)
|
|
692
|
-
)),
|
|
587
|
+
content: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'invalidFileNameError', "The name **{0}** is not valid as a file or folder name. Please choose a different name.", trimLongName(escapedName)),
|
|
693
588
|
severity: Severity.Error
|
|
694
589
|
};
|
|
695
590
|
}
|
|
696
591
|
if (( names.some(name => /^\s|\s$/.test(name)))) {
|
|
697
592
|
return {
|
|
698
|
-
content: (
|
|
699
|
-
'fileNameWhitespaceWarning',
|
|
700
|
-
"Leading or trailing whitespace detected in file or folder name."
|
|
701
|
-
)),
|
|
593
|
+
content: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'fileNameWhitespaceWarning', "Leading or trailing whitespace detected in file or folder name."),
|
|
702
594
|
severity: Severity.Warning
|
|
703
595
|
};
|
|
704
596
|
}
|
|
@@ -721,7 +613,7 @@ function getWellFormedFileName(filename) {
|
|
|
721
613
|
}
|
|
722
614
|
class CompareNewUntitledTextFilesAction extends Action2 {
|
|
723
615
|
static { this.ID = 'workbench.files.action.compareNewUntitledTextFiles'; }
|
|
724
|
-
static { this.LABEL =
|
|
616
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'compareNewUntitledTextFiles', "Compare New Untitled Text Files"); }
|
|
725
617
|
constructor() {
|
|
726
618
|
super({
|
|
727
619
|
id: CompareNewUntitledTextFilesAction.ID,
|
|
@@ -741,7 +633,7 @@ class CompareNewUntitledTextFilesAction extends Action2 {
|
|
|
741
633
|
}
|
|
742
634
|
class CompareWithClipboardAction extends Action2 {
|
|
743
635
|
static { this.ID = 'workbench.files.action.compareWithClipboard'; }
|
|
744
|
-
static { this.LABEL =
|
|
636
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'compareWithClipboard', "Compare Active File with Clipboard"); }
|
|
745
637
|
static { this.SCHEME_COUNTER = 0; }
|
|
746
638
|
constructor() {
|
|
747
639
|
super({
|
|
@@ -765,7 +657,7 @@ class CompareWithClipboardAction extends Action2 {
|
|
|
765
657
|
this.registrationDisposal = textModelService.registerTextModelContentProvider(scheme, provider);
|
|
766
658
|
}
|
|
767
659
|
const name = resources.basename(resource);
|
|
768
|
-
const editorLabel =
|
|
660
|
+
const editorLabel = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'clipboardComparisonLabel', "Clipboard ↔ {0}", name);
|
|
769
661
|
await editorService.openEditor({
|
|
770
662
|
original: { resource: resource.with({ scheme }) },
|
|
771
663
|
modified: { resource: resource },
|
|
@@ -801,7 +693,7 @@ ClipboardContentProvider = ( __decorate([
|
|
|
801
693
|
], ClipboardContentProvider));
|
|
802
694
|
function onErrorWithRetry(notificationService, error, retry) {
|
|
803
695
|
notificationService.prompt(Severity.Error, toErrorMessage(error, false), [{
|
|
804
|
-
label:
|
|
696
|
+
label: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'retry', "Retry"),
|
|
805
697
|
run: () => retry()
|
|
806
698
|
}]);
|
|
807
699
|
}
|
|
@@ -848,8 +740,8 @@ async function openExplorerAndCreate(accessor, isFolder) {
|
|
|
848
740
|
isFolder = true;
|
|
849
741
|
}
|
|
850
742
|
await explorerService.applyBulkEdit([( new ResourceFileEdit(undefined, resourceToCreate, { folder: isFolder }))], {
|
|
851
|
-
undoLabel:
|
|
852
|
-
progressLabel:
|
|
743
|
+
undoLabel: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'createBulkEdit', "Create {0}", value),
|
|
744
|
+
progressLabel: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'creatingBulkEdit', "Creating {0}", value),
|
|
853
745
|
confirmBeforeUndo: true
|
|
854
746
|
});
|
|
855
747
|
await refreshIfSeparator(value, explorerService);
|
|
@@ -910,8 +802,8 @@ const renameHandler = async (accessor) => {
|
|
|
910
802
|
try {
|
|
911
803
|
await explorerService.applyBulkEdit([( new ResourceFileEdit(stat.resource, targetResource))], {
|
|
912
804
|
confirmBeforeUndo: configurationService.getValue().explorer.confirmUndo === "verbose" ,
|
|
913
|
-
undoLabel:
|
|
914
|
-
progressLabel:
|
|
805
|
+
undoLabel: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'renameBulkEdit', "Rename {0} to {1}", stat.name, value),
|
|
806
|
+
progressLabel: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'renamingBulkEdit', "Renaming {0} to {1}", stat.name, value),
|
|
915
807
|
});
|
|
916
808
|
await refreshIfSeparator(value, explorerService);
|
|
917
809
|
}
|
|
@@ -1012,7 +904,7 @@ const pasteFileHandler = async (accessor) => {
|
|
|
1012
904
|
try {
|
|
1013
905
|
const sourceTargetPairs = coalesce(await Promise.all(( toPaste.map(async (fileToPaste) => {
|
|
1014
906
|
if (( element.resource.toString()) !== ( fileToPaste.toString()) && resources.isEqualOrParent(element.resource, fileToPaste)) {
|
|
1015
|
-
throw new Error(nls.
|
|
907
|
+
throw new Error(nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'fileIsAncestor', "File to paste is an ancestor of the destination folder"));
|
|
1016
908
|
}
|
|
1017
909
|
const fileToPasteStat = await fileService.stat(fileToPaste);
|
|
1018
910
|
let target;
|
|
@@ -1033,26 +925,10 @@ const pasteFileHandler = async (accessor) => {
|
|
|
1033
925
|
const resourceFileEdits = ( sourceTargetPairs.map(pair => ( new ResourceFileEdit(pair.source, pair.target, { overwrite: incrementalNaming === 'disabled' }))));
|
|
1034
926
|
const options = {
|
|
1035
927
|
confirmBeforeUndo: configurationService.getValue().explorer.confirmUndo === "verbose" ,
|
|
1036
|
-
progressLabel: sourceTargetPairs.length > 1 ? (
|
|
1037
|
-
{ key: '
|
|
1038
|
-
|
|
1039
|
-
sourceTargetPairs.
|
|
1040
|
-
))
|
|
1041
|
-
: ( nls.localize(
|
|
1042
|
-
{ key: 'movingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file moved.'] },
|
|
1043
|
-
"Moving {0}",
|
|
1044
|
-
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1045
|
-
)),
|
|
1046
|
-
undoLabel: sourceTargetPairs.length > 1 ? ( nls.localize(
|
|
1047
|
-
{ key: 'moveBulkEdit', comment: ['Placeholder will be replaced by the number of files being moved'] },
|
|
1048
|
-
"Move {0} files",
|
|
1049
|
-
sourceTargetPairs.length
|
|
1050
|
-
))
|
|
1051
|
-
: ( nls.localize(
|
|
1052
|
-
{ key: 'moveFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file moved.'] },
|
|
1053
|
-
"Move {0}",
|
|
1054
|
-
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1055
|
-
))
|
|
928
|
+
progressLabel: sourceTargetPairs.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'movingBulkEdit', comment: ['Placeholder will be replaced by the number of files being moved'] }, "Moving {0} files", sourceTargetPairs.length)
|
|
929
|
+
: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'movingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file moved.'] }, "Moving {0}", resources.basenameOrAuthority(sourceTargetPairs[0].target)),
|
|
930
|
+
undoLabel: sourceTargetPairs.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'moveBulkEdit', comment: ['Placeholder will be replaced by the number of files being moved'] }, "Move {0} files", sourceTargetPairs.length)
|
|
931
|
+
: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'moveFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file moved.'] }, "Move {0}", resources.basenameOrAuthority(sourceTargetPairs[0].target))
|
|
1056
932
|
};
|
|
1057
933
|
await explorerService.applyBulkEdit(resourceFileEdits, options);
|
|
1058
934
|
}
|
|
@@ -1065,26 +941,10 @@ const pasteFileHandler = async (accessor) => {
|
|
|
1065
941
|
const undoLevel = configurationService.getValue().explorer.confirmUndo;
|
|
1066
942
|
const options = {
|
|
1067
943
|
confirmBeforeUndo: undoLevel === "default" || undoLevel === "verbose" ,
|
|
1068
|
-
progressLabel: sourceTargetPairs.length > 1 ? (
|
|
1069
|
-
{ key: '
|
|
1070
|
-
|
|
1071
|
-
sourceTargetPairs.
|
|
1072
|
-
))
|
|
1073
|
-
: ( nls.localize(
|
|
1074
|
-
{ key: 'copyingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file copied.'] },
|
|
1075
|
-
"Copying {0}",
|
|
1076
|
-
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1077
|
-
)),
|
|
1078
|
-
undoLabel: sourceTargetPairs.length > 1 ? ( nls.localize(
|
|
1079
|
-
{ key: 'copyBulkEdit', comment: ['Placeholder will be replaced by the number of files being copied'] },
|
|
1080
|
-
"Paste {0} files",
|
|
1081
|
-
sourceTargetPairs.length
|
|
1082
|
-
))
|
|
1083
|
-
: ( nls.localize(
|
|
1084
|
-
{ key: 'copyFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file copied.'] },
|
|
1085
|
-
"Paste {0}",
|
|
1086
|
-
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1087
|
-
))
|
|
944
|
+
progressLabel: sourceTargetPairs.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'copyingBulkEdit', comment: ['Placeholder will be replaced by the number of files being copied'] }, "Copying {0} files", sourceTargetPairs.length)
|
|
945
|
+
: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'copyingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file copied.'] }, "Copying {0}", resources.basenameOrAuthority(sourceTargetPairs[0].target)),
|
|
946
|
+
undoLabel: sourceTargetPairs.length > 1 ? nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'copyBulkEdit', comment: ['Placeholder will be replaced by the number of files being copied'] }, "Paste {0} files", sourceTargetPairs.length)
|
|
947
|
+
: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', { key: 'copyFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file copied.'] }, "Paste {0}", resources.basenameOrAuthority(sourceTargetPairs[0].target))
|
|
1088
948
|
};
|
|
1089
949
|
await explorerService.applyBulkEdit(resourceFileEdits, options);
|
|
1090
950
|
}
|
|
@@ -1099,11 +959,9 @@ const pasteFileHandler = async (accessor) => {
|
|
|
1099
959
|
}
|
|
1100
960
|
}
|
|
1101
961
|
catch (e) {
|
|
1102
|
-
onError(notificationService, ( new Error(
|
|
1103
|
-
'fileDeleted',
|
|
1104
|
-
|
|
1105
|
-
getErrorMessage(e)
|
|
1106
|
-
)))));
|
|
962
|
+
onError(notificationService, ( new Error(
|
|
963
|
+
nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'fileDeleted', "The file(s) to paste have been deleted or moved since you copied them. {0}", getErrorMessage(e))
|
|
964
|
+
)));
|
|
1107
965
|
}
|
|
1108
966
|
finally {
|
|
1109
967
|
if (pasteShouldMove) {
|
|
@@ -1144,40 +1002,28 @@ class BaseSetActiveEditorReadonlyInSession extends Action2 {
|
|
|
1144
1002
|
}
|
|
1145
1003
|
class SetActiveEditorReadonlyInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1146
1004
|
static { this.ID = 'workbench.action.files.setActiveEditorReadonlyInSession'; }
|
|
1147
|
-
static { this.LABEL =
|
|
1148
|
-
'setActiveEditorReadonlyInSession',
|
|
1149
|
-
"Set Active Editor Read-only in Session"
|
|
1150
|
-
)); }
|
|
1005
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'setActiveEditorReadonlyInSession', "Set Active Editor Read-only in Session"); }
|
|
1151
1006
|
constructor() {
|
|
1152
1007
|
super(SetActiveEditorReadonlyInSession.ID, { value: SetActiveEditorReadonlyInSession.LABEL, original: 'Set Active Editor Readonly in Session' }, true);
|
|
1153
1008
|
}
|
|
1154
1009
|
}
|
|
1155
1010
|
class SetActiveEditorWriteableInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1156
1011
|
static { this.ID = 'workbench.action.files.setActiveEditorWriteableInSession'; }
|
|
1157
|
-
static { this.LABEL =
|
|
1158
|
-
'setActiveEditorWriteableInSession',
|
|
1159
|
-
"Set Active Editor Writeable in Session"
|
|
1160
|
-
)); }
|
|
1012
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'setActiveEditorWriteableInSession', "Set Active Editor Writeable in Session"); }
|
|
1161
1013
|
constructor() {
|
|
1162
1014
|
super(SetActiveEditorWriteableInSession.ID, { value: SetActiveEditorWriteableInSession.LABEL, original: 'Set Active Editor Writeable in Session' }, false);
|
|
1163
1015
|
}
|
|
1164
1016
|
}
|
|
1165
1017
|
class ToggleActiveEditorReadonlyInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1166
1018
|
static { this.ID = 'workbench.action.files.toggleActiveEditorReadonlyInSession'; }
|
|
1167
|
-
static { this.LABEL =
|
|
1168
|
-
'toggleActiveEditorReadonlyInSession',
|
|
1169
|
-
"Toggle Active Editor Read-only in Session"
|
|
1170
|
-
)); }
|
|
1019
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'toggleActiveEditorReadonlyInSession', "Toggle Active Editor Read-only in Session"); }
|
|
1171
1020
|
constructor() {
|
|
1172
1021
|
super(ToggleActiveEditorReadonlyInSession.ID, { value: ToggleActiveEditorReadonlyInSession.LABEL, original: 'Toggle Active Editor Readonly in Session' }, 'toggle');
|
|
1173
1022
|
}
|
|
1174
1023
|
}
|
|
1175
1024
|
class ResetActiveEditorReadonlyInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1176
1025
|
static { this.ID = 'workbench.action.files.resetActiveEditorReadonlyInSession'; }
|
|
1177
|
-
static { this.LABEL =
|
|
1178
|
-
'resetActiveEditorReadonlyInSession',
|
|
1179
|
-
"Reset Active Editor Read-only in Session"
|
|
1180
|
-
)); }
|
|
1026
|
+
static { this.LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'resetActiveEditorReadonlyInSession', "Reset Active Editor Read-only in Session"); }
|
|
1181
1027
|
constructor() {
|
|
1182
1028
|
super(ResetActiveEditorReadonlyInSession.ID, { value: ResetActiveEditorReadonlyInSession.LABEL, original: 'Reset Active Editor Readonly in Session' }, 'reset');
|
|
1183
1029
|
}
|