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.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +2 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +7 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/common/htmlContent.js +8 -0
- package/esm/vs/base/common/htmlContent.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +274 -267
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/core/editorColorRegistry.js +68 -68
- package/esm/vs/editor/common/editorContextKeys.js +46 -46
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +10 -10
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +10 -0
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js +28 -5
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/format.js +3 -0
- package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHints.js +2 -7
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHints.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +19 -19
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +6 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +5 -5
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +12 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js.map +1 -1
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +26 -26
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
- package/esm/vs/editor/editor.api.d.ts +1 -0
- package/esm/vs/editor/standalone/browser/standaloneThemeService.js +10 -0
- package/esm/vs/editor/standalone/browser/standaloneThemeService.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +37 -3
- package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
- package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +1 -0
- package/package.json +2 -2
- 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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
194
|
+
? localize(1629, "{0} ({1})", altTooltip, altKeybindingLabel)
|
|
195
195
|
: altTooltip;
|
|
196
|
-
title = localize(
|
|
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(
|
|
271
|
+
this.label.textContent = localize(1631, '{1} to {0}', this._action.label, kb2);
|
|
272
272
|
}
|
|
273
273
|
else {
|
|
274
|
-
this.label.textContent = localize(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
312
|
-
errorMessage: nls.localize(
|
|
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(
|
|
329
|
-
errorMessage: nls.localize(
|
|
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(
|
|
402
|
+
return nls.localize(1654, "Cannot register an empty property");
|
|
403
403
|
}
|
|
404
404
|
if (OVERRIDE_PROPERTY_REGEX.test(property)) {
|
|
405
|
-
return nls.localize(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
27
|
-
const hintEmptyString = localize(
|
|
28
|
-
const errorNoInAfterNot = localize(
|
|
29
|
-
const errorClosingParenthesis = localize(
|
|
30
|
-
const errorUnexpectedToken = localize(
|
|
31
|
-
const hintUnexpectedToken = localize(
|
|
32
|
-
const errorUnexpectedEOF = localize(
|
|
33
|
-
const hintUnexpectedEOF = localize(
|
|
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(
|
|
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(
|
|
9
|
-
export const IsLinuxContext = new RawContextKey('isLinux', isLinux, localize(
|
|
10
|
-
export const IsWindowsContext = new RawContextKey('isWindows', isWindows, localize(
|
|
11
|
-
export const IsWebContext = new RawContextKey('isWeb', isWeb, localize(
|
|
12
|
-
export const IsMacNativeContext = new RawContextKey('isMacNative', isMacintosh && !isWeb, localize(
|
|
13
|
-
export const IsIOSContext = new RawContextKey('isIOS', isIOS, localize(
|
|
14
|
-
export const IsMobileContext = new RawContextKey('isMobile', isMobile, localize(
|
|
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(
|
|
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(
|
|
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(
|
|
10
|
+
return localize(1677, "Did you mean {0}?", meant[0]);
|
|
11
11
|
case 2:
|
|
12
|
-
return localize(
|
|
12
|
+
return localize(1678, "Did you mean {0} or {1}?", meant[0], meant[1]);
|
|
13
13
|
case 3:
|
|
14
|
-
return localize(
|
|
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(
|
|
20
|
-
const hintDidYouForgetToEscapeSlash = localize(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
}
|