monaco-editor-core 0.54.0-dev-20250922 → 0.54.0-dev-20250924

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 (174) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.de.js +2 -2
  3. package/esm/nls.messages.es.js +2 -2
  4. package/esm/nls.messages.fr.js +2 -2
  5. package/esm/nls.messages.it.js +2 -2
  6. package/esm/nls.messages.ja.js +2 -2
  7. package/esm/nls.messages.js +1 -1
  8. package/esm/nls.messages.json +1 -1
  9. package/esm/nls.messages.ko.js +2 -2
  10. package/esm/nls.messages.ru.js +2 -2
  11. package/esm/nls.messages.zh-cn.js +2 -2
  12. package/esm/nls.messages.zh-tw.js +2 -2
  13. package/esm/nls.metadata.json +2 -0
  14. package/esm/vs/base/browser/ui/toolbar/toolbar.js +7 -0
  15. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  16. package/esm/vs/base/common/htmlContent.js +8 -0
  17. package/esm/vs/base/common/htmlContent.js.map +1 -1
  18. package/esm/vs/editor/common/config/editorOptions.js +274 -267
  19. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  20. package/esm/vs/editor/common/core/editorColorRegistry.js +68 -68
  21. package/esm/vs/editor/common/editorContextKeys.js +46 -46
  22. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  23. package/esm/vs/editor/common/languages.js +56 -56
  24. package/esm/vs/editor/common/model/editStack.js +1 -1
  25. package/esm/vs/editor/common/standaloneStrings.js +10 -10
  26. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  27. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  28. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  29. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  30. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  31. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  32. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  33. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  34. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  35. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  36. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  37. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  38. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  39. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  40. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  41. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  42. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  43. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  44. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  45. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  46. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  47. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  48. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  49. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  50. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  51. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  52. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  53. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +10 -0
  54. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js +28 -5
  55. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js.map +1 -1
  56. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  57. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  58. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
  59. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  60. package/esm/vs/editor/contrib/format/browser/format.js +3 -0
  61. package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
  62. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  63. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  64. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  65. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  66. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  67. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  68. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  69. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  70. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  71. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  72. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  73. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  74. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  75. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  76. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  77. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  78. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  79. package/esm/vs/editor/contrib/inlayHints/browser/inlayHints.js +2 -7
  80. package/esm/vs/editor/contrib/inlayHints/browser/inlayHints.js.map +1 -1
  81. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  82. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +19 -19
  83. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  84. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  85. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +1 -1
  86. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  87. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +6 -0
  88. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  89. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +5 -5
  90. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  91. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  92. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  93. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  94. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  95. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  96. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  97. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  98. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  99. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  100. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  101. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  102. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  103. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +5 -5
  104. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  105. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  106. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  107. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  108. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  109. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +12 -4
  110. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js.map +1 -1
  111. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  112. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  113. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  114. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  115. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  116. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  117. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  118. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  119. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  120. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  121. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  122. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  123. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +26 -26
  124. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  125. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  126. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  127. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  128. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  129. package/esm/vs/editor/editor.api.d.ts +1 -0
  130. package/esm/vs/editor/standalone/browser/standaloneThemeService.js +10 -0
  131. package/esm/vs/editor/standalone/browser/standaloneThemeService.js.map +1 -1
  132. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  133. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  134. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  135. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  136. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  137. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  138. package/esm/vs/platform/actions/common/menuService.js +2 -2
  139. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  140. package/esm/vs/platform/contextkey/browser/contextKeyService.js +37 -3
  141. package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
  142. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  143. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  144. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  145. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  146. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  147. package/esm/vs/platform/list/browser/listService.js +27 -27
  148. package/esm/vs/platform/markers/common/markerService.js +2 -2
  149. package/esm/vs/platform/markers/common/markers.js +6 -6
  150. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  151. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  152. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  153. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  154. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  155. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  156. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  157. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  158. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  159. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  160. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  161. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  162. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  163. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  164. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  165. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  166. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  167. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  168. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  169. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  170. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  171. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  172. package/monaco.d.ts +1 -0
  173. package/package.json +2 -2
  174. package/version.txt +1 -1
@@ -23,9 +23,9 @@ import { IContextViewService } from '../../contextview/browser/contextView.js';
23
23
  import { registerSingleton } from '../../instantiation/common/extensions.js';
24
24
  import { createDecorator, IInstantiationService } from '../../instantiation/common/instantiation.js';
25
25
  import { inputActiveOptionBackground, registerColor } from '../../theme/common/colorRegistry.js';
26
- registerColor('actionBar.toggledBackground', inputActiveOptionBackground, localize(1640, 'Background color for toggled action items in action bar.'));
26
+ registerColor('actionBar.toggledBackground', inputActiveOptionBackground, localize(1641, 'Background color for toggled action items in action bar.'));
27
27
  const ActionWidgetContextKeys = {
28
- Visible: new RawContextKey('codeActionMenuVisible', false, localize(1641, "Whether the action widget list is visible"))
28
+ Visible: new RawContextKey('codeActionMenuVisible', false, localize(1642, "Whether the action widget list is visible"))
29
29
  };
30
30
  export const IActionWidgetService = createDecorator('actionWidgetService');
31
31
  let ActionWidgetService = class ActionWidgetService extends Disposable {
@@ -131,7 +131,7 @@ registerAction2(class extends Action2 {
131
131
  constructor() {
132
132
  super({
133
133
  id: 'hideCodeActionWidget',
134
- title: localize2(1642, "Hide action widget"),
134
+ title: localize2(1643, "Hide action widget"),
135
135
  precondition: ActionWidgetContextKeys.Visible,
136
136
  keybinding: {
137
137
  weight,
@@ -148,7 +148,7 @@ registerAction2(class extends Action2 {
148
148
  constructor() {
149
149
  super({
150
150
  id: 'selectPrevCodeAction',
151
- title: localize2(1643, "Select previous action"),
151
+ title: localize2(1644, "Select previous action"),
152
152
  precondition: ActionWidgetContextKeys.Visible,
153
153
  keybinding: {
154
154
  weight,
@@ -169,7 +169,7 @@ registerAction2(class extends Action2 {
169
169
  constructor() {
170
170
  super({
171
171
  id: 'selectNextCodeAction',
172
- title: localize2(1644, "Select next action"),
172
+ title: localize2(1645, "Select next action"),
173
173
  precondition: ActionWidgetContextKeys.Visible,
174
174
  keybinding: {
175
175
  weight,
@@ -190,7 +190,7 @@ registerAction2(class extends Action2 {
190
190
  constructor() {
191
191
  super({
192
192
  id: acceptSelectedActionCommand,
193
- title: localize2(1645, "Accept selected action"),
193
+ title: localize2(1646, "Accept selected action"),
194
194
  precondition: ActionWidgetContextKeys.Visible,
195
195
  keybinding: {
196
196
  weight,
@@ -210,7 +210,7 @@ registerAction2(class extends Action2 {
210
210
  constructor() {
211
211
  super({
212
212
  id: previewSelectedActionCommand,
213
- title: localize2(1646, "Preview selected action"),
213
+ title: localize2(1647, "Preview selected action"),
214
214
  precondition: ActionWidgetContextKeys.Visible,
215
215
  keybinding: {
216
216
  weight,
@@ -184,16 +184,16 @@ let MenuEntryActionViewItem = class MenuEntryActionViewItem extends ActionViewIt
184
184
  const keybindingLabel = keybinding && keybinding.getLabel();
185
185
  const tooltip = this._commandAction.tooltip || this._commandAction.label;
186
186
  let title = keybindingLabel
187
- ? localize(1627, "{0} ({1})", tooltip, keybindingLabel)
187
+ ? localize(1628, "{0} ({1})", tooltip, keybindingLabel)
188
188
  : tooltip;
189
189
  if (!this._wantsAltCommand && this._menuItemAction.alt?.enabled) {
190
190
  const altTooltip = this._menuItemAction.alt.tooltip || this._menuItemAction.alt.label;
191
191
  const altKeybinding = this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id, this._contextKeyService);
192
192
  const altKeybindingLabel = altKeybinding && altKeybinding.getLabel();
193
193
  const altTitleSection = altKeybindingLabel
194
- ? localize(1628, "{0} ({1})", altTooltip, altKeybindingLabel)
194
+ ? localize(1629, "{0} ({1})", altTooltip, altKeybindingLabel)
195
195
  : altTooltip;
196
- title = localize(1629, "{0}\n[{1}] {2}", title, UILabelProvider.modifierLabels[OS].altKey, altTitleSection);
196
+ title = localize(1630, "{0}\n[{1}] {2}", title, UILabelProvider.modifierLabels[OS].altKey, altTitleSection);
197
197
  }
198
198
  return title;
199
199
  }
@@ -268,10 +268,10 @@ export class TextOnlyMenuEntryActionViewItem extends MenuEntryActionViewItem {
268
268
  if (this.label) {
269
269
  const kb2 = TextOnlyMenuEntryActionViewItem._symbolPrintEnter(kb);
270
270
  if (this._options?.conversational) {
271
- this.label.textContent = localize(1630, '{1} to {0}', this._action.label, kb2);
271
+ this.label.textContent = localize(1631, '{1} to {0}', this._action.label, kb2);
272
272
  }
273
273
  else {
274
- this.label.textContent = localize(1631, '{0} ({1})', this._action.label, kb2);
274
+ this.label.textContent = localize(1632, '{0} ({1})', this._action.label, kb2);
275
275
  }
276
276
  }
277
277
  }
@@ -173,7 +173,7 @@ let WorkbenchToolBar = class WorkbenchToolBar extends ToolBar {
173
173
  else {
174
174
  primaryActions.push(toAction({
175
175
  id: 'label',
176
- label: localize(1632, "Hide"),
176
+ label: localize(1633, "Hide"),
177
177
  enabled: false,
178
178
  run() { }
179
179
  }));
@@ -188,7 +188,7 @@ let WorkbenchToolBar = class WorkbenchToolBar extends ToolBar {
188
188
  actions.push(new Separator());
189
189
  actions.push(toAction({
190
190
  id: 'resetThisMenu',
191
- label: localize(1633, "Reset Menu"),
191
+ label: localize(1634, "Reset Menu"),
192
192
  run: () => this._menuService.resetHiddenStates(menuIds)
193
193
  }));
194
194
  }
@@ -403,7 +403,7 @@ function createMenuHide(menu, command, states) {
403
403
  const title = typeof command.title === 'string' ? command.title : command.title.value;
404
404
  const hide = toAction({
405
405
  id: `hide/${menu.id}/${id}`,
406
- label: localize(1634, 'Hide \'{0}\'', title),
406
+ label: localize(1635, 'Hide \'{0}\'', title),
407
407
  run() { states.updateHidden(menu, id, true); }
408
408
  });
409
409
  const toggle = toAction({
@@ -421,7 +421,7 @@ function createMenuHide(menu, command, states) {
421
421
  export function createConfigureKeybindingAction(commandService, keybindingService, commandId, when = undefined, enabled = true) {
422
422
  return toAction({
423
423
  id: `configureKeybinding/${commandId}`,
424
- label: localize(1635, "Configure Keybinding"),
424
+ label: localize(1636, "Configure Keybinding"),
425
425
  enabled,
426
426
  run() {
427
427
  // Only set the when clause when there is no keybinding
@@ -32,7 +32,7 @@ class ConfigurationRegistry extends Disposable {
32
32
  this.configurationDefaultsOverrides = new Map();
33
33
  this.defaultLanguageConfigurationOverridesNode = {
34
34
  id: 'defaultOverrides',
35
- title: nls.localize(1647, "Default Language Configuration Overrides"),
35
+ title: nls.localize(1648, "Default Language Configuration Overrides"),
36
36
  properties: {}
37
37
  };
38
38
  this.configurationContributors = [this.defaultLanguageConfigurationOverridesNode];
@@ -107,7 +107,7 @@ class ConfigurationRegistry extends Disposable {
107
107
  const property = {
108
108
  type: 'object',
109
109
  default: newDefaultOverride.value,
110
- description: nls.localize(1648, "Configure settings to be overridden for {0}.", getLanguageTagSettingPlainKey(key)),
110
+ description: nls.localize(1649, "Configure settings to be overridden for {0}.", getLanguageTagSettingPlainKey(key)),
111
111
  $ref: resourceLanguageSettingsSchemaId,
112
112
  defaultDefaultValue: newDefaultOverride.value,
113
113
  source,
@@ -308,8 +308,8 @@ class ConfigurationRegistry extends Disposable {
308
308
  const overrideIdentifierProperty = `[${overrideIdentifier}]`;
309
309
  const resourceLanguagePropertiesSchema = {
310
310
  type: 'object',
311
- description: nls.localize(1649, "Configure editor settings to be overridden for a language."),
312
- errorMessage: nls.localize(1650, "This setting does not support per-language configuration."),
311
+ description: nls.localize(1650, "Configure editor settings to be overridden for a language."),
312
+ errorMessage: nls.localize(1651, "This setting does not support per-language configuration."),
313
313
  $ref: resourceLanguageSettingsSchemaId,
314
314
  };
315
315
  this.updatePropertyDefaultValue(overrideIdentifierProperty, resourceLanguagePropertiesSchema);
@@ -325,8 +325,8 @@ class ConfigurationRegistry extends Disposable {
325
325
  registerOverridePropertyPatternKey() {
326
326
  const resourceLanguagePropertiesSchema = {
327
327
  type: 'object',
328
- description: nls.localize(1651, "Configure editor settings to be overridden for a language."),
329
- errorMessage: nls.localize(1652, "This setting does not support per-language configuration."),
328
+ description: nls.localize(1652, "Configure editor settings to be overridden for a language."),
329
+ errorMessage: nls.localize(1653, "This setting does not support per-language configuration."),
330
330
  $ref: resourceLanguageSettingsSchemaId,
331
331
  };
332
332
  allSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;
@@ -399,16 +399,16 @@ const configurationRegistry = new ConfigurationRegistry();
399
399
  Registry.add(Extensions.Configuration, configurationRegistry);
400
400
  export function validateProperty(property, schema) {
401
401
  if (!property.trim()) {
402
- return nls.localize(1653, "Cannot register an empty property");
402
+ return nls.localize(1654, "Cannot register an empty property");
403
403
  }
404
404
  if (OVERRIDE_PROPERTY_REGEX.test(property)) {
405
- return nls.localize(1654, "Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.", property);
405
+ return nls.localize(1655, "Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.", property);
406
406
  }
407
407
  if (configurationRegistry.getConfigurationProperties()[property] !== undefined) {
408
- return nls.localize(1655, "Cannot register '{0}'. This property is already registered.", property);
408
+ return nls.localize(1656, "Cannot register '{0}'. This property is already registered.", property);
409
409
  }
410
410
  if (schema.policy?.name && configurationRegistry.getPolicyConfigurations().get(schema.policy?.name) !== undefined) {
411
- return nls.localize(1656, "Cannot register '{0}'. The associated policy {1} is already registered with {2}.", property, schema.policy?.name, configurationRegistry.getPolicyConfigurations().get(schema.policy?.name));
411
+ return nls.localize(1657, "Cannot register '{0}'. The associated policy {1} is already registered with {2}.", property, schema.policy?.name, configurationRegistry.getPolicyConfigurations().get(schema.policy?.name));
412
412
  }
413
413
  return null;
414
414
  }
@@ -11,9 +11,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
- import { PauseableEmitter } from '../../../base/common/event.js';
14
+ import { Event, PauseableEmitter } from '../../../base/common/event.js';
15
15
  import { Iterable } from '../../../base/common/iterator.js';
16
- import { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';
16
+ import { Disposable, DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';
17
17
  import { cloneAndChange } from '../../../base/common/objects.js';
18
18
  import { TernarySearchTree } from '../../../base/common/ternarySearchTree.js';
19
19
  import { URI } from '../../../base/common/uri.js';
@@ -21,6 +21,9 @@ import { localize } from '../../../nls.js';
21
21
  import { CommandsRegistry } from '../../commands/common/commands.js';
22
22
  import { IConfigurationService } from '../../configuration/common/configuration.js';
23
23
  import { IContextKeyService, RawContextKey } from '../common/contextkey.js';
24
+ import { InputFocusedContext } from '../common/contextkeys.js';
25
+ import { mainWindow } from '../../../base/browser/window.js';
26
+ import { addDisposableListener, EventType, getActiveWindow, isEditableElement, onDidRegisterWindow, trackFocus } from '../../../base/browser/dom.js';
24
27
  const KEYBINDING_CONTEXT_ATTR = 'data-keybinding-context';
25
28
  export class Context {
26
29
  constructor(id, parent) {
@@ -289,6 +292,7 @@ let ContextKeyService = class ContextKeyService extends AbstractContextKeyServic
289
292
  super(0);
290
293
  this._contexts = new Map();
291
294
  this._lastContextId = 0;
295
+ this.inputFocusedContext = InputFocusedContext.bindTo(this);
292
296
  const myContext = this._register(new ConfigAwareContextValuesContainer(this._myContextId, configurationService, this._onDidChangeContext));
293
297
  this._contexts.set(this._myContextId, myContext);
294
298
  // Uncomment this to see the contexts continuously logged
@@ -301,6 +305,36 @@ let ContextKeyService = class ContextKeyService extends AbstractContextKeyServic
301
305
  // console.log(lastLoggedValue);
302
306
  // }
303
307
  // }, 2000);
308
+ this._register(Event.runAndSubscribe(onDidRegisterWindow, ({ window, disposables }) => {
309
+ const onFocusDisposables = disposables.add(new MutableDisposable());
310
+ disposables.add(addDisposableListener(window, EventType.FOCUS_IN, () => {
311
+ onFocusDisposables.value = new DisposableStore();
312
+ this.updateInputContextKeys(window.document, onFocusDisposables.value);
313
+ }, true));
314
+ }, { window: mainWindow, disposables: this._store }));
315
+ }
316
+ updateInputContextKeys(ownerDocument, disposables) {
317
+ function activeElementIsInput() {
318
+ return !!ownerDocument.activeElement && isEditableElement(ownerDocument.activeElement);
319
+ }
320
+ const isInputFocused = activeElementIsInput();
321
+ this.inputFocusedContext.set(isInputFocused);
322
+ if (isInputFocused) {
323
+ const tracker = disposables.add(trackFocus(ownerDocument.activeElement));
324
+ Event.once(tracker.onDidBlur)(() => {
325
+ // Ensure we are only updating the context key if we are
326
+ // still in the same document that we are tracking. This
327
+ // fixes a race condition in multi-window setups where
328
+ // the blur event arrives in the inactive window overwriting
329
+ // the context key of the active window. This is because
330
+ // blur events from the focus tracker are emitted with a
331
+ // timeout of 0.
332
+ if (getActiveWindow().document === ownerDocument) {
333
+ this.inputFocusedContext.set(activeElementIsInput());
334
+ }
335
+ tracker.dispose();
336
+ }, undefined, disposables);
337
+ }
304
338
  }
305
339
  getContextValuesContainer(contextId) {
306
340
  if (this._isDisposed) {
@@ -414,7 +448,7 @@ CommandsRegistry.registerCommand({
414
448
  return [...RawContextKey.all()].sort((a, b) => a.key.localeCompare(b.key));
415
449
  },
416
450
  metadata: {
417
- description: localize(1657, "A command that returns information about context keys"),
451
+ description: localize(1658, "A command that returns information about context keys"),
418
452
  args: []
419
453
  }
420
454
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/platform/contextkey/browser/contextKeyService.ts"],"names":[],"mappings":"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","file":"contextKeyService.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Emitter, PauseableEmitter } from '../../../base/common/event.js';\nimport { Iterable } from '../../../base/common/iterator.js';\nimport { Disposable, IDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport { MarshalledObject } from '../../../base/common/marshalling.js';\nimport { MarshalledId } from '../../../base/common/marshallingIds.js';\nimport { cloneAndChange } from '../../../base/common/objects.js';\nimport { TernarySearchTree } from '../../../base/common/ternarySearchTree.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { localize } from '../../../nls.js';\nimport { CommandsRegistry } from '../../commands/common/commands.js';\nimport { ConfigurationTarget, IConfigurationService } from '../../configuration/common/configuration.js';\nimport { ContextKeyExpression, ContextKeyInfo, ContextKeyValue, IContext, IContextKey, IContextKeyChangeEvent, IContextKeyService, IContextKeyServiceTarget, IReadableSet, IScopedContextKeyService, RawContextKey } from '../common/contextkey.js';\nimport { ServicesAccessor } from '../../instantiation/common/instantiation.js';\n\nconst KEYBINDING_CONTEXT_ATTR = 'data-keybinding-context';\n\nexport class Context implements IContext {\n\n\tprotected _parent: Context | null;\n\tprotected _value: Record<string, any>;\n\tprotected _id: number;\n\n\tconstructor(id: number, parent: Context | null) {\n\t\tthis._id = id;\n\t\tthis._parent = parent;\n\t\tthis._value = Object.create(null);\n\t\tthis._value['_contextId'] = id;\n\t}\n\n\tpublic get value(): Record<string, any> {\n\t\treturn { ...this._value };\n\t}\n\n\tpublic setValue(key: string, value: any): boolean {\n\t\t// console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\n\t\tif (this._value[key] !== value) {\n\t\t\tthis._value[key] = value;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic removeValue(key: string): boolean {\n\t\t// console.log('REMOVE ' + key + ' FROM ' + this._id);\n\t\tif (key in this._value) {\n\t\t\tdelete this._value[key];\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic getValue<T>(key: string): T | undefined {\n\t\tconst ret = this._value[key];\n\t\tif (typeof ret === 'undefined' && this._parent) {\n\t\t\treturn this._parent.getValue<T>(key);\n\t\t}\n\t\treturn ret;\n\t}\n}\n\nclass NullContext extends Context {\n\n\tstatic readonly INSTANCE = new NullContext();\n\n\tconstructor() {\n\t\tsuper(-1, null);\n\t}\n\n\tpublic override setValue(key: string, value: any): boolean {\n\t\treturn false;\n\t}\n\n\tpublic override removeValue(key: string): boolean {\n\t\treturn false;\n\t}\n\n\tpublic override getValue<T>(key: string): T | undefined {\n\t\treturn undefined;\n\t}\n}\n\nclass ConfigAwareContextValuesContainer extends Context {\n\tprivate static readonly _keyPrefix = 'config.';\n\n\tprivate readonly _values = TernarySearchTree.forConfigKeys<any>();\n\tprivate readonly _listener: IDisposable;\n\n\tconstructor(\n\t\tid: number,\n\t\tprivate readonly _configurationService: IConfigurationService,\n\t\temitter: Emitter<IContextKeyChangeEvent>\n\t) {\n\t\tsuper(id, null);\n\n\t\tthis._listener = this._configurationService.onDidChangeConfiguration(event => {\n\t\t\tif (event.source === ConfigurationTarget.DEFAULT) {\n\t\t\t\t// new setting, reset everything\n\t\t\t\tconst allKeys = Array.from(this._values, ([k]) => k);\n\t\t\t\tthis._values.clear();\n\t\t\t\temitter.fire(new ArrayContextKeyChangeEvent(allKeys));\n\t\t\t} else {\n\t\t\t\tconst changedKeys: string[] = [];\n\t\t\t\tfor (const configKey of event.affectedKeys) {\n\t\t\t\t\tconst contextKey = `config.${configKey}`;\n\n\t\t\t\t\tconst cachedItems = this._values.findSuperstr(contextKey);\n\t\t\t\t\tif (cachedItems !== undefined) {\n\t\t\t\t\t\tchangedKeys.push(...Iterable.map(cachedItems, ([key]) => key));\n\t\t\t\t\t\tthis._values.deleteSuperstr(contextKey);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this._values.has(contextKey)) {\n\t\t\t\t\t\tchangedKeys.push(contextKey);\n\t\t\t\t\t\tthis._values.delete(contextKey);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\temitter.fire(new ArrayContextKeyChangeEvent(changedKeys));\n\t\t\t}\n\t\t});\n\t}\n\n\tdispose(): void {\n\t\tthis._listener.dispose();\n\t}\n\n\toverride getValue(key: string): any {\n\n\t\tif (key.indexOf(ConfigAwareContextValuesContainer._keyPrefix) !== 0) {\n\t\t\treturn super.getValue(key);\n\t\t}\n\n\t\tif (this._values.has(key)) {\n\t\t\treturn this._values.get(key);\n\t\t}\n\n\t\tconst configKey = key.substr(ConfigAwareContextValuesContainer._keyPrefix.length);\n\t\tconst configValue = this._configurationService.getValue(configKey);\n\t\tlet value: any = undefined;\n\t\tswitch (typeof configValue) {\n\t\t\tcase 'number':\n\t\t\tcase 'boolean':\n\t\t\tcase 'string':\n\t\t\t\tvalue = configValue;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (Array.isArray(configValue)) {\n\t\t\t\t\tvalue = JSON.stringify(configValue);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = configValue;\n\t\t\t\t}\n\t\t}\n\n\t\tthis._values.set(key, value);\n\t\treturn value;\n\t}\n\n\toverride setValue(key: string, value: any): boolean {\n\t\treturn super.setValue(key, value);\n\t}\n\n\toverride removeValue(key: string): boolean {\n\t\treturn super.removeValue(key);\n\t}\n}\n\nclass ContextKey<T extends ContextKeyValue> implements IContextKey<T> {\n\n\tprivate _service: AbstractContextKeyService;\n\tprivate _key: string;\n\tprivate _defaultValue: T | undefined;\n\n\tconstructor(service: AbstractContextKeyService, key: string, defaultValue: T | undefined) {\n\t\tthis._service = service;\n\t\tthis._key = key;\n\t\tthis._defaultValue = defaultValue;\n\t\tthis.reset();\n\t}\n\n\tpublic set(value: T): void {\n\t\tthis._service.setContext(this._key, value);\n\t}\n\n\tpublic reset(): void {\n\t\tif (typeof this._defaultValue === 'undefined') {\n\t\t\tthis._service.removeContext(this._key);\n\t\t} else {\n\t\t\tthis._service.setContext(this._key, this._defaultValue);\n\t\t}\n\t}\n\n\tpublic get(): T | undefined {\n\t\treturn this._service.getContextKeyValue<T>(this._key);\n\t}\n}\n\nclass SimpleContextKeyChangeEvent implements IContextKeyChangeEvent {\n\tconstructor(readonly key: string) { }\n\taffectsSome(keys: IReadableSet<string>): boolean {\n\t\treturn keys.has(this.key);\n\t}\n\tallKeysContainedIn(keys: IReadableSet<string>): boolean {\n\t\treturn this.affectsSome(keys);\n\t}\n}\n\nclass ArrayContextKeyChangeEvent implements IContextKeyChangeEvent {\n\tconstructor(readonly keys: string[]) { }\n\taffectsSome(keys: IReadableSet<string>): boolean {\n\t\tfor (const key of this.keys) {\n\t\t\tif (keys.has(key)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tallKeysContainedIn(keys: IReadableSet<string>): boolean {\n\t\treturn this.keys.every(key => keys.has(key));\n\t}\n}\n\nclass CompositeContextKeyChangeEvent implements IContextKeyChangeEvent {\n\tconstructor(readonly events: IContextKeyChangeEvent[]) { }\n\taffectsSome(keys: IReadableSet<string>): boolean {\n\t\tfor (const e of this.events) {\n\t\t\tif (e.affectsSome(keys)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tallKeysContainedIn(keys: IReadableSet<string>): boolean {\n\t\treturn this.events.every(evt => evt.allKeysContainedIn(keys));\n\t}\n}\n\nfunction allEventKeysInContext(event: IContextKeyChangeEvent, context: Record<string, any>): boolean {\n\treturn event.allKeysContainedIn(new Set(Object.keys(context)));\n}\n\nexport abstract class AbstractContextKeyService extends Disposable implements IContextKeyService {\n\tdeclare _serviceBrand: undefined;\n\n\tprotected _isDisposed: boolean;\n\tprotected _myContextId: number;\n\n\tprotected _onDidChangeContext = this._register(new PauseableEmitter<IContextKeyChangeEvent>({ merge: input => new CompositeContextKeyChangeEvent(input) }));\n\tget onDidChangeContext() { return this._onDidChangeContext.event; }\n\n\tconstructor(myContextId: number) {\n\t\tsuper();\n\t\tthis._isDisposed = false;\n\t\tthis._myContextId = myContextId;\n\t}\n\n\tpublic createKey<T extends ContextKeyValue>(key: string, defaultValue: T | undefined): IContextKey<T> {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`AbstractContextKeyService has been disposed`);\n\t\t}\n\t\treturn new ContextKey(this, key, defaultValue);\n\t}\n\n\n\tbufferChangeEvents(callback: Function): void {\n\t\tthis._onDidChangeContext.pause();\n\t\ttry {\n\t\t\tcallback();\n\t\t} finally {\n\t\t\tthis._onDidChangeContext.resume();\n\t\t}\n\t}\n\n\tpublic createScoped(domNode: IContextKeyServiceTarget): IScopedContextKeyService {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`AbstractContextKeyService has been disposed`);\n\t\t}\n\t\treturn new ScopedContextKeyService(this, domNode);\n\t}\n\n\tpublic contextMatchesRules(rules: ContextKeyExpression | undefined): boolean {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`AbstractContextKeyService has been disposed`);\n\t\t}\n\t\tconst context = this.getContextValuesContainer(this._myContextId);\n\t\tconst result = (rules ? rules.evaluate(context) : true);\n\t\t// console.group(rules.serialize() + ' -> ' + result);\n\t\t// rules.keys().forEach(key => { console.log(key, ctx[key]); });\n\t\t// console.groupEnd();\n\t\treturn result;\n\t}\n\n\tpublic getContextKeyValue<T>(key: string): T | undefined {\n\t\tif (this._isDisposed) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.getContextValuesContainer(this._myContextId).getValue<T>(key);\n\t}\n\n\tpublic setContext(key: string, value: any): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\t\tconst myContext = this.getContextValuesContainer(this._myContextId);\n\t\tif (!myContext) {\n\t\t\treturn;\n\t\t}\n\t\tif (myContext.setValue(key, value)) {\n\t\t\tthis._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\n\t\t}\n\t}\n\n\tpublic removeContext(key: string): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.getContextValuesContainer(this._myContextId).removeValue(key)) {\n\t\t\tthis._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\n\t\t}\n\t}\n\n\tpublic getContext(target: IContextKeyServiceTarget | null): IContext {\n\t\tif (this._isDisposed) {\n\t\t\treturn NullContext.INSTANCE;\n\t\t}\n\t\treturn this.getContextValuesContainer(findContextAttr(target));\n\t}\n\n\tpublic abstract getContextValuesContainer(contextId: number): Context;\n\tpublic abstract createChildContext(parentContextId?: number): number;\n\tpublic abstract disposeContext(contextId: number): void;\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._isDisposed = true;\n\t}\n}\n\nexport class ContextKeyService extends AbstractContextKeyService implements IContextKeyService {\n\n\tprivate _lastContextId: number;\n\tprivate readonly _contexts = new Map<number, Context>();\n\n\tconstructor(@IConfigurationService configurationService: IConfigurationService) {\n\t\tsuper(0);\n\t\tthis._lastContextId = 0;\n\n\t\tconst myContext = this._register(new ConfigAwareContextValuesContainer(this._myContextId, configurationService, this._onDidChangeContext));\n\t\tthis._contexts.set(this._myContextId, myContext);\n\n\t\t// Uncomment this to see the contexts continuously logged\n\t\t// let lastLoggedValue: string | null = null;\n\t\t// setInterval(() => {\n\t\t// \tlet values = Object.keys(this._contexts).map((key) => this._contexts[key]);\n\t\t// \tlet logValue = values.map(v => JSON.stringify(v._value, null, '\\t')).join('\\n');\n\t\t// \tif (lastLoggedValue !== logValue) {\n\t\t// \t\tlastLoggedValue = logValue;\n\t\t// \t\tconsole.log(lastLoggedValue);\n\t\t// \t}\n\t\t// }, 2000);\n\t}\n\n\tpublic getContextValuesContainer(contextId: number): Context {\n\t\tif (this._isDisposed) {\n\t\t\treturn NullContext.INSTANCE;\n\t\t}\n\t\treturn this._contexts.get(contextId) || NullContext.INSTANCE;\n\t}\n\n\tpublic createChildContext(parentContextId: number = this._myContextId): number {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`ContextKeyService has been disposed`);\n\t\t}\n\t\tconst id = (++this._lastContextId);\n\t\tthis._contexts.set(id, new Context(id, this.getContextValuesContainer(parentContextId)));\n\t\treturn id;\n\t}\n\n\tpublic disposeContext(contextId: number): void {\n\t\tif (!this._isDisposed) {\n\t\t\tthis._contexts.delete(contextId);\n\t\t}\n\t}\n}\n\nclass ScopedContextKeyService extends AbstractContextKeyService {\n\n\tprivate _parent: AbstractContextKeyService;\n\tprivate _domNode: IContextKeyServiceTarget;\n\n\tprivate readonly _parentChangeListener = this._register(new MutableDisposable());\n\n\tconstructor(parent: AbstractContextKeyService, domNode: IContextKeyServiceTarget) {\n\t\tsuper(parent.createChildContext());\n\t\tthis._parent = parent;\n\t\tthis._updateParentChangeListener();\n\n\t\tthis._domNode = domNode;\n\t\tif (this._domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\n\t\t\tlet extraInfo = '';\n\t\t\tif ((this._domNode as HTMLElement).classList) {\n\t\t\t\textraInfo = Array.from((this._domNode as HTMLElement).classList.values()).join(', ');\n\t\t\t}\n\n\t\t\tconsole.error(`Element already has context attribute${extraInfo ? ': ' + extraInfo : ''}`);\n\t\t}\n\t\tthis._domNode.setAttribute(KEYBINDING_CONTEXT_ATTR, String(this._myContextId));\n\t}\n\n\tprivate _updateParentChangeListener(): void {\n\t\t// Forward parent events to this listener. Parent will change.\n\t\tthis._parentChangeListener.value = this._parent.onDidChangeContext(e => {\n\t\t\tconst thisContainer = this._parent.getContextValuesContainer(this._myContextId);\n\t\t\tconst thisContextValues = thisContainer.value;\n\n\t\t\tif (!allEventKeysInContext(e, thisContextValues)) {\n\t\t\t\tthis._onDidChangeContext.fire(e);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic override dispose(): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._parent.disposeContext(this._myContextId);\n\t\tthis._domNode.removeAttribute(KEYBINDING_CONTEXT_ATTR);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getContextValuesContainer(contextId: number): Context {\n\t\tif (this._isDisposed) {\n\t\t\treturn NullContext.INSTANCE;\n\t\t}\n\t\treturn this._parent.getContextValuesContainer(contextId);\n\t}\n\n\tpublic createChildContext(parentContextId: number = this._myContextId): number {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`ScopedContextKeyService has been disposed`);\n\t\t}\n\t\treturn this._parent.createChildContext(parentContextId);\n\t}\n\n\tpublic disposeContext(contextId: number): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\t\tthis._parent.disposeContext(contextId);\n\t}\n}\n\nfunction findContextAttr(domNode: IContextKeyServiceTarget | null): number {\n\twhile (domNode) {\n\t\tif (domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\n\t\t\tconst attr = domNode.getAttribute(KEYBINDING_CONTEXT_ATTR);\n\t\t\tif (attr) {\n\t\t\t\treturn parseInt(attr, 10);\n\t\t\t}\n\t\t\treturn NaN;\n\t\t}\n\t\tdomNode = domNode.parentElement;\n\t}\n\treturn 0;\n}\n\nexport function setContext(accessor: ServicesAccessor, contextKey: any, contextValue: any) {\n\tconst contextKeyService = accessor.get(IContextKeyService);\n\tcontextKeyService.createKey(String(contextKey), stringifyURIs(contextValue));\n}\n\nfunction stringifyURIs(contextValue: any): any {\n\treturn cloneAndChange(contextValue, (obj) => {\n\t\tif (typeof obj === 'object' && (<MarshalledObject>obj).$mid === MarshalledId.Uri) {\n\t\t\treturn URI.revive(obj).toString();\n\t\t}\n\t\tif (obj instanceof URI) {\n\t\t\treturn obj.toString();\n\t\t}\n\t\treturn undefined;\n\t});\n}\n\nCommandsRegistry.registerCommand('_setContext', setContext);\n\nCommandsRegistry.registerCommand({\n\tid: 'getContextKeyInfo',\n\thandler() {\n\t\treturn [...RawContextKey.all()].sort((a, b) => a.key.localeCompare(b.key));\n\t},\n\tmetadata: {\n\t\tdescription: localize('getContextKeyInfo', \"A command that returns information about context keys\"),\n\t\targs: []\n\t}\n});\n\nCommandsRegistry.registerCommand('_generateContextKeyInfo', function () {\n\tconst result: ContextKeyInfo[] = [];\n\tconst seen = new Set<string>();\n\tfor (const info of RawContextKey.all()) {\n\t\tif (!seen.has(info.key)) {\n\t\t\tseen.add(info.key);\n\t\t\tresult.push(info);\n\t\t}\n\t}\n\tresult.sort((a, b) => a.key.localeCompare(b.key));\n\tconsole.log(JSON.stringify(result, undefined, 2));\n});\n"]}
1
+ {"version":3,"sources":["vs/platform/contextkey/browser/contextKeyService.ts"],"names":[],"mappings":"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","file":"contextKeyService.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Emitter, Event, PauseableEmitter } from '../../../base/common/event.js';\nimport { Iterable } from '../../../base/common/iterator.js';\nimport { Disposable, DisposableStore, IDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport { MarshalledObject } from '../../../base/common/marshalling.js';\nimport { MarshalledId } from '../../../base/common/marshallingIds.js';\nimport { cloneAndChange } from '../../../base/common/objects.js';\nimport { TernarySearchTree } from '../../../base/common/ternarySearchTree.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { localize } from '../../../nls.js';\nimport { CommandsRegistry } from '../../commands/common/commands.js';\nimport { ConfigurationTarget, IConfigurationService } from '../../configuration/common/configuration.js';\nimport { ContextKeyExpression, ContextKeyInfo, ContextKeyValue, IContext, IContextKey, IContextKeyChangeEvent, IContextKeyService, IContextKeyServiceTarget, IReadableSet, IScopedContextKeyService, RawContextKey } from '../common/contextkey.js';\nimport { ServicesAccessor } from '../../instantiation/common/instantiation.js';\nimport { InputFocusedContext } from '../common/contextkeys.js';\nimport { mainWindow } from '../../../base/browser/window.js';\nimport { addDisposableListener, EventType, getActiveWindow, isEditableElement, onDidRegisterWindow, trackFocus } from '../../../base/browser/dom.js';\n\nconst KEYBINDING_CONTEXT_ATTR = 'data-keybinding-context';\n\nexport class Context implements IContext {\n\n\tprotected _parent: Context | null;\n\tprotected _value: Record<string, any>;\n\tprotected _id: number;\n\n\tconstructor(id: number, parent: Context | null) {\n\t\tthis._id = id;\n\t\tthis._parent = parent;\n\t\tthis._value = Object.create(null);\n\t\tthis._value['_contextId'] = id;\n\t}\n\n\tpublic get value(): Record<string, any> {\n\t\treturn { ...this._value };\n\t}\n\n\tpublic setValue(key: string, value: any): boolean {\n\t\t// console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\n\t\tif (this._value[key] !== value) {\n\t\t\tthis._value[key] = value;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic removeValue(key: string): boolean {\n\t\t// console.log('REMOVE ' + key + ' FROM ' + this._id);\n\t\tif (key in this._value) {\n\t\t\tdelete this._value[key];\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic getValue<T>(key: string): T | undefined {\n\t\tconst ret = this._value[key];\n\t\tif (typeof ret === 'undefined' && this._parent) {\n\t\t\treturn this._parent.getValue<T>(key);\n\t\t}\n\t\treturn ret;\n\t}\n}\n\nclass NullContext extends Context {\n\n\tstatic readonly INSTANCE = new NullContext();\n\n\tconstructor() {\n\t\tsuper(-1, null);\n\t}\n\n\tpublic override setValue(key: string, value: any): boolean {\n\t\treturn false;\n\t}\n\n\tpublic override removeValue(key: string): boolean {\n\t\treturn false;\n\t}\n\n\tpublic override getValue<T>(key: string): T | undefined {\n\t\treturn undefined;\n\t}\n}\n\nclass ConfigAwareContextValuesContainer extends Context {\n\tprivate static readonly _keyPrefix = 'config.';\n\n\tprivate readonly _values = TernarySearchTree.forConfigKeys<any>();\n\tprivate readonly _listener: IDisposable;\n\n\tconstructor(\n\t\tid: number,\n\t\tprivate readonly _configurationService: IConfigurationService,\n\t\temitter: Emitter<IContextKeyChangeEvent>\n\t) {\n\t\tsuper(id, null);\n\n\t\tthis._listener = this._configurationService.onDidChangeConfiguration(event => {\n\t\t\tif (event.source === ConfigurationTarget.DEFAULT) {\n\t\t\t\t// new setting, reset everything\n\t\t\t\tconst allKeys = Array.from(this._values, ([k]) => k);\n\t\t\t\tthis._values.clear();\n\t\t\t\temitter.fire(new ArrayContextKeyChangeEvent(allKeys));\n\t\t\t} else {\n\t\t\t\tconst changedKeys: string[] = [];\n\t\t\t\tfor (const configKey of event.affectedKeys) {\n\t\t\t\t\tconst contextKey = `config.${configKey}`;\n\n\t\t\t\t\tconst cachedItems = this._values.findSuperstr(contextKey);\n\t\t\t\t\tif (cachedItems !== undefined) {\n\t\t\t\t\t\tchangedKeys.push(...Iterable.map(cachedItems, ([key]) => key));\n\t\t\t\t\t\tthis._values.deleteSuperstr(contextKey);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this._values.has(contextKey)) {\n\t\t\t\t\t\tchangedKeys.push(contextKey);\n\t\t\t\t\t\tthis._values.delete(contextKey);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\temitter.fire(new ArrayContextKeyChangeEvent(changedKeys));\n\t\t\t}\n\t\t});\n\t}\n\n\tdispose(): void {\n\t\tthis._listener.dispose();\n\t}\n\n\toverride getValue(key: string): any {\n\n\t\tif (key.indexOf(ConfigAwareContextValuesContainer._keyPrefix) !== 0) {\n\t\t\treturn super.getValue(key);\n\t\t}\n\n\t\tif (this._values.has(key)) {\n\t\t\treturn this._values.get(key);\n\t\t}\n\n\t\tconst configKey = key.substr(ConfigAwareContextValuesContainer._keyPrefix.length);\n\t\tconst configValue = this._configurationService.getValue(configKey);\n\t\tlet value: any = undefined;\n\t\tswitch (typeof configValue) {\n\t\t\tcase 'number':\n\t\t\tcase 'boolean':\n\t\t\tcase 'string':\n\t\t\t\tvalue = configValue;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (Array.isArray(configValue)) {\n\t\t\t\t\tvalue = JSON.stringify(configValue);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = configValue;\n\t\t\t\t}\n\t\t}\n\n\t\tthis._values.set(key, value);\n\t\treturn value;\n\t}\n\n\toverride setValue(key: string, value: any): boolean {\n\t\treturn super.setValue(key, value);\n\t}\n\n\toverride removeValue(key: string): boolean {\n\t\treturn super.removeValue(key);\n\t}\n}\n\nclass ContextKey<T extends ContextKeyValue> implements IContextKey<T> {\n\n\tprivate _service: AbstractContextKeyService;\n\tprivate _key: string;\n\tprivate _defaultValue: T | undefined;\n\n\tconstructor(service: AbstractContextKeyService, key: string, defaultValue: T | undefined) {\n\t\tthis._service = service;\n\t\tthis._key = key;\n\t\tthis._defaultValue = defaultValue;\n\t\tthis.reset();\n\t}\n\n\tpublic set(value: T): void {\n\t\tthis._service.setContext(this._key, value);\n\t}\n\n\tpublic reset(): void {\n\t\tif (typeof this._defaultValue === 'undefined') {\n\t\t\tthis._service.removeContext(this._key);\n\t\t} else {\n\t\t\tthis._service.setContext(this._key, this._defaultValue);\n\t\t}\n\t}\n\n\tpublic get(): T | undefined {\n\t\treturn this._service.getContextKeyValue<T>(this._key);\n\t}\n}\n\nclass SimpleContextKeyChangeEvent implements IContextKeyChangeEvent {\n\tconstructor(readonly key: string) { }\n\taffectsSome(keys: IReadableSet<string>): boolean {\n\t\treturn keys.has(this.key);\n\t}\n\tallKeysContainedIn(keys: IReadableSet<string>): boolean {\n\t\treturn this.affectsSome(keys);\n\t}\n}\n\nclass ArrayContextKeyChangeEvent implements IContextKeyChangeEvent {\n\tconstructor(readonly keys: string[]) { }\n\taffectsSome(keys: IReadableSet<string>): boolean {\n\t\tfor (const key of this.keys) {\n\t\t\tif (keys.has(key)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tallKeysContainedIn(keys: IReadableSet<string>): boolean {\n\t\treturn this.keys.every(key => keys.has(key));\n\t}\n}\n\nclass CompositeContextKeyChangeEvent implements IContextKeyChangeEvent {\n\tconstructor(readonly events: IContextKeyChangeEvent[]) { }\n\taffectsSome(keys: IReadableSet<string>): boolean {\n\t\tfor (const e of this.events) {\n\t\t\tif (e.affectsSome(keys)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tallKeysContainedIn(keys: IReadableSet<string>): boolean {\n\t\treturn this.events.every(evt => evt.allKeysContainedIn(keys));\n\t}\n}\n\nfunction allEventKeysInContext(event: IContextKeyChangeEvent, context: Record<string, any>): boolean {\n\treturn event.allKeysContainedIn(new Set(Object.keys(context)));\n}\n\nexport abstract class AbstractContextKeyService extends Disposable implements IContextKeyService {\n\tdeclare _serviceBrand: undefined;\n\n\tprotected _isDisposed: boolean;\n\tprotected _myContextId: number;\n\n\tprotected _onDidChangeContext = this._register(new PauseableEmitter<IContextKeyChangeEvent>({ merge: input => new CompositeContextKeyChangeEvent(input) }));\n\tget onDidChangeContext() { return this._onDidChangeContext.event; }\n\n\tconstructor(myContextId: number) {\n\t\tsuper();\n\t\tthis._isDisposed = false;\n\t\tthis._myContextId = myContextId;\n\t}\n\n\tpublic createKey<T extends ContextKeyValue>(key: string, defaultValue: T | undefined): IContextKey<T> {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`AbstractContextKeyService has been disposed`);\n\t\t}\n\t\treturn new ContextKey(this, key, defaultValue);\n\t}\n\n\n\tbufferChangeEvents(callback: Function): void {\n\t\tthis._onDidChangeContext.pause();\n\t\ttry {\n\t\t\tcallback();\n\t\t} finally {\n\t\t\tthis._onDidChangeContext.resume();\n\t\t}\n\t}\n\n\tpublic createScoped(domNode: IContextKeyServiceTarget): IScopedContextKeyService {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`AbstractContextKeyService has been disposed`);\n\t\t}\n\t\treturn new ScopedContextKeyService(this, domNode);\n\t}\n\n\tpublic contextMatchesRules(rules: ContextKeyExpression | undefined): boolean {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`AbstractContextKeyService has been disposed`);\n\t\t}\n\t\tconst context = this.getContextValuesContainer(this._myContextId);\n\t\tconst result = (rules ? rules.evaluate(context) : true);\n\t\t// console.group(rules.serialize() + ' -> ' + result);\n\t\t// rules.keys().forEach(key => { console.log(key, ctx[key]); });\n\t\t// console.groupEnd();\n\t\treturn result;\n\t}\n\n\tpublic getContextKeyValue<T>(key: string): T | undefined {\n\t\tif (this._isDisposed) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.getContextValuesContainer(this._myContextId).getValue<T>(key);\n\t}\n\n\tpublic setContext(key: string, value: any): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\t\tconst myContext = this.getContextValuesContainer(this._myContextId);\n\t\tif (!myContext) {\n\t\t\treturn;\n\t\t}\n\t\tif (myContext.setValue(key, value)) {\n\t\t\tthis._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\n\t\t}\n\t}\n\n\tpublic removeContext(key: string): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.getContextValuesContainer(this._myContextId).removeValue(key)) {\n\t\t\tthis._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\n\t\t}\n\t}\n\n\tpublic getContext(target: IContextKeyServiceTarget | null): IContext {\n\t\tif (this._isDisposed) {\n\t\t\treturn NullContext.INSTANCE;\n\t\t}\n\t\treturn this.getContextValuesContainer(findContextAttr(target));\n\t}\n\n\tpublic abstract getContextValuesContainer(contextId: number): Context;\n\tpublic abstract createChildContext(parentContextId?: number): number;\n\tpublic abstract disposeContext(contextId: number): void;\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._isDisposed = true;\n\t}\n}\n\nexport class ContextKeyService extends AbstractContextKeyService implements IContextKeyService {\n\n\tprivate _lastContextId: number;\n\tprivate readonly _contexts = new Map<number, Context>();\n\n\tprivate inputFocusedContext: IContextKey<boolean>;\n\n\tconstructor(@IConfigurationService configurationService: IConfigurationService) {\n\t\tsuper(0);\n\t\tthis._lastContextId = 0;\n\t\tthis.inputFocusedContext = InputFocusedContext.bindTo(this);\n\n\t\tconst myContext = this._register(new ConfigAwareContextValuesContainer(this._myContextId, configurationService, this._onDidChangeContext));\n\t\tthis._contexts.set(this._myContextId, myContext);\n\n\t\t// Uncomment this to see the contexts continuously logged\n\t\t// let lastLoggedValue: string | null = null;\n\t\t// setInterval(() => {\n\t\t// \tlet values = Object.keys(this._contexts).map((key) => this._contexts[key]);\n\t\t// \tlet logValue = values.map(v => JSON.stringify(v._value, null, '\\t')).join('\\n');\n\t\t// \tif (lastLoggedValue !== logValue) {\n\t\t// \t\tlastLoggedValue = logValue;\n\t\t// \t\tconsole.log(lastLoggedValue);\n\t\t// \t}\n\t\t// }, 2000);\n\n\t\tthis._register(Event.runAndSubscribe(onDidRegisterWindow, ({ window, disposables }) => {\n\t\t\tconst onFocusDisposables = disposables.add(new MutableDisposable<DisposableStore>());\n\t\t\tdisposables.add(addDisposableListener(window, EventType.FOCUS_IN, () => {\n\t\t\t\tonFocusDisposables.value = new DisposableStore();\n\t\t\t\tthis.updateInputContextKeys(window.document, onFocusDisposables.value);\n\t\t\t}, true));\n\t\t}, { window: mainWindow, disposables: this._store }));\n\t}\n\n\tprivate updateInputContextKeys(ownerDocument: Document, disposables: DisposableStore): void {\n\n\t\tfunction activeElementIsInput(): boolean {\n\t\t\treturn !!ownerDocument.activeElement && isEditableElement(ownerDocument.activeElement);\n\t\t}\n\n\t\tconst isInputFocused = activeElementIsInput();\n\t\tthis.inputFocusedContext.set(isInputFocused);\n\n\t\tif (isInputFocused) {\n\t\t\tconst tracker = disposables.add(trackFocus(ownerDocument.activeElement as HTMLElement));\n\t\t\tEvent.once(tracker.onDidBlur)(() => {\n\n\t\t\t\t// Ensure we are only updating the context key if we are\n\t\t\t\t// still in the same document that we are tracking. This\n\t\t\t\t// fixes a race condition in multi-window setups where\n\t\t\t\t// the blur event arrives in the inactive window overwriting\n\t\t\t\t// the context key of the active window. This is because\n\t\t\t\t// blur events from the focus tracker are emitted with a\n\t\t\t\t// timeout of 0.\n\n\t\t\t\tif (getActiveWindow().document === ownerDocument) {\n\t\t\t\t\tthis.inputFocusedContext.set(activeElementIsInput());\n\t\t\t\t}\n\n\t\t\t\ttracker.dispose();\n\t\t\t}, undefined, disposables);\n\t\t}\n\t}\n\n\tpublic getContextValuesContainer(contextId: number): Context {\n\t\tif (this._isDisposed) {\n\t\t\treturn NullContext.INSTANCE;\n\t\t}\n\t\treturn this._contexts.get(contextId) || NullContext.INSTANCE;\n\t}\n\n\tpublic createChildContext(parentContextId: number = this._myContextId): number {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`ContextKeyService has been disposed`);\n\t\t}\n\t\tconst id = (++this._lastContextId);\n\t\tthis._contexts.set(id, new Context(id, this.getContextValuesContainer(parentContextId)));\n\t\treturn id;\n\t}\n\n\tpublic disposeContext(contextId: number): void {\n\t\tif (!this._isDisposed) {\n\t\t\tthis._contexts.delete(contextId);\n\t\t}\n\t}\n}\n\nclass ScopedContextKeyService extends AbstractContextKeyService {\n\n\tprivate _parent: AbstractContextKeyService;\n\tprivate _domNode: IContextKeyServiceTarget;\n\n\tprivate readonly _parentChangeListener = this._register(new MutableDisposable());\n\n\tconstructor(parent: AbstractContextKeyService, domNode: IContextKeyServiceTarget) {\n\t\tsuper(parent.createChildContext());\n\t\tthis._parent = parent;\n\t\tthis._updateParentChangeListener();\n\n\t\tthis._domNode = domNode;\n\t\tif (this._domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\n\t\t\tlet extraInfo = '';\n\t\t\tif ((this._domNode as HTMLElement).classList) {\n\t\t\t\textraInfo = Array.from((this._domNode as HTMLElement).classList.values()).join(', ');\n\t\t\t}\n\n\t\t\tconsole.error(`Element already has context attribute${extraInfo ? ': ' + extraInfo : ''}`);\n\t\t}\n\t\tthis._domNode.setAttribute(KEYBINDING_CONTEXT_ATTR, String(this._myContextId));\n\t}\n\n\tprivate _updateParentChangeListener(): void {\n\t\t// Forward parent events to this listener. Parent will change.\n\t\tthis._parentChangeListener.value = this._parent.onDidChangeContext(e => {\n\t\t\tconst thisContainer = this._parent.getContextValuesContainer(this._myContextId);\n\t\t\tconst thisContextValues = thisContainer.value;\n\n\t\t\tif (!allEventKeysInContext(e, thisContextValues)) {\n\t\t\t\tthis._onDidChangeContext.fire(e);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic override dispose(): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._parent.disposeContext(this._myContextId);\n\t\tthis._domNode.removeAttribute(KEYBINDING_CONTEXT_ATTR);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getContextValuesContainer(contextId: number): Context {\n\t\tif (this._isDisposed) {\n\t\t\treturn NullContext.INSTANCE;\n\t\t}\n\t\treturn this._parent.getContextValuesContainer(contextId);\n\t}\n\n\tpublic createChildContext(parentContextId: number = this._myContextId): number {\n\t\tif (this._isDisposed) {\n\t\t\tthrow new Error(`ScopedContextKeyService has been disposed`);\n\t\t}\n\t\treturn this._parent.createChildContext(parentContextId);\n\t}\n\n\tpublic disposeContext(contextId: number): void {\n\t\tif (this._isDisposed) {\n\t\t\treturn;\n\t\t}\n\t\tthis._parent.disposeContext(contextId);\n\t}\n}\n\nfunction findContextAttr(domNode: IContextKeyServiceTarget | null): number {\n\twhile (domNode) {\n\t\tif (domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\n\t\t\tconst attr = domNode.getAttribute(KEYBINDING_CONTEXT_ATTR);\n\t\t\tif (attr) {\n\t\t\t\treturn parseInt(attr, 10);\n\t\t\t}\n\t\t\treturn NaN;\n\t\t}\n\t\tdomNode = domNode.parentElement;\n\t}\n\treturn 0;\n}\n\nexport function setContext(accessor: ServicesAccessor, contextKey: any, contextValue: any) {\n\tconst contextKeyService = accessor.get(IContextKeyService);\n\tcontextKeyService.createKey(String(contextKey), stringifyURIs(contextValue));\n}\n\nfunction stringifyURIs(contextValue: any): any {\n\treturn cloneAndChange(contextValue, (obj) => {\n\t\tif (typeof obj === 'object' && (<MarshalledObject>obj).$mid === MarshalledId.Uri) {\n\t\t\treturn URI.revive(obj).toString();\n\t\t}\n\t\tif (obj instanceof URI) {\n\t\t\treturn obj.toString();\n\t\t}\n\t\treturn undefined;\n\t});\n}\n\nCommandsRegistry.registerCommand('_setContext', setContext);\n\nCommandsRegistry.registerCommand({\n\tid: 'getContextKeyInfo',\n\thandler() {\n\t\treturn [...RawContextKey.all()].sort((a, b) => a.key.localeCompare(b.key));\n\t},\n\tmetadata: {\n\t\tdescription: localize('getContextKeyInfo', \"A command that returns information about context keys\"),\n\t\targs: []\n\t}\n});\n\nCommandsRegistry.registerCommand('_generateContextKeyInfo', function () {\n\tconst result: ContextKeyInfo[] = [];\n\tconst seen = new Set<string>();\n\tfor (const info of RawContextKey.all()) {\n\t\tif (!seen.has(info.key)) {\n\t\t\tseen.add(info.key);\n\t\t\tresult.push(info);\n\t\t}\n\t}\n\tresult.sort((a, b) => a.key.localeCompare(b.key));\n\tconsole.log(JSON.stringify(result, undefined, 2));\n});\n"]}
@@ -23,14 +23,14 @@ const hasOwnProperty = Object.prototype.hasOwnProperty;
23
23
  const defaultConfig = {
24
24
  regexParsingWithErrorRecovery: true
25
25
  };
26
- const errorEmptyString = localize(1658, "Empty context key expression");
27
- const hintEmptyString = localize(1659, "Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively.");
28
- const errorNoInAfterNot = localize(1660, "'in' after 'not'.");
29
- const errorClosingParenthesis = localize(1661, "closing parenthesis ')'");
30
- const errorUnexpectedToken = localize(1662, "Unexpected token");
31
- const hintUnexpectedToken = localize(1663, "Did you forget to put && or || before the token?");
32
- const errorUnexpectedEOF = localize(1664, "Unexpected end of expression");
33
- const hintUnexpectedEOF = localize(1665, "Did you forget to put a context key?");
26
+ const errorEmptyString = localize(1659, "Empty context key expression");
27
+ const hintEmptyString = localize(1660, "Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively.");
28
+ const errorNoInAfterNot = localize(1661, "'in' after 'not'.");
29
+ const errorClosingParenthesis = localize(1662, "closing parenthesis ')'");
30
+ const errorUnexpectedToken = localize(1663, "Unexpected token");
31
+ const hintUnexpectedToken = localize(1664, "Did you forget to put && or || before the token?");
32
+ const errorUnexpectedEOF = localize(1665, "Unexpected end of expression");
33
+ const hintUnexpectedEOF = localize(1666, "Did you forget to put a context key?");
34
34
  /**
35
35
  * A parser for context key expressions.
36
36
  *
@@ -375,7 +375,7 @@ export class Parser {
375
375
  throw this._errExpectedButGot(message, this._peek());
376
376
  }
377
377
  _errExpectedButGot(expected, got, additionalInfo) {
378
- const message = localize(1666, "Expected: {0}\nReceived: '{1}'.", expected, Scanner.getLexeme(got));
378
+ const message = localize(1667, "Expected: {0}\nReceived: '{1}'.", expected, Scanner.getLexeme(got));
379
379
  const offset = got.offset;
380
380
  const lexeme = Scanner.getLexeme(got);
381
381
  this._parsingErrors.push({ message, offset, lexeme, additionalInfo });
@@ -5,15 +5,15 @@
5
5
  import { isIOS, isLinux, isMacintosh, isMobile, isWeb, isWindows } from '../../../base/common/platform.js';
6
6
  import { localize } from '../../../nls.js';
7
7
  import { RawContextKey } from './contextkey.js';
8
- export const IsMacContext = new RawContextKey('isMac', isMacintosh, localize(1667, "Whether the operating system is macOS"));
9
- export const IsLinuxContext = new RawContextKey('isLinux', isLinux, localize(1668, "Whether the operating system is Linux"));
10
- export const IsWindowsContext = new RawContextKey('isWindows', isWindows, localize(1669, "Whether the operating system is Windows"));
11
- export const IsWebContext = new RawContextKey('isWeb', isWeb, localize(1670, "Whether the platform is a web browser"));
12
- export const IsMacNativeContext = new RawContextKey('isMacNative', isMacintosh && !isWeb, localize(1671, "Whether the operating system is macOS on a non-browser platform"));
13
- export const IsIOSContext = new RawContextKey('isIOS', isIOS, localize(1672, "Whether the operating system is iOS"));
14
- export const IsMobileContext = new RawContextKey('isMobile', isMobile, localize(1673, "Whether the platform is a mobile web browser"));
8
+ export const IsMacContext = new RawContextKey('isMac', isMacintosh, localize(1668, "Whether the operating system is macOS"));
9
+ export const IsLinuxContext = new RawContextKey('isLinux', isLinux, localize(1669, "Whether the operating system is Linux"));
10
+ export const IsWindowsContext = new RawContextKey('isWindows', isWindows, localize(1670, "Whether the operating system is Windows"));
11
+ export const IsWebContext = new RawContextKey('isWeb', isWeb, localize(1671, "Whether the platform is a web browser"));
12
+ export const IsMacNativeContext = new RawContextKey('isMacNative', isMacintosh && !isWeb, localize(1672, "Whether the operating system is macOS on a non-browser platform"));
13
+ export const IsIOSContext = new RawContextKey('isIOS', isIOS, localize(1673, "Whether the operating system is iOS"));
14
+ export const IsMobileContext = new RawContextKey('isMobile', isMobile, localize(1674, "Whether the platform is a mobile web browser"));
15
15
  export const IsDevelopmentContext = new RawContextKey('isDevelopment', false, true);
16
- export const ProductQualityContext = new RawContextKey('productQualityType', '', localize(1674, "Quality type of VS Code"));
16
+ export const ProductQualityContext = new RawContextKey('productQualityType', '', localize(1675, "Quality type of VS Code"));
17
17
  export const InputFocusedContextKey = 'inputFocus';
18
- export const InputFocusedContext = new RawContextKey(InputFocusedContextKey, false, localize(1675, "Whether keyboard focus is inside an input box"));
18
+ export const InputFocusedContext = new RawContextKey(InputFocusedContextKey, false, localize(1676, "Whether keyboard focus is inside an input box"));
19
19
  //# sourceMappingURL=contextkeys.js.map
@@ -7,17 +7,17 @@ import { localize } from '../../../nls.js';
7
7
  function hintDidYouMean(...meant) {
8
8
  switch (meant.length) {
9
9
  case 1:
10
- return localize(1676, "Did you mean {0}?", meant[0]);
10
+ return localize(1677, "Did you mean {0}?", meant[0]);
11
11
  case 2:
12
- return localize(1677, "Did you mean {0} or {1}?", meant[0], meant[1]);
12
+ return localize(1678, "Did you mean {0} or {1}?", meant[0], meant[1]);
13
13
  case 3:
14
- return localize(1678, "Did you mean {0}, {1} or {2}?", meant[0], meant[1], meant[2]);
14
+ return localize(1679, "Did you mean {0}, {1} or {2}?", meant[0], meant[1], meant[2]);
15
15
  default: // we just don't expect that many
16
16
  return undefined;
17
17
  }
18
18
  }
19
- const hintDidYouForgetToOpenOrCloseQuote = localize(1679, "Did you forget to open or close the quote?");
20
- const hintDidYouForgetToEscapeSlash = localize(1680, "Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/\'.");
19
+ const hintDidYouForgetToOpenOrCloseQuote = localize(1680, "Did you forget to open or close the quote?");
20
+ const hintDidYouForgetToEscapeSlash = localize(1681, "Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/\'.");
21
21
  /**
22
22
  * A simple scanner for context keys.
23
23
  *
@@ -18,7 +18,7 @@ import { KeybindingsRegistry } from '../../keybinding/common/keybindingsRegistry
18
18
  import { localize } from '../../../nls.js';
19
19
  import { DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';
20
20
  import { isActiveElement } from '../../../base/browser/dom.js';
21
- export const historyNavigationVisible = new RawContextKey('suggestWidgetVisible', false, localize(1681, "Whether suggestion are visible"));
21
+ export const historyNavigationVisible = new RawContextKey('suggestWidgetVisible', false, localize(1682, "Whether suggestion are visible"));
22
22
  const HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus';
23
23
  const HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled';
24
24
  const HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled';
@@ -95,11 +95,11 @@ export class AbstractKeybindingService extends Disposable {
95
95
  throw illegalState('impossible');
96
96
  case 1:
97
97
  // TODO@ulugbekna: revise this message and the one below (at least, fix terminology)
98
- this._currentChordStatusMessage = this._notificationService.status(nls.localize(1682, "({0}) was pressed. Waiting for second key of chord...", keypressLabel));
98
+ this._currentChordStatusMessage = this._notificationService.status(nls.localize(1683, "({0}) was pressed. Waiting for second key of chord...", keypressLabel));
99
99
  break;
100
100
  default: {
101
101
  const fullKeypressLabel = this._currentChords.map(({ label }) => label).join(', ');
102
- this._currentChordStatusMessage = this._notificationService.status(nls.localize(1683, "({0}) was pressed. Waiting for next key of chord...", fullKeypressLabel));
102
+ this._currentChordStatusMessage = this._notificationService.status(nls.localize(1684, "({0}) was pressed. Waiting for next key of chord...", fullKeypressLabel));
103
103
  }
104
104
  }
105
105
  this._scheduleLeaveChordMode();
@@ -198,7 +198,7 @@ export class AbstractKeybindingService extends Disposable {
198
198
  if (this.inChordMode) {
199
199
  const currentChordsLabel = this._currentChords.map(({ label }) => label).join(', ');
200
200
  this._log(`+ Leaving multi-chord mode: Nothing bound to "${currentChordsLabel}, ${keypressLabel}".`);
201
- this._notificationService.status(nls.localize(1684, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
201
+ this._notificationService.status(nls.localize(1685, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
202
202
  this._leaveChordMode();
203
203
  shouldPreventDefault = true;
204
204
  }
@@ -217,7 +217,7 @@ export class AbstractKeybindingService extends Disposable {
217
217
  if (this.inChordMode) {
218
218
  const currentChordsLabel = this._currentChords.map(({ label }) => label).join(', ');
219
219
  this._log(`+ Leaving chord mode: Nothing bound to "${currentChordsLabel}, ${keypressLabel}".`);
220
- this._notificationService.status(nls.localize(1685, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
220
+ this._notificationService.status(nls.localize(1686, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
221
221
  this._leaveChordMode();
222
222
  shouldPreventDefault = true;
223
223
  }