@codingame/monaco-vscode-api 1.80.0 → 1.80.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +2 -1
  2. package/dist/api.js +6 -6
  3. package/dist/default-extensions/npm/npmBrowserMain.js.map +1 -1
  4. package/dist/default-extensions/typescript-language-features/tsserver.web.js.map +1 -1
  5. package/dist/missing-services.js +4 -1
  6. package/dist/monaco.js +4 -0
  7. package/dist/override/vs/platform/dialogs/common/dialogs.js +7 -0
  8. package/dist/service-override/dialogs.js +2 -1
  9. package/dist/service-override/extensions.js +2 -1
  10. package/dist/service-override/keybindings.js +1 -0
  11. package/dist/service-override/languageDetectionWorker.d.ts +5 -0
  12. package/dist/service-override/languageDetectionWorker.js +15 -0
  13. package/dist/service-override/layout.js +12 -1
  14. package/dist/service-override/snippets.js +1 -0
  15. package/dist/service-override/views.d.ts +24 -2
  16. package/dist/service-override/views.js +119 -12
  17. package/dist/services.js +2 -1
  18. package/dist/vscode/vs/platform/audioCues/browser/media/all.mp3.js +17 -17
  19. package/dist/vscode/vs/platform/diagnostics/common/diagnostics.js +27 -0
  20. package/dist/vscode/vs/platform/dialogs/common/dialogs.js +126 -0
  21. package/dist/vscode/vs/workbench/api/browser/mainThreadAuthentication.js +2 -1
  22. package/dist/vscode/vs/workbench/api/browser/mainThreadCustomEditors.js +2 -1
  23. package/dist/vscode/vs/workbench/api/browser/mainThreadDialogs.js +2 -1
  24. package/dist/vscode/vs/workbench/api/browser/mainThreadFileSystemEventService.js +2 -1
  25. package/dist/vscode/vs/workbench/api/browser/mainThreadMessageService.js +2 -1
  26. package/dist/vscode/vs/workbench/browser/actions/layoutActions.js +1 -0
  27. package/dist/vscode/vs/workbench/browser/actions/windowActions.js +2 -1
  28. package/dist/vscode/vs/workbench/browser/actions/workspaceActions.js +2 -1
  29. package/dist/vscode/vs/workbench/browser/actions/workspaceCommands.js +1 -0
  30. package/dist/vscode/vs/workbench/browser/parts/dialogs/dialog.web.contribution.js +2 -1
  31. package/dist/vscode/vs/workbench/browser/parts/dialogs/dialogHandler.js +2 -1
  32. package/dist/vscode/vs/workbench/browser/parts/editor/editorActions.js +2 -1
  33. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupView.js +2 -1
  34. package/dist/vscode/vs/workbench/browser/parts/editor/editorPanes.js +2 -1
  35. package/dist/vscode/vs/workbench/browser/parts/editor/editorPlaceholder.js +2 -1
  36. package/dist/vscode/vs/workbench/common/editor/editorInput.d.ts +1 -1
  37. package/dist/vscode/vs/workbench/common/theme.js +5 -5
  38. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +2 -1
  39. package/dist/vscode/vs/workbench/contrib/codeActions/browser/codeActions.contribution.js +25 -0
  40. package/dist/vscode/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +138 -0
  41. package/dist/vscode/vs/workbench/contrib/codeActions/browser/documentationContribution.js +59 -0
  42. package/dist/vscode/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js +61 -0
  43. package/dist/vscode/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js +58 -0
  44. package/dist/vscode/vs/workbench/contrib/customEditor/browser/customEditorInput.js +2 -1
  45. package/dist/vscode/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js +2 -1
  46. package/dist/vscode/vs/workbench/contrib/debug/browser/debugAdapterManager.js +2 -1
  47. package/dist/vscode/vs/workbench/contrib/debug/browser/debugService.js +2 -1
  48. package/dist/vscode/vs/workbench/contrib/debug/browser/debugTaskRunner.js +2 -1
  49. package/dist/vscode/vs/workbench/contrib/debug/browser/rawDebugSession.js +2 -1
  50. package/dist/vscode/vs/workbench/contrib/debug/common/debugLifecycle.js +2 -1
  51. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsActions.js +2 -1
  52. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.js +2 -1
  53. package/dist/vscode/vs/workbench/contrib/files/browser/fileCommands.js +2 -1
  54. package/dist/vscode/vs/workbench/contrib/files/browser/fileImportExport.js +2 -1
  55. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerViewer.js +2 -1
  56. package/dist/vscode/vs/workbench/contrib/folding/browser/folding.contribution.js +84 -0
  57. package/dist/vscode/vs/workbench/contrib/inlayHints/browser/inlayHintsAccessibilty.js +172 -0
  58. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +2 -1
  59. package/dist/vscode/vs/workbench/contrib/keybindings/browser/keybindings.contribution.js +24 -0
  60. package/dist/vscode/vs/workbench/contrib/languageDetection/browser/languageDetection.contribution.js +132 -0
  61. package/dist/vscode/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.js +360 -0
  62. package/dist/vscode/vs/workbench/contrib/languageStatus/browser/media/languageStatus.css.js +4 -0
  63. package/dist/vscode/vs/workbench/contrib/list/browser/list.contribution.js +15 -0
  64. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +2 -1
  65. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookContextKeys.js +3 -0
  66. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +2 -1
  67. package/dist/vscode/vs/workbench/contrib/search/browser/searchView.js +2 -1
  68. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +2 -1
  69. package/dist/vscode/vs/workbench/contrib/snippets/browser/commands/abstractSnippetsActions.js +20 -0
  70. package/dist/vscode/vs/workbench/contrib/snippets/browser/commands/configureSnippets.js +264 -0
  71. package/dist/vscode/vs/workbench/contrib/snippets/browser/commands/fileTemplateSnippets.js +87 -0
  72. package/dist/vscode/vs/workbench/contrib/snippets/browser/commands/insertSnippet.js +126 -0
  73. package/dist/vscode/vs/workbench/contrib/snippets/browser/commands/surroundWithSnippet.js +56 -0
  74. package/dist/vscode/vs/workbench/contrib/snippets/browser/snippetCodeActionProvider.js +133 -0
  75. package/dist/vscode/vs/workbench/contrib/snippets/browser/snippetPicker.js +83 -0
  76. package/dist/vscode/vs/workbench/contrib/snippets/browser/snippets.contribution.js +113 -0
  77. package/dist/vscode/vs/workbench/contrib/tasks/browser/taskQuickPick.js +2 -1
  78. package/dist/vscode/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js +2 -1
  79. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +2 -1
  80. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstance.js +2 -1
  81. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalService.js +5 -3
  82. package/dist/vscode/vs/workbench/services/authentication/browser/authenticationService.js +1 -0
  83. package/dist/vscode/vs/workbench/services/dialogs/browser/abstractFileDialogService.js +2 -1
  84. package/dist/vscode/vs/workbench/services/dialogs/browser/simpleFileDialog.js +2 -1
  85. package/dist/vscode/vs/workbench/services/dialogs/common/dialogService.js +1 -0
  86. package/dist/vscode/vs/workbench/services/extensions/browser/extensionService.js +1 -0
  87. package/dist/vscode/vs/workbench/services/extensions/browser/extensionUrlHandler.js +1 -0
  88. package/dist/vscode/vs/workbench/services/extensions/common/abstractExtensionService.js +2 -1
  89. package/dist/vscode/vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker.js +173 -0
  90. package/dist/vscode/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.js +257 -0
  91. package/dist/vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService.js +2 -1
  92. package/dist/vscode/vs/workbench/services/remote/common/remoteExplorerService.js +2 -1
  93. package/dist/vscode/vs/workbench/services/textfile/browser/browserTextFileService.js +2 -1
  94. package/dist/vscode/vs/workbench/services/textfile/browser/textFileService.js +2 -1
  95. package/dist/vscode/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js +2 -1
  96. package/dist/workers/languageDetection.worker.js +8 -0
  97. package/monaco-editor-treemending.patch +551 -551
  98. package/package.json +3 -2
@@ -0,0 +1,132 @@
1
+ import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
+ import { DisposableStore } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
3
+ import { getCodeEditor } from 'monaco-editor/esm/vs/editor/browser/editorBrowser.js';
4
+ import { localize } from 'monaco-editor/esm/vs/nls.js';
5
+ import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
6
+ import { Extensions } from '../../../common/contributions.js';
7
+ import { IEditorService } from '../../../services/editor/common/editorService.js';
8
+ import { IStatusbarService } from '../../../services/statusbar/browser/statusbar.js';
9
+ import { ILanguageDetectionService, LanguageDetectionLanguageEventSource } from '../../../services/languageDetection/common/languageDetectionWorkerService.js';
10
+ import { ThrottledDelayer } from 'monaco-editor/esm/vs/base/common/async.js';
11
+ import { ILanguageService } from 'monaco-editor/esm/vs/editor/common/languages/language.js';
12
+ import { IKeybindingService } from 'monaco-editor/esm/vs/platform/keybinding/common/keybinding.js';
13
+ import { registerAction2, Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
14
+ import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
15
+ import { ContextKeyExpr } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
16
+ import { NOTEBOOK_EDITOR_EDITABLE } from '../../notebook/common/notebookContextKeys.js';
17
+ import { EditorContextKeys } from 'monaco-editor/esm/vs/editor/common/editorContextKeys.js';
18
+ import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
19
+ import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
20
+ const detectLanguageCommandId = 'editor.detectLanguage';
21
+ let LanguageDetectionStatusContribution = class LanguageDetectionStatusContribution {
22
+ constructor(_languageDetectionService, _statusBarService, _configurationService, _editorService, _languageService, _keybindingService) {
23
+ this._languageDetectionService = _languageDetectionService;
24
+ this._statusBarService = _statusBarService;
25
+ this._configurationService = _configurationService;
26
+ this._editorService = _editorService;
27
+ this._languageService = _languageService;
28
+ this._keybindingService = _keybindingService;
29
+ this._disposables = ( new DisposableStore());
30
+ this._delayer = ( new ThrottledDelayer(1000));
31
+ this._renderDisposables = ( new DisposableStore());
32
+ _editorService.onDidActiveEditorChange(() => this._update(true), this, this._disposables);
33
+ this._update(false);
34
+ }
35
+ dispose() {
36
+ this._disposables.dispose();
37
+ this._delayer.dispose();
38
+ this._combinedEntry?.dispose();
39
+ this._renderDisposables.dispose();
40
+ }
41
+ _update(clear) {
42
+ if (clear) {
43
+ this._combinedEntry?.dispose();
44
+ this._combinedEntry = undefined;
45
+ }
46
+ this._delayer.trigger(() => this._doUpdate());
47
+ }
48
+ async _doUpdate() {
49
+ const editor = getCodeEditor(this._editorService.activeTextEditorControl);
50
+ this._renderDisposables.clear();
51
+ editor?.onDidChangeModelLanguage(() => this._update(true), this, this._renderDisposables);
52
+ editor?.onDidChangeModelContent(() => this._update(false), this, this._renderDisposables);
53
+ const editorModel = editor?.getModel();
54
+ const editorUri = editorModel?.uri;
55
+ const existingId = editorModel?.getLanguageId();
56
+ const enablementConfig = this._configurationService.getValue('workbench.editor.languageDetectionHints');
57
+ const enabled = typeof enablementConfig === 'object' && enablementConfig?.untitledEditors;
58
+ const disableLightbulb = !enabled || editorUri?.scheme !== Schemas.untitled || !existingId;
59
+ if (disableLightbulb || !editorUri) {
60
+ this._combinedEntry?.dispose();
61
+ this._combinedEntry = undefined;
62
+ }
63
+ else {
64
+ const lang = await this._languageDetectionService.detectLanguage(editorUri);
65
+ const skip = { 'jsonc': 'json' };
66
+ const existing = editorModel.getLanguageId();
67
+ if (lang && lang !== existing && skip[existing] !== lang) {
68
+ const detectedName = this._languageService.getLanguageName(lang) || lang;
69
+ let tooltip = ( localize('status.autoDetectLanguage', "Accept Detected Language: {0}", detectedName));
70
+ const keybinding = this._keybindingService.lookupKeybinding(detectLanguageCommandId);
71
+ const label = keybinding?.getLabel();
72
+ if (label) {
73
+ tooltip += ` (${label})`;
74
+ }
75
+ const props = {
76
+ name: ( localize('langDetection.name', "Language Detection")),
77
+ ariaLabel: ( localize('langDetection.aria', "Change to Detected Language: {0}", lang)),
78
+ tooltip,
79
+ command: detectLanguageCommandId,
80
+ text: '$(lightbulb-autofix)',
81
+ };
82
+ if (!this._combinedEntry) {
83
+ this._combinedEntry = this._statusBarService.addEntry(props, LanguageDetectionStatusContribution._id, 1 , { id: 'status.editor.mode', alignment: 1 , compact: true });
84
+ }
85
+ else {
86
+ this._combinedEntry.update(props);
87
+ }
88
+ }
89
+ else {
90
+ this._combinedEntry?.dispose();
91
+ this._combinedEntry = undefined;
92
+ }
93
+ }
94
+ }
95
+ };
96
+ LanguageDetectionStatusContribution._id = 'status.languageDetectionStatus';
97
+ LanguageDetectionStatusContribution = ( __decorate([
98
+ ( __param(0, ILanguageDetectionService)),
99
+ ( __param(1, IStatusbarService)),
100
+ ( __param(2, IConfigurationService)),
101
+ ( __param(3, IEditorService)),
102
+ ( __param(4, ILanguageService)),
103
+ ( __param(5, IKeybindingService))
104
+ ], LanguageDetectionStatusContribution));
105
+ ( Registry.as(Extensions.Workbench)).registerWorkbenchContribution(LanguageDetectionStatusContribution, 3 );
106
+ registerAction2(class extends Action2 {
107
+ constructor() {
108
+ super({
109
+ id: detectLanguageCommandId,
110
+ title: { value: ( localize('detectlang', 'Detect Language from Content')), original: 'Detect Language from Content' },
111
+ f1: true,
112
+ precondition: ( ContextKeyExpr.and(( NOTEBOOK_EDITOR_EDITABLE.toNegated()), EditorContextKeys.editorTextFocus)),
113
+ keybinding: { primary: 34 | 512 | 1024 , weight: 200 }
114
+ });
115
+ }
116
+ async run(accessor) {
117
+ const editorService = accessor.get(IEditorService);
118
+ const languageDetectionService = accessor.get(ILanguageDetectionService);
119
+ const editor = getCodeEditor(editorService.activeTextEditorControl);
120
+ const notificationService = accessor.get(INotificationService);
121
+ const editorUri = editor?.getModel()?.uri;
122
+ if (editorUri) {
123
+ const lang = await languageDetectionService.detectLanguage(editorUri);
124
+ if (lang) {
125
+ editor.getModel()?.setLanguage(lang, LanguageDetectionLanguageEventSource);
126
+ }
127
+ else {
128
+ notificationService.warn(( localize('noDetection', "Unable to detect editor language")));
129
+ }
130
+ }
131
+ }
132
+ });
@@ -0,0 +1,360 @@
1
+ import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
+ import './media/languageStatus.css.js';
3
+ import * as dom from 'monaco-editor/esm/vs/base/browser/dom.js';
4
+ import { renderLabelWithIcons } from 'monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js';
5
+ import { DisposableStore, dispose, toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
6
+ import Severity from 'monaco-editor/esm/vs/base/common/severity.js';
7
+ import { getCodeEditor } from 'monaco-editor/esm/vs/editor/browser/editorBrowser.js';
8
+ import { localize } from 'monaco-editor/esm/vs/nls.js';
9
+ import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
10
+ import { themeColorFromId } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
11
+ import { ThemeIcon } from 'monaco-editor/esm/vs/base/common/themables.js';
12
+ import { Extensions } from '../../../common/contributions.js';
13
+ import { STATUS_BAR_WARNING_ITEM_FOREGROUND, STATUS_BAR_WARNING_ITEM_BACKGROUND, STATUS_BAR_ERROR_ITEM_FOREGROUND, STATUS_BAR_ERROR_ITEM_BACKGROUND } from '../../../common/theme.js';
14
+ import { IEditorService } from '../../../services/editor/common/editorService.js';
15
+ import { ILanguageStatusService } from '../../../services/languageStatus/common/languageStatusService.js';
16
+ import { ShowTooltipCommand, IStatusbarService } from '../../../services/statusbar/browser/statusbar.js';
17
+ import { parseLinkedText } from 'monaco-editor/esm/vs/base/common/linkedText.js';
18
+ import { Link } from 'monaco-editor/esm/vs/platform/opener/browser/link.js';
19
+ import { IOpenerService } from 'monaco-editor/esm/vs/platform/opener/common/opener.js';
20
+ import { MarkdownString } from 'monaco-editor/esm/vs/base/common/htmlContent.js';
21
+ import { ActionBar } from 'monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js';
22
+ import { Action } from 'monaco-editor/esm/vs/base/common/actions.js';
23
+ import { Codicon } from 'monaco-editor/esm/vs/base/common/codicons.js';
24
+ import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
25
+ import { equals } from 'monaco-editor/esm/vs/base/common/arrays.js';
26
+ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
27
+ import { registerAction2, Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
28
+ import { Categories } from 'monaco-editor/esm/vs/platform/action/common/actionCommonCategories.js';
29
+ class LanguageStatusViewModel {
30
+ constructor(combined, dedicated) {
31
+ this.combined = combined;
32
+ this.dedicated = dedicated;
33
+ }
34
+ isEqual(other) {
35
+ return equals(this.combined, other.combined) && equals(this.dedicated, other.dedicated);
36
+ }
37
+ }
38
+ let StoredCounter = class StoredCounter {
39
+ constructor(_storageService, _key) {
40
+ this._storageService = _storageService;
41
+ this._key = _key;
42
+ }
43
+ get value() {
44
+ return this._storageService.getNumber(this._key, 0 , 0);
45
+ }
46
+ increment() {
47
+ const n = this.value + 1;
48
+ this._storageService.store(this._key, n, 0 , 1 );
49
+ return n;
50
+ }
51
+ };
52
+ StoredCounter = ( __decorate([
53
+ ( __param(0, IStorageService))
54
+ ], StoredCounter));
55
+ let EditorStatusContribution = class EditorStatusContribution {
56
+ constructor(_languageStatusService, _statusBarService, _editorService, _openerService, _storageService) {
57
+ this._languageStatusService = _languageStatusService;
58
+ this._statusBarService = _statusBarService;
59
+ this._editorService = _editorService;
60
+ this._openerService = _openerService;
61
+ this._storageService = _storageService;
62
+ this._disposables = ( new DisposableStore());
63
+ this._dedicated = ( new Set());
64
+ this._dedicatedEntries = ( new Map());
65
+ this._renderDisposables = ( new DisposableStore());
66
+ _storageService.onDidChangeValue(this._handleStorageChange, this, this._disposables);
67
+ this._restoreState();
68
+ this._interactionCounter = ( new StoredCounter(_storageService, 'languageStatus.interactCount'));
69
+ _languageStatusService.onDidChange(this._update, this, this._disposables);
70
+ _editorService.onDidActiveEditorChange(this._update, this, this._disposables);
71
+ this._update();
72
+ _statusBarService.onDidChangeEntryVisibility(e => {
73
+ if (!e.visible && ( this._dedicated.has(e.id))) {
74
+ this._dedicated.delete(e.id);
75
+ this._update();
76
+ this._storeState();
77
+ }
78
+ }, this._disposables);
79
+ }
80
+ dispose() {
81
+ this._disposables.dispose();
82
+ this._combinedEntry?.dispose();
83
+ dispose(( this._dedicatedEntries.values()));
84
+ this._renderDisposables.dispose();
85
+ }
86
+ _handleStorageChange(e) {
87
+ if (e.key !== EditorStatusContribution._keyDedicatedItems) {
88
+ return;
89
+ }
90
+ this._restoreState();
91
+ this._update();
92
+ }
93
+ _restoreState() {
94
+ const raw = this._storageService.get(EditorStatusContribution._keyDedicatedItems, 0 , '[]');
95
+ try {
96
+ const ids = JSON.parse(raw);
97
+ this._dedicated = ( new Set(ids));
98
+ }
99
+ catch {
100
+ this._dedicated.clear();
101
+ }
102
+ }
103
+ _storeState() {
104
+ if (this._dedicated.size === 0) {
105
+ this._storageService.remove(EditorStatusContribution._keyDedicatedItems, 0 );
106
+ }
107
+ else {
108
+ const raw = JSON.stringify(Array.from(( this._dedicated.keys())));
109
+ this._storageService.store(EditorStatusContribution._keyDedicatedItems, raw, 0 , 0 );
110
+ }
111
+ }
112
+ _createViewModel(editor) {
113
+ if (!editor?.hasModel()) {
114
+ return ( new LanguageStatusViewModel([], []));
115
+ }
116
+ const all = this._languageStatusService.getLanguageStatus(editor.getModel());
117
+ const combined = [];
118
+ const dedicated = [];
119
+ for (const item of all) {
120
+ if (( this._dedicated.has(item.id))) {
121
+ dedicated.push(item);
122
+ }
123
+ combined.push(item);
124
+ }
125
+ return ( new LanguageStatusViewModel(combined, dedicated));
126
+ }
127
+ _update() {
128
+ const editor = getCodeEditor(this._editorService.activeTextEditorControl);
129
+ const model = this._createViewModel(editor);
130
+ if (this._model?.isEqual(model)) {
131
+ return;
132
+ }
133
+ this._renderDisposables.clear();
134
+ this._model = model;
135
+ editor?.onDidChangeModelLanguage(this._update, this, this._renderDisposables);
136
+ if (model.combined.length === 0) {
137
+ this._combinedEntry?.dispose();
138
+ this._combinedEntry = undefined;
139
+ }
140
+ else {
141
+ const [first] = model.combined;
142
+ const showSeverity = first.severity >= Severity.Warning;
143
+ const text = EditorStatusContribution._severityToComboCodicon(first.severity);
144
+ let isOneBusy = false;
145
+ const ariaLabels = [];
146
+ const element = document.createElement('div');
147
+ for (const status of model.combined) {
148
+ const isPinned = model.dedicated.includes(status);
149
+ element.appendChild(this._renderStatus(status, showSeverity, isPinned, this._renderDisposables));
150
+ ariaLabels.push(this._asAriaLabel(status));
151
+ isOneBusy = isOneBusy || (!isPinned && status.busy);
152
+ }
153
+ const props = {
154
+ name: ( localize('langStatus.name', "Editor Language Status")),
155
+ ariaLabel: ( localize(
156
+ 'langStatus.aria',
157
+ "Editor Language Status: {0}",
158
+ ariaLabels.join(', next: ')
159
+ )),
160
+ tooltip: element,
161
+ command: ShowTooltipCommand,
162
+ text: isOneBusy ? `${text}\u00A0\u00A0$(sync~spin)` : text,
163
+ };
164
+ if (!this._combinedEntry) {
165
+ this._combinedEntry = this._statusBarService.addEntry(props, EditorStatusContribution._id, 1 , { id: 'status.editor.mode', alignment: 0 , compact: true });
166
+ }
167
+ else {
168
+ this._combinedEntry.update(props);
169
+ }
170
+ const userHasInteractedWithStatus = this._interactionCounter.value >= 3;
171
+ const node = document.querySelector('.monaco-workbench .statusbar DIV#status\\.languageStatus A>SPAN.codicon');
172
+ const container = document.querySelector('.monaco-workbench .statusbar DIV#status\\.languageStatus');
173
+ if (node instanceof HTMLElement && container) {
174
+ const _wiggle = 'wiggle';
175
+ const _flash = 'flash';
176
+ if (!isOneBusy) {
177
+ node.classList.toggle(_wiggle, showSeverity || !userHasInteractedWithStatus);
178
+ this._renderDisposables.add(dom.addDisposableListener(node, 'animationend', _e => node.classList.remove(_wiggle)));
179
+ container.classList.toggle(_flash, showSeverity);
180
+ this._renderDisposables.add(dom.addDisposableListener(container, 'animationend', _e => container.classList.remove(_flash)));
181
+ }
182
+ else {
183
+ node.classList.remove(_wiggle);
184
+ container.classList.remove(_flash);
185
+ }
186
+ }
187
+ if (!userHasInteractedWithStatus) {
188
+ const hoverTarget = document.querySelector('.monaco-workbench .context-view');
189
+ if (hoverTarget instanceof HTMLElement) {
190
+ const observer = ( new MutationObserver(() => {
191
+ if (document.contains(element)) {
192
+ this._interactionCounter.increment();
193
+ observer.disconnect();
194
+ }
195
+ }));
196
+ observer.observe(hoverTarget, { childList: true, subtree: true });
197
+ this._renderDisposables.add(toDisposable(() => observer.disconnect()));
198
+ }
199
+ }
200
+ }
201
+ const newDedicatedEntries = ( new Map());
202
+ for (const status of model.dedicated) {
203
+ const props = EditorStatusContribution._asStatusbarEntry(status);
204
+ let entry = this._dedicatedEntries.get(status.id);
205
+ if (!entry) {
206
+ entry = this._statusBarService.addEntry(props, status.id, 1 , { id: 'status.editor.mode', alignment: 1 });
207
+ }
208
+ else {
209
+ entry.update(props);
210
+ this._dedicatedEntries.delete(status.id);
211
+ }
212
+ newDedicatedEntries.set(status.id, entry);
213
+ }
214
+ dispose(( this._dedicatedEntries.values()));
215
+ this._dedicatedEntries = newDedicatedEntries;
216
+ }
217
+ _renderStatus(status, showSeverity, isPinned, store) {
218
+ const parent = document.createElement('div');
219
+ parent.classList.add('hover-language-status');
220
+ const severity = document.createElement('div');
221
+ severity.classList.add('severity', `sev${status.severity}`);
222
+ severity.classList.toggle('show', showSeverity);
223
+ const severityText = EditorStatusContribution._severityToSingleCodicon(status.severity);
224
+ dom.append(severity, ...renderLabelWithIcons(severityText));
225
+ parent.appendChild(severity);
226
+ const element = document.createElement('div');
227
+ element.classList.add('element');
228
+ parent.appendChild(element);
229
+ const left = document.createElement('div');
230
+ left.classList.add('left');
231
+ element.appendChild(left);
232
+ const label = document.createElement('span');
233
+ label.classList.add('label');
234
+ dom.append(label, ...renderLabelWithIcons(status.busy ? `$(sync~spin)\u00A0\u00A0${status.label}` : status.label));
235
+ left.appendChild(label);
236
+ const detail = document.createElement('span');
237
+ detail.classList.add('detail');
238
+ this._renderTextPlus(detail, status.detail, store);
239
+ left.appendChild(detail);
240
+ const right = document.createElement('div');
241
+ right.classList.add('right');
242
+ element.appendChild(right);
243
+ const { command } = status;
244
+ if (command) {
245
+ store.add(( new Link(right, {
246
+ label: command.title,
247
+ title: command.tooltip,
248
+ href: ( ( URI.from({
249
+ scheme: 'command', path: command.id, query: command.arguments && JSON.stringify(command.arguments)
250
+ })).toString())
251
+ }, undefined, this._openerService)));
252
+ }
253
+ const actionBar = ( new ActionBar(right, {}));
254
+ store.add(actionBar);
255
+ let action;
256
+ if (!isPinned) {
257
+ action = ( new Action('pin', ( localize('pin', "Add to Status Bar")), ThemeIcon.asClassName(Codicon.pin), true, () => {
258
+ this._dedicated.add(status.id);
259
+ this._statusBarService.updateEntryVisibility(status.id, true);
260
+ this._update();
261
+ this._storeState();
262
+ }));
263
+ }
264
+ else {
265
+ action = ( new Action('unpin', ( localize('unpin', "Remove from Status Bar")), ThemeIcon.asClassName(Codicon.pinned), true, () => {
266
+ this._dedicated.delete(status.id);
267
+ this._statusBarService.updateEntryVisibility(status.id, false);
268
+ this._update();
269
+ this._storeState();
270
+ }));
271
+ }
272
+ actionBar.push(action, { icon: true, label: false });
273
+ store.add(action);
274
+ return parent;
275
+ }
276
+ static _severityToComboCodicon(sev) {
277
+ switch (sev) {
278
+ case Severity.Error: return '$(bracket-error)';
279
+ case Severity.Warning: return '$(bracket-dot)';
280
+ default: return '$(bracket)';
281
+ }
282
+ }
283
+ static _severityToSingleCodicon(sev) {
284
+ switch (sev) {
285
+ case Severity.Error: return '$(error)';
286
+ case Severity.Warning: return '$(info)';
287
+ default: return '$(check)';
288
+ }
289
+ }
290
+ _renderTextPlus(target, text, store) {
291
+ for (const node of parseLinkedText(text).nodes) {
292
+ if (typeof node === 'string') {
293
+ const parts = renderLabelWithIcons(node);
294
+ dom.append(target, ...parts);
295
+ }
296
+ else {
297
+ store.add(( new Link(target, node, undefined, this._openerService)));
298
+ }
299
+ }
300
+ }
301
+ _asAriaLabel(status) {
302
+ if (status.accessibilityInfo) {
303
+ return status.accessibilityInfo.label;
304
+ }
305
+ else if (status.detail) {
306
+ return ( localize('aria.1', '{0}, {1}', status.label, status.detail));
307
+ }
308
+ else {
309
+ return ( localize('aria.2', '{0}', status.label));
310
+ }
311
+ }
312
+ static _asStatusbarEntry(item) {
313
+ let color;
314
+ let backgroundColor;
315
+ if (item.severity === Severity.Warning) {
316
+ color = themeColorFromId(STATUS_BAR_WARNING_ITEM_FOREGROUND);
317
+ backgroundColor = themeColorFromId(STATUS_BAR_WARNING_ITEM_BACKGROUND);
318
+ }
319
+ else if (item.severity === Severity.Error) {
320
+ color = themeColorFromId(STATUS_BAR_ERROR_ITEM_FOREGROUND);
321
+ backgroundColor = themeColorFromId(STATUS_BAR_ERROR_ITEM_BACKGROUND);
322
+ }
323
+ return {
324
+ name: ( localize('name.pattern', '{0} (Language Status)', item.name)),
325
+ text: item.busy ? `${item.label}\u00A0\u00A0$(sync~spin)` : item.label,
326
+ ariaLabel: item.accessibilityInfo?.label ?? item.label,
327
+ role: item.accessibilityInfo?.role,
328
+ tooltip: item.command?.tooltip || ( new MarkdownString(item.detail, { isTrusted: true, supportThemeIcons: true })),
329
+ color,
330
+ backgroundColor,
331
+ command: item.command
332
+ };
333
+ }
334
+ };
335
+ EditorStatusContribution._id = 'status.languageStatus';
336
+ EditorStatusContribution._keyDedicatedItems = 'languageStatus.dedicated';
337
+ EditorStatusContribution = ( __decorate([
338
+ ( __param(0, ILanguageStatusService)),
339
+ ( __param(1, IStatusbarService)),
340
+ ( __param(2, IEditorService)),
341
+ ( __param(3, IOpenerService)),
342
+ ( __param(4, IStorageService))
343
+ ], EditorStatusContribution));
344
+ ( Registry.as(Extensions.Workbench)).registerWorkbenchContribution(EditorStatusContribution, 3 );
345
+ registerAction2(class extends Action2 {
346
+ constructor() {
347
+ super({
348
+ id: 'editor.inlayHints.Reset',
349
+ title: {
350
+ value: ( localize('reset', 'Reset Language Status Interaction Counter')),
351
+ original: 'Reset Language Status Interaction Counter'
352
+ },
353
+ category: Categories.View,
354
+ f1: true
355
+ });
356
+ }
357
+ run(accessor) {
358
+ accessor.get(IStorageService).remove('languageStatus.interactCount', 0 );
359
+ }
360
+ });
@@ -0,0 +1,4 @@
1
+ import n from '../../../../../../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';
2
+ var css = "@keyframes wiggle{0%{transform:rotate(0) scale(1)}15%,45%{transform:rotate(.04turn) scale(1.1)}30%,60%{transform:rotate(-.04turn) scale(1.2)}to{transform:rotate(0) scale(1)}}.monaco-workbench .statusbar DIV#status\\.languageStatus A>SPAN.codicon.wiggle{animation-duration:.8s;animation-iteration-count:1;animation-name:wiggle}@keyframes flash{0%{background-color:initial}50%{background-color:var(--vscode-statusBarItem-prominentBackground)}to{background-color:initial}}.monaco-workbench .statusbar DIV#status\\.languageStatus.flash A{animation-duration:.8s;animation-iteration-count:1;animation-name:flash}.monaco-workbench .hover-language-status{display:flex;padding:4px 8px}.monaco-workbench .hover-language-status:not(:last-child){border-bottom:1px solid var(--vscode-notifications-border)}.monaco-workbench .hover-language-status>.severity{display:none;flex:1;margin:auto;padding-right:8px}.monaco-workbench .hover-language-status>.severity.sev3{color:var(--vscode-notificationsErrorIcon-foreground)}.monaco-workbench .hover-language-status>.severity.sev2{color:var(--vscode-notificationsInfoIcon-foreground)}.monaco-workbench .hover-language-status>.severity.show{display:inherit}.monaco-workbench .hover-language-status>.element{display:flex;flex-grow:100;justify-content:space-between;vertical-align:middle}.monaco-workbench .hover-language-status>.element>.left>.detail:not(:empty):before{content:\"\\2013\";opacity:.6;padding:0 4px}.monaco-workbench .hover-language-status>.element>.left>.label:empty{display:none}.monaco-workbench .hover-language-status>.element .left{margin:auto 0}.monaco-workbench .hover-language-status>.element .right{display:flex;margin:auto 0}.monaco-workbench .hover-language-status>.element .right:not(:empty){padding-left:16px}.monaco-workbench .hover-language-status>.element .right .monaco-link{margin:auto 0;white-space:nowrap}.monaco-workbench .hover-language-status>.element .right .monaco-action-bar:not(:first-child){padding-left:8px}";
3
+ n(css,{});
4
+ export { css, css as default };
@@ -0,0 +1,15 @@
1
+ import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
+ import { IContextKeyService } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
3
+ import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
4
+ import { Extensions } from '../../../common/contributions.js';
5
+ let ListContext = class ListContext {
6
+ constructor(contextKeyService) {
7
+ contextKeyService.createKey('listSupportsTypeNavigation', true);
8
+ contextKeyService.createKey('listSupportsKeyboardNavigation', true);
9
+ }
10
+ };
11
+ ListContext = ( __decorate([
12
+ ( __param(0, IContextKeyService))
13
+ ], ListContext));
14
+ ( Registry.as(Extensions.Workbench)).registerWorkbenchContribution(ListContext, 1 );
15
+ export { ListContext };
@@ -9,7 +9,7 @@ import Severity from 'monaco-editor/esm/vs/base/common/severity.js';
9
9
  import { IModelService } from 'monaco-editor/esm/vs/editor/common/services/model.js';
10
10
  import { ITextModelService } from 'monaco-editor/esm/vs/editor/common/services/resolverService.js';
11
11
  import { localize } from 'monaco-editor/esm/vs/nls.js';
12
- import { IDialogService } from 'monaco-editor/esm/vs/platform/dialogs/common/dialogs.js';
12
+ import '../../../../../../override/vs/platform/dialogs/common/dialogs.js';
13
13
  import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
14
14
  import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
15
15
  import { SaveSourceRegistry } from '../../../common/editor.js';
@@ -20,6 +20,7 @@ import { MergeEditorModel } from './model/mergeEditorModel.js';
20
20
  import { StorageCloseWithConflicts } from '../common/mergeEditor.js';
21
21
  import { IEditorService } from '../../../services/editor/common/editorService.js';
22
22
  import { ITextFileService } from '../../../services/textfile/common/textfiles.js';
23
+ import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
23
24
  let TempFileMergeEditorModeFactory = class TempFileMergeEditorModeFactory {
24
25
  constructor(_mergeEditorTelemetry, _instantiationService, _textModelService, _modelService) {
25
26
  this._mergeEditorTelemetry = _mergeEditorTelemetry;
@@ -0,0 +1,3 @@
1
+ import { RawContextKey } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
2
+ const NOTEBOOK_EDITOR_EDITABLE = ( new RawContextKey('notebookEditable', true));
3
+ export { NOTEBOOK_EDITOR_EDITABLE };
@@ -11,7 +11,7 @@ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiati
11
11
  import { IKeybindingService } from 'monaco-editor/esm/vs/platform/keybinding/common/keybinding.js';
12
12
  import { ICommandService } from 'monaco-editor/esm/vs/platform/commands/common/commands.js';
13
13
  import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
14
- import { IDialogService } from 'monaco-editor/esm/vs/platform/dialogs/common/dialogs.js';
14
+ import '../../../../../../override/vs/platform/dialogs/common/dialogs.js';
15
15
  import { DefaultQuickAccessFilterValue } from 'monaco-editor/esm/vs/platform/quickinput/common/quickAccess.js';
16
16
  import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
17
17
  import { Codicon } from 'monaco-editor/esm/vs/base/common/codicons.js';
@@ -27,6 +27,7 @@ import { IProductService } from 'monaco-editor/esm/vs/platform/product/common/pr
27
27
  import { ISemanticSimilarityService } from '../../../services/semanticSimilarity/common/semanticSimilarityService.js';
28
28
  import { IChatService } from '../../chat/common/chatService.js';
29
29
  import { ASK_QUICK_QUESTION_ACTION_ID } from '../../chat/browser/actions/chatQuickInputActions.js';
30
+ import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
30
31
  let CommandsQuickAccessProvider = class CommandsQuickAccessProvider extends AbstractEditorCommandsQuickAccessProvider {
31
32
  get activeTextEditorControl() { return this.editorService.activeTextEditorControl; }
32
33
  get defaultFilterValue() {
@@ -27,7 +27,7 @@ import { ICommandService } from 'monaco-editor/esm/vs/platform/commands/common/c
27
27
  import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
28
28
  import { IContextKeyService } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
29
29
  import { IContextViewService, IContextMenuService } from 'monaco-editor/esm/vs/platform/contextview/browser/contextView.js';
30
- import { IDialogService } from 'monaco-editor/esm/vs/platform/dialogs/common/dialogs.js';
30
+ import '../../../../../../override/vs/platform/dialogs/common/dialogs.js';
31
31
  import { IFileService } from 'monaco-editor/esm/vs/platform/files/common/files.js';
32
32
  import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
33
33
  import { ServiceCollection } from 'monaco-editor/esm/vs/platform/instantiation/common/serviceCollection.js';
@@ -69,6 +69,7 @@ import { ITextFileService } from '../../../services/textfile/common/textfiles.js
69
69
  import { INotebookService } from '../../notebook/common/notebookService.js';
70
70
  import { ILogService } from 'monaco-editor/esm/vs/platform/log/common/log.js';
71
71
  import { TextSearchCompleteMessageType } from '../../../services/search/common/searchExtTypes.js';
72
+ import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
72
73
  const $ = dom.$;
73
74
  const SEARCH_CANCELLED_MESSAGE = ( nls.localize(
74
75
  'searchCanceled',
@@ -6,7 +6,7 @@ import { isEqual, extname, joinPath } from 'monaco-editor/esm/vs/base/common/res
6
6
  import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
7
7
  import { IModelService } from 'monaco-editor/esm/vs/editor/common/services/model.js';
8
8
  import { localize } from 'monaco-editor/esm/vs/nls.js';
9
- import { IFileDialogService } from 'monaco-editor/esm/vs/platform/dialogs/common/dialogs.js';
9
+ import '../../../../../../override/vs/platform/dialogs/common/dialogs.js';
10
10
  import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
11
11
  import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
12
12
  import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
@@ -21,6 +21,7 @@ import { IWorkingCopyService } from '../../../services/workingCopy/common/workin
21
21
  import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
22
22
  import { bufferToReadable, VSBuffer } from 'monaco-editor/esm/vs/base/common/buffer.js';
23
23
  import { EditorInput } from '../../../common/editor/editorInput.js';
24
+ import { IFileDialogService } from '../../../../platform/dialogs/common/dialogs.js';
24
25
  const SEARCH_EDITOR_EXT = '.code-search';
25
26
  let SearchEditorInput = class SearchEditorInput extends EditorInput {
26
27
  get typeId() {
@@ -0,0 +1,20 @@
1
+ import { EditorAction2 } from 'monaco-editor/esm/vs/editor/browser/editorExtensions.js';
2
+ import { localize } from 'monaco-editor/esm/vs/nls.js';
3
+ import { Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
4
+ const defaultOptions = {
5
+ category: {
6
+ value: ( localize('snippets', 'Snippets')),
7
+ original: 'Snippets'
8
+ },
9
+ };
10
+ class SnippetsAction extends Action2 {
11
+ constructor(desc) {
12
+ super({ ...defaultOptions, ...desc });
13
+ }
14
+ }
15
+ class SnippetEditorAction extends EditorAction2 {
16
+ constructor(desc) {
17
+ super({ ...defaultOptions, ...desc });
18
+ }
19
+ }
20
+ export { SnippetEditorAction, SnippetsAction };