@codingame/monaco-vscode-api 1.83.4 → 1.83.6
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/lifecycle.js +3 -1
- package/missing-services.js +32 -28
- package/monaco-editor-treemending.patch +786 -760
- package/monaco.js +1 -0
- package/package.json +1 -1
- package/service-override/extensions.js +5 -5
- package/service-override/files.js +37 -13
- package/service-override/keybindings.js +10 -4
- package/service-override/layout.js +1 -3
- package/services.d.ts +13 -2
- package/services.js +35 -5
- package/vscode/src/vs/base/browser/broadcast.js +52 -0
- package/vscode/src/vs/base/browser/ui/menu/menubar.js +1 -1
- package/vscode/src/vs/base/browser/ui/splitview/paneview.js +6 -1
- package/vscode/src/vs/base/common/date.js +244 -54
- package/vscode/src/vs/base/common/jsonErrorMessages.js +45 -9
- package/vscode/src/vs/editor/common/services/textResourceConfiguration.d.ts +65 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +33 -5
- package/vscode/src/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +165 -32
- package/vscode/src/vs/platform/dialogs/common/dialogs.js +30 -9
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagement.js +0 -3
- package/vscode/src/vs/platform/extensionManagement/common/extensionNls.js +6 -1
- package/vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js +404 -0
- package/vscode/src/vs/platform/files/common/fileService.js +13 -2
- package/vscode/src/vs/platform/files/common/files.js +25 -5
- package/vscode/src/vs/platform/keyboardLayout/common/keyboardConfig.js +15 -3
- package/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.js +38 -7
- package/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.js +7 -1
- package/vscode/src/vs/platform/request/common/request.js +1 -1
- package/vscode/src/vs/platform/theme/common/tokenClassificationRegistry.js +210 -42
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +73 -13
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +5 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +11 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +5 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +70 -35
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +108 -20
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +17 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +5 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +5 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +5 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +7 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +14 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +12 -14
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +6 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +32 -5
- package/vscode/src/vs/workbench/api/browser/statusBarExtensionPoint.js +0 -60
- package/vscode/src/vs/workbench/api/common/extHostChat.js +11 -2
- package/vscode/src/vs/workbench/api/common/extHostDiagnostics.js +6 -1
- package/vscode/src/vs/workbench/api/common/extHostLanguageFeatures.js +12 -2
- package/vscode/src/vs/workbench/api/common/extHostLogService.js +9 -1
- package/vscode/src/vs/workbench/api/common/extHostProgress.js +6 -1
- package/vscode/src/vs/workbench/api/common/extHostStatusBar.js +11 -2
- package/vscode/src/vs/workbench/api/common/extHostTelemetry.js +6 -1
- package/vscode/src/vs/workbench/api/common/extHostTerminalService.js +6 -1
- package/vscode/src/vs/workbench/api/common/extHostTunnelService.js +10 -2
- package/vscode/src/vs/workbench/api/common/extHostWorkspace.js +7 -1
- package/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint.js +49 -9
- package/vscode/src/vs/workbench/browser/actions/layoutActions.js +397 -274
- package/vscode/src/vs/workbench/browser/actions/quickAccessActions.js +30 -6
- package/vscode/src/vs/workbench/browser/actions/windowActions.js +85 -31
- package/vscode/src/vs/workbench/browser/actions/workspaceActions.js +56 -102
- package/vscode/src/vs/workbench/browser/actions/workspaceCommands.js +5 -1
- package/vscode/src/vs/workbench/browser/editor.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarActions.js +55 -11
- package/vscode/src/vs/workbench/browser/parts/compositeBarActions.js +63 -11
- package/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor.js +7 -1
- package/vscode/src/vs/workbench/browser/parts/editor/binaryEditor.js +15 -3
- package/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs.js +205 -41
- package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +617 -139
- package/vscode/src/vs/workbench/browser/parts/editor/editorActions.js +578 -114
- package/vscode/src/vs/workbench/browser/parts/editor/editorCommands.js +96 -20
- package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +30 -6
- package/vscode/src/vs/workbench/browser/parts/editor/editorPlaceholder.js +46 -9
- package/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess.js +30 -5
- package/vscode/src/vs/workbench/browser/parts/editor/editorStatus.js +309 -59
- package/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.js +5 -1
- package/vscode/src/vs/workbench/browser/parts/editor/textCodeEditor.js +5 -1
- package/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.js +16 -3
- package/vscode/src/vs/workbench/browser/parts/editor/textEditor.js +1 -1
- package/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.js +35 -7
- package/vscode/src/vs/workbench/browser/parts/panel/panelActions.js +185 -33
- package/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.js +90 -57
- package/vscode/src/vs/workbench/browser/parts/views/viewFilter.js +5 -1
- package/vscode/src/vs/workbench/browser/parts/views/viewPane.js +16 -3
- package/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.js +26 -6
- package/vscode/src/vs/workbench/browser/parts/views/viewsService.js +35 -6
- package/vscode/src/vs/workbench/browser/quickaccess.js +6 -6
- package/vscode/src/vs/workbench/browser/workbench.contribution.js +918 -185
- package/vscode/src/vs/workbench/common/configuration.js +25 -11
- package/vscode/src/vs/workbench/common/contextkeys.js +244 -228
- package/vscode/src/vs/workbench/common/editor/diffEditorInput.js +7 -1
- package/vscode/src/vs/workbench/common/editor/resourceEditorInput.d.ts +44 -0
- package/vscode/src/vs/workbench/common/editor/sideBySideEditorInput.js +7 -1
- package/vscode/src/vs/workbench/common/editor/textEditorModel.js +6 -1
- package/vscode/src/vs/workbench/common/editor/textResourceEditorInput.d.ts +23 -0
- package/vscode/src/vs/workbench/common/editor.d.ts +26 -1
- package/vscode/src/vs/workbench/common/editor.js +26 -5
- package/vscode/src/vs/workbench/common/theme.js +676 -136
- package/vscode/src/vs/workbench/common/views.js +8 -3
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.js +71 -14
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityContributions.js +21 -2
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleView.js +133 -21
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleViewActions.js +36 -8
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +96 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatActions.js +0 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatAgents.js +22 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +22 -4
- package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +41 -8
- package/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js +25 -5
- package/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js +30 -6
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +34 -6
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/editorFeatures.js +44 -0
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js +10 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js +320 -63
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js +12 -4
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js +15 -3
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js +30 -6
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +25 -4
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js +10 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js +20 -4
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js +10 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js +10 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +25 -9
- package/vscode/src/vs/workbench/contrib/comments/browser/commentColors.js +30 -6
- package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +25 -5
- package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +16 -3
- package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +8 -4
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +23 -3
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadHeader.js +15 -9
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +18 -3
- package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +142 -26
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +33 -5
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +45 -7
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +63 -10
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +45 -9
- package/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.js +16 -8
- package/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.js +41 -21
- package/vscode/src/vs/workbench/contrib/comments/common/commentModel.js +5 -1
- package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +5 -1
- package/vscode/src/vs/workbench/contrib/debug/browser/debugColors.js +60 -12
- package/vscode/src/vs/workbench/contrib/debug/browser/debugIcons.js +275 -55
- package/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.js +7 -1
- package/vscode/src/vs/workbench/contrib/debug/common/debug.js +255 -94
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsIcons.js +120 -24
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/configuration.js +22 -4
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService.js +21 -4
- package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +39 -51
- package/vscode/src/vs/workbench/contrib/files/browser/fileActions.js +394 -75
- package/vscode/src/vs/workbench/contrib/files/browser/fileConstants.js +17 -6
- package/vscode/src/vs/workbench/contrib/files/browser/fileImportExport.js +190 -32
- package/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.js +5 -1
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js +21 -4
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.js +26 -5
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.js +81 -14
- package/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.js +26 -5
- package/vscode/src/vs/workbench/contrib/files/common/files.js +70 -26
- package/vscode/src/vs/workbench/contrib/folding/browser/folding.contribution.js +11 -3
- package/vscode/src/vs/workbench/contrib/format/browser/formatModified.js +5 -1
- package/vscode/src/vs/workbench/contrib/inlayHints/browser/inlayHintsAccessibilty.js +20 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +75 -111
- package/vscode/src/vs/workbench/contrib/keybindings/browser/keybindings.contribution.js +5 -1
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +6 -1
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +151 -29
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +10 -2
- package/vscode/src/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +0 -42
- package/vscode/src/vs/workbench/contrib/output/browser/output.contribution.js +115 -23
- package/vscode/src/vs/workbench/contrib/output/browser/outputView.js +17 -3
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +49 -9
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +66 -13
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js +52 -10
- package/vscode/src/vs/workbench/contrib/scm/browser/dirtyDiffSwitcher.js +10 -2
- package/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js +110 -26
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js +21 -3
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.js +15 -3
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.js +56 -9
- package/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js +25 -5
- package/vscode/src/vs/workbench/contrib/tasks/common/taskService.js +16 -26
- package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +7 -8
- package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +20 -4
- package/vscode/src/vs/workbench/contrib/terminal/common/terminal.js +35 -7
- package/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +106 -21
- package/vscode/src/vs/workbench/contrib/terminal/common/terminalContextKey.js +81 -21
- package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +6 -1
- package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.js +6 -2
- package/vscode/src/vs/workbench/services/actions/common/menusExtensionPoint.js +592 -112
- package/vscode/src/vs/workbench/services/assignment/common/assignmentService.js +5 -1
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +6 -32
- package/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.js +5 -1
- package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +5 -1
- package/vscode/src/vs/workbench/services/editor/common/editorResolverService.js +5 -1
- package/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.js +15 -3
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +58 -10
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +5 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.js +392 -80
- package/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +28 -5
- package/vscode/src/vs/workbench/services/host/browser/browserHostService.js +10 -2
- package/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.js +129 -24
- package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayoutService.js +10 -2
- package/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing.js +20 -10
- package/vscode/src/vs/workbench/services/language/common/languageService.js +122 -22
- package/vscode/src/vs/workbench/services/remote/common/tunnelModel.js +28 -9
- package/vscode/src/vs/workbench/services/search/common/queryBuilder.js +6 -1
- package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +48 -9
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.js +5 -1
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.js +7 -1
- package/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.js +6 -1
- package/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.js +81 -16
- package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +1 -50
- package/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js +126 -25
- package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfile.js +6 -5
- package/vscode/src/vs/workbench/services/userDataSync/common/userDataSync.js +6 -14
- package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopySaveParticipant.js +6 -1
|
@@ -51,18 +51,26 @@ 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 = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'newFile', "New File...");
|
|
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 = nls.localizeWithPath(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
const NEW_FOLDER_LABEL = ( nls.localizeWithPath(
|
|
57
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
58
|
+
'newFolder',
|
|
59
|
+
"New Folder..."
|
|
60
|
+
));
|
|
61
|
+
const TRIGGER_RENAME_LABEL = ( nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'rename', "Rename..."));
|
|
62
|
+
const MOVE_FILE_TO_TRASH_LABEL = ( nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'delete', "Delete"));
|
|
63
|
+
const COPY_FILE_LABEL = ( nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'copyFile', "Copy"));
|
|
64
|
+
const PASTE_FILE_LABEL = ( nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'pasteFile', "Paste"));
|
|
61
65
|
const FileCopiedContext = ( new RawContextKey('fileCopied', false));
|
|
62
66
|
const DOWNLOAD_COMMAND_ID = 'explorer.download';
|
|
63
|
-
const DOWNLOAD_LABEL = nls.localizeWithPath(
|
|
67
|
+
const DOWNLOAD_LABEL = ( nls.localizeWithPath(
|
|
68
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
69
|
+
'download',
|
|
70
|
+
"Download..."
|
|
71
|
+
));
|
|
64
72
|
const UPLOAD_COMMAND_ID = 'explorer.upload';
|
|
65
|
-
const UPLOAD_LABEL = nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'upload', "Upload...");
|
|
73
|
+
const UPLOAD_LABEL = ( nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'upload', "Upload..."));
|
|
66
74
|
const CONFIRM_DELETE_SETTING_KEY = 'explorer.confirmDelete';
|
|
67
75
|
const MAX_UNDO_FILE_SIZE = 5000000;
|
|
68
76
|
function onError(notificationService, error) {
|
|
@@ -79,10 +87,22 @@ async function refreshIfSeparator(value, explorerService) {
|
|
|
79
87
|
async function deleteFiles(explorerService, workingCopyFileService, dialogService, configurationService, elements, useTrash, skipConfirm = false, ignoreIfNotExists = false) {
|
|
80
88
|
let primaryButton;
|
|
81
89
|
if (useTrash) {
|
|
82
|
-
primaryButton = isWindows ?
|
|
90
|
+
primaryButton = isWindows ? ( nls.localizeWithPath(
|
|
91
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
92
|
+
'deleteButtonLabelRecycleBin',
|
|
93
|
+
"&&Move to Recycle Bin"
|
|
94
|
+
)) : ( nls.localizeWithPath(
|
|
95
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
96
|
+
{ key: 'deleteButtonLabelTrash', comment: ['&& denotes a mnemonic'] },
|
|
97
|
+
"&&Move to Trash"
|
|
98
|
+
));
|
|
83
99
|
}
|
|
84
100
|
else {
|
|
85
|
-
primaryButton = nls.localizeWithPath(
|
|
101
|
+
primaryButton = ( nls.localizeWithPath(
|
|
102
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
103
|
+
{ key: 'deleteButtonLabel', comment: ['&& denotes a mnemonic'] },
|
|
104
|
+
"&&Delete"
|
|
105
|
+
));
|
|
86
106
|
}
|
|
87
107
|
const distinctElements = resources.distinctParents(elements, e => e.resource);
|
|
88
108
|
const dirtyWorkingCopies = ( new Set());
|
|
@@ -95,23 +115,47 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
95
115
|
if (dirtyWorkingCopies.size) {
|
|
96
116
|
let message;
|
|
97
117
|
if (distinctElements.length > 1) {
|
|
98
|
-
message = nls.localizeWithPath(
|
|
118
|
+
message = ( nls.localizeWithPath(
|
|
119
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
120
|
+
'dirtyMessageFilesDelete',
|
|
121
|
+
"You are deleting files with unsaved changes. Do you want to continue?"
|
|
122
|
+
));
|
|
99
123
|
}
|
|
100
124
|
else if (distinctElements[0].isDirectory) {
|
|
101
125
|
if (dirtyWorkingCopies.size === 1) {
|
|
102
|
-
message = nls.localizeWithPath(
|
|
126
|
+
message = ( nls.localizeWithPath(
|
|
127
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
128
|
+
'dirtyMessageFolderOneDelete',
|
|
129
|
+
"You are deleting a folder {0} with unsaved changes in 1 file. Do you want to continue?",
|
|
130
|
+
distinctElements[0].name
|
|
131
|
+
));
|
|
103
132
|
}
|
|
104
133
|
else {
|
|
105
|
-
message = nls.localizeWithPath(
|
|
134
|
+
message = ( nls.localizeWithPath(
|
|
135
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
136
|
+
'dirtyMessageFolderDelete',
|
|
137
|
+
"You are deleting a folder {0} with unsaved changes in {1} files. Do you want to continue?",
|
|
138
|
+
distinctElements[0].name,
|
|
139
|
+
dirtyWorkingCopies.size
|
|
140
|
+
));
|
|
106
141
|
}
|
|
107
142
|
}
|
|
108
143
|
else {
|
|
109
|
-
message = nls.localizeWithPath(
|
|
144
|
+
message = ( nls.localizeWithPath(
|
|
145
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
146
|
+
'dirtyMessageFileDelete',
|
|
147
|
+
"You are deleting {0} with unsaved changes. Do you want to continue?",
|
|
148
|
+
distinctElements[0].name
|
|
149
|
+
));
|
|
110
150
|
}
|
|
111
151
|
const response = await dialogService.confirm({
|
|
112
152
|
type: 'warning',
|
|
113
153
|
message,
|
|
114
|
-
detail: nls.localizeWithPath(
|
|
154
|
+
detail: ( nls.localizeWithPath(
|
|
155
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
156
|
+
'dirtyWarning',
|
|
157
|
+
"Your changes will be lost if you don't save them."
|
|
158
|
+
)),
|
|
115
159
|
primaryButton
|
|
116
160
|
});
|
|
117
161
|
if (!response.confirmed) {
|
|
@@ -125,8 +169,20 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
125
169
|
return;
|
|
126
170
|
}
|
|
127
171
|
let confirmation;
|
|
128
|
-
const deleteDetail = ( distinctElements.some(e => e.isDirectory)) ? nls.localizeWithPath(
|
|
129
|
-
|
|
172
|
+
const deleteDetail = ( distinctElements.some(e => e.isDirectory)) ? ( nls.localizeWithPath(
|
|
173
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
174
|
+
'irreversible',
|
|
175
|
+
"This action is irreversible!"
|
|
176
|
+
)) :
|
|
177
|
+
distinctElements.length > 1 ? ( nls.localizeWithPath(
|
|
178
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
179
|
+
'restorePlural',
|
|
180
|
+
"You can restore these files using the Undo command"
|
|
181
|
+
)) : ( nls.localizeWithPath(
|
|
182
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
183
|
+
'restore',
|
|
184
|
+
"You can restore this file using the Undo command"
|
|
185
|
+
));
|
|
130
186
|
if (skipConfirm || (useTrash && configurationService.getValue(CONFIRM_DELETE_SETTING_KEY) === false)) {
|
|
131
187
|
confirmation = { confirmed: true };
|
|
132
188
|
}
|
|
@@ -134,17 +190,37 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
134
190
|
let { message, detail } = getMoveToTrashMessage(distinctElements);
|
|
135
191
|
detail += detail ? '\n' : '';
|
|
136
192
|
if (isWindows) {
|
|
137
|
-
detail += distinctElements.length > 1 ?
|
|
193
|
+
detail += distinctElements.length > 1 ? ( nls.localizeWithPath(
|
|
194
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
195
|
+
'undoBinFiles',
|
|
196
|
+
"You can restore these files from the Recycle Bin."
|
|
197
|
+
)) : ( nls.localizeWithPath(
|
|
198
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
199
|
+
'undoBin',
|
|
200
|
+
"You can restore this file from the Recycle Bin."
|
|
201
|
+
));
|
|
138
202
|
}
|
|
139
203
|
else {
|
|
140
|
-
detail += distinctElements.length > 1 ?
|
|
204
|
+
detail += distinctElements.length > 1 ? ( nls.localizeWithPath(
|
|
205
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
206
|
+
'undoTrashFiles',
|
|
207
|
+
"You can restore these files from the Trash."
|
|
208
|
+
)) : ( nls.localizeWithPath(
|
|
209
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
210
|
+
'undoTrash',
|
|
211
|
+
"You can restore this file from the Trash."
|
|
212
|
+
));
|
|
141
213
|
}
|
|
142
214
|
confirmation = await dialogService.confirm({
|
|
143
215
|
message,
|
|
144
216
|
detail,
|
|
145
217
|
primaryButton,
|
|
146
218
|
checkbox: {
|
|
147
|
-
label: nls.localizeWithPath(
|
|
219
|
+
label: ( nls.localizeWithPath(
|
|
220
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
221
|
+
'doNotAskAgain',
|
|
222
|
+
"Do not ask me again"
|
|
223
|
+
))
|
|
148
224
|
}
|
|
149
225
|
});
|
|
150
226
|
}
|
|
@@ -172,8 +248,28 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
172
248
|
{ recursive: true, folder: e.isDirectory, ignoreIfNotExists, skipTrashBin: !useTrash, maxSize: MAX_UNDO_FILE_SIZE }
|
|
173
249
|
))));
|
|
174
250
|
const options = {
|
|
175
|
-
undoLabel: distinctElements.length > 1 ?
|
|
176
|
-
|
|
251
|
+
undoLabel: distinctElements.length > 1 ? ( nls.localizeWithPath(
|
|
252
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
253
|
+
{ key: 'deleteBulkEdit', comment: ['Placeholder will be replaced by the number of files deleted'] },
|
|
254
|
+
"Delete {0} files",
|
|
255
|
+
distinctElements.length
|
|
256
|
+
)) : ( nls.localizeWithPath(
|
|
257
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
258
|
+
{ key: 'deleteFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file deleted'] },
|
|
259
|
+
"Delete {0}",
|
|
260
|
+
distinctElements[0].name
|
|
261
|
+
)),
|
|
262
|
+
progressLabel: distinctElements.length > 1 ? ( nls.localizeWithPath(
|
|
263
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
264
|
+
{ key: 'deletingBulkEdit', comment: ['Placeholder will be replaced by the number of files deleted'] },
|
|
265
|
+
"Deleting {0} files",
|
|
266
|
+
distinctElements.length
|
|
267
|
+
)) : ( nls.localizeWithPath(
|
|
268
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
269
|
+
{ key: 'deletingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file deleted'] },
|
|
270
|
+
"Deleting {0}",
|
|
271
|
+
distinctElements[0].name
|
|
272
|
+
)),
|
|
177
273
|
};
|
|
178
274
|
await explorerService.applyBulkEdit(resourceFileEdits, options);
|
|
179
275
|
}
|
|
@@ -182,13 +278,29 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
182
278
|
let detailMessage;
|
|
183
279
|
let primaryButton;
|
|
184
280
|
if (useTrash) {
|
|
185
|
-
errorMessage = isWindows ?
|
|
281
|
+
errorMessage = isWindows ? ( nls.localizeWithPath(
|
|
282
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
283
|
+
'binFailed',
|
|
284
|
+
"Failed to delete using the Recycle Bin. Do you want to permanently delete instead?"
|
|
285
|
+
)) : ( nls.localizeWithPath(
|
|
286
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
287
|
+
'trashFailed',
|
|
288
|
+
"Failed to delete using the Trash. Do you want to permanently delete instead?"
|
|
289
|
+
));
|
|
186
290
|
detailMessage = deleteDetail;
|
|
187
|
-
primaryButton = nls.localizeWithPath(
|
|
291
|
+
primaryButton = ( nls.localizeWithPath(
|
|
292
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
293
|
+
{ key: 'deletePermanentlyButtonLabel', comment: ['&& denotes a mnemonic'] },
|
|
294
|
+
"&&Delete Permanently"
|
|
295
|
+
));
|
|
188
296
|
}
|
|
189
297
|
else {
|
|
190
298
|
errorMessage = toErrorMessage(error, false);
|
|
191
|
-
primaryButton = nls.localizeWithPath(
|
|
299
|
+
primaryButton = ( nls.localizeWithPath(
|
|
300
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
301
|
+
{ key: 'retryButtonLabel', comment: ['&& denotes a mnemonic'] },
|
|
302
|
+
"&&Retry"
|
|
303
|
+
));
|
|
192
304
|
}
|
|
193
305
|
const res = await dialogService.confirm({
|
|
194
306
|
type: 'warning',
|
|
@@ -209,50 +321,100 @@ async function deleteFiles(explorerService, workingCopyFileService, dialogServic
|
|
|
209
321
|
function getMoveToTrashMessage(distinctElements) {
|
|
210
322
|
if (containsBothDirectoryAndFile(distinctElements)) {
|
|
211
323
|
return {
|
|
212
|
-
message: nls.localizeWithPath(
|
|
324
|
+
message: ( nls.localizeWithPath(
|
|
325
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
326
|
+
'confirmMoveTrashMessageFilesAndDirectories',
|
|
327
|
+
"Are you sure you want to delete the following {0} files/directories and their contents?",
|
|
328
|
+
distinctElements.length
|
|
329
|
+
)),
|
|
213
330
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
214
331
|
};
|
|
215
332
|
}
|
|
216
333
|
if (distinctElements.length > 1) {
|
|
217
334
|
if (distinctElements[0].isDirectory) {
|
|
218
335
|
return {
|
|
219
|
-
message: nls.localizeWithPath(
|
|
336
|
+
message: ( nls.localizeWithPath(
|
|
337
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
338
|
+
'confirmMoveTrashMessageMultipleDirectories',
|
|
339
|
+
"Are you sure you want to delete the following {0} directories and their contents?",
|
|
340
|
+
distinctElements.length
|
|
341
|
+
)),
|
|
220
342
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
221
343
|
};
|
|
222
344
|
}
|
|
223
345
|
return {
|
|
224
|
-
message: nls.localizeWithPath(
|
|
346
|
+
message: ( nls.localizeWithPath(
|
|
347
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
348
|
+
'confirmMoveTrashMessageMultiple',
|
|
349
|
+
"Are you sure you want to delete the following {0} files?",
|
|
350
|
+
distinctElements.length
|
|
351
|
+
)),
|
|
225
352
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
226
353
|
};
|
|
227
354
|
}
|
|
228
355
|
if (distinctElements[0].isDirectory && !distinctElements[0].isSymbolicLink) {
|
|
229
|
-
return { message: nls.localizeWithPath(
|
|
230
|
-
|
|
231
|
-
|
|
356
|
+
return { message: ( nls.localizeWithPath(
|
|
357
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
358
|
+
'confirmMoveTrashMessageFolder',
|
|
359
|
+
"Are you sure you want to delete '{0}' and its contents?",
|
|
360
|
+
distinctElements[0].name
|
|
361
|
+
)), detail: '' };
|
|
362
|
+
}
|
|
363
|
+
return { message: ( nls.localizeWithPath(
|
|
364
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
365
|
+
'confirmMoveTrashMessageFile',
|
|
366
|
+
"Are you sure you want to delete '{0}'?",
|
|
367
|
+
distinctElements[0].name
|
|
368
|
+
)), detail: '' };
|
|
232
369
|
}
|
|
233
370
|
function getDeleteMessage(distinctElements) {
|
|
234
371
|
if (containsBothDirectoryAndFile(distinctElements)) {
|
|
235
372
|
return {
|
|
236
|
-
message: nls.localizeWithPath(
|
|
373
|
+
message: ( nls.localizeWithPath(
|
|
374
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
375
|
+
'confirmDeleteMessageFilesAndDirectories',
|
|
376
|
+
"Are you sure you want to permanently delete the following {0} files/directories and their contents?",
|
|
377
|
+
distinctElements.length
|
|
378
|
+
)),
|
|
237
379
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
238
380
|
};
|
|
239
381
|
}
|
|
240
382
|
if (distinctElements.length > 1) {
|
|
241
383
|
if (distinctElements[0].isDirectory) {
|
|
242
384
|
return {
|
|
243
|
-
message: nls.localizeWithPath(
|
|
385
|
+
message: ( nls.localizeWithPath(
|
|
386
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
387
|
+
'confirmDeleteMessageMultipleDirectories',
|
|
388
|
+
"Are you sure you want to permanently delete the following {0} directories and their contents?",
|
|
389
|
+
distinctElements.length
|
|
390
|
+
)),
|
|
244
391
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
245
392
|
};
|
|
246
393
|
}
|
|
247
394
|
return {
|
|
248
|
-
message: nls.localizeWithPath(
|
|
395
|
+
message: ( nls.localizeWithPath(
|
|
396
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
397
|
+
'confirmDeleteMessageMultiple',
|
|
398
|
+
"Are you sure you want to permanently delete the following {0} files?",
|
|
399
|
+
distinctElements.length
|
|
400
|
+
)),
|
|
249
401
|
detail: getFileNamesMessage(( distinctElements.map(e => e.resource)))
|
|
250
402
|
};
|
|
251
403
|
}
|
|
252
404
|
if (distinctElements[0].isDirectory) {
|
|
253
|
-
return { message: nls.localizeWithPath(
|
|
254
|
-
|
|
255
|
-
|
|
405
|
+
return { message: ( nls.localizeWithPath(
|
|
406
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
407
|
+
'confirmDeleteMessageFolder',
|
|
408
|
+
"Are you sure you want to permanently delete '{0}' and its contents?",
|
|
409
|
+
distinctElements[0].name
|
|
410
|
+
)), detail: '' };
|
|
411
|
+
}
|
|
412
|
+
return { message: ( nls.localizeWithPath(
|
|
413
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
414
|
+
'confirmDeleteMessageFile',
|
|
415
|
+
"Are you sure you want to permanently delete '{0}'?",
|
|
416
|
+
distinctElements[0].name
|
|
417
|
+
)), detail: '' };
|
|
256
418
|
}
|
|
257
419
|
function containsBothDirectoryAndFile(distinctElements) {
|
|
258
420
|
const directory = distinctElements.find(element => element.isDirectory);
|
|
@@ -379,14 +541,27 @@ async function askForOverwrite(fileService, dialogService, targetResource) {
|
|
|
379
541
|
}
|
|
380
542
|
const { confirmed } = await dialogService.confirm({
|
|
381
543
|
type: Severity.Warning,
|
|
382
|
-
message: nls.localizeWithPath(
|
|
383
|
-
|
|
544
|
+
message: ( nls.localizeWithPath(
|
|
545
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
546
|
+
'confirmOverwrite',
|
|
547
|
+
"A file or folder with the name '{0}' already exists in the destination folder. Do you want to replace it?",
|
|
548
|
+
basename(targetResource.path)
|
|
549
|
+
)),
|
|
550
|
+
primaryButton: ( nls.localizeWithPath(
|
|
551
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
552
|
+
'replaceButtonLabel',
|
|
553
|
+
"&&Replace"
|
|
554
|
+
))
|
|
384
555
|
});
|
|
385
556
|
return confirmed;
|
|
386
557
|
}
|
|
387
558
|
class GlobalCompareResourcesAction extends Action2 {
|
|
388
559
|
static { this.ID = 'workbench.files.action.compareFileWith'; }
|
|
389
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
560
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
561
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
562
|
+
'globalCompareFile',
|
|
563
|
+
"Compare Active File With..."
|
|
564
|
+
)); }
|
|
390
565
|
constructor() {
|
|
391
566
|
super({
|
|
392
567
|
id: GlobalCompareResourcesAction.ID,
|
|
@@ -419,7 +594,11 @@ class GlobalCompareResourcesAction extends Action2 {
|
|
|
419
594
|
}
|
|
420
595
|
class ToggleAutoSaveAction extends Action2 {
|
|
421
596
|
static { this.ID = 'workbench.action.toggleAutoSave'; }
|
|
422
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
597
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
598
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
599
|
+
'toggleAutoSave',
|
|
600
|
+
"Toggle Auto Save"
|
|
601
|
+
)); }
|
|
423
602
|
constructor() {
|
|
424
603
|
super({
|
|
425
604
|
id: ToggleAutoSaveAction.ID,
|
|
@@ -469,7 +648,11 @@ BaseSaveAllAction = ( __decorate([
|
|
|
469
648
|
], BaseSaveAllAction));
|
|
470
649
|
class SaveAllInGroupAction extends BaseSaveAllAction {
|
|
471
650
|
static { this.ID = 'workbench.files.action.saveAllInGroup'; }
|
|
472
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
651
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
652
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
653
|
+
'saveAllInGroup',
|
|
654
|
+
"Save All in Group"
|
|
655
|
+
)); }
|
|
473
656
|
get class() {
|
|
474
657
|
return 'explorer-action ' + ThemeIcon.asClassName(Codicon.saveAll);
|
|
475
658
|
}
|
|
@@ -479,7 +662,11 @@ class SaveAllInGroupAction extends BaseSaveAllAction {
|
|
|
479
662
|
}
|
|
480
663
|
let CloseGroupAction = class CloseGroupAction extends Action {
|
|
481
664
|
static { this.ID = 'workbench.files.action.closeGroup'; }
|
|
482
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
665
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
666
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
667
|
+
'closeGroup',
|
|
668
|
+
"Close Group"
|
|
669
|
+
)); }
|
|
483
670
|
constructor(id, label, commandService) {
|
|
484
671
|
super(id, label, ThemeIcon.asClassName(Codicon.closeAll));
|
|
485
672
|
this.commandService = commandService;
|
|
@@ -493,7 +680,11 @@ CloseGroupAction = ( __decorate([
|
|
|
493
680
|
], CloseGroupAction));
|
|
494
681
|
class FocusFilesExplorer extends Action2 {
|
|
495
682
|
static { this.ID = 'workbench.files.action.focusFilesExplorer'; }
|
|
496
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
683
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
684
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
685
|
+
'focusFilesExplorer',
|
|
686
|
+
"Focus on Files Explorer"
|
|
687
|
+
)); }
|
|
497
688
|
constructor() {
|
|
498
689
|
super({
|
|
499
690
|
id: FocusFilesExplorer.ID,
|
|
@@ -509,7 +700,11 @@ class FocusFilesExplorer extends Action2 {
|
|
|
509
700
|
}
|
|
510
701
|
class ShowActiveFileInExplorer extends Action2 {
|
|
511
702
|
static { this.ID = 'workbench.files.action.showActiveFileInExplorer'; }
|
|
512
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
703
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
704
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
705
|
+
'showInExplorer',
|
|
706
|
+
"Reveal Active File in Explorer View"
|
|
707
|
+
)); }
|
|
513
708
|
constructor() {
|
|
514
709
|
super({
|
|
515
710
|
id: ShowActiveFileInExplorer.ID,
|
|
@@ -529,7 +724,11 @@ class ShowActiveFileInExplorer extends Action2 {
|
|
|
529
724
|
}
|
|
530
725
|
class ShowOpenedFileInNewWindow extends Action2 {
|
|
531
726
|
static { this.ID = 'workbench.action.files.showOpenedFileInNewWindow'; }
|
|
532
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
727
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
728
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
729
|
+
'openFileInNewWindow',
|
|
730
|
+
"Open Active File in New Window"
|
|
731
|
+
)); }
|
|
533
732
|
constructor() {
|
|
534
733
|
super({
|
|
535
734
|
id: ShowOpenedFileInNewWindow.ID,
|
|
@@ -551,7 +750,11 @@ class ShowOpenedFileInNewWindow extends Action2 {
|
|
|
551
750
|
hostService.openWindow([{ fileUri: fileResource }], { forceNewWindow: true });
|
|
552
751
|
}
|
|
553
752
|
else {
|
|
554
|
-
dialogService.error(nls.localizeWithPath(
|
|
753
|
+
dialogService.error(( nls.localizeWithPath(
|
|
754
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
755
|
+
'openFileToShowInNewWindow.unsupportedschema',
|
|
756
|
+
"The active editor must contain an openable resource."
|
|
757
|
+
)));
|
|
555
758
|
}
|
|
556
759
|
}
|
|
557
760
|
}
|
|
@@ -560,13 +763,21 @@ function validateFileName(pathService, item, name, os) {
|
|
|
560
763
|
name = getWellFormedFileName(name);
|
|
561
764
|
if (!name || name.length === 0 || /^\s+$/.test(name)) {
|
|
562
765
|
return {
|
|
563
|
-
content: nls.localizeWithPath(
|
|
766
|
+
content: ( nls.localizeWithPath(
|
|
767
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
768
|
+
'emptyFileNameError',
|
|
769
|
+
"A file or folder name must be provided."
|
|
770
|
+
)),
|
|
564
771
|
severity: Severity.Error
|
|
565
772
|
};
|
|
566
773
|
}
|
|
567
774
|
if (name[0] === '/' || name[0] === '\\') {
|
|
568
775
|
return {
|
|
569
|
-
content: nls.localizeWithPath(
|
|
776
|
+
content: ( nls.localizeWithPath(
|
|
777
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
778
|
+
'fileNameStartsWithSlashError',
|
|
779
|
+
"A file or folder name cannot start with a slash."
|
|
780
|
+
)),
|
|
570
781
|
severity: Severity.Error
|
|
571
782
|
};
|
|
572
783
|
}
|
|
@@ -576,7 +787,12 @@ function validateFileName(pathService, item, name, os) {
|
|
|
576
787
|
const child = parent?.getChild(name);
|
|
577
788
|
if (child && child !== item) {
|
|
578
789
|
return {
|
|
579
|
-
content: nls.localizeWithPath(
|
|
790
|
+
content: ( nls.localizeWithPath(
|
|
791
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
792
|
+
'fileNameExistsError',
|
|
793
|
+
"A file or folder **{0}** already exists at this location. Please choose a different name.",
|
|
794
|
+
name
|
|
795
|
+
)),
|
|
580
796
|
severity: Severity.Error
|
|
581
797
|
};
|
|
582
798
|
}
|
|
@@ -584,13 +800,22 @@ function validateFileName(pathService, item, name, os) {
|
|
|
584
800
|
if (( names.some(folderName => !pathService.hasValidBasename(item.resource, os, folderName)))) {
|
|
585
801
|
const escapedName = name.replace(/\*/g, '\\*');
|
|
586
802
|
return {
|
|
587
|
-
content: nls.localizeWithPath(
|
|
803
|
+
content: ( nls.localizeWithPath(
|
|
804
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
805
|
+
'invalidFileNameError',
|
|
806
|
+
"The name **{0}** is not valid as a file or folder name. Please choose a different name.",
|
|
807
|
+
trimLongName(escapedName)
|
|
808
|
+
)),
|
|
588
809
|
severity: Severity.Error
|
|
589
810
|
};
|
|
590
811
|
}
|
|
591
812
|
if (( names.some(name => /^\s|\s$/.test(name)))) {
|
|
592
813
|
return {
|
|
593
|
-
content: nls.localizeWithPath(
|
|
814
|
+
content: ( nls.localizeWithPath(
|
|
815
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
816
|
+
'fileNameWhitespaceWarning',
|
|
817
|
+
"Leading or trailing whitespace detected in file or folder name."
|
|
818
|
+
)),
|
|
594
819
|
severity: Severity.Warning
|
|
595
820
|
};
|
|
596
821
|
}
|
|
@@ -613,7 +838,11 @@ function getWellFormedFileName(filename) {
|
|
|
613
838
|
}
|
|
614
839
|
class CompareNewUntitledTextFilesAction extends Action2 {
|
|
615
840
|
static { this.ID = 'workbench.files.action.compareNewUntitledTextFiles'; }
|
|
616
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
841
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
842
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
843
|
+
'compareNewUntitledTextFiles',
|
|
844
|
+
"Compare New Untitled Text Files"
|
|
845
|
+
)); }
|
|
617
846
|
constructor() {
|
|
618
847
|
super({
|
|
619
848
|
id: CompareNewUntitledTextFilesAction.ID,
|
|
@@ -633,7 +862,11 @@ class CompareNewUntitledTextFilesAction extends Action2 {
|
|
|
633
862
|
}
|
|
634
863
|
class CompareWithClipboardAction extends Action2 {
|
|
635
864
|
static { this.ID = 'workbench.files.action.compareWithClipboard'; }
|
|
636
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
865
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
866
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
867
|
+
'compareWithClipboard',
|
|
868
|
+
"Compare Active File with Clipboard"
|
|
869
|
+
)); }
|
|
637
870
|
static { this.SCHEME_COUNTER = 0; }
|
|
638
871
|
constructor() {
|
|
639
872
|
super({
|
|
@@ -657,7 +890,12 @@ class CompareWithClipboardAction extends Action2 {
|
|
|
657
890
|
this.registrationDisposal = textModelService.registerTextModelContentProvider(scheme, provider);
|
|
658
891
|
}
|
|
659
892
|
const name = resources.basename(resource);
|
|
660
|
-
const editorLabel = nls.localizeWithPath(
|
|
893
|
+
const editorLabel = ( nls.localizeWithPath(
|
|
894
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
895
|
+
'clipboardComparisonLabel',
|
|
896
|
+
"Clipboard ↔ {0}",
|
|
897
|
+
name
|
|
898
|
+
));
|
|
661
899
|
await editorService.openEditor({
|
|
662
900
|
original: { resource: resource.with({ scheme }) },
|
|
663
901
|
modified: { resource: resource },
|
|
@@ -693,7 +931,7 @@ ClipboardContentProvider = ( __decorate([
|
|
|
693
931
|
], ClipboardContentProvider));
|
|
694
932
|
function onErrorWithRetry(notificationService, error, retry) {
|
|
695
933
|
notificationService.prompt(Severity.Error, toErrorMessage(error, false), [{
|
|
696
|
-
label: nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'retry', "Retry"),
|
|
934
|
+
label: ( nls.localizeWithPath('vs/workbench/contrib/files/browser/fileActions', 'retry', "Retry")),
|
|
697
935
|
run: () => retry()
|
|
698
936
|
}]);
|
|
699
937
|
}
|
|
@@ -740,8 +978,18 @@ async function openExplorerAndCreate(accessor, isFolder) {
|
|
|
740
978
|
isFolder = true;
|
|
741
979
|
}
|
|
742
980
|
await explorerService.applyBulkEdit([( new ResourceFileEdit(undefined, resourceToCreate, { folder: isFolder }))], {
|
|
743
|
-
undoLabel: nls.localizeWithPath(
|
|
744
|
-
|
|
981
|
+
undoLabel: ( nls.localizeWithPath(
|
|
982
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
983
|
+
'createBulkEdit',
|
|
984
|
+
"Create {0}",
|
|
985
|
+
value
|
|
986
|
+
)),
|
|
987
|
+
progressLabel: ( nls.localizeWithPath(
|
|
988
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
989
|
+
'creatingBulkEdit',
|
|
990
|
+
"Creating {0}",
|
|
991
|
+
value
|
|
992
|
+
)),
|
|
745
993
|
confirmBeforeUndo: true
|
|
746
994
|
});
|
|
747
995
|
await refreshIfSeparator(value, explorerService);
|
|
@@ -802,8 +1050,20 @@ const renameHandler = async (accessor) => {
|
|
|
802
1050
|
try {
|
|
803
1051
|
await explorerService.applyBulkEdit([( new ResourceFileEdit(stat.resource, targetResource))], {
|
|
804
1052
|
confirmBeforeUndo: configurationService.getValue().explorer.confirmUndo === "verbose" ,
|
|
805
|
-
undoLabel: nls.localizeWithPath(
|
|
806
|
-
|
|
1053
|
+
undoLabel: ( nls.localizeWithPath(
|
|
1054
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1055
|
+
'renameBulkEdit',
|
|
1056
|
+
"Rename {0} to {1}",
|
|
1057
|
+
stat.name,
|
|
1058
|
+
value
|
|
1059
|
+
)),
|
|
1060
|
+
progressLabel: ( nls.localizeWithPath(
|
|
1061
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1062
|
+
'renamingBulkEdit',
|
|
1063
|
+
"Renaming {0} to {1}",
|
|
1064
|
+
stat.name,
|
|
1065
|
+
value
|
|
1066
|
+
)),
|
|
807
1067
|
});
|
|
808
1068
|
await refreshIfSeparator(value, explorerService);
|
|
809
1069
|
}
|
|
@@ -925,10 +1185,30 @@ const pasteFileHandler = async (accessor) => {
|
|
|
925
1185
|
const resourceFileEdits = ( sourceTargetPairs.map(pair => ( new ResourceFileEdit(pair.source, pair.target, { overwrite: incrementalNaming === 'disabled' }))));
|
|
926
1186
|
const options = {
|
|
927
1187
|
confirmBeforeUndo: configurationService.getValue().explorer.confirmUndo === "verbose" ,
|
|
928
|
-
progressLabel: sourceTargetPairs.length > 1 ? nls.localizeWithPath(
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
1188
|
+
progressLabel: sourceTargetPairs.length > 1 ? ( nls.localizeWithPath(
|
|
1189
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1190
|
+
{ key: 'movingBulkEdit', comment: ['Placeholder will be replaced by the number of files being moved'] },
|
|
1191
|
+
"Moving {0} files",
|
|
1192
|
+
sourceTargetPairs.length
|
|
1193
|
+
))
|
|
1194
|
+
: ( nls.localizeWithPath(
|
|
1195
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1196
|
+
{ key: 'movingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file moved.'] },
|
|
1197
|
+
"Moving {0}",
|
|
1198
|
+
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1199
|
+
)),
|
|
1200
|
+
undoLabel: sourceTargetPairs.length > 1 ? ( nls.localizeWithPath(
|
|
1201
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1202
|
+
{ key: 'moveBulkEdit', comment: ['Placeholder will be replaced by the number of files being moved'] },
|
|
1203
|
+
"Move {0} files",
|
|
1204
|
+
sourceTargetPairs.length
|
|
1205
|
+
))
|
|
1206
|
+
: ( nls.localizeWithPath(
|
|
1207
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1208
|
+
{ key: 'moveFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file moved.'] },
|
|
1209
|
+
"Move {0}",
|
|
1210
|
+
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1211
|
+
))
|
|
932
1212
|
};
|
|
933
1213
|
await explorerService.applyBulkEdit(resourceFileEdits, options);
|
|
934
1214
|
}
|
|
@@ -941,10 +1221,30 @@ const pasteFileHandler = async (accessor) => {
|
|
|
941
1221
|
const undoLevel = configurationService.getValue().explorer.confirmUndo;
|
|
942
1222
|
const options = {
|
|
943
1223
|
confirmBeforeUndo: undoLevel === "default" || undoLevel === "verbose" ,
|
|
944
|
-
progressLabel: sourceTargetPairs.length > 1 ? nls.localizeWithPath(
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
1224
|
+
progressLabel: sourceTargetPairs.length > 1 ? ( nls.localizeWithPath(
|
|
1225
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1226
|
+
{ key: 'copyingBulkEdit', comment: ['Placeholder will be replaced by the number of files being copied'] },
|
|
1227
|
+
"Copying {0} files",
|
|
1228
|
+
sourceTargetPairs.length
|
|
1229
|
+
))
|
|
1230
|
+
: ( nls.localizeWithPath(
|
|
1231
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1232
|
+
{ key: 'copyingFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file copied.'] },
|
|
1233
|
+
"Copying {0}",
|
|
1234
|
+
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1235
|
+
)),
|
|
1236
|
+
undoLabel: sourceTargetPairs.length > 1 ? ( nls.localizeWithPath(
|
|
1237
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1238
|
+
{ key: 'copyBulkEdit', comment: ['Placeholder will be replaced by the number of files being copied'] },
|
|
1239
|
+
"Paste {0} files",
|
|
1240
|
+
sourceTargetPairs.length
|
|
1241
|
+
))
|
|
1242
|
+
: ( nls.localizeWithPath(
|
|
1243
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1244
|
+
{ key: 'copyFileBulkEdit', comment: ['Placeholder will be replaced by the name of the file copied.'] },
|
|
1245
|
+
"Paste {0}",
|
|
1246
|
+
resources.basenameOrAuthority(sourceTargetPairs[0].target)
|
|
1247
|
+
))
|
|
948
1248
|
};
|
|
949
1249
|
await explorerService.applyBulkEdit(resourceFileEdits, options);
|
|
950
1250
|
}
|
|
@@ -959,9 +1259,12 @@ const pasteFileHandler = async (accessor) => {
|
|
|
959
1259
|
}
|
|
960
1260
|
}
|
|
961
1261
|
catch (e) {
|
|
962
|
-
onError(notificationService, ( new Error(
|
|
963
|
-
|
|
964
|
-
|
|
1262
|
+
onError(notificationService, ( new Error(( nls.localizeWithPath(
|
|
1263
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1264
|
+
'fileDeleted',
|
|
1265
|
+
"The file(s) to paste have been deleted or moved since you copied them. {0}",
|
|
1266
|
+
getErrorMessage(e)
|
|
1267
|
+
)))));
|
|
965
1268
|
}
|
|
966
1269
|
finally {
|
|
967
1270
|
if (pasteShouldMove) {
|
|
@@ -1002,28 +1305,44 @@ class BaseSetActiveEditorReadonlyInSession extends Action2 {
|
|
|
1002
1305
|
}
|
|
1003
1306
|
class SetActiveEditorReadonlyInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1004
1307
|
static { this.ID = 'workbench.action.files.setActiveEditorReadonlyInSession'; }
|
|
1005
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
1308
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
1309
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1310
|
+
'setActiveEditorReadonlyInSession',
|
|
1311
|
+
"Set Active Editor Read-only in Session"
|
|
1312
|
+
)); }
|
|
1006
1313
|
constructor() {
|
|
1007
1314
|
super(SetActiveEditorReadonlyInSession.ID, { value: SetActiveEditorReadonlyInSession.LABEL, original: 'Set Active Editor Readonly in Session' }, true);
|
|
1008
1315
|
}
|
|
1009
1316
|
}
|
|
1010
1317
|
class SetActiveEditorWriteableInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1011
1318
|
static { this.ID = 'workbench.action.files.setActiveEditorWriteableInSession'; }
|
|
1012
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
1319
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
1320
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1321
|
+
'setActiveEditorWriteableInSession',
|
|
1322
|
+
"Set Active Editor Writeable in Session"
|
|
1323
|
+
)); }
|
|
1013
1324
|
constructor() {
|
|
1014
1325
|
super(SetActiveEditorWriteableInSession.ID, { value: SetActiveEditorWriteableInSession.LABEL, original: 'Set Active Editor Writeable in Session' }, false);
|
|
1015
1326
|
}
|
|
1016
1327
|
}
|
|
1017
1328
|
class ToggleActiveEditorReadonlyInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1018
1329
|
static { this.ID = 'workbench.action.files.toggleActiveEditorReadonlyInSession'; }
|
|
1019
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
1330
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
1331
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1332
|
+
'toggleActiveEditorReadonlyInSession',
|
|
1333
|
+
"Toggle Active Editor Read-only in Session"
|
|
1334
|
+
)); }
|
|
1020
1335
|
constructor() {
|
|
1021
1336
|
super(ToggleActiveEditorReadonlyInSession.ID, { value: ToggleActiveEditorReadonlyInSession.LABEL, original: 'Toggle Active Editor Readonly in Session' }, 'toggle');
|
|
1022
1337
|
}
|
|
1023
1338
|
}
|
|
1024
1339
|
class ResetActiveEditorReadonlyInSession extends BaseSetActiveEditorReadonlyInSession {
|
|
1025
1340
|
static { this.ID = 'workbench.action.files.resetActiveEditorReadonlyInSession'; }
|
|
1026
|
-
static { this.LABEL = nls.localizeWithPath(
|
|
1341
|
+
static { this.LABEL = ( nls.localizeWithPath(
|
|
1342
|
+
'vs/workbench/contrib/files/browser/fileActions',
|
|
1343
|
+
'resetActiveEditorReadonlyInSession',
|
|
1344
|
+
"Reset Active Editor Read-only in Session"
|
|
1345
|
+
)); }
|
|
1027
1346
|
constructor() {
|
|
1028
1347
|
super(ResetActiveEditorReadonlyInSession.ID, { value: ResetActiveEditorReadonlyInSession.LABEL, original: 'Reset Active Editor Readonly in Session' }, 'reset');
|
|
1029
1348
|
}
|