@theia/core 1.66.1 → 1.67.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +6 -6
  2. package/lib/browser/common-commands.d.ts +66 -0
  3. package/lib/browser/common-commands.d.ts.map +1 -0
  4. package/lib/browser/common-commands.js +271 -0
  5. package/lib/browser/common-commands.js.map +1 -0
  6. package/lib/browser/common-frontend-contribution.d.ts +5 -99
  7. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  8. package/lib/browser/common-frontend-contribution.js +157 -439
  9. package/lib/browser/common-frontend-contribution.js.map +1 -1
  10. package/lib/browser/common-menus.d.ts +35 -0
  11. package/lib/browser/common-menus.d.ts.map +1 -0
  12. package/lib/browser/common-menus.js +56 -0
  13. package/lib/browser/common-menus.js.map +1 -0
  14. package/lib/browser/index.d.ts +2 -0
  15. package/lib/browser/index.d.ts.map +1 -1
  16. package/lib/browser/index.js +2 -0
  17. package/lib/browser/index.js.map +1 -1
  18. package/lib/browser/quick-input/quick-command-frontend-contribution.js +3 -3
  19. package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
  20. package/lib/browser/shell/shell-layout-restorer.js +3 -3
  21. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  22. package/lib/browser/shell/view-contribution.js +2 -2
  23. package/lib/browser/shell/view-contribution.js.map +1 -1
  24. package/lib/browser/window-contribution.js +2 -2
  25. package/lib/browser/window-contribution.js.map +1 -1
  26. package/lib/common/preferences/preference-service.d.ts.map +1 -1
  27. package/lib/common/preferences/preference-service.js +6 -1
  28. package/lib/common/preferences/preference-service.js.map +1 -1
  29. package/package.json +6 -6
  30. package/src/browser/common-commands.ts +281 -0
  31. package/src/browser/common-frontend-contribution.ts +4 -306
  32. package/src/browser/common-menus.ts +60 -0
  33. package/src/browser/index.ts +2 -0
  34. package/src/browser/quick-input/quick-command-frontend-contribution.ts +1 -1
  35. package/src/browser/shell/shell-layout-restorer.ts +1 -1
  36. package/src/browser/shell/view-contribution.ts +1 -1
  37. package/src/browser/window-contribution.ts +1 -1
  38. package/src/common/preferences/preference-service.ts +6 -1
@@ -19,10 +19,14 @@
19
19
  import debounce = require('lodash.debounce');
20
20
  import { injectable, inject, optional } from 'inversify';
21
21
  import { MAIN_MENU_BAR, MANAGE_MENU, MenuContribution, MenuModelRegistry, ACCOUNTS_MENU, CompoundMenuNode, CommandMenu, Group, Submenu } from '../common/menu';
22
+ import { CommonMenus } from './common-menus';
23
+ export { CommonMenus };
22
24
  import { KeybindingContribution, KeybindingRegistry } from './keybinding';
23
25
  import { FrontendApplication } from './frontend-application';
24
26
  import { FrontendApplicationContribution, OnWillStopAction } from './frontend-application-contribution';
25
27
  import { CommandContribution, CommandRegistry, Command } from '../common/command';
28
+ import { CommonCommands } from './common-commands';
29
+ export { CommonCommands };
26
30
  import { UriAwareCommandHandler } from '../common/uri-command-handler';
27
31
  import { SelectionService } from '../common/selection-service';
28
32
  import { MessageService } from '../common/message-service';
@@ -69,312 +73,6 @@ import { SidebarMenu } from './shell/sidebar-menu-widget';
69
73
  import { UndoRedoHandlerService } from './undo-redo-handler';
70
74
  import { timeout } from '../common/promise-util';
71
75
 
72
- export namespace CommonMenus {
73
-
74
- export const FILE = [...MAIN_MENU_BAR, '1_file'];
75
- export const FILE_NEW_TEXT = [...FILE, '1_new_text'];
76
- export const FILE_NEW = [...FILE, '1_new'];
77
- export const FILE_OPEN = [...FILE, '2_open'];
78
- export const FILE_SAVE = [...FILE, '3_save'];
79
- export const FILE_AUTOSAVE = [...FILE, '4_autosave'];
80
- export const FILE_SETTINGS = [...FILE, '5_settings'];
81
- export const FILE_SETTINGS_SUBMENU = [...FILE_SETTINGS, '1_settings_submenu'];
82
- export const FILE_SETTINGS_SUBMENU_OPEN = [...FILE_SETTINGS_SUBMENU, '1_settings_submenu_open'];
83
- export const FILE_SETTINGS_SUBMENU_THEME = [...FILE_SETTINGS_SUBMENU, '2_settings_submenu_theme'];
84
- export const FILE_CLOSE = [...FILE, '6_close'];
85
-
86
- export const FILE_NEW_CONTRIBUTIONS = ['file', 'newFile'];
87
-
88
- export const EDIT = [...MAIN_MENU_BAR, '2_edit'];
89
- export const EDIT_UNDO = [...EDIT, '1_undo'];
90
- export const EDIT_CLIPBOARD = [...EDIT, '2_clipboard'];
91
- export const EDIT_FIND = [...EDIT, '3_find'];
92
-
93
- export const VIEW = [...MAIN_MENU_BAR, '4_view'];
94
- export const VIEW_PRIMARY = [...VIEW, '0_primary'];
95
- export const VIEW_APPEARANCE = [...VIEW, '1_appearance'];
96
- export const VIEW_APPEARANCE_SUBMENU = [...VIEW_APPEARANCE, '1_appearance_submenu'];
97
- export const VIEW_APPEARANCE_SUBMENU_SCREEN = [...VIEW_APPEARANCE_SUBMENU, '2_appearance_submenu_screen'];
98
- export const VIEW_APPEARANCE_SUBMENU_BAR = [...VIEW_APPEARANCE_SUBMENU, '3_appearance_submenu_bar'];
99
- export const VIEW_EDITOR_SUBMENU = [...VIEW_APPEARANCE, '2_editor_submenu'];
100
- export const VIEW_EDITOR_SUBMENU_SPLIT = [...VIEW_EDITOR_SUBMENU, '1_editor_submenu_split'];
101
- export const VIEW_EDITOR_SUBMENU_ORTHO = [...VIEW_EDITOR_SUBMENU, '2_editor_submenu_ortho'];
102
- export const VIEW_VIEWS = [...VIEW, '2_views'];
103
- export const VIEW_LAYOUT = [...VIEW, '3_layout'];
104
- export const VIEW_TOGGLE = [...VIEW, '4_toggle'];
105
-
106
- export const MANAGE_GENERAL = [...MANAGE_MENU, '1_manage_general'];
107
- export const MANAGE_SETTINGS = [...MANAGE_MENU, '2_manage_settings'];
108
- export const MANAGE_SETTINGS_THEMES = [...MANAGE_SETTINGS, '1_manage_settings_themes'];
109
-
110
- // last menu item
111
- export const HELP = [...MAIN_MENU_BAR, '9_help'];
112
-
113
- }
114
-
115
- export namespace CommonCommands {
116
-
117
- export const FILE_CATEGORY = 'File';
118
- export const VIEW_CATEGORY = 'View';
119
- export const CREATE_CATEGORY = 'Create';
120
- export const PREFERENCES_CATEGORY = 'Preferences';
121
- export const MANAGE_CATEGORY = 'Manage';
122
- export const FILE_CATEGORY_KEY = nls.getDefaultKey(FILE_CATEGORY);
123
- export const VIEW_CATEGORY_KEY = nls.getDefaultKey(VIEW_CATEGORY);
124
- export const PREFERENCES_CATEGORY_KEY = nls.getDefaultKey(PREFERENCES_CATEGORY);
125
-
126
- export const OPEN: Command = {
127
- id: 'core.open',
128
- };
129
-
130
- export const CUT = Command.toDefaultLocalizedCommand({
131
- id: 'core.cut',
132
- label: 'Cut'
133
- });
134
- export const COPY = Command.toDefaultLocalizedCommand({
135
- id: 'core.copy',
136
- label: 'Copy'
137
- });
138
- export const PASTE = Command.toDefaultLocalizedCommand({
139
- id: 'core.paste',
140
- label: 'Paste'
141
- });
142
-
143
- export const COPY_PATH = Command.toDefaultLocalizedCommand({
144
- id: 'core.copy.path',
145
- label: 'Copy Path'
146
- });
147
-
148
- export const UNDO = Command.toDefaultLocalizedCommand({
149
- id: 'core.undo',
150
- label: 'Undo'
151
- });
152
- export const REDO = Command.toDefaultLocalizedCommand({
153
- id: 'core.redo',
154
- label: 'Redo'
155
- });
156
- export const SELECT_ALL = Command.toDefaultLocalizedCommand({
157
- id: 'core.selectAll',
158
- label: 'Select All'
159
- });
160
-
161
- export const FIND = Command.toDefaultLocalizedCommand({
162
- id: 'core.find',
163
- label: 'Find'
164
- });
165
- export const REPLACE = Command.toDefaultLocalizedCommand({
166
- id: 'core.replace',
167
- label: 'Replace'
168
- });
169
-
170
- export const NEXT_TAB = Command.toDefaultLocalizedCommand({
171
- id: 'core.nextTab',
172
- category: VIEW_CATEGORY,
173
- label: 'Show Next Tab'
174
- });
175
- export const PREVIOUS_TAB = Command.toDefaultLocalizedCommand({
176
- id: 'core.previousTab',
177
- category: VIEW_CATEGORY,
178
- label: 'Show Previous Tab'
179
- });
180
- export const NEXT_TAB_IN_GROUP = Command.toLocalizedCommand({
181
- id: 'core.nextTabInGroup',
182
- category: VIEW_CATEGORY,
183
- label: 'Switch to Next Tab in Group'
184
- }, 'theia/core/common/showNextTabInGroup', VIEW_CATEGORY_KEY);
185
- export const PREVIOUS_TAB_IN_GROUP = Command.toLocalizedCommand({
186
- id: 'core.previousTabInGroup',
187
- category: VIEW_CATEGORY,
188
- label: 'Switch to Previous Tab in Group'
189
- }, 'theia/core/common/showPreviousTabInGroup', VIEW_CATEGORY_KEY);
190
- export const NEXT_TAB_GROUP = Command.toLocalizedCommand({
191
- id: 'core.nextTabGroup',
192
- category: VIEW_CATEGORY,
193
- label: 'Switch to Next Tab Group'
194
- }, 'theia/core/common/showNextTabGroup', VIEW_CATEGORY_KEY);
195
- export const PREVIOUS_TAB_GROUP = Command.toLocalizedCommand({
196
- id: 'core.previousTabBar',
197
- category: VIEW_CATEGORY,
198
- label: 'Switch to Previous Tab Group'
199
- }, 'theia/core/common/showPreviousTabGroup', VIEW_CATEGORY_KEY);
200
- export const CLOSE_TAB = Command.toLocalizedCommand({
201
- id: 'core.close.tab',
202
- category: VIEW_CATEGORY,
203
- label: 'Close Tab'
204
- }, 'theia/core/common/closeTab', VIEW_CATEGORY_KEY);
205
- export const CLOSE_OTHER_TABS = Command.toLocalizedCommand({
206
- id: 'core.close.other.tabs',
207
- category: VIEW_CATEGORY,
208
- label: 'Close Other Tabs'
209
- }, 'theia/core/common/closeOthers', VIEW_CATEGORY_KEY);
210
- export const CLOSE_SAVED_TABS = Command.toDefaultLocalizedCommand({
211
- id: 'workbench.action.closeUnmodifiedEditors',
212
- category: VIEW_CATEGORY,
213
- label: 'Close Saved Editors in Group',
214
- });
215
- export const CLOSE_RIGHT_TABS = Command.toLocalizedCommand({
216
- id: 'core.close.right.tabs',
217
- category: VIEW_CATEGORY,
218
- label: 'Close Tabs to the Right'
219
- }, 'theia/core/common/closeRight', VIEW_CATEGORY_KEY);
220
- export const CLOSE_ALL_TABS = Command.toLocalizedCommand({
221
- id: 'core.close.all.tabs',
222
- category: VIEW_CATEGORY,
223
- label: 'Close All Tabs'
224
- }, 'theia/core/common/closeAll', VIEW_CATEGORY_KEY);
225
- export const CLOSE_MAIN_TAB = Command.toLocalizedCommand({
226
- id: 'core.close.main.tab',
227
- category: VIEW_CATEGORY,
228
- label: 'Close Tab in Main Area'
229
- }, 'theia/core/common/closeTabMain', VIEW_CATEGORY_KEY);
230
- export const CLOSE_OTHER_MAIN_TABS = Command.toLocalizedCommand({
231
- id: 'core.close.other.main.tabs',
232
- category: VIEW_CATEGORY,
233
- label: 'Close Other Tabs in Main Area'
234
- }, 'theia/core/common/closeOtherTabMain', VIEW_CATEGORY_KEY);
235
- export const CLOSE_ALL_MAIN_TABS = Command.toLocalizedCommand({
236
- id: 'core.close.all.main.tabs',
237
- category: VIEW_CATEGORY,
238
- label: 'Close All Tabs in Main Area'
239
- }, 'theia/core/common/closeAllTabMain', VIEW_CATEGORY_KEY);
240
- export const COLLAPSE_PANEL = Command.toLocalizedCommand({
241
- id: 'core.collapse.tab',
242
- category: VIEW_CATEGORY,
243
- label: 'Collapse Side Panel'
244
- }, 'theia/core/common/collapseTab', VIEW_CATEGORY_KEY);
245
- export const COLLAPSE_ALL_PANELS = Command.toLocalizedCommand({
246
- id: 'core.collapse.all.tabs',
247
- category: VIEW_CATEGORY,
248
- label: 'Collapse All Side Panels'
249
- }, 'theia/core/common/collapseAllTabs', VIEW_CATEGORY_KEY);
250
- export const TOGGLE_BOTTOM_PANEL = Command.toLocalizedCommand({
251
- id: 'core.toggle.bottom.panel',
252
- category: VIEW_CATEGORY,
253
- label: 'Toggle Bottom Panel'
254
- }, 'theia/core/common/collapseBottomPanel', VIEW_CATEGORY_KEY);
255
- export const TOGGLE_LEFT_PANEL = Command.toLocalizedCommand({
256
- id: 'core.toggle.left.panel',
257
- category: VIEW_CATEGORY,
258
- label: 'Toggle Left Panel'
259
- }, 'theia/core/common/collapseLeftPanel', VIEW_CATEGORY_KEY);
260
- export const TOGGLE_RIGHT_PANEL = Command.toLocalizedCommand({
261
- id: 'core.toggle.right.panel',
262
- category: VIEW_CATEGORY,
263
- label: 'Toggle Right Panel'
264
- }, 'theia/core/common/collapseRightPanel', VIEW_CATEGORY_KEY);
265
- export const TOGGLE_STATUS_BAR = Command.toDefaultLocalizedCommand({
266
- id: 'workbench.action.toggleStatusbarVisibility',
267
- category: VIEW_CATEGORY,
268
- label: 'Toggle Status Bar Visibility'
269
- });
270
- export const PIN_TAB = Command.toDefaultLocalizedCommand({
271
- id: 'workbench.action.pinEditor',
272
- category: VIEW_CATEGORY,
273
- label: 'Pin Editor'
274
- });
275
- export const UNPIN_TAB = Command.toDefaultLocalizedCommand({
276
- id: 'workbench.action.unpinEditor',
277
- category: VIEW_CATEGORY,
278
- label: 'Unpin Editor'
279
- });
280
- export const TOGGLE_MAXIMIZED = Command.toLocalizedCommand({
281
- id: 'core.toggleMaximized',
282
- category: VIEW_CATEGORY,
283
- label: 'Toggle Maximized'
284
- }, 'theia/core/common/toggleMaximized', VIEW_CATEGORY_KEY);
285
- export const OPEN_VIEW = Command.toDefaultLocalizedCommand({
286
- id: 'core.openView',
287
- category: VIEW_CATEGORY,
288
- label: 'Open View...'
289
- });
290
- export const SHOW_MENU_BAR = Command.toDefaultLocalizedCommand({
291
- id: 'window.menuBarVisibility',
292
- category: VIEW_CATEGORY,
293
- label: 'Toggle Menu Bar'
294
- });
295
- /**
296
- * Command Parameters:
297
- * - `fileName`: string
298
- * - `directory`: URI
299
- */
300
- export const NEW_FILE = Command.toDefaultLocalizedCommand({
301
- id: 'workbench.action.files.newFile',
302
- category: FILE_CATEGORY
303
- });
304
- // This command immediately opens a new untitled text file
305
- // Some VS Code extensions use this command to create new files
306
- export const NEW_UNTITLED_TEXT_FILE = Command.toDefaultLocalizedCommand({
307
- id: 'workbench.action.files.newUntitledFile',
308
- category: FILE_CATEGORY,
309
- label: 'New Untitled Text File'
310
- });
311
- // This command opens a quick pick to select a file type to create
312
- export const PICK_NEW_FILE = Command.toDefaultLocalizedCommand({
313
- id: 'workbench.action.files.pickNewFile',
314
- category: CREATE_CATEGORY,
315
- label: 'New File...'
316
- });
317
- export const SAVE = Command.toDefaultLocalizedCommand({
318
- id: 'core.save',
319
- category: FILE_CATEGORY,
320
- label: 'Save',
321
- });
322
- export const SAVE_AS = Command.toDefaultLocalizedCommand({
323
- id: 'file.saveAs',
324
- category: FILE_CATEGORY,
325
- label: 'Save As...',
326
- });
327
- export const SAVE_WITHOUT_FORMATTING = Command.toDefaultLocalizedCommand({
328
- id: 'core.saveWithoutFormatting',
329
- category: FILE_CATEGORY,
330
- label: 'Save without Formatting',
331
- });
332
- export const SAVE_ALL = Command.toDefaultLocalizedCommand({
333
- id: 'core.saveAll',
334
- category: FILE_CATEGORY,
335
- label: 'Save All',
336
- });
337
-
338
- export const AUTO_SAVE = Command.toDefaultLocalizedCommand({
339
- id: 'textEditor.commands.autosave',
340
- category: FILE_CATEGORY,
341
- label: 'Auto Save',
342
- });
343
-
344
- export const ABOUT_COMMAND = Command.toDefaultLocalizedCommand({
345
- id: 'core.about',
346
- label: 'About'
347
- });
348
-
349
- export const OPEN_PREFERENCES = Command.toDefaultLocalizedCommand({
350
- id: 'preferences:open',
351
- category: PREFERENCES_CATEGORY,
352
- label: 'Open Settings (UI)',
353
- });
354
-
355
- export const SELECT_COLOR_THEME = Command.toDefaultLocalizedCommand({
356
- id: 'workbench.action.selectTheme',
357
- label: 'Color Theme',
358
- category: PREFERENCES_CATEGORY
359
- });
360
- export const SELECT_ICON_THEME = Command.toDefaultLocalizedCommand({
361
- id: 'workbench.action.selectIconTheme',
362
- label: 'File Icon Theme',
363
- category: PREFERENCES_CATEGORY
364
- });
365
-
366
- export const CONFIGURE_DISPLAY_LANGUAGE = Command.toDefaultLocalizedCommand({
367
- id: 'workbench.action.configureLanguage',
368
- label: 'Configure Display Language'
369
- });
370
-
371
- export const TOGGLE_BREADCRUMBS = Command.toDefaultLocalizedCommand({
372
- id: 'breadcrumbs.toggle',
373
- label: 'Toggle Breadcrumbs',
374
- category: VIEW_CATEGORY
375
- });
376
- }
377
-
378
76
  export const supportCut = environment.electron.is() || document.queryCommandSupported('cut');
379
77
  export const supportCopy = environment.electron.is() || document.queryCommandSupported('copy');
380
78
  // Chrome incorrectly returns true for document.queryCommandSupported('paste')
@@ -0,0 +1,60 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2017 TypeFox and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { MAIN_MENU_BAR, MANAGE_MENU } from '../common/menu';
18
+
19
+ export namespace CommonMenus {
20
+
21
+ export const FILE = [...MAIN_MENU_BAR, '1_file'];
22
+ export const FILE_NEW_TEXT = [...FILE, '1_new_text'];
23
+ export const FILE_NEW = [...FILE, '1_new'];
24
+ export const FILE_OPEN = [...FILE, '2_open'];
25
+ export const FILE_SAVE = [...FILE, '3_save'];
26
+ export const FILE_AUTOSAVE = [...FILE, '4_autosave'];
27
+ export const FILE_SETTINGS = [...FILE, '5_settings'];
28
+ export const FILE_SETTINGS_SUBMENU = [...FILE_SETTINGS, '1_settings_submenu'];
29
+ export const FILE_SETTINGS_SUBMENU_OPEN = [...FILE_SETTINGS_SUBMENU, '1_settings_submenu_open'];
30
+ export const FILE_SETTINGS_SUBMENU_THEME = [...FILE_SETTINGS_SUBMENU, '2_settings_submenu_theme'];
31
+ export const FILE_CLOSE = [...FILE, '6_close'];
32
+
33
+ export const FILE_NEW_CONTRIBUTIONS = ['file', 'newFile'];
34
+
35
+ export const EDIT = [...MAIN_MENU_BAR, '2_edit'];
36
+ export const EDIT_UNDO = [...EDIT, '1_undo'];
37
+ export const EDIT_CLIPBOARD = [...EDIT, '2_clipboard'];
38
+ export const EDIT_FIND = [...EDIT, '3_find'];
39
+
40
+ export const VIEW = [...MAIN_MENU_BAR, '4_view'];
41
+ export const VIEW_PRIMARY = [...VIEW, '0_primary'];
42
+ export const VIEW_APPEARANCE = [...VIEW, '1_appearance'];
43
+ export const VIEW_APPEARANCE_SUBMENU = [...VIEW_APPEARANCE, '1_appearance_submenu'];
44
+ export const VIEW_APPEARANCE_SUBMENU_SCREEN = [...VIEW_APPEARANCE_SUBMENU, '2_appearance_submenu_screen'];
45
+ export const VIEW_APPEARANCE_SUBMENU_BAR = [...VIEW_APPEARANCE_SUBMENU, '3_appearance_submenu_bar'];
46
+ export const VIEW_EDITOR_SUBMENU = [...VIEW_APPEARANCE, '2_editor_submenu'];
47
+ export const VIEW_EDITOR_SUBMENU_SPLIT = [...VIEW_EDITOR_SUBMENU, '1_editor_submenu_split'];
48
+ export const VIEW_EDITOR_SUBMENU_ORTHO = [...VIEW_EDITOR_SUBMENU, '2_editor_submenu_ortho'];
49
+ export const VIEW_VIEWS = [...VIEW, '2_views'];
50
+ export const VIEW_LAYOUT = [...VIEW, '3_layout'];
51
+ export const VIEW_TOGGLE = [...VIEW, '4_toggle'];
52
+
53
+ export const MANAGE_GENERAL = [...MANAGE_MENU, '1_manage_general'];
54
+ export const MANAGE_SETTINGS = [...MANAGE_MENU, '2_manage_settings'];
55
+ export const MANAGE_SETTINGS_THEMES = [...MANAGE_SETTINGS, '1_manage_settings_themes'];
56
+
57
+ // last menu item
58
+ export const HELP = [...MAIN_MENU_BAR, '9_help'];
59
+
60
+ }
@@ -28,6 +28,8 @@ export * from './tree';
28
28
  export * from './messaging';
29
29
  export * from './endpoint';
30
30
  export * from './common-frontend-contribution';
31
+ export * from './common-menus';
32
+ export * from './common-commands';
31
33
  export * from './quick-input';
32
34
  export * from './widget-manager';
33
35
  export * from './saveable';
@@ -16,7 +16,7 @@
16
16
  import { injectable, inject, optional } from 'inversify';
17
17
  import { CommandRegistry, CommandContribution, MenuContribution, MenuModelRegistry, nls } from '../../common';
18
18
  import { KeybindingRegistry, KeybindingContribution } from '../keybinding';
19
- import { CommonMenus } from '../common-frontend-contribution';
19
+ import { CommonMenus } from '../common-menus';
20
20
  import { CLOSE_QUICK_OPEN, CLEAR_COMMAND_HISTORY, quickCommand, QuickCommandService } from './quick-command-service';
21
21
  import { QuickInputService } from './quick-input-service';
22
22
  import { ConfirmDialog, Dialog } from '../dialogs';
@@ -24,7 +24,7 @@ import { CommandContribution, CommandRegistry, Command } from '../../common/comm
24
24
  import { ThemeService } from '../theming';
25
25
  import { ContributionProvider } from '../../common/contribution-provider';
26
26
  import { ApplicationShell, applicationShellLayoutVersion, ApplicationShellLayoutVersion } from './application-shell';
27
- import { CommonCommands } from '../common-frontend-contribution';
27
+ import { CommonCommands } from '../common-commands';
28
28
  import { WindowService } from '../window/window-service';
29
29
  import { StopReason } from '../../common/frontend-application-state';
30
30
  import { isFunction, isObject, MaybePromise } from '../../common';
@@ -22,7 +22,7 @@ import {
22
22
  } from '../../common';
23
23
  import { KeybindingContribution, KeybindingRegistry } from '../keybinding';
24
24
  import { WidgetManager } from '../widget-manager';
25
- import { CommonMenus } from '../common-frontend-contribution';
25
+ import { CommonMenus } from '../common-menus';
26
26
  import { ApplicationShell } from './application-shell';
27
27
  import { QuickViewService } from '../quick-input';
28
28
 
@@ -19,7 +19,7 @@ import { Command, CommandContribution, CommandRegistry, environment } from '../c
19
19
  import { WindowService } from './window/window-service';
20
20
  import { KeybindingContribution, KeybindingRegistry } from './keybinding';
21
21
  import { MenuContribution, MenuModelRegistry } from '../common/menu';
22
- import { CommonMenus } from '../browser/common-frontend-contribution';
22
+ import { CommonMenus } from './common-menus';
23
23
 
24
24
  export namespace WindowCommands {
25
25
 
@@ -361,8 +361,13 @@ export class PreferenceServiceImpl implements PreferenceService {
361
361
  const provider = this.getProvider(scope);
362
362
  if (provider) {
363
363
  const scopeValue: JSONValue | undefined = provider.get(preferenceName);
364
- // Skip if a more specific scope has this preference defined
365
364
  if (scope > change.scope && scopeValue !== undefined) {
365
+ const preference = this.schemaService.getSchemaProperty(change.preferenceName);
366
+ if (!preference?.type || preference.type === 'object' || preference.type === 'array'
367
+ || Array.isArray(preference.type) && preference.type.some(candidate => candidate === 'object' || candidate === 'array')) {
368
+ // Merge object/array preferences
369
+ acceptChange(change);
370
+ }
366
371
  break;
367
372
  }
368
373
  // Handle changes in the same scope