@@ -34,7 +34,7 @@ import { ConfigureLanguageBasedSettingsAction } from 'vs/workbench/contrib/prefe
3434import { SettingsEditorContribution } from 'vs/workbench/contrib/preferences/browser/preferencesEditor' ;
3535import { preferencesOpenSettingsIcon } from 'vs/workbench/contrib/preferences/browser/preferencesIcons' ;
3636import { SettingsEditor2 , SettingsFocusContext } from 'vs/workbench/contrib/preferences/browser/settingsEditor2' ;
37- import { CONTEXT_KEYBINDINGS_EDITOR , CONTEXT_KEYBINDINGS_SEARCH_FOCUS , CONTEXT_KEYBINDING_FOCUS , CONTEXT_SETTINGS_EDITOR , CONTEXT_SETTINGS_EDITOR_IN_USER_TAB , CONTEXT_SETTINGS_JSON_EDITOR , CONTEXT_SETTINGS_ROW_FOCUS , CONTEXT_SETTINGS_SEARCH_FOCUS , CONTEXT_TOC_ROW_FOCUS , CONTEXT_WHEN_FOCUS , KEYBINDINGS_EDITOR_COMMAND_ACCEPT_WHEN , KEYBINDINGS_EDITOR_COMMAND_ADD , KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_HISTORY , KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS , KEYBINDINGS_EDITOR_COMMAND_COPY , KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND , KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND_TITLE , KEYBINDINGS_EDITOR_COMMAND_DEFINE , KEYBINDINGS_EDITOR_COMMAND_DEFINE_WHEN , KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS , KEYBINDINGS_EDITOR_COMMAND_RECORD_SEARCH_KEYS , KEYBINDINGS_EDITOR_COMMAND_REJECT_WHEN , KEYBINDINGS_EDITOR_COMMAND_REMOVE , KEYBINDINGS_EDITOR_COMMAND_RESET , KEYBINDINGS_EDITOR_COMMAND_SEARCH , KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR , KEYBINDINGS_EDITOR_COMMAND_SORTBY_PRECEDENCE , KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS , KEYBINDINGS_EDITOR_SHOW_EXTENSION_KEYBINDINGS , KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS , REQUIRE_TRUSTED_WORKSPACE_SETTING_TAG , SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS , SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU } from 'vs/workbench/contrib/preferences/common/preferences' ;
37+ import { CONTEXT_KEYBINDINGS_EDITOR , CONTEXT_KEYBINDINGS_SEARCH_FOCUS , CONTEXT_KEYBINDING_FOCUS , CONTEXT_SETTINGS_EDITOR , CONTEXT_SETTINGS_JSON_EDITOR , CONTEXT_SETTINGS_ROW_FOCUS , CONTEXT_SETTINGS_SEARCH_FOCUS , CONTEXT_TOC_ROW_FOCUS , CONTEXT_WHEN_FOCUS , KEYBINDINGS_EDITOR_COMMAND_ACCEPT_WHEN , KEYBINDINGS_EDITOR_COMMAND_ADD , KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_HISTORY , KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS , KEYBINDINGS_EDITOR_COMMAND_COPY , KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND , KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND_TITLE , KEYBINDINGS_EDITOR_COMMAND_DEFINE , KEYBINDINGS_EDITOR_COMMAND_DEFINE_WHEN , KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS , KEYBINDINGS_EDITOR_COMMAND_RECORD_SEARCH_KEYS , KEYBINDINGS_EDITOR_COMMAND_REJECT_WHEN , KEYBINDINGS_EDITOR_COMMAND_REMOVE , KEYBINDINGS_EDITOR_COMMAND_RESET , KEYBINDINGS_EDITOR_COMMAND_SEARCH , KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR , KEYBINDINGS_EDITOR_COMMAND_SORTBY_PRECEDENCE , KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS , KEYBINDINGS_EDITOR_SHOW_EXTENSION_KEYBINDINGS , KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS , REQUIRE_TRUSTED_WORKSPACE_SETTING_TAG , SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS , SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU } from 'vs/workbench/contrib/preferences/common/preferences' ;
3838import { PreferencesContribution } from 'vs/workbench/contrib/preferences/common/preferencesContribution' ;
3939import { IEditorService } from 'vs/workbench/services/editor/common/editorService' ;
4040import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService' ;
@@ -57,8 +57,6 @@ const SETTINGS_EDITOR_COMMAND_FOCUS_CONTROL = 'settings.action.focusSettingContr
5757const SETTINGS_EDITOR_COMMAND_FOCUS_UP = 'settings.action.focusLevelUp' ;
5858
5959const SETTINGS_EDITOR_COMMAND_SWITCH_TO_JSON = 'settings.switchToJSON' ;
60- const SETTINGS_EDITOR_COMMAND_SWITCH_TO_APPLICATION_JSON = 'settings.switchToApplicationJSON' ;
61- const SETTINGS_EDITOR_COMMAND_SWITCH_TO_CURRENT_PROFILE_JSON = 'settings.switchToCurrentProfileJSON' ;
6260const SETTINGS_EDITOR_COMMAND_FILTER_ONLINE = 'settings.filterByOnline' ;
6361const SETTINGS_EDITOR_COMMAND_FILTER_UNTRUSTED = 'settings.filterUntrusted' ;
6462
@@ -122,7 +120,7 @@ Registry.as<IEditorFactoryRegistry>(EditorExtensions.EditorFactory).registerEdit
122120
123121const OPEN_USER_SETTINGS_UI_TITLE = { value : nls . localize ( 'openSettings2' , "Open Settings (UI)" ) , original : 'Open Settings (UI)' } ;
124122const OPEN_USER_SETTINGS_JSON_TITLE = { value : nls . localize ( 'openUserSettingsJson' , "Open User Settings (JSON)" ) , original : 'Open User Settings (JSON)' } ;
125- const OPEN_CURRENT_PROFILE_SETTINGS_JSON_TITLE = { value : nls . localize ( 'openCurrentProfileSettingsJson ' , "Open Current Profile Settings (JSON)" ) , original : 'Open Current Profile Settings (JSON)' } ;
123+ const OPEN_APPLICATION_SETTINGS_JSON_TITLE = { value : nls . localize ( 'openApplicationSettingsJson ' , "Open Application Settings (JSON)" ) , original : 'Open Application Settings (JSON)' } ;
126124const category = { value : nls . localize ( 'preferences' , "Preferences" ) , original : 'Preferences' } ;
127125
128126interface IOpenSettingsActionOptions {
@@ -209,30 +207,27 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
209207 }
210208 } ) ;
211209
212- const that = this ;
213- const registerOpenSettingsJsonCommandDisposable = this . _register ( new MutableDisposable ( ) ) ;
214- const registerOpenSettingsJsonCommand = ( ) => {
215- registerOpenSettingsJsonCommandDisposable . value = registerAction2 ( class extends Action2 {
216- constructor ( ) {
217- super ( {
218- id : 'workbench.action.openSettingsJson' ,
219- title : that . userDataProfileService . currentProfile . isDefault ? OPEN_USER_SETTINGS_JSON_TITLE : OPEN_CURRENT_PROFILE_SETTINGS_JSON_TITLE ,
220- category,
221- f1 : true ,
222- } ) ;
223- }
224- run ( accessor : ServicesAccessor , args : IOpenSettingsActionOptions ) {
225- args = sanitizeOpenSettingsArgs ( args ) ;
226- return accessor . get ( IPreferencesService ) . openSettings ( { jsonEditor : true , ...args } ) ;
227- }
228- } ) ;
229- } ;
210+ registerAction2 ( class extends Action2 {
211+ constructor ( ) {
212+ super ( {
213+ id : 'workbench.action.openSettingsJson' ,
214+ title : OPEN_USER_SETTINGS_JSON_TITLE ,
215+ category,
216+ f1 : true ,
217+ } ) ;
218+ }
219+ run ( accessor : ServicesAccessor , args : IOpenSettingsActionOptions ) {
220+ args = sanitizeOpenSettingsArgs ( args ) ;
221+ return accessor . get ( IPreferencesService ) . openSettings ( { jsonEditor : true , ...args } ) ;
222+ }
223+ } ) ;
230224
225+ const that = this ;
231226 registerAction2 ( class extends Action2 {
232227 constructor ( ) {
233228 super ( {
234229 id : 'workbench.action.openApplicationSettingsJson' ,
235- title : OPEN_USER_SETTINGS_JSON_TITLE ,
230+ title : OPEN_APPLICATION_SETTINGS_JSON_TITLE ,
236231 category,
237232 menu : {
238233 id : MenuId . CommandPalette ,
@@ -276,13 +271,11 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
276271 } ) ;
277272
278273 const registerOpenUserSettingsEditorFromJsonActionDisposable = this . _register ( new MutableDisposable ( ) ) ;
274+ const openUserSettingsEditorWhen = ContextKeyExpr . and (
275+ ContextKeyExpr . or ( ResourceContextKey . Resource . isEqualTo ( this . userDataProfileService . currentProfile . settingsResource . toString ( ) ) ,
276+ ResourceContextKey . Resource . isEqualTo ( this . userDataProfilesService . defaultProfile . settingsResource . toString ( ) ) ) ,
277+ ContextKeyExpr . not ( 'isInDiffEditor' ) ) ;
279278 const registerOpenUserSettingsEditorFromJsonAction = ( ) => {
280- let when = ContextKeyExpr . and ( ResourceContextKey . Resource . isEqualTo ( this . userDataProfileService . currentProfile . settingsResource . toString ( ) ) , ContextKeyExpr . not ( 'isInDiffEditor' ) ) ;
281- if ( ! this . userDataProfileService . currentProfile . isDefault ) {
282- // If the default profile is not active, also show the action when we're in the
283- // default profile JSON file, which contains the application-scoped settings.
284- when = ContextKeyExpr . or ( when , ContextKeyExpr . and ( ResourceContextKey . Resource . isEqualTo ( this . userDataProfilesService . defaultProfile . settingsResource . toString ( ) ) , ContextKeyExpr . not ( 'isInDiffEditor' ) ) ) ;
285- }
286279 registerOpenUserSettingsEditorFromJsonActionDisposable . value = registerAction2 ( class extends Action2 {
287280 constructor ( ) {
288281 super ( {
@@ -291,7 +284,7 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
291284 icon : preferencesOpenSettingsIcon ,
292285 menu : [ {
293286 id : MenuId . EditorTitle ,
294- when,
287+ when : openUserSettingsEditorWhen ,
295288 group : 'navigation' ,
296289 order : 1
297290 } ]
@@ -304,93 +297,35 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
304297 } ) ;
305298 } ;
306299
307- const openJsonFromSettingsEditorDisposableStore = this . _register ( new DisposableStore ( ) ) ;
308- const registerOpenJsonFromSettingsEditorAction = ( ) => {
309- openJsonFromSettingsEditorDisposableStore . clear ( ) ;
310- if ( ! this . userDataProfileService . currentProfile . isDefault ) {
311- // When the default profile is not active, the action for the User tab needs a dropdown
312- // because User tab settings in that case are actually saved in two separate files.
313- const submenuId = MenuId . for ( 'PreferencesSubMenu' ) ;
314- openJsonFromSettingsEditorDisposableStore . add ( registerAction2 ( class extends Action2 {
315- constructor ( ) {
316- super ( {
317- id : SETTINGS_EDITOR_COMMAND_SWITCH_TO_CURRENT_PROFILE_JSON ,
318- title : OPEN_CURRENT_PROFILE_SETTINGS_JSON_TITLE ,
319- menu : [ { id : submenuId , order : 1 } ]
320- } ) ;
321- }
322- run ( accessor : ServicesAccessor ) {
323- const editorPane = accessor . get ( IEditorService ) . activeEditorPane ;
324- if ( editorPane instanceof SettingsEditor2 ) {
325- return editorPane . switchToSettingsFile ( ) ;
326- }
327- return null ;
328- }
329- } ) ) ;
330- openJsonFromSettingsEditorDisposableStore . add ( registerAction2 ( class extends Action2 {
331- constructor ( ) {
332- super ( {
333- id : SETTINGS_EDITOR_COMMAND_SWITCH_TO_APPLICATION_JSON ,
334- title : OPEN_USER_SETTINGS_JSON_TITLE ,
335- menu : [ { id : submenuId , order : 2 } ]
336- } ) ;
337- }
338- run ( accessor : ServicesAccessor ) {
339- const editorPane = accessor . get ( IEditorService ) . activeEditorPane ;
340- if ( editorPane instanceof SettingsEditor2 ) {
341- return editorPane . switchToApplicationSettingsFile ( ) ;
342- }
343- return null ;
344- }
345- } ) ) ;
346- openJsonFromSettingsEditorDisposableStore . add ( MenuRegistry . appendMenuItem ( MenuId . EditorTitle , {
300+ const openSettingsJsonWhen = ContextKeyExpr . and ( CONTEXT_SETTINGS_EDITOR , CONTEXT_SETTINGS_JSON_EDITOR . toNegated ( ) ) ;
301+ registerAction2 ( class extends Action2 {
302+ constructor ( ) {
303+ super ( {
304+ id : SETTINGS_EDITOR_COMMAND_SWITCH_TO_JSON ,
347305 title : { value : nls . localize ( 'openSettingsJson' , "Open Settings (JSON)" ) , original : 'Open Settings (JSON)' } ,
348- submenu : submenuId ,
349306 icon : preferencesOpenSettingsIcon ,
350- when : ContextKeyExpr . and ( CONTEXT_SETTINGS_EDITOR , CONTEXT_SETTINGS_EDITOR_IN_USER_TAB , CONTEXT_SETTINGS_JSON_EDITOR . toNegated ( ) ) ,
351- group : 'navigation' ,
352- order : 1
353- } ) ) ;
354- }
355-
356- let openSettingsJsonWhen = ContextKeyExpr . and ( CONTEXT_SETTINGS_EDITOR , CONTEXT_SETTINGS_JSON_EDITOR . toNegated ( ) ) ;
357- if ( ! this . userDataProfileService . currentProfile . isDefault ) {
358- // If we're not in the default profile, we already created the action for the User tab above,
359- // so we want to make sure the user is not in the User tab for this more general action.
360- openSettingsJsonWhen = ContextKeyExpr . and ( openSettingsJsonWhen , CONTEXT_SETTINGS_EDITOR_IN_USER_TAB . toNegated ( ) ) ;
307+ menu : [ {
308+ id : MenuId . EditorTitle ,
309+ when : openSettingsJsonWhen ,
310+ group : 'navigation' ,
311+ order : 1
312+ } ]
313+ } ) ;
361314 }
362- openJsonFromSettingsEditorDisposableStore . add ( registerAction2 ( class extends Action2 {
363- constructor ( ) {
364- super ( {
365- id : SETTINGS_EDITOR_COMMAND_SWITCH_TO_JSON ,
366- title : { value : nls . localize ( 'openSettingsJson' , "Open Settings (JSON)" ) , original : 'Open Settings (JSON)' } ,
367- icon : preferencesOpenSettingsIcon ,
368- menu : [ {
369- id : MenuId . EditorTitle ,
370- when : openSettingsJsonWhen ,
371- group : 'navigation' ,
372- order : 1
373- } ]
374- } ) ;
375- }
376- run ( accessor : ServicesAccessor ) {
377- const editorPane = accessor . get ( IEditorService ) . activeEditorPane ;
378- if ( editorPane instanceof SettingsEditor2 ) {
379- return editorPane . switchToSettingsFile ( ) ;
380- }
381- return null ;
315+ run ( accessor : ServicesAccessor ) {
316+ const editorPane = accessor . get ( IEditorService ) . activeEditorPane ;
317+ if ( editorPane instanceof SettingsEditor2 ) {
318+ return editorPane . switchToSettingsFile ( ) ;
382319 }
383- } ) ) ;
384- } ;
320+ return null ;
321+ }
322+ } ) ;
385323
386324 registerOpenUserSettingsEditorFromJsonAction ( ) ;
387- registerOpenJsonFromSettingsEditorAction ( ) ;
388- registerOpenSettingsJsonCommand ( ) ;
389325
390326 this . _register ( this . userDataProfileService . onDidChangeCurrentProfile ( ( ) => {
327+ // Force the action to check the context again.
391328 registerOpenUserSettingsEditorFromJsonAction ( ) ;
392- registerOpenJsonFromSettingsEditorAction ( ) ;
393- registerOpenSettingsJsonCommand ( ) ;
394329 } ) ) ;
395330
396331 registerAction2 ( class extends Action2 {
0 commit comments