@codingame/monaco-vscode-extensions-service-override 1.83.8 → 1.83.9

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 (183) hide show
  1. package/assets/webWorkerExtensionHostIframe.html +123 -0
  2. package/extensions.d.ts +12 -13
  3. package/extensions.js +456 -0
  4. package/external/rollup-plugin-styles/dist/runtime/inject-css.js +3 -0
  5. package/external/tslib/tslib.es6.js +11 -0
  6. package/index.d.ts +1 -1
  7. package/index.js +2 -2
  8. package/override/vs/platform/dialogs/common/dialogs.js +8 -0
  9. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +8 -0
  10. package/override/vs/workbench/contrib/notebook/common/notebookEditorInput.js +3 -0
  11. package/package.json +5 -3
  12. package/tools/url.js +10 -0
  13. package/tools.js +5 -0
  14. package/vscode/src/vs/base/common/console.js +59 -0
  15. package/vscode/src/vs/base/common/prefixTree.js +131 -0
  16. package/vscode/src/vs/platform/files/common/watcher.js +71 -0
  17. package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +27 -0
  18. package/vscode/src/vs/platform/log/browser/log.js +26 -0
  19. package/vscode/src/vs/platform/remote/common/managedSocket.js +98 -0
  20. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +31 -0
  21. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +35 -0
  22. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +330 -0
  23. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +68 -0
  24. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +174 -0
  25. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents.js +52 -0
  26. package/vscode/src/vs/workbench/api/browser/mainThreadChatProvider.js +61 -0
  27. package/vscode/src/vs/workbench/api/browser/mainThreadChatSlashCommands.js +49 -0
  28. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +31 -0
  29. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +24 -0
  30. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +107 -0
  31. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +94 -0
  32. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +541 -0
  33. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -0
  34. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +35 -0
  35. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +578 -0
  36. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +387 -0
  37. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +102 -0
  38. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +69 -0
  39. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +68 -0
  40. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +75 -0
  41. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +249 -0
  42. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +370 -0
  43. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +22 -0
  44. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +41 -0
  45. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +411 -0
  46. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +475 -0
  47. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +227 -0
  48. package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +24 -0
  49. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +317 -0
  50. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +280 -0
  51. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +283 -0
  52. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +68 -0
  53. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +28 -0
  54. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +33 -0
  55. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +27 -0
  56. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +947 -0
  57. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +78 -0
  58. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +35 -0
  59. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +78 -0
  60. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +93 -0
  61. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +118 -0
  62. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +158 -0
  63. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +123 -0
  64. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +188 -0
  65. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +129 -0
  66. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +131 -0
  67. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +341 -0
  68. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +25 -0
  69. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +48 -0
  70. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +76 -0
  71. package/vscode/src/vs/workbench/api/browser/mainThreadProfilContentHandlers.js +38 -0
  72. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +68 -0
  73. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +49 -0
  74. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +185 -0
  75. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +30 -0
  76. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +463 -0
  77. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +49 -0
  78. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +148 -0
  79. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +70 -0
  80. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +50 -0
  81. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +53 -0
  82. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +72 -0
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +731 -0
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +53 -0
  85. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +412 -0
  86. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +182 -0
  87. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +24 -0
  88. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +55 -0
  89. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +313 -0
  90. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +223 -0
  91. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +110 -0
  92. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +61 -0
  93. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +29 -0
  94. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +283 -0
  95. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +100 -0
  96. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +135 -0
  97. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +57 -0
  98. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +273 -0
  99. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHost.api.impl.d.ts +2 -2
  100. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostConfiguration.d.ts +3 -3
  101. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostExtensionService.d.ts +3 -4
  102. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostManagedSockets.d.ts +2 -2
  103. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTerminalService.d.ts +19 -20
  104. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTunnelService.d.ts +7 -8
  105. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostWorkspace.d.ts +25 -26
  106. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +35 -0
  107. package/vscode/src/vs/workbench/contrib/chat/common/chatModel.js +217 -0
  108. package/vscode/src/vs/workbench/contrib/comments/browser/commentColors.js +57 -0
  109. package/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions.js +51 -0
  110. package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +92 -0
  111. package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +648 -0
  112. package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +297 -0
  113. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadAdditionalActions.js +62 -0
  114. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +249 -0
  115. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadHeader.js +109 -0
  116. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadRangeDecorator.js +109 -0
  117. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +331 -0
  118. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +380 -0
  119. package/vscode/src/vs/workbench/contrib/comments/browser/comments.js +5 -0
  120. package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +1196 -0
  121. package/vscode/src/vs/workbench/contrib/comments/browser/commentsFilterOptions.js +19 -0
  122. package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +334 -0
  123. package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +543 -0
  124. package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +178 -0
  125. package/vscode/src/vs/workbench/contrib/comments/browser/media/panel.css.js +6 -0
  126. package/vscode/src/vs/workbench/contrib/comments/browser/media/review.css.js +6 -0
  127. package/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.js +101 -0
  128. package/vscode/src/vs/workbench/contrib/comments/browser/timestamp.js +57 -0
  129. package/vscode/src/vs/workbench/contrib/comments/common/commentModel.js +145 -0
  130. package/vscode/src/vs/workbench/contrib/comments/common/commentsConfiguration.js +3 -0
  131. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +73 -0
  132. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +83 -0
  133. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +179 -0
  134. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveHistoryService.js +5 -0
  135. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +144 -0
  136. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +482 -0
  137. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeMarkers/mergeMarkersController.js +6 -0
  138. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +85 -0
  139. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/editing.js +56 -0
  140. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/lineRange.js +110 -0
  141. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +260 -0
  142. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +616 -0
  143. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.js +309 -0
  144. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/rangeUtils.js +38 -0
  145. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +167 -0
  146. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/telemetry.js +80 -0
  147. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/utils.js +70 -0
  148. package/vscode/src/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +3 -0
  149. package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorModel.js +108 -0
  150. package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +506 -0
  151. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js +132 -0
  152. package/vscode/src/vs/workbench/contrib/testing/common/getComputedState.js +103 -0
  153. package/vscode/src/vs/workbench/contrib/testing/common/observableValue.js +28 -0
  154. package/vscode/src/vs/workbench/contrib/testing/common/testCoverage.js +25 -0
  155. package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +336 -0
  156. package/vscode/src/vs/workbench/contrib/testing/common/testingStates.js +46 -0
  157. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +283 -0
  158. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +273 -0
  159. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +52 -0
  160. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +1093 -0
  161. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +41 -0
  162. package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +25 -0
  163. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +643 -0
  164. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +274 -0
  165. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +58 -0
  166. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +80 -0
  167. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +64 -0
  168. package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +49 -0
  169. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +220 -0
  170. package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +5 -0
  171. package/vscode/src/vs/workbench/services/workingCopy/common/resourceWorkingCopy.js +79 -0
  172. package/vscode-proposed.d.ts +0 -3872
  173. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHost.protocol.d.ts +0 -0
  174. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostExtensionActivator.d.ts +0 -0
  175. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostFileSystemInfo.d.ts +0 -0
  176. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostInitDataService.d.ts +0 -0
  177. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostLocalizationService.d.ts +0 -0
  178. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostRpcService.d.ts +0 -0
  179. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostStoragePaths.d.ts +0 -0
  180. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTypes.d.ts +0 -0
  181. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostUriTransformerService.d.ts +0 -0
  182. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/worker/extHostExtensionService.d.ts +0 -0
  183. /package/{dist/main/vscode → vscode}/src/vs/workbench/services/search/common/queryBuilder.d.ts +0 -0
@@ -0,0 +1,411 @@
1
+ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
2
+ import { DisposableStore } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
3
+ import { cursorStyleToString, TextEditorCursorStyle } from 'monaco-editor/esm/vs/editor/common/config/editorOptions.js';
4
+ import { Range } from 'monaco-editor/esm/vs/editor/common/core/range.js';
5
+ import { Selection } from 'monaco-editor/esm/vs/editor/common/core/selection.js';
6
+ import { SnippetController2 } from 'monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetController2.js';
7
+ import { TextEditorRevealType } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
8
+ import { equals } from 'monaco-editor/esm/vs/base/common/arrays.js';
9
+ import { EditorState } from 'monaco-editor/esm/vs/editor/contrib/editorState/browser/editorState.js';
10
+ import { SnippetParser } from 'monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetParser.js';
11
+
12
+ class MainThreadTextEditorProperties {
13
+ static readFromEditor(previousProperties, model, codeEditor) {
14
+ const selections = MainThreadTextEditorProperties._readSelectionsFromCodeEditor(previousProperties, codeEditor);
15
+ const options = MainThreadTextEditorProperties._readOptionsFromCodeEditor(previousProperties, model, codeEditor);
16
+ const visibleRanges = MainThreadTextEditorProperties._readVisibleRangesFromCodeEditor(previousProperties, codeEditor);
17
+ return ( new MainThreadTextEditorProperties(selections, options, visibleRanges));
18
+ }
19
+ static _readSelectionsFromCodeEditor(previousProperties, codeEditor) {
20
+ let result = null;
21
+ if (codeEditor) {
22
+ result = codeEditor.getSelections();
23
+ }
24
+ if (!result && previousProperties) {
25
+ result = previousProperties.selections;
26
+ }
27
+ if (!result) {
28
+ result = [( new Selection(1, 1, 1, 1))];
29
+ }
30
+ return result;
31
+ }
32
+ static _readOptionsFromCodeEditor(previousProperties, model, codeEditor) {
33
+ if (model.isDisposed()) {
34
+ if (previousProperties) {
35
+ return previousProperties.options;
36
+ }
37
+ else {
38
+ throw new Error('No valid properties');
39
+ }
40
+ }
41
+ let cursorStyle;
42
+ let lineNumbers;
43
+ if (codeEditor) {
44
+ const options = codeEditor.getOptions();
45
+ const lineNumbersOpts = options.get(67 );
46
+ cursorStyle = options.get(28 );
47
+ lineNumbers = lineNumbersOpts.renderType;
48
+ }
49
+ else if (previousProperties) {
50
+ cursorStyle = previousProperties.options.cursorStyle;
51
+ lineNumbers = previousProperties.options.lineNumbers;
52
+ }
53
+ else {
54
+ cursorStyle = TextEditorCursorStyle.Line;
55
+ lineNumbers = 1 ;
56
+ }
57
+ const modelOptions = model.getOptions();
58
+ return {
59
+ insertSpaces: modelOptions.insertSpaces,
60
+ tabSize: modelOptions.tabSize,
61
+ indentSize: modelOptions.indentSize,
62
+ cursorStyle: cursorStyle,
63
+ lineNumbers: lineNumbers
64
+ };
65
+ }
66
+ static _readVisibleRangesFromCodeEditor(previousProperties, codeEditor) {
67
+ if (codeEditor) {
68
+ return codeEditor.getVisibleRanges();
69
+ }
70
+ return [];
71
+ }
72
+ constructor(selections, options, visibleRanges) {
73
+ this.selections = selections;
74
+ this.options = options;
75
+ this.visibleRanges = visibleRanges;
76
+ }
77
+ generateDelta(oldProps, selectionChangeSource) {
78
+ const delta = {
79
+ options: null,
80
+ selections: null,
81
+ visibleRanges: null
82
+ };
83
+ if (!oldProps || !MainThreadTextEditorProperties._selectionsEqual(oldProps.selections, this.selections)) {
84
+ delta.selections = {
85
+ selections: this.selections,
86
+ source: selectionChangeSource ?? undefined,
87
+ };
88
+ }
89
+ if (!oldProps || !MainThreadTextEditorProperties._optionsEqual(oldProps.options, this.options)) {
90
+ delta.options = this.options;
91
+ }
92
+ if (!oldProps || !MainThreadTextEditorProperties._rangesEqual(oldProps.visibleRanges, this.visibleRanges)) {
93
+ delta.visibleRanges = this.visibleRanges;
94
+ }
95
+ if (delta.selections || delta.options || delta.visibleRanges) {
96
+ return delta;
97
+ }
98
+ return null;
99
+ }
100
+ static _selectionsEqual(a, b) {
101
+ return equals(a, b, (aValue, bValue) => aValue.equalsSelection(bValue));
102
+ }
103
+ static _rangesEqual(a, b) {
104
+ return equals(a, b, (aValue, bValue) => aValue.equalsRange(bValue));
105
+ }
106
+ static _optionsEqual(a, b) {
107
+ if (a && !b || !a && b) {
108
+ return false;
109
+ }
110
+ if (!a && !b) {
111
+ return true;
112
+ }
113
+ return (a.tabSize === b.tabSize
114
+ && a.indentSize === b.indentSize
115
+ && a.insertSpaces === b.insertSpaces
116
+ && a.cursorStyle === b.cursorStyle
117
+ && a.lineNumbers === b.lineNumbers);
118
+ }
119
+ }
120
+ class MainThreadTextEditor {
121
+ constructor(id, model, codeEditor, focusTracker, mainThreadDocuments, modelService, clipboardService) {
122
+ this._modelListeners = ( new DisposableStore());
123
+ this._codeEditorListeners = ( new DisposableStore());
124
+ this._id = id;
125
+ this._model = model;
126
+ this._codeEditor = null;
127
+ this._properties = null;
128
+ this._focusTracker = focusTracker;
129
+ this._mainThreadDocuments = mainThreadDocuments;
130
+ this._modelService = modelService;
131
+ this._clipboardService = clipboardService;
132
+ this._onPropertiesChanged = ( new Emitter());
133
+ this._modelListeners.add(this._model.onDidChangeOptions((e) => {
134
+ this._updatePropertiesNow(null);
135
+ }));
136
+ this.setCodeEditor(codeEditor);
137
+ this._updatePropertiesNow(null);
138
+ }
139
+ dispose() {
140
+ this._modelListeners.dispose();
141
+ this._codeEditor = null;
142
+ this._codeEditorListeners.dispose();
143
+ }
144
+ _updatePropertiesNow(selectionChangeSource) {
145
+ this._setProperties(MainThreadTextEditorProperties.readFromEditor(this._properties, this._model, this._codeEditor), selectionChangeSource);
146
+ }
147
+ _setProperties(newProperties, selectionChangeSource) {
148
+ const delta = newProperties.generateDelta(this._properties, selectionChangeSource);
149
+ this._properties = newProperties;
150
+ if (delta) {
151
+ this._onPropertiesChanged.fire(delta);
152
+ }
153
+ }
154
+ getId() {
155
+ return this._id;
156
+ }
157
+ getModel() {
158
+ return this._model;
159
+ }
160
+ getCodeEditor() {
161
+ return this._codeEditor;
162
+ }
163
+ hasCodeEditor(codeEditor) {
164
+ return (this._codeEditor === codeEditor);
165
+ }
166
+ setCodeEditor(codeEditor) {
167
+ if (this.hasCodeEditor(codeEditor)) {
168
+ return;
169
+ }
170
+ this._codeEditorListeners.clear();
171
+ this._codeEditor = codeEditor;
172
+ if (this._codeEditor) {
173
+ this._codeEditorListeners.add(this._codeEditor.onDidChangeModel(() => {
174
+ this.setCodeEditor(null);
175
+ }));
176
+ this._codeEditorListeners.add(this._codeEditor.onDidFocusEditorWidget(() => {
177
+ this._focusTracker.onGainedFocus();
178
+ }));
179
+ this._codeEditorListeners.add(this._codeEditor.onDidBlurEditorWidget(() => {
180
+ this._focusTracker.onLostFocus();
181
+ }));
182
+ let nextSelectionChangeSource = null;
183
+ this._codeEditorListeners.add(this._mainThreadDocuments.onIsCaughtUpWithContentChanges((uri) => {
184
+ if (( uri.toString()) === ( this._model.uri.toString())) {
185
+ const selectionChangeSource = nextSelectionChangeSource;
186
+ nextSelectionChangeSource = null;
187
+ this._updatePropertiesNow(selectionChangeSource);
188
+ }
189
+ }));
190
+ const isValidCodeEditor = () => {
191
+ return (this._codeEditor && this._codeEditor.getModel() === this._model);
192
+ };
193
+ const updateProperties = (selectionChangeSource) => {
194
+ if (this._mainThreadDocuments.isCaughtUpWithContentChanges(this._model.uri)) {
195
+ nextSelectionChangeSource = null;
196
+ this._updatePropertiesNow(selectionChangeSource);
197
+ }
198
+ else {
199
+ nextSelectionChangeSource = selectionChangeSource;
200
+ }
201
+ };
202
+ this._codeEditorListeners.add(this._codeEditor.onDidChangeCursorSelection((e) => {
203
+ if (!isValidCodeEditor()) {
204
+ return;
205
+ }
206
+ updateProperties(e.source);
207
+ }));
208
+ this._codeEditorListeners.add(this._codeEditor.onDidChangeConfiguration((e) => {
209
+ if (!isValidCodeEditor()) {
210
+ return;
211
+ }
212
+ updateProperties(null);
213
+ }));
214
+ this._codeEditorListeners.add(this._codeEditor.onDidLayoutChange(() => {
215
+ if (!isValidCodeEditor()) {
216
+ return;
217
+ }
218
+ updateProperties(null);
219
+ }));
220
+ this._codeEditorListeners.add(this._codeEditor.onDidScrollChange(() => {
221
+ if (!isValidCodeEditor()) {
222
+ return;
223
+ }
224
+ updateProperties(null);
225
+ }));
226
+ this._updatePropertiesNow(null);
227
+ }
228
+ }
229
+ isVisible() {
230
+ return !!this._codeEditor;
231
+ }
232
+ getProperties() {
233
+ return this._properties;
234
+ }
235
+ get onPropertiesChanged() {
236
+ return this._onPropertiesChanged.event;
237
+ }
238
+ setSelections(selections) {
239
+ if (this._codeEditor) {
240
+ this._codeEditor.setSelections(selections);
241
+ return;
242
+ }
243
+ const newSelections = ( selections.map(Selection.liftSelection));
244
+ this._setProperties(( new MainThreadTextEditorProperties(newSelections, this._properties.options, this._properties.visibleRanges)), null);
245
+ }
246
+ _setIndentConfiguration(newConfiguration) {
247
+ const creationOpts = this._modelService.getCreationOptions(this._model.getLanguageId(), this._model.uri, this._model.isForSimpleWidget);
248
+ if (newConfiguration.tabSize === 'auto' || newConfiguration.insertSpaces === 'auto') {
249
+ let insertSpaces = creationOpts.insertSpaces;
250
+ let tabSize = creationOpts.tabSize;
251
+ if (newConfiguration.insertSpaces !== 'auto' && typeof newConfiguration.insertSpaces !== 'undefined') {
252
+ insertSpaces = newConfiguration.insertSpaces;
253
+ }
254
+ if (newConfiguration.tabSize !== 'auto' && typeof newConfiguration.tabSize !== 'undefined') {
255
+ tabSize = newConfiguration.tabSize;
256
+ }
257
+ this._model.detectIndentation(insertSpaces, tabSize);
258
+ return;
259
+ }
260
+ const newOpts = {};
261
+ if (typeof newConfiguration.insertSpaces !== 'undefined') {
262
+ newOpts.insertSpaces = newConfiguration.insertSpaces;
263
+ }
264
+ if (typeof newConfiguration.tabSize !== 'undefined') {
265
+ newOpts.tabSize = newConfiguration.tabSize;
266
+ }
267
+ if (typeof newConfiguration.indentSize !== 'undefined') {
268
+ newOpts.indentSize = newConfiguration.indentSize;
269
+ }
270
+ this._model.updateOptions(newOpts);
271
+ }
272
+ setConfiguration(newConfiguration) {
273
+ this._setIndentConfiguration(newConfiguration);
274
+ if (!this._codeEditor) {
275
+ return;
276
+ }
277
+ if (newConfiguration.cursorStyle) {
278
+ const newCursorStyle = cursorStyleToString(newConfiguration.cursorStyle);
279
+ this._codeEditor.updateOptions({
280
+ cursorStyle: newCursorStyle
281
+ });
282
+ }
283
+ if (typeof newConfiguration.lineNumbers !== 'undefined') {
284
+ let lineNumbers;
285
+ switch (newConfiguration.lineNumbers) {
286
+ case 1 :
287
+ lineNumbers = 'on';
288
+ break;
289
+ case 2 :
290
+ lineNumbers = 'relative';
291
+ break;
292
+ default:
293
+ lineNumbers = 'off';
294
+ }
295
+ this._codeEditor.updateOptions({
296
+ lineNumbers: lineNumbers
297
+ });
298
+ }
299
+ }
300
+ setDecorations(key, ranges) {
301
+ if (!this._codeEditor) {
302
+ return;
303
+ }
304
+ this._codeEditor.setDecorationsByType('exthost-api', key, ranges);
305
+ }
306
+ setDecorationsFast(key, _ranges) {
307
+ if (!this._codeEditor) {
308
+ return;
309
+ }
310
+ const ranges = [];
311
+ for (let i = 0, len = Math.floor(_ranges.length / 4); i < len; i++) {
312
+ ranges[i] = ( new Range(_ranges[4 * i], _ranges[4 * i + 1], _ranges[4 * i + 2], _ranges[4 * i + 3]));
313
+ }
314
+ this._codeEditor.setDecorationsByTypeFast(key, ranges);
315
+ }
316
+ revealRange(range, revealType) {
317
+ if (!this._codeEditor) {
318
+ return;
319
+ }
320
+ switch (revealType) {
321
+ case TextEditorRevealType.Default:
322
+ this._codeEditor.revealRange(range, 0 );
323
+ break;
324
+ case TextEditorRevealType.InCenter:
325
+ this._codeEditor.revealRangeInCenter(range, 0 );
326
+ break;
327
+ case TextEditorRevealType.InCenterIfOutsideViewport:
328
+ this._codeEditor.revealRangeInCenterIfOutsideViewport(range, 0 );
329
+ break;
330
+ case TextEditorRevealType.AtTop:
331
+ this._codeEditor.revealRangeAtTop(range, 0 );
332
+ break;
333
+ default:
334
+ console.warn(`Unknown revealType: ${revealType}`);
335
+ break;
336
+ }
337
+ }
338
+ isFocused() {
339
+ if (this._codeEditor) {
340
+ return this._codeEditor.hasTextFocus();
341
+ }
342
+ return false;
343
+ }
344
+ matches(editor) {
345
+ if (!editor) {
346
+ return false;
347
+ }
348
+ return editor.getControl() === this._codeEditor;
349
+ }
350
+ applyEdits(versionIdCheck, edits, opts) {
351
+ if (this._model.getVersionId() !== versionIdCheck) {
352
+ return false;
353
+ }
354
+ if (!this._codeEditor) {
355
+ return false;
356
+ }
357
+ if (typeof opts.setEndOfLine !== 'undefined') {
358
+ this._model.pushEOL(opts.setEndOfLine);
359
+ }
360
+ const transformedEdits = ( edits.map((edit) => {
361
+ return {
362
+ range: Range.lift(edit.range),
363
+ text: edit.text,
364
+ forceMoveMarkers: edit.forceMoveMarkers
365
+ };
366
+ }));
367
+ if (opts.undoStopBefore) {
368
+ this._codeEditor.pushUndoStop();
369
+ }
370
+ this._codeEditor.executeEdits('MainThreadTextEditor', transformedEdits);
371
+ if (opts.undoStopAfter) {
372
+ this._codeEditor.pushUndoStop();
373
+ }
374
+ return true;
375
+ }
376
+ async insertSnippet(modelVersionId, template, ranges, opts) {
377
+ if (!this._codeEditor || !this._codeEditor.hasModel()) {
378
+ return false;
379
+ }
380
+ let clipboardText;
381
+ const needsTemplate = SnippetParser.guessNeedsClipboard(template);
382
+ if (needsTemplate) {
383
+ const state = ( new EditorState(
384
+ this._codeEditor,
385
+ 1 | 4
386
+ ));
387
+ clipboardText = await this._clipboardService.readText();
388
+ if (!state.validate(this._codeEditor)) {
389
+ return false;
390
+ }
391
+ }
392
+ if (this._codeEditor.getModel().getVersionId() !== modelVersionId) {
393
+ return false;
394
+ }
395
+ const snippetController = SnippetController2.get(this._codeEditor);
396
+ if (!snippetController) {
397
+ return false;
398
+ }
399
+ const selections = ( ranges.map(r => ( new Selection(r.startLineNumber, r.startColumn, r.endLineNumber, r.endColumn))));
400
+ this._codeEditor.setSelections(selections);
401
+ this._codeEditor.focus();
402
+ snippetController.insert(template, {
403
+ overwriteBefore: 0, overwriteAfter: 0,
404
+ undoStopBefore: opts.undoStopBefore, undoStopAfter: opts.undoStopAfter,
405
+ clipboardText
406
+ });
407
+ return true;
408
+ }
409
+ }
410
+
411
+ export { MainThreadTextEditor, MainThreadTextEditorProperties };