@codingame/monaco-vscode-api 1.79.0-next.0 → 1.79.1
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/README.md +7 -5
- package/dist/activity.d.ts +8 -108
- package/dist/api.js +3 -3
- package/dist/colorRegistry.d.ts +2 -2
- package/dist/contextkey.d.ts +2 -2
- package/dist/default-extension.js +23 -0
- package/dist/editor.d.ts +4 -320
- package/dist/editorBrowser.d.ts +327 -10
- package/dist/event.d.ts +1 -1
- package/dist/{extension-tools-d0cfdea1.js → extension-tools-0c4c1ad7.js} +345 -210
- package/dist/extensions.d.ts +3 -4
- package/dist/extensions.d2.ts +1 -1
- package/dist/extensions.js +4 -37
- package/dist/extensionsRegistry.d.ts +1 -1
- package/dist/files.d.ts +2 -2
- package/dist/keybinding.d.ts +1 -1
- package/dist/languageFeatures.d.ts +6 -7
- package/dist/log.d.ts +1 -1
- package/dist/monaco-treemending.js +15 -1
- package/dist/monaco.d.ts +31 -32
- package/dist/monaco.js +62 -6
- package/dist/node_modules/rollup-plugin-styles/dist/runtime/inject-css.js +2 -0
- package/dist/override/vs/workbench/contrib/notebook/common/notebookEditorInput.js +4 -0
- package/dist/rollup-extension-directory-plugin.js +1 -2
- package/dist/rollup-vsix-plugin.js +1 -2
- package/dist/service-override/configuration.d.ts +2 -2
- package/dist/service-override/editor.d.ts +13 -0
- package/dist/service-override/{modelEditor.js → editor.js} +6 -62
- package/dist/service-override/files.d.ts +5 -5
- package/dist/service-override/files.js +14 -2
- package/dist/service-override/keybindings.js +3 -79
- package/dist/service-override/layout.js +6 -2
- package/dist/service-override/model.d.ts +7 -0
- package/dist/service-override/model.js +10 -0
- package/dist/service-override/quickaccess.d.ts +7 -0
- package/dist/service-override/quickaccess.js +80 -0
- package/dist/service-override/snippets.js +5 -1
- package/dist/service-override/textmate.js +7 -2
- package/dist/service-override/theme.d.ts +1 -1
- package/dist/service-override/tools/editor.js +73 -0
- package/dist/service-override/views.d.ts +63 -201
- package/dist/service-override/views.js +102 -8
- package/dist/services.d.ts +116 -19
- package/dist/vscode/vs/base/browser/ui/centered/centeredViewLayout.js +178 -0
- package/dist/vscode/vs/base/browser/ui/grid/grid.js +452 -0
- package/dist/vscode/vs/base/browser/ui/grid/gridview.css.js +4 -0
- package/dist/vscode/vs/base/browser/ui/grid/gridview.js +999 -0
- package/dist/vscode/vs/base/browser/ui/iconLabel/simpleIconLabel.js +14 -0
- package/dist/vscode/vs/base/browser/ui/menu/menubar.css.js +4 -0
- package/dist/vscode/vs/base/browser/ui/menu/menubar.js +1 -1
- package/dist/vscode/vs/base/browser/ui/splitview/paneview.css.js +4 -0
- package/dist/vscode/vs/base/browser/ui/splitview/paneview.js +1 -1
- package/dist/vscode/vs/platform/extensionManagement/common/extensionManagement.js +2 -1
- package/dist/vscode/vs/platform/extensionManagement/common/extensionStorage.js +1 -1
- package/dist/vscode/vs/platform/product/common/product.js +48 -0
- package/dist/vscode/vs/platform/quickinput/browser/quickPickPin.js +94 -0
- package/dist/vscode/vs/platform/terminal/common/terminal.js +3 -0
- package/dist/vscode/vs/platform/update/common/update.js +11 -1
- package/dist/vscode/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +1 -1
- package/dist/vscode/vs/workbench/api/browser/mainThreadStatusBar.js +68 -0
- package/dist/vscode/vs/workbench/api/common/extHostStatusBar.js +234 -0
- package/dist/vscode/vs/workbench/api/common/extHostTypes.js +6 -1
- package/dist/vscode/vs/workbench/browser/actions/layoutActions.js +20 -17
- package/dist/vscode/vs/workbench/browser/actions/quickAccessActions.js +204 -0
- package/dist/vscode/vs/workbench/browser/dnd.js +27 -2
- package/dist/vscode/vs/workbench/browser/editor.js +94 -0
- package/dist/vscode/vs/workbench/browser/labels.js +23 -2
- package/dist/vscode/vs/workbench/browser/media/part.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/part.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/activitybar/activitybarActions.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/activitybar/activitybarPart.js +3 -3
- package/dist/vscode/vs/workbench/browser/parts/activitybar/media/activityaction.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/activitybar/media/activitybarpart.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarActions.js +14 -26
- package/dist/vscode/vs/workbench/browser/parts/compositePart.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/editor/binaryDiffEditor.js +43 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/binaryEditor.js +55 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbs.js +330 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbsControl.js +690 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbsModel.js +142 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbsPicker.js +414 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editor.contribution.js +800 -6
- package/dist/vscode/vs/workbench/browser/parts/editor/editor.js +56 -1
- package/dist/vscode/vs/workbench/browser/parts/editor/editorActions.js +1484 -107
- package/dist/vscode/vs/workbench/browser/parts/editor/editorCommands.js +1121 -4
- package/dist/vscode/vs/workbench/browser/parts/editor/editorDropTarget.js +499 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupView.js +1219 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupWatermark.js +137 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorPane.js +242 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorPanes.js +297 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorPart.js +841 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorPlaceholder.js +235 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorQuickAccess.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/editor/editorStatus.js +1152 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorWithViewState.js +139 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/editorsObserver.js +339 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/breadcrumbscontrol.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/editordroptarget.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/editorgroupview.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/editorplaceholder.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/editorquickaccess.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/editorstatus.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/notabstitlecontrol.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/sidebysideeditor.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/tabstitlecontrol.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/media/titlecontrol.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/noTabsTitleControl.js +243 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/sideBySideEditor.js +387 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/tabFocus.js +77 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/tabsTitleControl.js +1504 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/textCodeEditor.js +79 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/textDiffEditor.js +304 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/textEditor.js +220 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/textResourceEditor.js +149 -0
- package/dist/vscode/vs/workbench/browser/parts/editor/titleControl.js +284 -0
- package/dist/vscode/vs/workbench/browser/parts/media/compositepart.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsActions.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsCenter.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsList.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsToasts.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsActions.js +8 -8
- package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsCenter.js +2 -2
- package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsList.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsToasts.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/panel/media/basepanelpart.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/panel/media/panelpart.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/panel/panelActions.js +19 -5
- package/dist/vscode/vs/workbench/browser/parts/panel/panelPart.js +2 -2
- package/dist/vscode/vs/workbench/browser/parts/sidebar/media/sidebarpart.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/sidebar/sidebarPart.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/statusbar/media/statusbarpart.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarActions.js +109 -0
- package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarItem.js +224 -0
- package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarModel.js +251 -0
- package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarPart.js +439 -0
- package/dist/vscode/vs/workbench/browser/parts/titlebar/media/menubarControl.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/titlebar/menubarControl.js +76 -3
- package/dist/vscode/vs/workbench/browser/parts/views/media/paneviewlet.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/views/media/views.css.js +4 -0
- package/dist/vscode/vs/workbench/browser/parts/views/treeView.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/views/viewPane.js +5 -5
- package/dist/vscode/vs/workbench/browser/parts/views/viewPaneContainer.js +1 -1
- package/dist/vscode/vs/workbench/browser/parts/views/viewsService.js +4 -4
- package/dist/vscode/vs/workbench/browser/quickaccess.js +6 -2
- package/dist/vscode/vs/workbench/browser/workbench.contribution.js +1108 -0
- package/dist/vscode/vs/workbench/common/contextkeys.js +34 -1
- package/dist/vscode/vs/workbench/common/editor/editorGroupModel.js +674 -0
- package/dist/vscode/vs/workbench/common/editor.js +57 -1
- package/dist/vscode/vs/workbench/common/theme.js +35 -35
- package/dist/vscode/vs/workbench/common/views.js +1 -1
- package/dist/vscode/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +4 -4
- package/dist/vscode/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +1 -1
- package/dist/vscode/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js +77 -0
- package/dist/vscode/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js +217 -0
- package/dist/vscode/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js +24 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/breakpointWidget.js +1 -1
- package/dist/vscode/vs/workbench/contrib/debug/browser/callStackEditorContribution.js +1 -1
- package/dist/vscode/vs/workbench/contrib/debug/browser/debug.contribution.js +30 -4
- package/dist/vscode/vs/workbench/contrib/debug/browser/debugCommands.js +13 -1
- package/dist/vscode/vs/workbench/contrib/debug/browser/debugIcons.js +77 -127
- package/dist/vscode/vs/workbench/contrib/debug/browser/debugToolBar.js +1 -1
- package/dist/vscode/vs/workbench/contrib/debug/browser/debugViewlet.js +1 -1
- package/dist/vscode/vs/workbench/contrib/debug/browser/disassemblyView.js +620 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/exceptionWidget.js +1 -1
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/breakpointWidget.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/callStackEditorContribution.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/debug.contribution.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/debugHover.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/debugToolBar.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/debugViewlet.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/exceptionWidget.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/media/repl.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/debug/browser/repl.js +1 -1
- package/dist/vscode/vs/workbench/contrib/debug/common/debug.js +2 -1
- package/dist/vscode/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js +71 -0
- package/dist/vscode/vs/workbench/contrib/files/browser/editors/textFileEditor.js +225 -0
- package/dist/vscode/vs/workbench/contrib/files/browser/explorerViewlet.js +5 -4
- package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.contribution.js +270 -4
- package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.js +4 -1
- package/dist/vscode/vs/workbench/contrib/files/browser/fileCommands.js +24 -6
- package/dist/vscode/vs/workbench/contrib/files/browser/fileConstants.js +8 -1
- package/dist/vscode/vs/workbench/contrib/files/browser/files.contribution.js +10 -0
- package/dist/vscode/vs/workbench/contrib/files/browser/media/explorerviewlet.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/files/browser/views/media/openeditors.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/files/browser/views/openEditorsView.js +608 -0
- package/dist/vscode/vs/workbench/contrib/files/common/files.js +2 -1
- package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionInputPart.js +1 -1
- package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionWidget.js +1 -1
- package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/media/interactiveSession.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionContextKeys.js +9 -1
- package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionModel.js +305 -0
- package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionService.js +6 -1
- package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionServiceImpl.js +379 -0
- package/dist/vscode/vs/workbench/contrib/notebook/browser/notebookBrowser.js +2 -2
- package/dist/vscode/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +33 -1
- package/dist/vscode/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +130 -0
- package/dist/vscode/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js +225 -0
- package/dist/vscode/vs/workbench/contrib/remote/browser/media/tunnelView.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/remote/browser/remoteIcons.js +21 -17
- package/dist/vscode/vs/workbench/contrib/remote/browser/tunnelView.js +1 -1
- package/dist/vscode/vs/workbench/contrib/search/browser/anythingQuickAccess.js +757 -0
- package/dist/vscode/vs/workbench/contrib/search/browser/media/anythingQuickAccess.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/search/browser/search.contribution.js +428 -0
- package/dist/vscode/vs/workbench/contrib/search/browser/symbolsQuickAccess.js +219 -0
- package/dist/vscode/vs/workbench/contrib/search/common/cacheState.js +85 -0
- package/dist/vscode/vs/workbench/contrib/search/common/constants.js +2 -0
- package/dist/vscode/vs/workbench/contrib/search/common/search.js +119 -1
- package/dist/vscode/vs/workbench/contrib/tasks/browser/taskQuickPick.js +385 -0
- package/dist/vscode/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js +108 -0
- package/dist/vscode/vs/workbench/contrib/tasks/common/tasks.js +351 -0
- package/dist/vscode/vs/workbench/contrib/terminal/browser/terminal.js +4 -0
- package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalIcon.js +44 -0
- package/dist/vscode/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +147 -1
- package/dist/vscode/vs/workbench/contrib/typeHierarchy/browser/media/typeHierarchy.css.js +4 -0
- package/dist/vscode/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +1 -1
- package/dist/vscode/vs/workbench/services/editor/browser/editorDropService.js +3 -0
- package/dist/vscode/vs/workbench/services/editor/browser/editorResolverService.js +619 -0
- package/dist/vscode/vs/workbench/services/editor/browser/editorService.js +720 -0
- package/dist/vscode/vs/workbench/services/editor/common/editorGroupFinder.js +116 -0
- package/dist/vscode/vs/workbench/services/editor/common/editorGroupsService.js +6 -1
- package/dist/vscode/vs/workbench/services/editor/common/editorResolverService.js +34 -1
- package/dist/vscode/vs/workbench/services/history/browser/historyService.js +1451 -0
- package/dist/vscode/vs/workbench/services/hover/browser/hoverService.js +1 -1
- package/dist/vscode/vs/workbench/services/hover/browser/media/hover.css.js +4 -0
- package/dist/vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService.js +2 -1
- package/dist/vscode/vs/workbench/services/outline/browser/outline.js +3 -0
- package/dist/vscode/vs/workbench/services/progress/browser/progressIndicator.js +72 -1
- package/dist/vscode/vs/workbench/services/quickinput/browser/quickInputService.js +67 -0
- package/dist/vscode/vs/workbench/services/search/common/search.js +2 -112
- package/dist/vscode/vs/workbench/services/semanticSimilarity/common/semanticSimilarityService.js +54 -1
- package/dist/vscode/vs/workbench/services/statusbar/browser/statusbar.js +15 -0
- package/dist/vscode/vs/workbench/services/textMate/browser/worker/textMate.worker.js +90 -0
- package/dist/vscode/vs/workbench/services/textMate/browser/worker/textMateWorkerModel.js +133 -0
- package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorService.js +110 -3
- package/dist/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.js +1 -1
- package/dist/vscode-services/extHost.js +12 -5
- package/dist/vscode-services/missing-services.js +117 -3
- package/dist/vscode-services/window.js +21 -2
- package/dist/vscode-services/workspace.js +2 -1
- package/dist/workbenchThemeService.d.ts +1 -1
- package/dist/workers/textMate.worker.d.ts +2 -0
- package/dist/workers/textMate.worker.js +3 -0
- package/dist/workspace.d.ts +1 -1
- package/monaco-editor-treemending.patch +784 -784
- package/package.json +42 -22
- package/dist/assets/activityaction.css +0 -224
- package/dist/assets/activitybarpart.css +0 -65
- package/dist/assets/basepanelpart.css +0 -221
- package/dist/assets/breakpointWidget.css +0 -31
- package/dist/assets/callHierarchy.css +0 -62
- package/dist/assets/callStackEditorContribution.css +0 -12
- package/dist/assets/compositepart.css +0 -17
- package/dist/assets/debug.contribution.css +0 -138
- package/dist/assets/debugHover.css +0 -80
- package/dist/assets/debugToolBar.css +0 -49
- package/dist/assets/debugViewlet.css +0 -337
- package/dist/assets/editorquickaccess.css +0 -8
- package/dist/assets/exceptionWidget.css +0 -52
- package/dist/assets/explorerviewlet.css +0 -129
- package/dist/assets/hover.css +0 -127
- package/dist/assets/interactiveSession.css +0 -340
- package/dist/assets/menubar.css +0 -111
- package/dist/assets/menubarControl.css +0 -61
- package/dist/assets/notificationsActions.css +0 -14
- package/dist/assets/notificationsCenter.css +0 -69
- package/dist/assets/notificationsList.css +0 -152
- package/dist/assets/notificationsToasts.css +0 -63
- package/dist/assets/panelpart.css +0 -75
- package/dist/assets/paneview.css +0 -148
- package/dist/assets/paneviewlet.css +0 -79
- package/dist/assets/part.css +0 -109
- package/dist/assets/repl.css +0 -145
- package/dist/assets/sidebarpart.css +0 -61
- package/dist/assets/tunnelView.css +0 -107
- package/dist/assets/typeHierarchy.css +0 -62
- package/dist/assets/views.css +0 -297
- package/dist/override/vs/workbench/browser/parts/editor/textEditor.js +0 -2
- package/dist/override/vs/workbench/contrib/files/browser/views/openEditorsView.js +0 -2
- package/dist/service-override/modelEditor.d.ts +0 -14
- package/dist/vscode/vs/workbench/contrib/notebook/common/notebookEditorInput.js +0 -249
- package/dist/vscode/vs/workbench/contrib/notebook/common/notebookService.js +0 -10
- package/dist/vscode/vs/workbench/services/search/common/searchHelpers.js +0 -72
- package/dist/vscode/vs/workbench/services/search/common/searchService.js +0 -355
|
@@ -1,26 +1,436 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { localize } from 'monaco-editor/esm/vs/nls.js';
|
|
2
|
+
import { withNullAsUndefined, isObject, isString, isUndefined, isNumber } from 'monaco-editor/esm/vs/base/common/types.js';
|
|
3
|
+
import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
|
|
4
|
+
import { KeybindingsRegistry } from 'monaco-editor/esm/vs/platform/keybinding/common/keybindingsRegistry.js';
|
|
5
|
+
import { isUntitledWithAssociatedResource, isEditorInputWithOptionsAndGroup, isEditorIdentifier } from '../../../common/editor.js';
|
|
6
|
+
import { TextCompareEditorVisibleContext, TextCompareEditorActiveContext, ActiveEditorGroupEmptyContext, MultipleEditorGroupsContext, ActiveEditorCanSplitInGroupContext, SideBySideEditorActiveContext, ActiveEditorGroupLockedContext, ActiveEditorStickyContext } from '../../../common/contextkeys.js';
|
|
3
7
|
import { columnToEditorGroup } from '../../../services/editor/common/editorGroupColumn.js';
|
|
4
8
|
import { IEditorService, SIDE_GROUP } from '../../../services/editor/common/editorService.js';
|
|
9
|
+
import { EditorContextKeys } from 'monaco-editor/esm/vs/editor/common/editorContextKeys.js';
|
|
10
|
+
import { TextDiffEditor } from './textDiffEditor.js';
|
|
11
|
+
import { KeyChord } from 'monaco-editor/esm/vs/base/common/keyCodes.js';
|
|
5
12
|
import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
|
|
13
|
+
import { IQuickInputService } from 'monaco-editor/esm/vs/platform/quickinput/common/quickInput.js';
|
|
14
|
+
import { IListService } from 'monaco-editor/esm/vs/platform/list/browser/listService.js';
|
|
6
15
|
import { List } from 'monaco-editor/esm/vs/base/browser/ui/list/listWidget.js';
|
|
7
|
-
import {
|
|
16
|
+
import { distinct, coalesce } from 'monaco-editor/esm/vs/base/common/arrays.js';
|
|
17
|
+
import { isEditorGroup, IEditorGroupsService, preferredSideBySideGroupDirection } from '../../../services/editor/common/editorGroupsService.js';
|
|
18
|
+
import { ContextKeyExpr } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
|
|
8
19
|
import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
|
|
9
20
|
import { CommandsRegistry, ICommandService } from 'monaco-editor/esm/vs/platform/commands/common/commands.js';
|
|
21
|
+
import { MenuRegistry, MenuId, registerAction2, Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
|
|
22
|
+
import { Categories } from 'monaco-editor/esm/vs/platform/action/common/actionCommonCategories.js';
|
|
23
|
+
import { ActiveGroupEditorsByMostRecentlyUsedQuickAccess } from './editorQuickAccess.js';
|
|
10
24
|
import { IOpenerService, matchesScheme } from 'monaco-editor/esm/vs/platform/opener/common/opener.js';
|
|
25
|
+
import { EditorResolution } from 'monaco-editor/esm/vs/platform/editor/common/editor.js';
|
|
11
26
|
import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
|
|
27
|
+
import { SideBySideEditorInput } from '../../../common/editor/sideBySideEditorInput.js';
|
|
28
|
+
import { SideBySideEditor } from './sideBySideEditor.js';
|
|
29
|
+
import { IEditorResolverService } from '../../../services/editor/common/editorResolverService.js';
|
|
12
30
|
import { IPathService } from '../../../services/path/common/pathService.js';
|
|
31
|
+
import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
|
|
32
|
+
import { extname } from 'monaco-editor/esm/vs/base/common/resources.js';
|
|
33
|
+
import { DiffEditorInput } from '../../../common/editor/diffEditorInput.js';
|
|
34
|
+
import { isDiffEditor } from 'monaco-editor/esm/vs/editor/browser/editorBrowser.js';
|
|
35
|
+
const CLOSE_SAVED_EDITORS_COMMAND_ID = 'workbench.action.closeUnmodifiedEditors';
|
|
36
|
+
const CLOSE_EDITORS_IN_GROUP_COMMAND_ID = 'workbench.action.closeEditorsInGroup';
|
|
13
37
|
const CLOSE_EDITORS_AND_GROUP_COMMAND_ID = 'workbench.action.closeEditorsAndGroup';
|
|
38
|
+
const CLOSE_EDITORS_TO_THE_RIGHT_COMMAND_ID = 'workbench.action.closeEditorsToTheRight';
|
|
14
39
|
const CLOSE_EDITOR_COMMAND_ID = 'workbench.action.closeActiveEditor';
|
|
40
|
+
const CLOSE_PINNED_EDITOR_COMMAND_ID = 'workbench.action.closeActivePinnedEditor';
|
|
41
|
+
const CLOSE_EDITOR_GROUP_COMMAND_ID = 'workbench.action.closeGroup';
|
|
42
|
+
const CLOSE_OTHER_EDITORS_IN_GROUP_COMMAND_ID = 'workbench.action.closeOtherEditors';
|
|
43
|
+
const MOVE_ACTIVE_EDITOR_COMMAND_ID = 'moveActiveEditor';
|
|
15
44
|
const COPY_ACTIVE_EDITOR_COMMAND_ID = 'copyActiveEditor';
|
|
16
45
|
const LAYOUT_EDITOR_GROUPS_COMMAND_ID = 'layoutEditorGroups';
|
|
46
|
+
const KEEP_EDITOR_COMMAND_ID = 'workbench.action.keepEditor';
|
|
47
|
+
const TOGGLE_KEEP_EDITORS_COMMAND_ID = 'workbench.action.toggleKeepEditors';
|
|
48
|
+
const TOGGLE_LOCK_GROUP_COMMAND_ID = 'workbench.action.toggleEditorGroupLock';
|
|
49
|
+
const LOCK_GROUP_COMMAND_ID = 'workbench.action.lockEditorGroup';
|
|
50
|
+
const UNLOCK_GROUP_COMMAND_ID = 'workbench.action.unlockEditorGroup';
|
|
51
|
+
const SHOW_EDITORS_IN_GROUP = 'workbench.action.showEditorsInGroup';
|
|
52
|
+
const REOPEN_WITH_COMMAND_ID = 'workbench.action.reopenWithEditor';
|
|
53
|
+
const PIN_EDITOR_COMMAND_ID = 'workbench.action.pinEditor';
|
|
17
54
|
const UNPIN_EDITOR_COMMAND_ID = 'workbench.action.unpinEditor';
|
|
55
|
+
const TOGGLE_DIFF_SIDE_BY_SIDE = 'toggle.diff.renderSideBySide';
|
|
56
|
+
const GOTO_NEXT_CHANGE = 'workbench.action.compareEditor.nextChange';
|
|
57
|
+
const GOTO_PREVIOUS_CHANGE = 'workbench.action.compareEditor.previousChange';
|
|
58
|
+
const DIFF_FOCUS_PRIMARY_SIDE = 'workbench.action.compareEditor.focusPrimarySide';
|
|
59
|
+
const DIFF_FOCUS_SECONDARY_SIDE = 'workbench.action.compareEditor.focusSecondarySide';
|
|
60
|
+
const DIFF_FOCUS_OTHER_SIDE = 'workbench.action.compareEditor.focusOtherSide';
|
|
61
|
+
const DIFF_OPEN_SIDE = 'workbench.action.compareEditor.openSide';
|
|
18
62
|
const TOGGLE_DIFF_IGNORE_TRIM_WHITESPACE = 'toggle.diff.ignoreTrimWhitespace';
|
|
19
63
|
const SPLIT_EDITOR_UP = 'workbench.action.splitEditorUp';
|
|
20
64
|
const SPLIT_EDITOR_DOWN = 'workbench.action.splitEditorDown';
|
|
65
|
+
const SPLIT_EDITOR_LEFT = 'workbench.action.splitEditorLeft';
|
|
66
|
+
const SPLIT_EDITOR_RIGHT = 'workbench.action.splitEditorRight';
|
|
67
|
+
const SPLIT_EDITOR_IN_GROUP = 'workbench.action.splitEditorInGroup';
|
|
68
|
+
const TOGGLE_SPLIT_EDITOR_IN_GROUP = 'workbench.action.toggleSplitEditorInGroup';
|
|
69
|
+
const JOIN_EDITOR_IN_GROUP = 'workbench.action.joinEditorInGroup';
|
|
70
|
+
const TOGGLE_SPLIT_EDITOR_IN_GROUP_LAYOUT = 'workbench.action.toggleSplitEditorInGroupLayout';
|
|
71
|
+
const FOCUS_FIRST_SIDE_EDITOR = 'workbench.action.focusFirstSideEditor';
|
|
72
|
+
const FOCUS_SECOND_SIDE_EDITOR = 'workbench.action.focusSecondSideEditor';
|
|
73
|
+
const FOCUS_OTHER_SIDE_EDITOR = 'workbench.action.focusOtherSideEditor';
|
|
74
|
+
const FOCUS_LEFT_GROUP_WITHOUT_WRAP_COMMAND_ID = 'workbench.action.focusLeftGroupWithoutWrap';
|
|
75
|
+
const FOCUS_RIGHT_GROUP_WITHOUT_WRAP_COMMAND_ID = 'workbench.action.focusRightGroupWithoutWrap';
|
|
76
|
+
const FOCUS_ABOVE_GROUP_WITHOUT_WRAP_COMMAND_ID = 'workbench.action.focusAboveGroupWithoutWrap';
|
|
77
|
+
const FOCUS_BELOW_GROUP_WITHOUT_WRAP_COMMAND_ID = 'workbench.action.focusBelowGroupWithoutWrap';
|
|
78
|
+
const OPEN_EDITOR_AT_INDEX_COMMAND_ID = 'workbench.action.openEditorAtIndex';
|
|
21
79
|
const API_OPEN_EDITOR_COMMAND_ID = '_workbench.open';
|
|
22
80
|
const API_OPEN_DIFF_EDITOR_COMMAND_ID = '_workbench.diff';
|
|
23
81
|
const API_OPEN_WITH_EDITOR_COMMAND_ID = '_workbench.openWith';
|
|
82
|
+
const isActiveEditorMoveCopyArg = function (arg) {
|
|
83
|
+
if (!isObject(arg)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
if (!isString(arg.to)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
if (!isUndefined(arg.by) && !isString(arg.by)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (!isUndefined(arg.value) && !isNumber(arg.value)) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
};
|
|
97
|
+
function registerActiveEditorMoveCopyCommand() {
|
|
98
|
+
const moveCopyJSONSchema = {
|
|
99
|
+
'type': 'object',
|
|
100
|
+
'required': ['to'],
|
|
101
|
+
'properties': {
|
|
102
|
+
'to': {
|
|
103
|
+
'type': 'string',
|
|
104
|
+
'enum': ['left', 'right']
|
|
105
|
+
},
|
|
106
|
+
'by': {
|
|
107
|
+
'type': 'string',
|
|
108
|
+
'enum': ['tab', 'group']
|
|
109
|
+
},
|
|
110
|
+
'value': {
|
|
111
|
+
'type': 'number'
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
116
|
+
id: MOVE_ACTIVE_EDITOR_COMMAND_ID,
|
|
117
|
+
weight: 200 ,
|
|
118
|
+
when: EditorContextKeys.editorTextFocus,
|
|
119
|
+
primary: 0,
|
|
120
|
+
handler: (accessor, args) => moveCopyActiveEditor(true, args, accessor),
|
|
121
|
+
description: {
|
|
122
|
+
description: ( localize(
|
|
123
|
+
'editorCommand.activeEditorMove.description',
|
|
124
|
+
"Move the active editor by tabs or groups"
|
|
125
|
+
)),
|
|
126
|
+
args: [
|
|
127
|
+
{
|
|
128
|
+
name: ( localize('editorCommand.activeEditorMove.arg.name', "Active editor move argument")),
|
|
129
|
+
description: ( localize(
|
|
130
|
+
'editorCommand.activeEditorMove.arg.description',
|
|
131
|
+
"Argument Properties:\n\t* 'to': String value providing where to move.\n\t* 'by': String value providing the unit for move (by tab or by group).\n\t* 'value': Number value providing how many positions or an absolute position to move."
|
|
132
|
+
)),
|
|
133
|
+
constraint: isActiveEditorMoveCopyArg,
|
|
134
|
+
schema: moveCopyJSONSchema
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
140
|
+
id: COPY_ACTIVE_EDITOR_COMMAND_ID,
|
|
141
|
+
weight: 200 ,
|
|
142
|
+
when: EditorContextKeys.editorTextFocus,
|
|
143
|
+
primary: 0,
|
|
144
|
+
handler: (accessor, args) => moveCopyActiveEditor(false, args, accessor),
|
|
145
|
+
description: {
|
|
146
|
+
description: ( localize(
|
|
147
|
+
'editorCommand.activeEditorCopy.description',
|
|
148
|
+
"Copy the active editor by groups"
|
|
149
|
+
)),
|
|
150
|
+
args: [
|
|
151
|
+
{
|
|
152
|
+
name: ( localize('editorCommand.activeEditorCopy.arg.name', "Active editor copy argument")),
|
|
153
|
+
description: ( localize(
|
|
154
|
+
'editorCommand.activeEditorCopy.arg.description',
|
|
155
|
+
"Argument Properties:\n\t* 'to': String value providing where to copy.\n\t* 'value': Number value providing how many positions or an absolute position to copy."
|
|
156
|
+
)),
|
|
157
|
+
constraint: isActiveEditorMoveCopyArg,
|
|
158
|
+
schema: moveCopyJSONSchema
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
function moveCopyActiveEditor(isMove, args = Object.create(null), accessor) {
|
|
164
|
+
args.to = args.to || 'right';
|
|
165
|
+
args.by = args.by || 'tab';
|
|
166
|
+
args.value = typeof args.value === 'number' ? args.value : 1;
|
|
167
|
+
const activeEditorPane = accessor.get(IEditorService).activeEditorPane;
|
|
168
|
+
if (activeEditorPane) {
|
|
169
|
+
switch (args.by) {
|
|
170
|
+
case 'tab':
|
|
171
|
+
if (isMove) {
|
|
172
|
+
return moveActiveTab(args, activeEditorPane);
|
|
173
|
+
}
|
|
174
|
+
break;
|
|
175
|
+
case 'group':
|
|
176
|
+
return moveCopyActiveEditorToGroup(isMove, args, activeEditorPane, accessor);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function moveActiveTab(args, control) {
|
|
181
|
+
const group = control.group;
|
|
182
|
+
let index = group.getIndexOfEditor(control.input);
|
|
183
|
+
switch (args.to) {
|
|
184
|
+
case 'first':
|
|
185
|
+
index = 0;
|
|
186
|
+
break;
|
|
187
|
+
case 'last':
|
|
188
|
+
index = group.count - 1;
|
|
189
|
+
break;
|
|
190
|
+
case 'left':
|
|
191
|
+
index = index - args.value;
|
|
192
|
+
break;
|
|
193
|
+
case 'right':
|
|
194
|
+
index = index + args.value;
|
|
195
|
+
break;
|
|
196
|
+
case 'center':
|
|
197
|
+
index = Math.round(group.count / 2) - 1;
|
|
198
|
+
break;
|
|
199
|
+
case 'position':
|
|
200
|
+
index = args.value - 1;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
index = index < 0 ? 0 : index >= group.count ? group.count - 1 : index;
|
|
204
|
+
group.moveEditor(control.input, group, { index });
|
|
205
|
+
}
|
|
206
|
+
function moveCopyActiveEditorToGroup(isMove, args, control, accessor) {
|
|
207
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
208
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
209
|
+
const sourceGroup = control.group;
|
|
210
|
+
let targetGroup;
|
|
211
|
+
switch (args.to) {
|
|
212
|
+
case 'left':
|
|
213
|
+
targetGroup = editorGroupService.findGroup({ direction: 2 }, sourceGroup);
|
|
214
|
+
if (!targetGroup) {
|
|
215
|
+
targetGroup = editorGroupService.addGroup(sourceGroup, 2 );
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
case 'right':
|
|
219
|
+
targetGroup = editorGroupService.findGroup({ direction: 3 }, sourceGroup);
|
|
220
|
+
if (!targetGroup) {
|
|
221
|
+
targetGroup = editorGroupService.addGroup(sourceGroup, 3 );
|
|
222
|
+
}
|
|
223
|
+
break;
|
|
224
|
+
case 'up':
|
|
225
|
+
targetGroup = editorGroupService.findGroup({ direction: 0 }, sourceGroup);
|
|
226
|
+
if (!targetGroup) {
|
|
227
|
+
targetGroup = editorGroupService.addGroup(sourceGroup, 0 );
|
|
228
|
+
}
|
|
229
|
+
break;
|
|
230
|
+
case 'down':
|
|
231
|
+
targetGroup = editorGroupService.findGroup({ direction: 1 }, sourceGroup);
|
|
232
|
+
if (!targetGroup) {
|
|
233
|
+
targetGroup = editorGroupService.addGroup(sourceGroup, 1 );
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
case 'first':
|
|
237
|
+
targetGroup = editorGroupService.findGroup({ location: 0 }, sourceGroup);
|
|
238
|
+
break;
|
|
239
|
+
case 'last':
|
|
240
|
+
targetGroup = editorGroupService.findGroup({ location: 1 }, sourceGroup);
|
|
241
|
+
break;
|
|
242
|
+
case 'previous':
|
|
243
|
+
targetGroup = editorGroupService.findGroup({ location: 3 }, sourceGroup);
|
|
244
|
+
break;
|
|
245
|
+
case 'next':
|
|
246
|
+
targetGroup = editorGroupService.findGroup({ location: 2 }, sourceGroup);
|
|
247
|
+
if (!targetGroup) {
|
|
248
|
+
targetGroup = editorGroupService.addGroup(sourceGroup, preferredSideBySideGroupDirection(configurationService));
|
|
249
|
+
}
|
|
250
|
+
break;
|
|
251
|
+
case 'center':
|
|
252
|
+
targetGroup = editorGroupService.getGroups(2 )[(editorGroupService.count / 2) - 1];
|
|
253
|
+
break;
|
|
254
|
+
case 'position':
|
|
255
|
+
targetGroup = editorGroupService.getGroups(2 )[args.value - 1];
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
if (targetGroup) {
|
|
259
|
+
if (isMove) {
|
|
260
|
+
sourceGroup.moveEditor(control.input, targetGroup);
|
|
261
|
+
}
|
|
262
|
+
else if (sourceGroup.id !== targetGroup.id) {
|
|
263
|
+
sourceGroup.copyEditor(control.input, targetGroup);
|
|
264
|
+
}
|
|
265
|
+
targetGroup.focus();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function registerEditorGroupsLayoutCommands() {
|
|
270
|
+
function applyEditorLayout(accessor, layout) {
|
|
271
|
+
if (!layout || typeof layout !== 'object') {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
275
|
+
editorGroupService.applyLayout(layout);
|
|
276
|
+
}
|
|
277
|
+
CommandsRegistry.registerCommand(LAYOUT_EDITOR_GROUPS_COMMAND_ID, (accessor, args) => {
|
|
278
|
+
applyEditorLayout(accessor, args);
|
|
279
|
+
});
|
|
280
|
+
CommandsRegistry.registerCommand({
|
|
281
|
+
id: 'vscode.setEditorLayout',
|
|
282
|
+
handler: (accessor, args) => applyEditorLayout(accessor, args),
|
|
283
|
+
description: {
|
|
284
|
+
description: 'Set Editor Layout',
|
|
285
|
+
args: [{
|
|
286
|
+
name: 'args',
|
|
287
|
+
schema: {
|
|
288
|
+
'type': 'object',
|
|
289
|
+
'required': ['groups'],
|
|
290
|
+
'properties': {
|
|
291
|
+
'orientation': {
|
|
292
|
+
'type': 'number',
|
|
293
|
+
'default': 0,
|
|
294
|
+
'enum': [0, 1]
|
|
295
|
+
},
|
|
296
|
+
'groups': {
|
|
297
|
+
'$ref': '#/definitions/editorGroupsSchema',
|
|
298
|
+
'default': [{}, {}]
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}]
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
CommandsRegistry.registerCommand({
|
|
306
|
+
id: 'vscode.getEditorLayout',
|
|
307
|
+
handler: (accessor) => {
|
|
308
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
309
|
+
return editorGroupService.getLayout();
|
|
310
|
+
},
|
|
311
|
+
description: {
|
|
312
|
+
description: 'Get Editor Layout',
|
|
313
|
+
args: [],
|
|
314
|
+
returns: 'An editor layout object, in the same format as vscode.setEditorLayout'
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
function registerDiffEditorCommands() {
|
|
319
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
320
|
+
id: GOTO_NEXT_CHANGE,
|
|
321
|
+
weight: 200 ,
|
|
322
|
+
when: TextCompareEditorVisibleContext,
|
|
323
|
+
primary: 512 | 63 ,
|
|
324
|
+
handler: accessor => navigateInDiffEditor(accessor, true)
|
|
325
|
+
});
|
|
326
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
327
|
+
id: GOTO_PREVIOUS_CHANGE,
|
|
328
|
+
weight: 200 ,
|
|
329
|
+
when: TextCompareEditorVisibleContext,
|
|
330
|
+
primary: 512 | 1024 | 63 ,
|
|
331
|
+
handler: accessor => navigateInDiffEditor(accessor, false)
|
|
332
|
+
});
|
|
333
|
+
function getActiveTextDiffEditor(accessor) {
|
|
334
|
+
const editorService = accessor.get(IEditorService);
|
|
335
|
+
for (const editor of [editorService.activeEditorPane, ...editorService.visibleEditorPanes]) {
|
|
336
|
+
if (editor instanceof TextDiffEditor) {
|
|
337
|
+
return editor;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return undefined;
|
|
341
|
+
}
|
|
342
|
+
function navigateInDiffEditor(accessor, next) {
|
|
343
|
+
const activeTextDiffEditor = getActiveTextDiffEditor(accessor);
|
|
344
|
+
if (activeTextDiffEditor) {
|
|
345
|
+
const navigator = activeTextDiffEditor.getDiffNavigator();
|
|
346
|
+
if (navigator) {
|
|
347
|
+
next ? navigator.next() : navigator.previous();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
let FocusTextDiffEditorMode;
|
|
352
|
+
( (function(FocusTextDiffEditorMode) {
|
|
353
|
+
FocusTextDiffEditorMode[FocusTextDiffEditorMode["Original"] = 0] = "Original";
|
|
354
|
+
FocusTextDiffEditorMode[FocusTextDiffEditorMode["Modified"] = 1] = "Modified";
|
|
355
|
+
FocusTextDiffEditorMode[FocusTextDiffEditorMode["Toggle"] = 2] = "Toggle";
|
|
356
|
+
})(FocusTextDiffEditorMode || (FocusTextDiffEditorMode = {})));
|
|
357
|
+
function focusInDiffEditor(accessor, mode) {
|
|
358
|
+
const activeTextDiffEditor = getActiveTextDiffEditor(accessor);
|
|
359
|
+
if (activeTextDiffEditor) {
|
|
360
|
+
switch (mode) {
|
|
361
|
+
case FocusTextDiffEditorMode.Original:
|
|
362
|
+
activeTextDiffEditor.getControl()?.getOriginalEditor().focus();
|
|
363
|
+
break;
|
|
364
|
+
case FocusTextDiffEditorMode.Modified:
|
|
365
|
+
activeTextDiffEditor.getControl()?.getModifiedEditor().focus();
|
|
366
|
+
break;
|
|
367
|
+
case FocusTextDiffEditorMode.Toggle:
|
|
368
|
+
if (activeTextDiffEditor.getControl()?.getModifiedEditor().hasWidgetFocus()) {
|
|
369
|
+
return focusInDiffEditor(accessor, FocusTextDiffEditorMode.Original);
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
return focusInDiffEditor(accessor, FocusTextDiffEditorMode.Modified);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
function toggleDiffSideBySide(accessor) {
|
|
378
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
379
|
+
const newValue = !configurationService.getValue('diffEditor.renderSideBySide');
|
|
380
|
+
configurationService.updateValue('diffEditor.renderSideBySide', newValue);
|
|
381
|
+
}
|
|
382
|
+
function toggleDiffIgnoreTrimWhitespace(accessor) {
|
|
383
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
384
|
+
const newValue = !configurationService.getValue('diffEditor.ignoreTrimWhitespace');
|
|
385
|
+
configurationService.updateValue('diffEditor.ignoreTrimWhitespace', newValue);
|
|
386
|
+
}
|
|
387
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
388
|
+
id: TOGGLE_DIFF_SIDE_BY_SIDE,
|
|
389
|
+
weight: 200 ,
|
|
390
|
+
when: undefined,
|
|
391
|
+
primary: undefined,
|
|
392
|
+
handler: accessor => toggleDiffSideBySide(accessor)
|
|
393
|
+
});
|
|
394
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
395
|
+
id: DIFF_FOCUS_PRIMARY_SIDE,
|
|
396
|
+
weight: 200 ,
|
|
397
|
+
when: undefined,
|
|
398
|
+
primary: undefined,
|
|
399
|
+
handler: accessor => focusInDiffEditor(accessor, FocusTextDiffEditorMode.Modified)
|
|
400
|
+
});
|
|
401
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
402
|
+
id: DIFF_FOCUS_SECONDARY_SIDE,
|
|
403
|
+
weight: 200 ,
|
|
404
|
+
when: undefined,
|
|
405
|
+
primary: undefined,
|
|
406
|
+
handler: accessor => focusInDiffEditor(accessor, FocusTextDiffEditorMode.Original)
|
|
407
|
+
});
|
|
408
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
409
|
+
id: DIFF_FOCUS_OTHER_SIDE,
|
|
410
|
+
weight: 200 ,
|
|
411
|
+
when: undefined,
|
|
412
|
+
primary: undefined,
|
|
413
|
+
handler: accessor => focusInDiffEditor(accessor, FocusTextDiffEditorMode.Toggle)
|
|
414
|
+
});
|
|
415
|
+
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
|
|
416
|
+
command: {
|
|
417
|
+
id: TOGGLE_DIFF_SIDE_BY_SIDE,
|
|
418
|
+
title: {
|
|
419
|
+
value: ( localize('toggleInlineView', "Toggle Inline View")),
|
|
420
|
+
original: 'Compare: Toggle Inline View'
|
|
421
|
+
},
|
|
422
|
+
category: ( localize('compare', "Compare"))
|
|
423
|
+
},
|
|
424
|
+
when: TextCompareEditorActiveContext
|
|
425
|
+
});
|
|
426
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
427
|
+
id: TOGGLE_DIFF_IGNORE_TRIM_WHITESPACE,
|
|
428
|
+
weight: 200 ,
|
|
429
|
+
when: undefined,
|
|
430
|
+
primary: undefined,
|
|
431
|
+
handler: accessor => toggleDiffIgnoreTrimWhitespace(accessor)
|
|
432
|
+
});
|
|
433
|
+
}
|
|
24
434
|
function registerOpenEditorAPICommands() {
|
|
25
435
|
function mixinContext(context, options, column) {
|
|
26
436
|
if (!context) {
|
|
@@ -113,6 +523,101 @@ function registerOpenEditorAPICommands() {
|
|
|
113
523
|
return editorService.openEditor({ resource: URI.revive(resource), options: { ...optionsArg, pinned: true, override: id } }, columnToEditorGroup(editorGroupsService, configurationService, columnArg));
|
|
114
524
|
});
|
|
115
525
|
}
|
|
526
|
+
function registerOpenEditorAtIndexCommands() {
|
|
527
|
+
const openEditorAtIndex = (accessor, editorIndex) => {
|
|
528
|
+
const editorService = accessor.get(IEditorService);
|
|
529
|
+
const activeEditorPane = editorService.activeEditorPane;
|
|
530
|
+
if (activeEditorPane) {
|
|
531
|
+
const editor = activeEditorPane.group.getEditorByIndex(editorIndex);
|
|
532
|
+
if (editor) {
|
|
533
|
+
editorService.openEditor(editor);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
};
|
|
537
|
+
CommandsRegistry.registerCommand({
|
|
538
|
+
id: OPEN_EDITOR_AT_INDEX_COMMAND_ID,
|
|
539
|
+
handler: openEditorAtIndex
|
|
540
|
+
});
|
|
541
|
+
for (let i = 0; i < 9; i++) {
|
|
542
|
+
const editorIndex = i;
|
|
543
|
+
const visibleIndex = i + 1;
|
|
544
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
545
|
+
id: OPEN_EDITOR_AT_INDEX_COMMAND_ID + visibleIndex,
|
|
546
|
+
weight: 200 ,
|
|
547
|
+
when: undefined,
|
|
548
|
+
primary: 512 | toKeyCode(visibleIndex),
|
|
549
|
+
mac: { primary: 256 | toKeyCode(visibleIndex) },
|
|
550
|
+
handler: accessor => openEditorAtIndex(accessor, editorIndex)
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
function toKeyCode(index) {
|
|
554
|
+
switch (index) {
|
|
555
|
+
case 0: return 21 ;
|
|
556
|
+
case 1: return 22 ;
|
|
557
|
+
case 2: return 23 ;
|
|
558
|
+
case 3: return 24 ;
|
|
559
|
+
case 4: return 25 ;
|
|
560
|
+
case 5: return 26 ;
|
|
561
|
+
case 6: return 27 ;
|
|
562
|
+
case 7: return 28 ;
|
|
563
|
+
case 8: return 29 ;
|
|
564
|
+
case 9: return 30 ;
|
|
565
|
+
}
|
|
566
|
+
throw new Error('invalid index');
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
function registerFocusEditorGroupAtIndexCommands() {
|
|
570
|
+
for (let groupIndex = 1; groupIndex < 8; groupIndex++) {
|
|
571
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
572
|
+
id: toCommandId(groupIndex),
|
|
573
|
+
weight: 200 ,
|
|
574
|
+
when: undefined,
|
|
575
|
+
primary: 2048 | toKeyCode(groupIndex),
|
|
576
|
+
handler: accessor => {
|
|
577
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
578
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
579
|
+
if (groupIndex > editorGroupService.count) {
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
const groups = editorGroupService.getGroups(2 );
|
|
583
|
+
if (groups[groupIndex]) {
|
|
584
|
+
return groups[groupIndex].focus();
|
|
585
|
+
}
|
|
586
|
+
const direction = preferredSideBySideGroupDirection(configurationService);
|
|
587
|
+
const lastGroup = editorGroupService.findGroup({ location: 1 });
|
|
588
|
+
if (!lastGroup) {
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
const newGroup = editorGroupService.addGroup(lastGroup, direction);
|
|
592
|
+
newGroup.focus();
|
|
593
|
+
}
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
function toCommandId(index) {
|
|
597
|
+
switch (index) {
|
|
598
|
+
case 1: return 'workbench.action.focusSecondEditorGroup';
|
|
599
|
+
case 2: return 'workbench.action.focusThirdEditorGroup';
|
|
600
|
+
case 3: return 'workbench.action.focusFourthEditorGroup';
|
|
601
|
+
case 4: return 'workbench.action.focusFifthEditorGroup';
|
|
602
|
+
case 5: return 'workbench.action.focusSixthEditorGroup';
|
|
603
|
+
case 6: return 'workbench.action.focusSeventhEditorGroup';
|
|
604
|
+
case 7: return 'workbench.action.focusEighthEditorGroup';
|
|
605
|
+
}
|
|
606
|
+
throw new Error('Invalid index');
|
|
607
|
+
}
|
|
608
|
+
function toKeyCode(index) {
|
|
609
|
+
switch (index) {
|
|
610
|
+
case 1: return 23 ;
|
|
611
|
+
case 2: return 24 ;
|
|
612
|
+
case 3: return 25 ;
|
|
613
|
+
case 4: return 26 ;
|
|
614
|
+
case 5: return 27 ;
|
|
615
|
+
case 6: return 28 ;
|
|
616
|
+
case 7: return 29 ;
|
|
617
|
+
}
|
|
618
|
+
throw new Error('Invalid index');
|
|
619
|
+
}
|
|
620
|
+
}
|
|
116
621
|
function splitEditor(editorGroupService, direction, context) {
|
|
117
622
|
let sourceGroup;
|
|
118
623
|
if (context && typeof context.groupId === 'number') {
|
|
@@ -137,6 +642,607 @@ function splitEditor(editorGroupService, direction, context) {
|
|
|
137
642
|
}
|
|
138
643
|
newGroup.focus();
|
|
139
644
|
}
|
|
645
|
+
function registerSplitEditorCommands() {
|
|
646
|
+
[
|
|
647
|
+
{ id: SPLIT_EDITOR_UP, direction: 0 },
|
|
648
|
+
{ id: SPLIT_EDITOR_DOWN, direction: 1 },
|
|
649
|
+
{ id: SPLIT_EDITOR_LEFT, direction: 2 },
|
|
650
|
+
{ id: SPLIT_EDITOR_RIGHT, direction: 3 }
|
|
651
|
+
].forEach(({ id, direction }) => {
|
|
652
|
+
CommandsRegistry.registerCommand(id, function (accessor, resourceOrContext, context) {
|
|
653
|
+
splitEditor(accessor.get(IEditorGroupsService), direction, getCommandsContext(resourceOrContext, context));
|
|
654
|
+
});
|
|
655
|
+
});
|
|
656
|
+
}
|
|
657
|
+
function registerCloseEditorCommands() {
|
|
658
|
+
function closeEditorHandler(accessor, forceCloseStickyEditors, resourceOrContext, context) {
|
|
659
|
+
const editorGroupsService = accessor.get(IEditorGroupsService);
|
|
660
|
+
const editorService = accessor.get(IEditorService);
|
|
661
|
+
let keepStickyEditors = true;
|
|
662
|
+
if (forceCloseStickyEditors) {
|
|
663
|
+
keepStickyEditors = false;
|
|
664
|
+
}
|
|
665
|
+
else if (resourceOrContext || context) {
|
|
666
|
+
keepStickyEditors = false;
|
|
667
|
+
}
|
|
668
|
+
if (keepStickyEditors && !resourceOrContext && !context) {
|
|
669
|
+
const activeGroup = editorGroupsService.activeGroup;
|
|
670
|
+
const activeEditor = activeGroup.activeEditor;
|
|
671
|
+
if (activeEditor && activeGroup.isSticky(activeEditor)) {
|
|
672
|
+
const nextNonStickyEditorInGroup = activeGroup.getEditors(0 , { excludeSticky: true })[0];
|
|
673
|
+
if (nextNonStickyEditorInGroup) {
|
|
674
|
+
return activeGroup.openEditor(nextNonStickyEditorInGroup);
|
|
675
|
+
}
|
|
676
|
+
const nextNonStickyEditorInAllGroups = editorService.getEditors(0 , { excludeSticky: true })[0];
|
|
677
|
+
if (nextNonStickyEditorInAllGroups) {
|
|
678
|
+
return Promise.resolve(editorGroupsService.getGroup(nextNonStickyEditorInAllGroups.groupId)?.openEditor(nextNonStickyEditorInAllGroups.editor));
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
const { editors, groups } = getEditorsContext(accessor, resourceOrContext, context);
|
|
683
|
+
return Promise.all(( groups.map(async (group) => {
|
|
684
|
+
if (group) {
|
|
685
|
+
const editorsToClose = coalesce(( editors
|
|
686
|
+
.filter(editor => editor.groupId === group.id)
|
|
687
|
+
.map(
|
|
688
|
+
editor => typeof editor.editorIndex === 'number' ? group.getEditorByIndex(editor.editorIndex) : group.activeEditor
|
|
689
|
+
)))
|
|
690
|
+
.filter(editor => !keepStickyEditors || !group.isSticky(editor));
|
|
691
|
+
await group.closeEditors(editorsToClose, { preserveFocus: context?.preserveFocus });
|
|
692
|
+
}
|
|
693
|
+
})));
|
|
694
|
+
}
|
|
695
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
696
|
+
id: CLOSE_EDITOR_COMMAND_ID,
|
|
697
|
+
weight: 200 ,
|
|
698
|
+
when: undefined,
|
|
699
|
+
primary: 2048 | 53 ,
|
|
700
|
+
win: { primary: 2048 | 62 , secondary: [2048 | 53 ] },
|
|
701
|
+
handler: (accessor, resourceOrContext, context) => {
|
|
702
|
+
return closeEditorHandler(accessor, false, resourceOrContext, context);
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
CommandsRegistry.registerCommand(CLOSE_PINNED_EDITOR_COMMAND_ID, (accessor, resourceOrContext, context) => {
|
|
706
|
+
return closeEditorHandler(accessor, true , resourceOrContext, context);
|
|
707
|
+
});
|
|
708
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
709
|
+
id: CLOSE_EDITORS_IN_GROUP_COMMAND_ID,
|
|
710
|
+
weight: 200 ,
|
|
711
|
+
when: undefined,
|
|
712
|
+
primary: KeyChord(2048 | 41 , 53 ),
|
|
713
|
+
handler: (accessor, resourceOrContext, context) => {
|
|
714
|
+
return Promise.all(( getEditorsContext(accessor, resourceOrContext, context).groups.map(async (group) => {
|
|
715
|
+
if (group) {
|
|
716
|
+
await group.closeAllEditors({ excludeSticky: true });
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
})));
|
|
720
|
+
}
|
|
721
|
+
});
|
|
722
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
723
|
+
id: CLOSE_EDITOR_GROUP_COMMAND_ID,
|
|
724
|
+
weight: 200 ,
|
|
725
|
+
when: ( ContextKeyExpr.and(ActiveEditorGroupEmptyContext, MultipleEditorGroupsContext)),
|
|
726
|
+
primary: 2048 | 53 ,
|
|
727
|
+
win: { primary: 2048 | 62 , secondary: [2048 | 53 ] },
|
|
728
|
+
handler: (accessor, resourceOrContext, context) => {
|
|
729
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
730
|
+
const commandsContext = getCommandsContext(resourceOrContext, context);
|
|
731
|
+
let group;
|
|
732
|
+
if (commandsContext && typeof commandsContext.groupId === 'number') {
|
|
733
|
+
group = editorGroupService.getGroup(commandsContext.groupId);
|
|
734
|
+
}
|
|
735
|
+
else {
|
|
736
|
+
group = editorGroupService.activeGroup;
|
|
737
|
+
}
|
|
738
|
+
if (group) {
|
|
739
|
+
editorGroupService.removeGroup(group);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
744
|
+
id: CLOSE_SAVED_EDITORS_COMMAND_ID,
|
|
745
|
+
weight: 200 ,
|
|
746
|
+
when: undefined,
|
|
747
|
+
primary: KeyChord(2048 | 41 , 51 ),
|
|
748
|
+
handler: (accessor, resourceOrContext, context) => {
|
|
749
|
+
return Promise.all(( getEditorsContext(accessor, resourceOrContext, context).groups.map(async (group) => {
|
|
750
|
+
if (group) {
|
|
751
|
+
await group.closeEditors({ savedOnly: true, excludeSticky: true }, { preserveFocus: context?.preserveFocus });
|
|
752
|
+
}
|
|
753
|
+
})));
|
|
754
|
+
}
|
|
755
|
+
});
|
|
756
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
757
|
+
id: CLOSE_OTHER_EDITORS_IN_GROUP_COMMAND_ID,
|
|
758
|
+
weight: 200 ,
|
|
759
|
+
when: undefined,
|
|
760
|
+
primary: undefined,
|
|
761
|
+
mac: { primary: 2048 | 512 | 50 },
|
|
762
|
+
handler: (accessor, resourceOrContext, context) => {
|
|
763
|
+
const { editors, groups } = getEditorsContext(accessor, resourceOrContext, context);
|
|
764
|
+
return Promise.all(( groups.map(async (group) => {
|
|
765
|
+
if (group) {
|
|
766
|
+
const editorsToKeep = ( editors
|
|
767
|
+
.filter(editor => editor.groupId === group.id)
|
|
768
|
+
.map(
|
|
769
|
+
editor => typeof editor.editorIndex === 'number' ? group.getEditorByIndex(editor.editorIndex) : group.activeEditor
|
|
770
|
+
));
|
|
771
|
+
const editorsToClose = group.getEditors(1 , { excludeSticky: true }).filter(editor => !editorsToKeep.includes(editor));
|
|
772
|
+
for (const editorToKeep of editorsToKeep) {
|
|
773
|
+
if (editorToKeep) {
|
|
774
|
+
group.pinEditor(editorToKeep);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
await group.closeEditors(editorsToClose, { preserveFocus: context?.preserveFocus });
|
|
778
|
+
}
|
|
779
|
+
})));
|
|
780
|
+
}
|
|
781
|
+
});
|
|
782
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
783
|
+
id: CLOSE_EDITORS_TO_THE_RIGHT_COMMAND_ID,
|
|
784
|
+
weight: 200 ,
|
|
785
|
+
when: undefined,
|
|
786
|
+
primary: undefined,
|
|
787
|
+
handler: async (accessor, resourceOrContext, context) => {
|
|
788
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
789
|
+
const { group, editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
790
|
+
if (group && editor) {
|
|
791
|
+
if (group.activeEditor) {
|
|
792
|
+
group.pinEditor(group.activeEditor);
|
|
793
|
+
}
|
|
794
|
+
await group.closeEditors({ direction: 1 , except: editor, excludeSticky: true }, { preserveFocus: context?.preserveFocus });
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
});
|
|
798
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
799
|
+
id: REOPEN_WITH_COMMAND_ID,
|
|
800
|
+
weight: 200 ,
|
|
801
|
+
when: undefined,
|
|
802
|
+
primary: undefined,
|
|
803
|
+
handler: async (accessor, resourceOrContext, context) => {
|
|
804
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
805
|
+
const editorService = accessor.get(IEditorService);
|
|
806
|
+
const editorResolverService = accessor.get(IEditorResolverService);
|
|
807
|
+
const telemetryService = accessor.get(ITelemetryService);
|
|
808
|
+
const { group, editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
809
|
+
if (!editor) {
|
|
810
|
+
return;
|
|
811
|
+
}
|
|
812
|
+
const untypedEditor = editor.toUntyped();
|
|
813
|
+
if (!untypedEditor) {
|
|
814
|
+
return;
|
|
815
|
+
}
|
|
816
|
+
untypedEditor.options = { ...editorService.activeEditorPane?.options, override: EditorResolution.PICK };
|
|
817
|
+
const resolvedEditor = await editorResolverService.resolveEditor(untypedEditor, group);
|
|
818
|
+
if (!isEditorInputWithOptionsAndGroup(resolvedEditor)) {
|
|
819
|
+
return;
|
|
820
|
+
}
|
|
821
|
+
await resolvedEditor.group.replaceEditors([
|
|
822
|
+
{
|
|
823
|
+
editor: editor,
|
|
824
|
+
replacement: resolvedEditor.editor,
|
|
825
|
+
forceReplaceDirty: editor.resource?.scheme === Schemas.untitled,
|
|
826
|
+
options: resolvedEditor.options
|
|
827
|
+
}
|
|
828
|
+
]);
|
|
829
|
+
telemetryService.publicLog2('workbenchEditorReopen', {
|
|
830
|
+
scheme: editor.resource?.scheme ?? '',
|
|
831
|
+
ext: editor.resource ? extname(editor.resource) : '',
|
|
832
|
+
from: editor.editorId ?? '',
|
|
833
|
+
to: resolvedEditor.editor.editorId ?? ''
|
|
834
|
+
});
|
|
835
|
+
await resolvedEditor.group.openEditor(resolvedEditor.editor);
|
|
836
|
+
}
|
|
837
|
+
});
|
|
838
|
+
CommandsRegistry.registerCommand(CLOSE_EDITORS_AND_GROUP_COMMAND_ID, async (accessor, resourceOrContext, context) => {
|
|
839
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
840
|
+
const { group } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
841
|
+
if (group) {
|
|
842
|
+
await group.closeAllEditors();
|
|
843
|
+
if (group.count === 0 && editorGroupService.getGroup(group.id) ) {
|
|
844
|
+
editorGroupService.removeGroup(group);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
});
|
|
848
|
+
}
|
|
849
|
+
function registerFocusEditorGroupWihoutWrapCommands() {
|
|
850
|
+
const commands = [
|
|
851
|
+
{
|
|
852
|
+
id: FOCUS_LEFT_GROUP_WITHOUT_WRAP_COMMAND_ID,
|
|
853
|
+
direction: 2
|
|
854
|
+
},
|
|
855
|
+
{
|
|
856
|
+
id: FOCUS_RIGHT_GROUP_WITHOUT_WRAP_COMMAND_ID,
|
|
857
|
+
direction: 3
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
id: FOCUS_ABOVE_GROUP_WITHOUT_WRAP_COMMAND_ID,
|
|
861
|
+
direction: 0 ,
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
id: FOCUS_BELOW_GROUP_WITHOUT_WRAP_COMMAND_ID,
|
|
865
|
+
direction: 1
|
|
866
|
+
}
|
|
867
|
+
];
|
|
868
|
+
for (const command of commands) {
|
|
869
|
+
CommandsRegistry.registerCommand(command.id, async (accessor) => {
|
|
870
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
871
|
+
const group = editorGroupService.findGroup({ direction: command.direction }, editorGroupService.activeGroup, false);
|
|
872
|
+
group?.focus();
|
|
873
|
+
});
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
function registerSplitEditorInGroupCommands() {
|
|
877
|
+
async function splitEditorInGroup(accessor, resourceOrContext, context) {
|
|
878
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
879
|
+
const instantiationService = accessor.get(IInstantiationService);
|
|
880
|
+
const { group, editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
881
|
+
if (!editor) {
|
|
882
|
+
return;
|
|
883
|
+
}
|
|
884
|
+
await group.replaceEditors([{
|
|
885
|
+
editor,
|
|
886
|
+
replacement: instantiationService.createInstance(SideBySideEditorInput, undefined, undefined, editor, editor),
|
|
887
|
+
forceReplaceDirty: true
|
|
888
|
+
}]);
|
|
889
|
+
}
|
|
890
|
+
registerAction2(class extends Action2 {
|
|
891
|
+
constructor() {
|
|
892
|
+
super({
|
|
893
|
+
id: SPLIT_EDITOR_IN_GROUP,
|
|
894
|
+
title: { value: ( localize('splitEditorInGroup', "Split Editor in Group")), original: 'Split Editor in Group' },
|
|
895
|
+
category: Categories.View,
|
|
896
|
+
precondition: ActiveEditorCanSplitInGroupContext,
|
|
897
|
+
f1: true,
|
|
898
|
+
keybinding: {
|
|
899
|
+
weight: 200 ,
|
|
900
|
+
when: ActiveEditorCanSplitInGroupContext,
|
|
901
|
+
primary: KeyChord(2048 | 41 , 2048 | 1024 | 93 )
|
|
902
|
+
}
|
|
903
|
+
});
|
|
904
|
+
}
|
|
905
|
+
run(accessor, resourceOrContext, context) {
|
|
906
|
+
return splitEditorInGroup(accessor, resourceOrContext, context);
|
|
907
|
+
}
|
|
908
|
+
});
|
|
909
|
+
async function joinEditorInGroup(accessor, resourceOrContext, context) {
|
|
910
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
911
|
+
const { group, editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
912
|
+
if (!(editor instanceof SideBySideEditorInput)) {
|
|
913
|
+
return;
|
|
914
|
+
}
|
|
915
|
+
let options = undefined;
|
|
916
|
+
const activeEditorPane = group.activeEditorPane;
|
|
917
|
+
if (activeEditorPane instanceof SideBySideEditor && group.activeEditor === editor) {
|
|
918
|
+
for (const pane of [activeEditorPane.getPrimaryEditorPane(), activeEditorPane.getSecondaryEditorPane()]) {
|
|
919
|
+
if (pane?.hasFocus()) {
|
|
920
|
+
options = { viewState: pane.getViewState() };
|
|
921
|
+
break;
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
await group.replaceEditors([{
|
|
926
|
+
editor,
|
|
927
|
+
replacement: editor.primary,
|
|
928
|
+
options
|
|
929
|
+
}]);
|
|
930
|
+
}
|
|
931
|
+
registerAction2(class extends Action2 {
|
|
932
|
+
constructor() {
|
|
933
|
+
super({
|
|
934
|
+
id: JOIN_EDITOR_IN_GROUP,
|
|
935
|
+
title: { value: ( localize('joinEditorInGroup', "Join Editor in Group")), original: 'Join Editor in Group' },
|
|
936
|
+
category: Categories.View,
|
|
937
|
+
precondition: SideBySideEditorActiveContext,
|
|
938
|
+
f1: true,
|
|
939
|
+
keybinding: {
|
|
940
|
+
weight: 200 ,
|
|
941
|
+
when: SideBySideEditorActiveContext,
|
|
942
|
+
primary: KeyChord(2048 | 41 , 2048 | 1024 | 93 )
|
|
943
|
+
}
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
run(accessor, resourceOrContext, context) {
|
|
947
|
+
return joinEditorInGroup(accessor, resourceOrContext, context);
|
|
948
|
+
}
|
|
949
|
+
});
|
|
950
|
+
registerAction2(class extends Action2 {
|
|
951
|
+
constructor() {
|
|
952
|
+
super({
|
|
953
|
+
id: TOGGLE_SPLIT_EDITOR_IN_GROUP,
|
|
954
|
+
title: { value: ( localize('toggleJoinEditorInGroup', "Toggle Split Editor in Group")), original: 'Toggle Split Editor in Group' },
|
|
955
|
+
category: Categories.View,
|
|
956
|
+
precondition: ( ContextKeyExpr.or(ActiveEditorCanSplitInGroupContext, SideBySideEditorActiveContext)),
|
|
957
|
+
f1: true
|
|
958
|
+
});
|
|
959
|
+
}
|
|
960
|
+
async run(accessor, resourceOrContext, context) {
|
|
961
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
962
|
+
const { editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
963
|
+
if (editor instanceof SideBySideEditorInput) {
|
|
964
|
+
await joinEditorInGroup(accessor, resourceOrContext, context);
|
|
965
|
+
}
|
|
966
|
+
else if (editor) {
|
|
967
|
+
await splitEditorInGroup(accessor, resourceOrContext, context);
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
});
|
|
971
|
+
registerAction2(class extends Action2 {
|
|
972
|
+
constructor() {
|
|
973
|
+
super({
|
|
974
|
+
id: TOGGLE_SPLIT_EDITOR_IN_GROUP_LAYOUT,
|
|
975
|
+
title: { value: ( localize('toggleSplitEditorInGroupLayout', "Toggle Layout of Split Editor in Group")), original: 'Toggle Layout of Split Editor in Group' },
|
|
976
|
+
category: Categories.View,
|
|
977
|
+
precondition: SideBySideEditorActiveContext,
|
|
978
|
+
f1: true
|
|
979
|
+
});
|
|
980
|
+
}
|
|
981
|
+
async run(accessor) {
|
|
982
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
983
|
+
const currentSetting = configurationService.getValue(SideBySideEditor.SIDE_BY_SIDE_LAYOUT_SETTING);
|
|
984
|
+
let newSetting;
|
|
985
|
+
if (currentSetting !== 'horizontal') {
|
|
986
|
+
newSetting = 'horizontal';
|
|
987
|
+
}
|
|
988
|
+
else {
|
|
989
|
+
newSetting = 'vertical';
|
|
990
|
+
}
|
|
991
|
+
return configurationService.updateValue(SideBySideEditor.SIDE_BY_SIDE_LAYOUT_SETTING, newSetting);
|
|
992
|
+
}
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
function registerFocusSideEditorsCommands() {
|
|
996
|
+
registerAction2(class extends Action2 {
|
|
997
|
+
constructor() {
|
|
998
|
+
super({
|
|
999
|
+
id: FOCUS_FIRST_SIDE_EDITOR,
|
|
1000
|
+
title: { value: ( localize('focusLeftSideEditor', "Focus First Side in Active Editor")), original: 'Focus First Side in Active Editor' },
|
|
1001
|
+
category: Categories.View,
|
|
1002
|
+
precondition: ( ContextKeyExpr.or(SideBySideEditorActiveContext, TextCompareEditorActiveContext)),
|
|
1003
|
+
f1: true
|
|
1004
|
+
});
|
|
1005
|
+
}
|
|
1006
|
+
async run(accessor) {
|
|
1007
|
+
const editorService = accessor.get(IEditorService);
|
|
1008
|
+
const commandService = accessor.get(ICommandService);
|
|
1009
|
+
const activeEditorPane = editorService.activeEditorPane;
|
|
1010
|
+
if (activeEditorPane instanceof SideBySideEditor) {
|
|
1011
|
+
activeEditorPane.getSecondaryEditorPane()?.focus();
|
|
1012
|
+
}
|
|
1013
|
+
else if (activeEditorPane instanceof TextDiffEditor) {
|
|
1014
|
+
await commandService.executeCommand(DIFF_FOCUS_SECONDARY_SIDE);
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
});
|
|
1018
|
+
registerAction2(class extends Action2 {
|
|
1019
|
+
constructor() {
|
|
1020
|
+
super({
|
|
1021
|
+
id: FOCUS_SECOND_SIDE_EDITOR,
|
|
1022
|
+
title: { value: ( localize('focusRightSideEditor', "Focus Second Side in Active Editor")), original: 'Focus Second Side in Active Editor' },
|
|
1023
|
+
category: Categories.View,
|
|
1024
|
+
precondition: ( ContextKeyExpr.or(SideBySideEditorActiveContext, TextCompareEditorActiveContext)),
|
|
1025
|
+
f1: true
|
|
1026
|
+
});
|
|
1027
|
+
}
|
|
1028
|
+
async run(accessor) {
|
|
1029
|
+
const editorService = accessor.get(IEditorService);
|
|
1030
|
+
const commandService = accessor.get(ICommandService);
|
|
1031
|
+
const activeEditorPane = editorService.activeEditorPane;
|
|
1032
|
+
if (activeEditorPane instanceof SideBySideEditor) {
|
|
1033
|
+
activeEditorPane.getPrimaryEditorPane()?.focus();
|
|
1034
|
+
}
|
|
1035
|
+
else if (activeEditorPane instanceof TextDiffEditor) {
|
|
1036
|
+
await commandService.executeCommand(DIFF_FOCUS_PRIMARY_SIDE);
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
});
|
|
1040
|
+
registerAction2(class extends Action2 {
|
|
1041
|
+
constructor() {
|
|
1042
|
+
super({
|
|
1043
|
+
id: FOCUS_OTHER_SIDE_EDITOR,
|
|
1044
|
+
title: { value: ( localize('focusOtherSideEditor', "Focus Other Side in Active Editor")), original: 'Focus Other Side in Active Editor' },
|
|
1045
|
+
category: Categories.View,
|
|
1046
|
+
precondition: ( ContextKeyExpr.or(SideBySideEditorActiveContext, TextCompareEditorActiveContext)),
|
|
1047
|
+
f1: true
|
|
1048
|
+
});
|
|
1049
|
+
}
|
|
1050
|
+
async run(accessor) {
|
|
1051
|
+
const editorService = accessor.get(IEditorService);
|
|
1052
|
+
const commandService = accessor.get(ICommandService);
|
|
1053
|
+
const activeEditorPane = editorService.activeEditorPane;
|
|
1054
|
+
if (activeEditorPane instanceof SideBySideEditor) {
|
|
1055
|
+
if (activeEditorPane.getPrimaryEditorPane()?.hasFocus()) {
|
|
1056
|
+
activeEditorPane.getSecondaryEditorPane()?.focus();
|
|
1057
|
+
}
|
|
1058
|
+
else {
|
|
1059
|
+
activeEditorPane.getPrimaryEditorPane()?.focus();
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
else if (activeEditorPane instanceof TextDiffEditor) {
|
|
1063
|
+
await commandService.executeCommand(DIFF_FOCUS_OTHER_SIDE);
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
});
|
|
1067
|
+
}
|
|
1068
|
+
function registerOtherEditorCommands() {
|
|
1069
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
1070
|
+
id: KEEP_EDITOR_COMMAND_ID,
|
|
1071
|
+
weight: 200 ,
|
|
1072
|
+
when: undefined,
|
|
1073
|
+
primary: KeyChord(2048 | 41 , 3 ),
|
|
1074
|
+
handler: async (accessor, resourceOrContext, context) => {
|
|
1075
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
1076
|
+
const { group, editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
1077
|
+
if (group && editor) {
|
|
1078
|
+
return group.pinEditor(editor);
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
});
|
|
1082
|
+
CommandsRegistry.registerCommand({
|
|
1083
|
+
id: TOGGLE_KEEP_EDITORS_COMMAND_ID,
|
|
1084
|
+
handler: accessor => {
|
|
1085
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
1086
|
+
const currentSetting = configurationService.getValue('workbench.editor.enablePreview');
|
|
1087
|
+
const newSetting = currentSetting === true ? false : true;
|
|
1088
|
+
configurationService.updateValue('workbench.editor.enablePreview', newSetting);
|
|
1089
|
+
}
|
|
1090
|
+
});
|
|
1091
|
+
function setEditorGroupLock(accessor, resourceOrContext, context, locked) {
|
|
1092
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
1093
|
+
const { group } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
1094
|
+
group?.lock(locked ?? !group.isLocked);
|
|
1095
|
+
}
|
|
1096
|
+
registerAction2(class extends Action2 {
|
|
1097
|
+
constructor() {
|
|
1098
|
+
super({
|
|
1099
|
+
id: TOGGLE_LOCK_GROUP_COMMAND_ID,
|
|
1100
|
+
title: { value: ( localize('toggleEditorGroupLock', "Toggle Editor Group Lock")), original: 'Toggle Editor Group Lock' },
|
|
1101
|
+
category: Categories.View,
|
|
1102
|
+
precondition: MultipleEditorGroupsContext,
|
|
1103
|
+
f1: true
|
|
1104
|
+
});
|
|
1105
|
+
}
|
|
1106
|
+
async run(accessor, resourceOrContext, context) {
|
|
1107
|
+
setEditorGroupLock(accessor, resourceOrContext, context);
|
|
1108
|
+
}
|
|
1109
|
+
});
|
|
1110
|
+
registerAction2(class extends Action2 {
|
|
1111
|
+
constructor() {
|
|
1112
|
+
super({
|
|
1113
|
+
id: LOCK_GROUP_COMMAND_ID,
|
|
1114
|
+
title: { value: ( localize('lockEditorGroup', "Lock Editor Group")), original: 'Lock Editor Group' },
|
|
1115
|
+
category: Categories.View,
|
|
1116
|
+
precondition: ( ContextKeyExpr.and(MultipleEditorGroupsContext, ( ActiveEditorGroupLockedContext.toNegated()))),
|
|
1117
|
+
f1: true
|
|
1118
|
+
});
|
|
1119
|
+
}
|
|
1120
|
+
async run(accessor, resourceOrContext, context) {
|
|
1121
|
+
setEditorGroupLock(accessor, resourceOrContext, context, true);
|
|
1122
|
+
}
|
|
1123
|
+
});
|
|
1124
|
+
registerAction2(class extends Action2 {
|
|
1125
|
+
constructor() {
|
|
1126
|
+
super({
|
|
1127
|
+
id: UNLOCK_GROUP_COMMAND_ID,
|
|
1128
|
+
title: { value: ( localize('unlockEditorGroup', "Unlock Editor Group")), original: 'Unlock Editor Group' },
|
|
1129
|
+
precondition: ( ContextKeyExpr.and(MultipleEditorGroupsContext, ActiveEditorGroupLockedContext)),
|
|
1130
|
+
category: Categories.View,
|
|
1131
|
+
f1: true
|
|
1132
|
+
});
|
|
1133
|
+
}
|
|
1134
|
+
async run(accessor, resourceOrContext, context) {
|
|
1135
|
+
setEditorGroupLock(accessor, resourceOrContext, context, false);
|
|
1136
|
+
}
|
|
1137
|
+
});
|
|
1138
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
1139
|
+
id: PIN_EDITOR_COMMAND_ID,
|
|
1140
|
+
weight: 200 ,
|
|
1141
|
+
when: ( ActiveEditorStickyContext.toNegated()),
|
|
1142
|
+
primary: KeyChord(2048 | 41 , 1024 | 3 ),
|
|
1143
|
+
handler: async (accessor, resourceOrContext, context) => {
|
|
1144
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
1145
|
+
const { group, editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
1146
|
+
if (group && editor) {
|
|
1147
|
+
return group.stickEditor(editor);
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
});
|
|
1151
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
1152
|
+
id: DIFF_OPEN_SIDE,
|
|
1153
|
+
weight: 200 ,
|
|
1154
|
+
when: EditorContextKeys.inDiffEditor,
|
|
1155
|
+
primary: KeyChord(2048 | 41 , 1024 | 45 ),
|
|
1156
|
+
handler: async (accessor) => {
|
|
1157
|
+
const editorService = accessor.get(IEditorService);
|
|
1158
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
1159
|
+
const activeEditor = editorService.activeEditor;
|
|
1160
|
+
const activeTextEditorControl = editorService.activeTextEditorControl;
|
|
1161
|
+
if (!isDiffEditor(activeTextEditorControl) || !(activeEditor instanceof DiffEditorInput)) {
|
|
1162
|
+
return;
|
|
1163
|
+
}
|
|
1164
|
+
let editor;
|
|
1165
|
+
const originalEditor = activeTextEditorControl.getOriginalEditor();
|
|
1166
|
+
if (originalEditor.hasTextFocus()) {
|
|
1167
|
+
editor = activeEditor.original;
|
|
1168
|
+
}
|
|
1169
|
+
else {
|
|
1170
|
+
editor = activeEditor.modified;
|
|
1171
|
+
}
|
|
1172
|
+
return editorGroupService.activeGroup.openEditor(editor);
|
|
1173
|
+
}
|
|
1174
|
+
});
|
|
1175
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
1176
|
+
id: UNPIN_EDITOR_COMMAND_ID,
|
|
1177
|
+
weight: 200 ,
|
|
1178
|
+
when: ActiveEditorStickyContext,
|
|
1179
|
+
primary: KeyChord(2048 | 41 , 1024 | 3 ),
|
|
1180
|
+
handler: async (accessor, resourceOrContext, context) => {
|
|
1181
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
1182
|
+
const { group, editor } = resolveCommandsContext(editorGroupService, getCommandsContext(resourceOrContext, context));
|
|
1183
|
+
if (group && editor) {
|
|
1184
|
+
return group.unstickEditor(editor);
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1187
|
+
});
|
|
1188
|
+
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
|
1189
|
+
id: SHOW_EDITORS_IN_GROUP,
|
|
1190
|
+
weight: 200 ,
|
|
1191
|
+
when: undefined,
|
|
1192
|
+
primary: undefined,
|
|
1193
|
+
handler: (accessor, resourceOrContext, context) => {
|
|
1194
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
1195
|
+
const quickInputService = accessor.get(IQuickInputService);
|
|
1196
|
+
const commandsContext = getCommandsContext(resourceOrContext, context);
|
|
1197
|
+
if (commandsContext && typeof commandsContext.groupId === 'number') {
|
|
1198
|
+
const group = editorGroupService.getGroup(commandsContext.groupId);
|
|
1199
|
+
if (group) {
|
|
1200
|
+
editorGroupService.activateGroup(group);
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
return quickInputService.quickAccess.show(ActiveGroupEditorsByMostRecentlyUsedQuickAccess.PREFIX);
|
|
1204
|
+
}
|
|
1205
|
+
});
|
|
1206
|
+
}
|
|
1207
|
+
function getEditorsContext(accessor, resourceOrContext, context) {
|
|
1208
|
+
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
1209
|
+
const listService = accessor.get(IListService);
|
|
1210
|
+
const editorContext = getMultiSelectedEditorContexts(getCommandsContext(resourceOrContext, context), listService, editorGroupService);
|
|
1211
|
+
const activeGroup = editorGroupService.activeGroup;
|
|
1212
|
+
if (editorContext.length === 0 && activeGroup.activeEditor) {
|
|
1213
|
+
editorContext.push({
|
|
1214
|
+
groupId: activeGroup.id,
|
|
1215
|
+
editorIndex: activeGroup.getIndexOfEditor(activeGroup.activeEditor)
|
|
1216
|
+
});
|
|
1217
|
+
}
|
|
1218
|
+
return {
|
|
1219
|
+
editors: editorContext,
|
|
1220
|
+
groups: ( distinct(( editorContext.map(context => context.groupId))).map(groupId => editorGroupService.getGroup(groupId)))
|
|
1221
|
+
};
|
|
1222
|
+
}
|
|
1223
|
+
function getCommandsContext(resourceOrContext, context) {
|
|
1224
|
+
if (URI.isUri(resourceOrContext)) {
|
|
1225
|
+
return context;
|
|
1226
|
+
}
|
|
1227
|
+
if (resourceOrContext && typeof resourceOrContext.groupId === 'number') {
|
|
1228
|
+
return resourceOrContext;
|
|
1229
|
+
}
|
|
1230
|
+
if (context && typeof context.groupId === 'number') {
|
|
1231
|
+
return context;
|
|
1232
|
+
}
|
|
1233
|
+
return undefined;
|
|
1234
|
+
}
|
|
1235
|
+
function resolveCommandsContext(editorGroupService, context) {
|
|
1236
|
+
let group = context && typeof context.groupId === 'number' ? editorGroupService.getGroup(context.groupId) : undefined;
|
|
1237
|
+
let editor = group && context && typeof context.editorIndex === 'number' ? withNullAsUndefined(group.getEditorByIndex(context.editorIndex)) : undefined;
|
|
1238
|
+
if (!group) {
|
|
1239
|
+
group = editorGroupService.activeGroup;
|
|
1240
|
+
}
|
|
1241
|
+
if (!editor) {
|
|
1242
|
+
editor = withNullAsUndefined(group.activeEditor);
|
|
1243
|
+
}
|
|
1244
|
+
return { group, editor };
|
|
1245
|
+
}
|
|
140
1246
|
function getMultiSelectedEditorContexts(editorContext, listService, editorGroupService) {
|
|
141
1247
|
const list = listService.lastFocusedList;
|
|
142
1248
|
if (list instanceof List && list.getHTMLElement() === document.activeElement) {
|
|
@@ -167,6 +1273,17 @@ function getMultiSelectedEditorContexts(editorContext, listService, editorGroupS
|
|
|
167
1273
|
return !!editorContext ? [editorContext] : [];
|
|
168
1274
|
}
|
|
169
1275
|
function setup() {
|
|
1276
|
+
registerActiveEditorMoveCopyCommand();
|
|
1277
|
+
registerEditorGroupsLayoutCommands();
|
|
1278
|
+
registerDiffEditorCommands();
|
|
170
1279
|
registerOpenEditorAPICommands();
|
|
1280
|
+
registerOpenEditorAtIndexCommands();
|
|
1281
|
+
registerCloseEditorCommands();
|
|
1282
|
+
registerOtherEditorCommands();
|
|
1283
|
+
registerSplitEditorInGroupCommands();
|
|
1284
|
+
registerFocusSideEditorsCommands();
|
|
1285
|
+
registerFocusEditorGroupAtIndexCommands();
|
|
1286
|
+
registerSplitEditorCommands();
|
|
1287
|
+
registerFocusEditorGroupWihoutWrapCommands();
|
|
171
1288
|
}
|
|
172
|
-
export { API_OPEN_DIFF_EDITOR_COMMAND_ID, API_OPEN_EDITOR_COMMAND_ID, API_OPEN_WITH_EDITOR_COMMAND_ID, CLOSE_EDITORS_AND_GROUP_COMMAND_ID, CLOSE_EDITOR_COMMAND_ID, COPY_ACTIVE_EDITOR_COMMAND_ID, LAYOUT_EDITOR_GROUPS_COMMAND_ID, SPLIT_EDITOR_DOWN, SPLIT_EDITOR_UP, TOGGLE_DIFF_IGNORE_TRIM_WHITESPACE, UNPIN_EDITOR_COMMAND_ID, getMultiSelectedEditorContexts, setup, splitEditor };
|
|
1289
|
+
export { API_OPEN_DIFF_EDITOR_COMMAND_ID, API_OPEN_EDITOR_COMMAND_ID, API_OPEN_WITH_EDITOR_COMMAND_ID, CLOSE_EDITORS_AND_GROUP_COMMAND_ID, CLOSE_EDITORS_IN_GROUP_COMMAND_ID, CLOSE_EDITORS_TO_THE_RIGHT_COMMAND_ID, CLOSE_EDITOR_COMMAND_ID, CLOSE_EDITOR_GROUP_COMMAND_ID, CLOSE_OTHER_EDITORS_IN_GROUP_COMMAND_ID, CLOSE_PINNED_EDITOR_COMMAND_ID, CLOSE_SAVED_EDITORS_COMMAND_ID, COPY_ACTIVE_EDITOR_COMMAND_ID, DIFF_FOCUS_OTHER_SIDE, DIFF_FOCUS_PRIMARY_SIDE, DIFF_FOCUS_SECONDARY_SIDE, DIFF_OPEN_SIDE, FOCUS_ABOVE_GROUP_WITHOUT_WRAP_COMMAND_ID, FOCUS_BELOW_GROUP_WITHOUT_WRAP_COMMAND_ID, FOCUS_FIRST_SIDE_EDITOR, FOCUS_LEFT_GROUP_WITHOUT_WRAP_COMMAND_ID, FOCUS_OTHER_SIDE_EDITOR, FOCUS_RIGHT_GROUP_WITHOUT_WRAP_COMMAND_ID, FOCUS_SECOND_SIDE_EDITOR, GOTO_NEXT_CHANGE, GOTO_PREVIOUS_CHANGE, JOIN_EDITOR_IN_GROUP, KEEP_EDITOR_COMMAND_ID, LAYOUT_EDITOR_GROUPS_COMMAND_ID, LOCK_GROUP_COMMAND_ID, MOVE_ACTIVE_EDITOR_COMMAND_ID, OPEN_EDITOR_AT_INDEX_COMMAND_ID, PIN_EDITOR_COMMAND_ID, REOPEN_WITH_COMMAND_ID, SHOW_EDITORS_IN_GROUP, SPLIT_EDITOR_DOWN, SPLIT_EDITOR_IN_GROUP, SPLIT_EDITOR_LEFT, SPLIT_EDITOR_RIGHT, SPLIT_EDITOR_UP, TOGGLE_DIFF_IGNORE_TRIM_WHITESPACE, TOGGLE_DIFF_SIDE_BY_SIDE, TOGGLE_KEEP_EDITORS_COMMAND_ID, TOGGLE_LOCK_GROUP_COMMAND_ID, TOGGLE_SPLIT_EDITOR_IN_GROUP, TOGGLE_SPLIT_EDITOR_IN_GROUP_LAYOUT, UNLOCK_GROUP_COMMAND_ID, UNPIN_EDITOR_COMMAND_ID, getMultiSelectedEditorContexts, setup, splitEditor };
|