monaco-editor-core 0.54.0 → 0.55.0-dev-20251008
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.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/canIUse.js +1 -0
- package/esm/vs/base/browser/canIUse.js.map +1 -1
- package/esm/vs/base/browser/dom.js +9 -0
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/fastDomNode.js.map +1 -1
- package/esm/vs/base/browser/mouseEvent.js +3 -0
- package/esm/vs/base/browser/mouseEvent.js.map +1 -1
- package/esm/vs/base/browser/trustedTypes.js +2 -0
- package/esm/vs/base/browser/trustedTypes.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js +5 -5
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/sash/sash.css +1 -1
- package/esm/vs/base/browser/ui/sash/sash.js +4 -0
- package/esm/vs/base/browser/ui/sash/sash.js.map +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
- package/esm/vs/base/browser/ui/table/table.css +2 -2
- package/esm/vs/base/browser/ui/tree/abstractTree.js +5 -4
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +6 -4
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/dataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/media/tree.css +2 -2
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/webWorkerFactory.js +3 -0
- package/esm/vs/base/browser/webWorkerFactory.js.map +1 -1
- package/esm/vs/base/common/buffer.js.map +1 -1
- package/esm/vs/base/common/decorators.js +1 -0
- package/esm/vs/base/common/decorators.js.map +1 -1
- package/esm/vs/base/common/errors.js +1 -0
- package/esm/vs/base/common/errors.js.map +1 -1
- package/esm/vs/base/common/glob.js +1 -1
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/hash.js.map +1 -1
- package/esm/vs/base/common/hotReload.js +2 -0
- package/esm/vs/base/common/hotReload.js.map +1 -1
- package/esm/vs/base/common/hotReloadHelpers.js +1 -0
- package/esm/vs/base/common/hotReloadHelpers.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +19 -0
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/map.js.map +1 -1
- package/esm/vs/base/common/marshalling.js +4 -0
- package/esm/vs/base/common/marshalling.js.map +1 -1
- package/esm/vs/base/common/network.js +1 -0
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/normalization.js +39 -0
- package/esm/vs/base/common/normalization.js.map +1 -0
- package/esm/vs/base/common/objects.js +1 -0
- package/esm/vs/base/common/objects.js.map +1 -1
- package/esm/vs/base/common/observableInternal/changeTracker.js +4 -0
- package/esm/vs/base/common/observableInternal/changeTracker.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugLocation.js +1 -0
- package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugName.js +1 -0
- package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js +7 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +2 -0
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -0
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +1 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/process.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/types.js +2 -0
- package/esm/vs/base/common/types.js.map +1 -1
- package/esm/vs/base/common/worker/webWorker.js +26 -14
- package/esm/vs/base/common/worker/webWorker.js.map +1 -1
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js +2 -0
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js.map +1 -0
- package/esm/vs/editor/browser/config/editorConfiguration.js +3 -2
- package/esm/vs/editor/browser/config/editorConfiguration.js.map +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/editContextFactory.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js +2 -0
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +2 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseTarget.js +7 -0
- package/esm/vs/editor/browser/controller/mouseTarget.js.map +1 -1
- package/esm/vs/editor/browser/controller/pointerHandler.js.map +1 -1
- package/esm/vs/editor/browser/coreCommands.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorDom.js.map +1 -1
- package/esm/vs/editor/browser/editorExtensions.js.map +1 -1
- package/esm/vs/editor/browser/gpu/gpuUtils.js +1 -0
- package/esm/vs/editor/browser/gpu/gpuUtils.js.map +1 -1
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -0
- package/esm/vs/editor/browser/gpu/viewGpuContext.js.map +1 -1
- package/esm/vs/editor/browser/services/abstractCodeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/bulkEditService.js.map +1 -1
- package/esm/vs/editor/browser/services/codeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hover.css +2 -0
- package/esm/vs/editor/browser/services/hoverService/hoverService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/services/inlineCompletionsService.js +8 -8
- package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js.map +1 -1
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +1 -0
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +1 -0
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorContributions.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +4 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/delegatingEditorImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/utils.js +2 -0
- package/esm/vs/editor/browser/widget/diffEditor/utils.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +122 -68
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfo.js +32 -16
- package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfoFromSettings.js +16 -0
- package/esm/vs/editor/common/config/fontInfoFromSettings.js.map +1 -0
- package/esm/vs/editor/common/core/edits/edit.js +1 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +2 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/position.js +1 -1
- package/esm/vs/editor/common/core/position.js.map +1 -1
- package/esm/vs/editor/common/core/range.js +1 -1
- package/esm/vs/editor/common/core/range.js.map +1 -1
- package/esm/vs/editor/common/core/selection.js +1 -1
- package/esm/vs/editor/common/core/selection.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/editorCommon.js.map +1 -1
- package/esm/vs/editor/common/languages.js +1 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js +14 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js +2 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js.map +1 -1
- package/esm/vs/editor/common/model/textModel.js +1 -1
- package/esm/vs/editor/common/model/textModel.js.map +1 -1
- package/esm/vs/editor/common/model.js +1 -1
- package/esm/vs/editor/common/model.js.map +1 -1
- package/esm/vs/editor/common/services/editorBaseApi.js.map +1 -1
- package/esm/vs/editor/common/services/editorWebWorker.js +1 -0
- package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
- package/esm/vs/editor/common/services/editorWorkerHost.js.map +1 -1
- package/esm/vs/editor/common/services/modelService.js +14 -21
- package/esm/vs/editor/common/services/modelService.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +2 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +40 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +2 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js.map +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +1 -0
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +1 -0
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findModel.js +1 -0
- package/esm/vs/editor/contrib/find/browser/findModel.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.css +5 -5
- package/esm/vs/editor/contrib/folding/browser/folding.css +4 -4
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +30 -14
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +5 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +56 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +2 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +27 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +8 -8
- package/esm/vs/editor/editor.api.js +4 -0
- package/esm/vs/editor/editor.api.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneEditor.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js +3 -0
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js.map +1 -1
- package/esm/vs/platform/accessibility/browser/accessibilityService.js +2 -2
- package/esm/vs/platform/accessibility/browser/accessibilityService.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/commands/common/commands.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +5 -0
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js +1 -1
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js.map +1 -1
- package/esm/vs/platform/dnd/browser/dnd.js +1 -1
- package/esm/vs/platform/dnd/browser/dnd.js.map +1 -1
- package/esm/vs/platform/instantiation/common/descriptors.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -0
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/list/browser/listService.js +5 -0
- package/esm/vs/platform/list/browser/listService.js.map +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/log/common/logService.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInHotClass.js +2 -0
- package/esm/vs/platform/observable/common/wrapInHotClass.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js +3 -0
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js.map +1 -1
- package/esm/vs/platform/product/common/product.js +68 -0
- package/esm/vs/platform/product/common/product.js.map +1 -0
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +26 -2
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/monaco.d.ts +8 -8
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/abstractCodeEditorService.ts","vs/editor/browser/services/abstractCodeEditorService.ts"],"names":[],"mappings":"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","file":"abstractCodeEditorService.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { IDisposable, Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { ICodeEditor, IDiffEditor } from '../editorBrowser.js';\nimport { ICodeEditorOpenHandler, ICodeEditorService } from './codeEditorService.js';\nimport { IResourceEditorInput } from '../../../platform/editor/common/editor.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\n\nexport abstract class AbstractCodeEditorService extends Disposable implements ICodeEditorService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _onWillCreateCodeEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onCodeEditorAdd: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorAdd: Event<ICodeEditor> = this._onCodeEditorAdd.event;\n\n\tprivate readonly _onCodeEditorRemove: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorRemove: Event<ICodeEditor> = this._onCodeEditorRemove.event;\n\n\tprivate readonly _onWillCreateDiffEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onDiffEditorAdd: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorAdd: Event<IDiffEditor> = this._onDiffEditorAdd.event;\n\n\tprivate readonly _onDiffEditorRemove: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorRemove: Event<IDiffEditor> = this._onDiffEditorRemove.event;\n\n\tprivate readonly _codeEditors: { [editorId: string]: ICodeEditor };\n\tprivate readonly _diffEditors: { [editorId: string]: IDiffEditor };\n\tprotected _globalStyleSheet: GlobalStyleSheet | null;\n\tprivate readonly _decorationOptionProviders = new Map<string, IModelDecorationOptionsProvider>();\n\tprivate readonly _codeEditorOpenHandlers = new LinkedList<ICodeEditorOpenHandler>();\n\n\tconstructor(\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t\tthis._codeEditors = Object.create(null);\n\t\tthis._diffEditors = Object.create(null);\n\t\tthis._globalStyleSheet = null;\n\t}\n\n\twillCreateCodeEditor(): void {\n\t\tthis._onWillCreateCodeEditor.fire();\n\t}\n\n\taddCodeEditor(editor: ICodeEditor): void {\n\t\tthis._codeEditors[editor.getId()] = editor;\n\t\tthis._onCodeEditorAdd.fire(editor);\n\t}\n\n\tremoveCodeEditor(editor: ICodeEditor): void {\n\t\tif (delete this._codeEditors[editor.getId()]) {\n\t\t\tthis._onCodeEditorRemove.fire(editor);\n\t\t}\n\t}\n\n\tlistCodeEditors(): ICodeEditor[] {\n\t\treturn Object.keys(this._codeEditors).map(id => this._codeEditors[id]);\n\t}\n\n\twillCreateDiffEditor(): void {\n\t\tthis._onWillCreateDiffEditor.fire();\n\t}\n\n\taddDiffEditor(editor: IDiffEditor): void {\n\t\tthis._diffEditors[editor.getId()] = editor;\n\t\tthis._onDiffEditorAdd.fire(editor);\n\t}\n\n\tlistDiffEditors(): IDiffEditor[] {\n\t\treturn Object.keys(this._diffEditors).map(id => this._diffEditors[id]);\n\t}\n\n\tgetFocusedCodeEditor(): ICodeEditor | null {\n\t\tlet editorWithWidgetFocus: ICodeEditor | null = null;\n\n\t\tconst editors = this.listCodeEditors();\n\t\tfor (const editor of editors) {\n\n\t\t\tif (editor.hasTextFocus()) {\n\t\t\t\t// bingo!\n\t\t\t\treturn editor;\n\t\t\t}\n\n\t\t\tif (editor.hasWidgetFocus()) {\n\t\t\t\teditorWithWidgetFocus = editor;\n\t\t\t}\n\t\t}\n\n\t\treturn editorWithWidgetFocus;\n\t}\n\n\tpublic removeDecorationType(key: string): void {\n\t\tconst provider = this._decorationOptionProviders.get(key);\n\t\tif (provider) {\n\t\t\tprovider.refCount--;\n\t\t\tif (provider.refCount <= 0) {\n\t\t\t\tthis._decorationOptionProviders.delete(key);\n\t\t\t\tprovider.dispose();\n\t\t\t\tthis.listCodeEditors().forEach((ed) => ed.removeDecorationsByType(key));\n\t\t\t}\n\t\t}\n\t}\n\tprivate readonly _modelProperties = new Map<string, Map<string, any>>();\n\n\tpublic setModelProperty(resource: URI, key: string, value: any): void {\n\t\tconst key1 = resource.toString();\n\t\tlet dest: Map<string, any>;\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tdest = this._modelProperties.get(key1)!;\n\t\t} else {\n\t\t\tdest = new Map<string, any>();\n\t\t\tthis._modelProperties.set(key1, dest);\n\t\t}\n\n\t\tdest.set(key, value);\n\t}\n\n\tpublic getModelProperty(resource: URI, key: string): any {\n\t\tconst key1 = resource.toString();\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tconst innerMap = this._modelProperties.get(key1)!;\n\t\t\treturn innerMap.get(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tabstract getActiveCodeEditor(): ICodeEditor | null;\n\n\tasync openCodeEditor(input: IResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null> {\n\t\tfor (const handler of this._codeEditorOpenHandlers) {\n\t\t\tconst candidate = await handler(input, source, sideBySide);\n\t\t\tif (candidate !== null) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tregisterCodeEditorOpenHandler(handler: ICodeEditorOpenHandler): IDisposable {\n\t\tconst rm = this._codeEditorOpenHandlers.unshift(handler);\n\t\treturn toDisposable(rm);\n\t}\n}\n\nexport class GlobalStyleSheet {\n\tprivate readonly _styleSheet: HTMLStyleElement;\n\n\tconstructor(styleSheet: HTMLStyleElement) {\n\t\tthis._styleSheet = styleSheet;\n\t}\n}\n\ninterface IModelDecorationOptionsProvider extends IDisposable {\n\trefCount: number;\n}\n","\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { IDisposable, Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { ICodeEditor, IDiffEditor } from '../editorBrowser.js';\nimport { ICodeEditorOpenHandler, ICodeEditorService } from './codeEditorService.js';\nimport { IResourceEditorInput } from '../../../platform/editor/common/editor.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\n\nexport abstract class AbstractCodeEditorService extends Disposable implements ICodeEditorService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _onWillCreateCodeEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onCodeEditorAdd: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorAdd: Event<ICodeEditor> = this._onCodeEditorAdd.event;\n\n\tprivate readonly _onCodeEditorRemove: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorRemove: Event<ICodeEditor> = this._onCodeEditorRemove.event;\n\n\tprivate readonly _onWillCreateDiffEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onDiffEditorAdd: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorAdd: Event<IDiffEditor> = this._onDiffEditorAdd.event;\n\n\tprivate readonly _onDiffEditorRemove: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorRemove: Event<IDiffEditor> = this._onDiffEditorRemove.event;\n\n\tprivate readonly _codeEditors: { [editorId: string]: ICodeEditor };\n\tprivate readonly _diffEditors: { [editorId: string]: IDiffEditor };\n\tprotected _globalStyleSheet: GlobalStyleSheet | null;\n\tprivate readonly _decorationOptionProviders = new Map<string, IModelDecorationOptionsProvider>();\n\tprivate readonly _codeEditorOpenHandlers = new LinkedList<ICodeEditorOpenHandler>();\n\n\tconstructor(\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t\tthis._codeEditors = Object.create(null);\n\t\tthis._diffEditors = Object.create(null);\n\t\tthis._globalStyleSheet = null;\n\t}\n\n\twillCreateCodeEditor(): void {\n\t\tthis._onWillCreateCodeEditor.fire();\n\t}\n\n\taddCodeEditor(editor: ICodeEditor): void {\n\t\tthis._codeEditors[editor.getId()] = editor;\n\t\tthis._onCodeEditorAdd.fire(editor);\n\t}\n\n\tremoveCodeEditor(editor: ICodeEditor): void {\n\t\tif (delete this._codeEditors[editor.getId()]) {\n\t\t\tthis._onCodeEditorRemove.fire(editor);\n\t\t}\n\t}\n\n\tlistCodeEditors(): ICodeEditor[] {\n\t\treturn Object.keys(this._codeEditors).map(id => this._codeEditors[id]);\n\t}\n\n\twillCreateDiffEditor(): void {\n\t\tthis._onWillCreateDiffEditor.fire();\n\t}\n\n\taddDiffEditor(editor: IDiffEditor): void {\n\t\tthis._diffEditors[editor.getId()] = editor;\n\t\tthis._onDiffEditorAdd.fire(editor);\n\t}\n\n\tlistDiffEditors(): IDiffEditor[] {\n\t\treturn Object.keys(this._diffEditors).map(id => this._diffEditors[id]);\n\t}\n\n\tgetFocusedCodeEditor(): ICodeEditor | null {\n\t\tlet editorWithWidgetFocus: ICodeEditor | null = null;\n\n\t\tconst editors = this.listCodeEditors();\n\t\tfor (const editor of editors) {\n\n\t\t\tif (editor.hasTextFocus()) {\n\t\t\t\t// bingo!\n\t\t\t\treturn editor;\n\t\t\t}\n\n\t\t\tif (editor.hasWidgetFocus()) {\n\t\t\t\teditorWithWidgetFocus = editor;\n\t\t\t}\n\t\t}\n\n\t\treturn editorWithWidgetFocus;\n\t}\n\n\tpublic removeDecorationType(key: string): void {\n\t\tconst provider = this._decorationOptionProviders.get(key);\n\t\tif (provider) {\n\t\t\tprovider.refCount--;\n\t\t\tif (provider.refCount <= 0) {\n\t\t\t\tthis._decorationOptionProviders.delete(key);\n\t\t\t\tprovider.dispose();\n\t\t\t\tthis.listCodeEditors().forEach((ed) => ed.removeDecorationsByType(key));\n\t\t\t}\n\t\t}\n\t}\n\tprivate readonly _modelProperties = new Map<string, Map<string, any>>();\n\n\tpublic setModelProperty(resource: URI, key: string, value: any): void {\n\t\tconst key1 = resource.toString();\n\t\tlet dest: Map<string, any>;\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tdest = this._modelProperties.get(key1)!;\n\t\t} else {\n\t\t\tdest = new Map<string, any>();\n\t\t\tthis._modelProperties.set(key1, dest);\n\t\t}\n\n\t\tdest.set(key, value);\n\t}\n\n\tpublic getModelProperty(resource: URI, key: string): any {\n\t\tconst key1 = resource.toString();\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tconst innerMap = this._modelProperties.get(key1)!;\n\t\t\treturn innerMap.get(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tabstract getActiveCodeEditor(): ICodeEditor | null;\n\n\tasync openCodeEditor(input: IResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null> {\n\t\tfor (const handler of this._codeEditorOpenHandlers) {\n\t\t\tconst candidate = await handler(input, source, sideBySide);\n\t\t\tif (candidate !== null) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tregisterCodeEditorOpenHandler(handler: ICodeEditorOpenHandler): IDisposable {\n\t\tconst rm = this._codeEditorOpenHandlers.unshift(handler);\n\t\treturn toDisposable(rm);\n\t}\n}\n\nexport class GlobalStyleSheet {\n\tprivate readonly _styleSheet: HTMLStyleElement;\n\n\tconstructor(styleSheet: HTMLStyleElement) {\n\t\tthis._styleSheet = styleSheet;\n\t}\n}\n\ninterface IModelDecorationOptionsProvider extends IDisposable {\n\trefCount: number;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/abstractCodeEditorService.ts","vs/editor/browser/services/abstractCodeEditorService.ts"],"names":[],"mappings":"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","file":"abstractCodeEditorService.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { IDisposable, Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { ICodeEditor, IDiffEditor } from '../editorBrowser.js';\nimport { ICodeEditorOpenHandler, ICodeEditorService } from './codeEditorService.js';\nimport { IResourceEditorInput } from '../../../platform/editor/common/editor.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\n\nexport abstract class AbstractCodeEditorService extends Disposable implements ICodeEditorService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _onWillCreateCodeEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onCodeEditorAdd: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorAdd: Event<ICodeEditor> = this._onCodeEditorAdd.event;\n\n\tprivate readonly _onCodeEditorRemove: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorRemove: Event<ICodeEditor> = this._onCodeEditorRemove.event;\n\n\tprivate readonly _onWillCreateDiffEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onDiffEditorAdd: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorAdd: Event<IDiffEditor> = this._onDiffEditorAdd.event;\n\n\tprivate readonly _onDiffEditorRemove: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorRemove: Event<IDiffEditor> = this._onDiffEditorRemove.event;\n\n\tprivate readonly _codeEditors: { [editorId: string]: ICodeEditor };\n\tprivate readonly _diffEditors: { [editorId: string]: IDiffEditor };\n\tprotected _globalStyleSheet: GlobalStyleSheet | null;\n\tprivate readonly _decorationOptionProviders = new Map<string, IModelDecorationOptionsProvider>();\n\tprivate readonly _codeEditorOpenHandlers = new LinkedList<ICodeEditorOpenHandler>();\n\n\tconstructor(\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t\tthis._codeEditors = Object.create(null);\n\t\tthis._diffEditors = Object.create(null);\n\t\tthis._globalStyleSheet = null;\n\t}\n\n\twillCreateCodeEditor(): void {\n\t\tthis._onWillCreateCodeEditor.fire();\n\t}\n\n\taddCodeEditor(editor: ICodeEditor): void {\n\t\tthis._codeEditors[editor.getId()] = editor;\n\t\tthis._onCodeEditorAdd.fire(editor);\n\t}\n\n\tremoveCodeEditor(editor: ICodeEditor): void {\n\t\tif (delete this._codeEditors[editor.getId()]) {\n\t\t\tthis._onCodeEditorRemove.fire(editor);\n\t\t}\n\t}\n\n\tlistCodeEditors(): ICodeEditor[] {\n\t\treturn Object.keys(this._codeEditors).map(id => this._codeEditors[id]);\n\t}\n\n\twillCreateDiffEditor(): void {\n\t\tthis._onWillCreateDiffEditor.fire();\n\t}\n\n\taddDiffEditor(editor: IDiffEditor): void {\n\t\tthis._diffEditors[editor.getId()] = editor;\n\t\tthis._onDiffEditorAdd.fire(editor);\n\t}\n\n\tlistDiffEditors(): IDiffEditor[] {\n\t\treturn Object.keys(this._diffEditors).map(id => this._diffEditors[id]);\n\t}\n\n\tgetFocusedCodeEditor(): ICodeEditor | null {\n\t\tlet editorWithWidgetFocus: ICodeEditor | null = null;\n\n\t\tconst editors = this.listCodeEditors();\n\t\tfor (const editor of editors) {\n\n\t\t\tif (editor.hasTextFocus()) {\n\t\t\t\t// bingo!\n\t\t\t\treturn editor;\n\t\t\t}\n\n\t\t\tif (editor.hasWidgetFocus()) {\n\t\t\t\teditorWithWidgetFocus = editor;\n\t\t\t}\n\t\t}\n\n\t\treturn editorWithWidgetFocus;\n\t}\n\n\tpublic removeDecorationType(key: string): void {\n\t\tconst provider = this._decorationOptionProviders.get(key);\n\t\tif (provider) {\n\t\t\tprovider.refCount--;\n\t\t\tif (provider.refCount <= 0) {\n\t\t\t\tthis._decorationOptionProviders.delete(key);\n\t\t\t\tprovider.dispose();\n\t\t\t\tthis.listCodeEditors().forEach((ed) => ed.removeDecorationsByType(key));\n\t\t\t}\n\t\t}\n\t}\n\tprivate readonly _modelProperties = new Map<string, Map<string, unknown>>();\n\n\tpublic setModelProperty(resource: URI, key: string, value: unknown): void {\n\t\tconst key1 = resource.toString();\n\t\tlet dest: Map<string, unknown>;\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tdest = this._modelProperties.get(key1)!;\n\t\t} else {\n\t\t\tdest = new Map<string, unknown>();\n\t\t\tthis._modelProperties.set(key1, dest);\n\t\t}\n\n\t\tdest.set(key, value);\n\t}\n\n\tpublic getModelProperty(resource: URI, key: string): unknown {\n\t\tconst key1 = resource.toString();\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tconst innerMap = this._modelProperties.get(key1)!;\n\t\t\treturn innerMap.get(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tabstract getActiveCodeEditor(): ICodeEditor | null;\n\n\tasync openCodeEditor(input: IResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null> {\n\t\tfor (const handler of this._codeEditorOpenHandlers) {\n\t\t\tconst candidate = await handler(input, source, sideBySide);\n\t\t\tif (candidate !== null) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tregisterCodeEditorOpenHandler(handler: ICodeEditorOpenHandler): IDisposable {\n\t\tconst rm = this._codeEditorOpenHandlers.unshift(handler);\n\t\treturn toDisposable(rm);\n\t}\n}\n\nexport class GlobalStyleSheet {\n\tprivate readonly _styleSheet: HTMLStyleElement;\n\n\tconstructor(styleSheet: HTMLStyleElement) {\n\t\tthis._styleSheet = styleSheet;\n\t}\n}\n\ninterface IModelDecorationOptionsProvider extends IDisposable {\n\trefCount: number;\n}\n","\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { IDisposable, Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { ICodeEditor, IDiffEditor } from '../editorBrowser.js';\nimport { ICodeEditorOpenHandler, ICodeEditorService } from './codeEditorService.js';\nimport { IResourceEditorInput } from '../../../platform/editor/common/editor.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\n\nexport abstract class AbstractCodeEditorService extends Disposable implements ICodeEditorService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _onWillCreateCodeEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onCodeEditorAdd: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorAdd: Event<ICodeEditor> = this._onCodeEditorAdd.event;\n\n\tprivate readonly _onCodeEditorRemove: Emitter<ICodeEditor> = this._register(new Emitter<ICodeEditor>());\n\tpublic readonly onCodeEditorRemove: Event<ICodeEditor> = this._onCodeEditorRemove.event;\n\n\tprivate readonly _onWillCreateDiffEditor = this._register(new Emitter<void>());\n\n\tprivate readonly _onDiffEditorAdd: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorAdd: Event<IDiffEditor> = this._onDiffEditorAdd.event;\n\n\tprivate readonly _onDiffEditorRemove: Emitter<IDiffEditor> = this._register(new Emitter<IDiffEditor>());\n\tpublic readonly onDiffEditorRemove: Event<IDiffEditor> = this._onDiffEditorRemove.event;\n\n\tprivate readonly _codeEditors: { [editorId: string]: ICodeEditor };\n\tprivate readonly _diffEditors: { [editorId: string]: IDiffEditor };\n\tprotected _globalStyleSheet: GlobalStyleSheet | null;\n\tprivate readonly _decorationOptionProviders = new Map<string, IModelDecorationOptionsProvider>();\n\tprivate readonly _codeEditorOpenHandlers = new LinkedList<ICodeEditorOpenHandler>();\n\n\tconstructor(\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t\tthis._codeEditors = Object.create(null);\n\t\tthis._diffEditors = Object.create(null);\n\t\tthis._globalStyleSheet = null;\n\t}\n\n\twillCreateCodeEditor(): void {\n\t\tthis._onWillCreateCodeEditor.fire();\n\t}\n\n\taddCodeEditor(editor: ICodeEditor): void {\n\t\tthis._codeEditors[editor.getId()] = editor;\n\t\tthis._onCodeEditorAdd.fire(editor);\n\t}\n\n\tremoveCodeEditor(editor: ICodeEditor): void {\n\t\tif (delete this._codeEditors[editor.getId()]) {\n\t\t\tthis._onCodeEditorRemove.fire(editor);\n\t\t}\n\t}\n\n\tlistCodeEditors(): ICodeEditor[] {\n\t\treturn Object.keys(this._codeEditors).map(id => this._codeEditors[id]);\n\t}\n\n\twillCreateDiffEditor(): void {\n\t\tthis._onWillCreateDiffEditor.fire();\n\t}\n\n\taddDiffEditor(editor: IDiffEditor): void {\n\t\tthis._diffEditors[editor.getId()] = editor;\n\t\tthis._onDiffEditorAdd.fire(editor);\n\t}\n\n\tlistDiffEditors(): IDiffEditor[] {\n\t\treturn Object.keys(this._diffEditors).map(id => this._diffEditors[id]);\n\t}\n\n\tgetFocusedCodeEditor(): ICodeEditor | null {\n\t\tlet editorWithWidgetFocus: ICodeEditor | null = null;\n\n\t\tconst editors = this.listCodeEditors();\n\t\tfor (const editor of editors) {\n\n\t\t\tif (editor.hasTextFocus()) {\n\t\t\t\t// bingo!\n\t\t\t\treturn editor;\n\t\t\t}\n\n\t\t\tif (editor.hasWidgetFocus()) {\n\t\t\t\teditorWithWidgetFocus = editor;\n\t\t\t}\n\t\t}\n\n\t\treturn editorWithWidgetFocus;\n\t}\n\n\tpublic removeDecorationType(key: string): void {\n\t\tconst provider = this._decorationOptionProviders.get(key);\n\t\tif (provider) {\n\t\t\tprovider.refCount--;\n\t\t\tif (provider.refCount <= 0) {\n\t\t\t\tthis._decorationOptionProviders.delete(key);\n\t\t\t\tprovider.dispose();\n\t\t\t\tthis.listCodeEditors().forEach((ed) => ed.removeDecorationsByType(key));\n\t\t\t}\n\t\t}\n\t}\n\tprivate readonly _modelProperties = new Map<string, Map<string, unknown>>();\n\n\tpublic setModelProperty(resource: URI, key: string, value: unknown): void {\n\t\tconst key1 = resource.toString();\n\t\tlet dest: Map<string, unknown>;\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tdest = this._modelProperties.get(key1)!;\n\t\t} else {\n\t\t\tdest = new Map<string, unknown>();\n\t\t\tthis._modelProperties.set(key1, dest);\n\t\t}\n\n\t\tdest.set(key, value);\n\t}\n\n\tpublic getModelProperty(resource: URI, key: string): unknown {\n\t\tconst key1 = resource.toString();\n\t\tif (this._modelProperties.has(key1)) {\n\t\t\tconst innerMap = this._modelProperties.get(key1)!;\n\t\t\treturn innerMap.get(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tabstract getActiveCodeEditor(): ICodeEditor | null;\n\n\tasync openCodeEditor(input: IResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null> {\n\t\tfor (const handler of this._codeEditorOpenHandlers) {\n\t\t\tconst candidate = await handler(input, source, sideBySide);\n\t\t\tif (candidate !== null) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tregisterCodeEditorOpenHandler(handler: ICodeEditorOpenHandler): IDisposable {\n\t\tconst rm = this._codeEditorOpenHandlers.unshift(handler);\n\t\treturn toDisposable(rm);\n\t}\n}\n\nexport class GlobalStyleSheet {\n\tprivate readonly _styleSheet: HTMLStyleElement;\n\n\tconstructor(styleSheet: HTMLStyleElement) {\n\t\tthis._styleSheet = styleSheet;\n\t}\n}\n\ninterface IModelDecorationOptionsProvider extends IDisposable {\n\trefCount: number;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/bulkEditService.ts","vs/editor/browser/services/bulkEditService.ts"],"names":[],"mappings":"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","file":"bulkEditService.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 { ICodeEditor } from '../editorBrowser.js';\nimport { TextEdit, WorkspaceEdit, WorkspaceEditMetadata, IWorkspaceFileEdit, WorkspaceFileEditOptions, IWorkspaceTextEdit } from '../../common/languages.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { isObject } from '../../../base/common/types.js';\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { TextModelEditSource } from '../../common/textModelEditSource.js';\n\nexport const IBulkEditService = createDecorator<IBulkEditService>('IWorkspaceEditService');\n\nexport class ResourceEdit {\n\n\tprotected constructor(readonly metadata?: WorkspaceEditMetadata) { }\n\n\tstatic convert(edit: WorkspaceEdit): ResourceEdit[] {\n\n\t\treturn edit.edits.map(edit => {\n\t\t\tif (ResourceTextEdit.is(edit)) {\n\t\t\t\treturn ResourceTextEdit.lift(edit);\n\t\t\t}\n\n\t\t\tif (ResourceFileEdit.is(edit)) {\n\t\t\t\treturn ResourceFileEdit.lift(edit);\n\t\t\t}\n\t\t\tthrow new Error('Unsupported edit');\n\t\t});\n\t}\n}\n\nexport class ResourceTextEdit extends ResourceEdit implements IWorkspaceTextEdit {\n\n\tstatic is(candidate: any): candidate is IWorkspaceTextEdit {\n\t\tif (candidate instanceof ResourceTextEdit) {\n\t\t\treturn true;\n\t\t}\n\t\treturn isObject(candidate)\n\t\t\t&& URI.isUri((<IWorkspaceTextEdit>candidate).resource)\n\t\t\t&& isObject((<IWorkspaceTextEdit>candidate).textEdit);\n\t}\n\n\tstatic lift(edit: IWorkspaceTextEdit): ResourceTextEdit {\n\t\tif (edit instanceof ResourceTextEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceTextEdit(edit.resource, edit.textEdit, edit.versionId, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly resource: URI,\n\t\treadonly textEdit: TextEdit & { insertAsSnippet?: boolean; keepWhitespace?: boolean },\n\t\treadonly versionId: number | undefined = undefined,\n\t\tmetadata?: WorkspaceEditMetadata,\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport class ResourceFileEdit extends ResourceEdit implements IWorkspaceFileEdit {\n\n\tstatic is(candidate: any): candidate is IWorkspaceFileEdit {\n\t\tif (candidate instanceof ResourceFileEdit) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn isObject(candidate)\n\t\t\t\t&& (Boolean((<IWorkspaceFileEdit>candidate).newResource) || Boolean((<IWorkspaceFileEdit>candidate).oldResource));\n\t\t}\n\t}\n\n\tstatic lift(edit: IWorkspaceFileEdit): ResourceFileEdit {\n\t\tif (edit instanceof ResourceFileEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceFileEdit(edit.oldResource, edit.newResource, edit.options, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly oldResource: URI | undefined,\n\t\treadonly newResource: URI | undefined,\n\t\treadonly options: WorkspaceFileEditOptions = {},\n\t\tmetadata?: WorkspaceEditMetadata\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport interface IBulkEditOptions {\n\teditor?: ICodeEditor;\n\ttoken?: CancellationToken;\n\tshowPreview?: boolean;\n\tlabel?: string;\n\tcode?: string;\n\tquotableLabel?: string;\n\trespectAutoSaveConfig?: boolean;\n\treason?: TextModelEditSource;\n}\n\nexport interface IBulkEditResult {\n\tariaSummary: string;\n\tisApplied: boolean;\n}\n\nexport interface IBulkEditService {\n\treadonly _serviceBrand: undefined;\n\n\thasPreviewHandler(): boolean;\n\n\tapply(edit: ResourceEdit[] | WorkspaceEdit, options?: IBulkEditOptions): Promise<IBulkEditResult>;\n}\n","/*---------------------------------------------------------------------------------------------\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 { ICodeEditor } from '../editorBrowser.js';\nimport { TextEdit, WorkspaceEdit, WorkspaceEditMetadata, IWorkspaceFileEdit, WorkspaceFileEditOptions, IWorkspaceTextEdit } from '../../common/languages.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { isObject } from '../../../base/common/types.js';\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { TextModelEditSource } from '../../common/textModelEditSource.js';\n\nexport const IBulkEditService = createDecorator<IBulkEditService>('IWorkspaceEditService');\n\nexport class ResourceEdit {\n\n\tprotected constructor(readonly metadata?: WorkspaceEditMetadata) { }\n\n\tstatic convert(edit: WorkspaceEdit): ResourceEdit[] {\n\n\t\treturn edit.edits.map(edit => {\n\t\t\tif (ResourceTextEdit.is(edit)) {\n\t\t\t\treturn ResourceTextEdit.lift(edit);\n\t\t\t}\n\n\t\t\tif (ResourceFileEdit.is(edit)) {\n\t\t\t\treturn ResourceFileEdit.lift(edit);\n\t\t\t}\n\t\t\tthrow new Error('Unsupported edit');\n\t\t});\n\t}\n}\n\nexport class ResourceTextEdit extends ResourceEdit implements IWorkspaceTextEdit {\n\n\tstatic is(candidate: any): candidate is IWorkspaceTextEdit {\n\t\tif (candidate instanceof ResourceTextEdit) {\n\t\t\treturn true;\n\t\t}\n\t\treturn isObject(candidate)\n\t\t\t&& URI.isUri((<IWorkspaceTextEdit>candidate).resource)\n\t\t\t&& isObject((<IWorkspaceTextEdit>candidate).textEdit);\n\t}\n\n\tstatic lift(edit: IWorkspaceTextEdit): ResourceTextEdit {\n\t\tif (edit instanceof ResourceTextEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceTextEdit(edit.resource, edit.textEdit, edit.versionId, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly resource: URI,\n\t\treadonly textEdit: TextEdit & { insertAsSnippet?: boolean; keepWhitespace?: boolean },\n\t\treadonly versionId: number | undefined = undefined,\n\t\tmetadata?: WorkspaceEditMetadata,\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport class ResourceFileEdit extends ResourceEdit implements IWorkspaceFileEdit {\n\n\tstatic is(candidate: any): candidate is IWorkspaceFileEdit {\n\t\tif (candidate instanceof ResourceFileEdit) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn isObject(candidate)\n\t\t\t\t&& (Boolean((<IWorkspaceFileEdit>candidate).newResource) || Boolean((<IWorkspaceFileEdit>candidate).oldResource));\n\t\t}\n\t}\n\n\tstatic lift(edit: IWorkspaceFileEdit): ResourceFileEdit {\n\t\tif (edit instanceof ResourceFileEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceFileEdit(edit.oldResource, edit.newResource, edit.options, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly oldResource: URI | undefined,\n\t\treadonly newResource: URI | undefined,\n\t\treadonly options: WorkspaceFileEditOptions = {},\n\t\tmetadata?: WorkspaceEditMetadata\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport interface IBulkEditOptions {\n\teditor?: ICodeEditor;\n\ttoken?: CancellationToken;\n\tshowPreview?: boolean;\n\tlabel?: string;\n\tcode?: string;\n\tquotableLabel?: string;\n\trespectAutoSaveConfig?: boolean;\n\treason?: TextModelEditSource;\n}\n\nexport interface IBulkEditResult {\n\tariaSummary: string;\n\tisApplied: boolean;\n}\n\nexport interface IBulkEditService {\n\treadonly _serviceBrand: undefined;\n\n\thasPreviewHandler(): boolean;\n\n\tapply(edit: ResourceEdit[] | WorkspaceEdit, options?: IBulkEditOptions): Promise<IBulkEditResult>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/bulkEditService.ts","vs/editor/browser/services/bulkEditService.ts"],"names":[],"mappings":"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","file":"bulkEditService.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 { ICodeEditor } from '../editorBrowser.js';\nimport { TextEdit, WorkspaceEdit, WorkspaceEditMetadata, IWorkspaceFileEdit, WorkspaceFileEditOptions, IWorkspaceTextEdit } from '../../common/languages.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { isObject } from '../../../base/common/types.js';\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { TextModelEditSource } from '../../common/textModelEditSource.js';\n\nexport const IBulkEditService = createDecorator<IBulkEditService>('IWorkspaceEditService');\n\nexport class ResourceEdit {\n\n\tprotected constructor(readonly metadata?: WorkspaceEditMetadata) { }\n\n\tstatic convert(edit: WorkspaceEdit): ResourceEdit[] {\n\n\t\treturn edit.edits.map(edit => {\n\t\t\tif (ResourceTextEdit.is(edit)) {\n\t\t\t\treturn ResourceTextEdit.lift(edit);\n\t\t\t}\n\n\t\t\tif (ResourceFileEdit.is(edit)) {\n\t\t\t\treturn ResourceFileEdit.lift(edit);\n\t\t\t}\n\t\t\tthrow new Error('Unsupported edit');\n\t\t});\n\t}\n}\n\nexport class ResourceTextEdit extends ResourceEdit implements IWorkspaceTextEdit {\n\n\tstatic is(candidate: unknown): candidate is IWorkspaceTextEdit {\n\t\tif (candidate instanceof ResourceTextEdit) {\n\t\t\treturn true;\n\t\t}\n\t\treturn isObject(candidate)\n\t\t\t&& URI.isUri((<IWorkspaceTextEdit>candidate).resource)\n\t\t\t&& isObject((<IWorkspaceTextEdit>candidate).textEdit);\n\t}\n\n\tstatic lift(edit: IWorkspaceTextEdit): ResourceTextEdit {\n\t\tif (edit instanceof ResourceTextEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceTextEdit(edit.resource, edit.textEdit, edit.versionId, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly resource: URI,\n\t\treadonly textEdit: TextEdit & { insertAsSnippet?: boolean; keepWhitespace?: boolean },\n\t\treadonly versionId: number | undefined = undefined,\n\t\tmetadata?: WorkspaceEditMetadata,\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport class ResourceFileEdit extends ResourceEdit implements IWorkspaceFileEdit {\n\n\tstatic is(candidate: unknown): candidate is IWorkspaceFileEdit {\n\t\tif (candidate instanceof ResourceFileEdit) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn isObject(candidate)\n\t\t\t\t&& (Boolean((<IWorkspaceFileEdit>candidate).newResource) || Boolean((<IWorkspaceFileEdit>candidate).oldResource));\n\t\t}\n\t}\n\n\tstatic lift(edit: IWorkspaceFileEdit): ResourceFileEdit {\n\t\tif (edit instanceof ResourceFileEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceFileEdit(edit.oldResource, edit.newResource, edit.options, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly oldResource: URI | undefined,\n\t\treadonly newResource: URI | undefined,\n\t\treadonly options: WorkspaceFileEditOptions = {},\n\t\tmetadata?: WorkspaceEditMetadata\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport interface IBulkEditOptions {\n\teditor?: ICodeEditor;\n\ttoken?: CancellationToken;\n\tshowPreview?: boolean;\n\tlabel?: string;\n\tcode?: string;\n\tquotableLabel?: string;\n\trespectAutoSaveConfig?: boolean;\n\treason?: TextModelEditSource;\n}\n\nexport interface IBulkEditResult {\n\tariaSummary: string;\n\tisApplied: boolean;\n}\n\nexport interface IBulkEditService {\n\treadonly _serviceBrand: undefined;\n\n\thasPreviewHandler(): boolean;\n\n\tapply(edit: ResourceEdit[] | WorkspaceEdit, options?: IBulkEditOptions): Promise<IBulkEditResult>;\n}\n","/*---------------------------------------------------------------------------------------------\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 { ICodeEditor } from '../editorBrowser.js';\nimport { TextEdit, WorkspaceEdit, WorkspaceEditMetadata, IWorkspaceFileEdit, WorkspaceFileEditOptions, IWorkspaceTextEdit } from '../../common/languages.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { isObject } from '../../../base/common/types.js';\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { TextModelEditSource } from '../../common/textModelEditSource.js';\n\nexport const IBulkEditService = createDecorator<IBulkEditService>('IWorkspaceEditService');\n\nexport class ResourceEdit {\n\n\tprotected constructor(readonly metadata?: WorkspaceEditMetadata) { }\n\n\tstatic convert(edit: WorkspaceEdit): ResourceEdit[] {\n\n\t\treturn edit.edits.map(edit => {\n\t\t\tif (ResourceTextEdit.is(edit)) {\n\t\t\t\treturn ResourceTextEdit.lift(edit);\n\t\t\t}\n\n\t\t\tif (ResourceFileEdit.is(edit)) {\n\t\t\t\treturn ResourceFileEdit.lift(edit);\n\t\t\t}\n\t\t\tthrow new Error('Unsupported edit');\n\t\t});\n\t}\n}\n\nexport class ResourceTextEdit extends ResourceEdit implements IWorkspaceTextEdit {\n\n\tstatic is(candidate: unknown): candidate is IWorkspaceTextEdit {\n\t\tif (candidate instanceof ResourceTextEdit) {\n\t\t\treturn true;\n\t\t}\n\t\treturn isObject(candidate)\n\t\t\t&& URI.isUri((<IWorkspaceTextEdit>candidate).resource)\n\t\t\t&& isObject((<IWorkspaceTextEdit>candidate).textEdit);\n\t}\n\n\tstatic lift(edit: IWorkspaceTextEdit): ResourceTextEdit {\n\t\tif (edit instanceof ResourceTextEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceTextEdit(edit.resource, edit.textEdit, edit.versionId, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly resource: URI,\n\t\treadonly textEdit: TextEdit & { insertAsSnippet?: boolean; keepWhitespace?: boolean },\n\t\treadonly versionId: number | undefined = undefined,\n\t\tmetadata?: WorkspaceEditMetadata,\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport class ResourceFileEdit extends ResourceEdit implements IWorkspaceFileEdit {\n\n\tstatic is(candidate: unknown): candidate is IWorkspaceFileEdit {\n\t\tif (candidate instanceof ResourceFileEdit) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn isObject(candidate)\n\t\t\t\t&& (Boolean((<IWorkspaceFileEdit>candidate).newResource) || Boolean((<IWorkspaceFileEdit>candidate).oldResource));\n\t\t}\n\t}\n\n\tstatic lift(edit: IWorkspaceFileEdit): ResourceFileEdit {\n\t\tif (edit instanceof ResourceFileEdit) {\n\t\t\treturn edit;\n\t\t} else {\n\t\t\treturn new ResourceFileEdit(edit.oldResource, edit.newResource, edit.options, edit.metadata);\n\t\t}\n\t}\n\n\tconstructor(\n\t\treadonly oldResource: URI | undefined,\n\t\treadonly newResource: URI | undefined,\n\t\treadonly options: WorkspaceFileEditOptions = {},\n\t\tmetadata?: WorkspaceEditMetadata\n\t) {\n\t\tsuper(metadata);\n\t}\n}\n\nexport interface IBulkEditOptions {\n\teditor?: ICodeEditor;\n\ttoken?: CancellationToken;\n\tshowPreview?: boolean;\n\tlabel?: string;\n\tcode?: string;\n\tquotableLabel?: string;\n\trespectAutoSaveConfig?: boolean;\n\treason?: TextModelEditSource;\n}\n\nexport interface IBulkEditResult {\n\tariaSummary: string;\n\tisApplied: boolean;\n}\n\nexport interface IBulkEditService {\n\treadonly _serviceBrand: undefined;\n\n\thasPreviewHandler(): boolean;\n\n\tapply(edit: ResourceEdit[] | WorkspaceEdit, options?: IBulkEditOptions): Promise<IBulkEditResult>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/codeEditorService.ts","vs/editor/browser/services/codeEditorService.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAKhG,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAI1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAqB,mBAAmB,CAAC,CAAC","file":"codeEditorService.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 { Event } from '../../../base/common/event.js';\nimport { ICodeEditor, IDiffEditor } from '../editorBrowser.js';\nimport { ITextResourceEditorInput } from '../../../platform/editor/common/editor.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IDisposable } from '../../../base/common/lifecycle.js';\n\nexport const ICodeEditorService = createDecorator<ICodeEditorService>('codeEditorService');\n\nexport interface ICodeEditorService {\n\treadonly _serviceBrand: undefined;\n\treadonly onCodeEditorAdd: Event<ICodeEditor>;\n\treadonly onCodeEditorRemove: Event<ICodeEditor>;\n\treadonly onDiffEditorAdd: Event<IDiffEditor>;\n\treadonly onDiffEditorRemove: Event<IDiffEditor>;\n\n\twillCreateCodeEditor(): void;\n\taddCodeEditor(editor: ICodeEditor): void;\n\tremoveCodeEditor(editor: ICodeEditor): void;\n\tlistCodeEditors(): readonly ICodeEditor[];\n\n\twillCreateDiffEditor(): void;\n\taddDiffEditor(editor: IDiffEditor): void;\n\tlistDiffEditors(): readonly IDiffEditor[];\n\n\t/**\n\t * Returns the current focused code editor (if the focus is in the editor or in an editor widget) or null.\n\t */\n\tgetFocusedCodeEditor(): ICodeEditor | null;\n\tremoveDecorationType(key: string): void;\n\n\tsetModelProperty(resource: URI, key: string, value:
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/codeEditorService.ts","vs/editor/browser/services/codeEditorService.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAKhG,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAI1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAqB,mBAAmB,CAAC,CAAC","file":"codeEditorService.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 { Event } from '../../../base/common/event.js';\nimport { ICodeEditor, IDiffEditor } from '../editorBrowser.js';\nimport { ITextResourceEditorInput } from '../../../platform/editor/common/editor.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IDisposable } from '../../../base/common/lifecycle.js';\n\nexport const ICodeEditorService = createDecorator<ICodeEditorService>('codeEditorService');\n\nexport interface ICodeEditorService {\n\treadonly _serviceBrand: undefined;\n\treadonly onCodeEditorAdd: Event<ICodeEditor>;\n\treadonly onCodeEditorRemove: Event<ICodeEditor>;\n\treadonly onDiffEditorAdd: Event<IDiffEditor>;\n\treadonly onDiffEditorRemove: Event<IDiffEditor>;\n\n\twillCreateCodeEditor(): void;\n\taddCodeEditor(editor: ICodeEditor): void;\n\tremoveCodeEditor(editor: ICodeEditor): void;\n\tlistCodeEditors(): readonly ICodeEditor[];\n\n\twillCreateDiffEditor(): void;\n\taddDiffEditor(editor: IDiffEditor): void;\n\tlistDiffEditors(): readonly IDiffEditor[];\n\n\t/**\n\t * Returns the current focused code editor (if the focus is in the editor or in an editor widget) or null.\n\t */\n\tgetFocusedCodeEditor(): ICodeEditor | null;\n\tremoveDecorationType(key: string): void;\n\n\tsetModelProperty(resource: URI, key: string, value: unknown): void;\n\tgetModelProperty(resource: URI, key: string): unknown;\n\n\tgetActiveCodeEditor(): ICodeEditor | null;\n\topenCodeEditor(input: ITextResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null>;\n\tregisterCodeEditorOpenHandler(handler: ICodeEditorOpenHandler): IDisposable;\n}\n\nexport interface ICodeEditorOpenHandler {\n\t(input: ITextResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null>;\n}\n","/*---------------------------------------------------------------------------------------------\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 { Event } from '../../../base/common/event.js';\nimport { ICodeEditor, IDiffEditor } from '../editorBrowser.js';\nimport { ITextResourceEditorInput } from '../../../platform/editor/common/editor.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IDisposable } from '../../../base/common/lifecycle.js';\n\nexport const ICodeEditorService = createDecorator<ICodeEditorService>('codeEditorService');\n\nexport interface ICodeEditorService {\n\treadonly _serviceBrand: undefined;\n\treadonly onCodeEditorAdd: Event<ICodeEditor>;\n\treadonly onCodeEditorRemove: Event<ICodeEditor>;\n\treadonly onDiffEditorAdd: Event<IDiffEditor>;\n\treadonly onDiffEditorRemove: Event<IDiffEditor>;\n\n\twillCreateCodeEditor(): void;\n\taddCodeEditor(editor: ICodeEditor): void;\n\tremoveCodeEditor(editor: ICodeEditor): void;\n\tlistCodeEditors(): readonly ICodeEditor[];\n\n\twillCreateDiffEditor(): void;\n\taddDiffEditor(editor: IDiffEditor): void;\n\tlistDiffEditors(): readonly IDiffEditor[];\n\n\t/**\n\t * Returns the current focused code editor (if the focus is in the editor or in an editor widget) or null.\n\t */\n\tgetFocusedCodeEditor(): ICodeEditor | null;\n\tremoveDecorationType(key: string): void;\n\n\tsetModelProperty(resource: URI, key: string, value: unknown): void;\n\tgetModelProperty(resource: URI, key: string): unknown;\n\n\tgetActiveCodeEditor(): ICodeEditor | null;\n\topenCodeEditor(input: ITextResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null>;\n\tregisterCodeEditorOpenHandler(handler: ICodeEditorOpenHandler): IDisposable;\n}\n\nexport interface ICodeEditorOpenHandler {\n\t(input: ITextResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean): Promise<ICodeEditor | null>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/editorWorkerService.ts","vs/editor/browser/services/editorWorkerService.ts"],"names":[],"mappings":"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","file":"editorWorkerService.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 { timeout } from '../../../base/common/async.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { logOnceWebWorkerWarning, IWebWorkerClient, Proxied } from '../../../base/common/worker/webWorker.js';\nimport { createWebWorker, IWebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';\nimport { Position } from '../../common/core/position.js';\nimport { IRange, Range } from '../../common/core/range.js';\nimport { ITextModel } from '../../common/model.js';\nimport * as languages from '../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { EditorWorker } from '../../common/services/editorWebWorker.js';\nimport { DiffAlgorithmName, IEditorWorkerService, ILineChange, IUnicodeHighlightsResult } from '../../common/services/editorWorker.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { ITextResourceConfigurationService } from '../../common/services/textResourceConfiguration.js';\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\nimport { ILogService } from '../../../platform/log/common/log.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { canceled } from '../../../base/common/errors.js';\nimport { UnicodeHighlighterOptions } from '../../common/services/unicodeTextModelHighlighter.js';\nimport { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';\nimport { IDocumentDiff, IDocumentDiffProviderOptions } from '../../common/diff/documentDiffProvider.js';\nimport { MovedText } from '../../common/diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping, RangeMapping, LineRangeMapping } from '../../common/diff/rangeMapping.js';\nimport { LineRange } from '../../common/core/ranges/lineRange.js';\nimport { SectionHeader, FindSectionHeaderOptions } from '../../common/services/findSectionHeaders.js';\nimport { mainWindow } from '../../../base/browser/window.js';\nimport { WindowIntervalTimer } from '../../../base/browser/dom.js';\nimport { WorkerTextModelSyncClient } from '../../common/services/textModelSync/textModelSync.impl.js';\nimport { EditorWorkerHost } from '../../common/services/editorWorkerHost.js';\n\n/**\n * Stop the worker if it was not needed for 5 min.\n */\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\n\nfunction canSyncModel(modelService: IModelService, resource: URI): boolean {\n\tconst model = modelService.getModel(resource);\n\tif (!model) {\n\t\treturn false;\n\t}\n\tif (model.isTooLargeForSyncing()) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport abstract class EditorWorkerService extends Disposable implements IEditorWorkerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _logService: ILogService;\n\n\tconstructor(\n\t\tworkerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService,\n\t\t@ITextResourceConfigurationService configurationService: ITextResourceConfigurationService,\n\t\t@ILogService logService: ILogService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService));\n\t\tthis._logService = logService;\n\n\t\t// register default link-provider and default completions-provider\n\t\tthis._register(languageFeaturesService.linkProvider.register({ language: '*', hasAccessToAllModels: true }, {\n\t\t\tprovideLinks: async (model, token) => {\n\t\t\t\tif (!canSyncModel(this._modelService, model.uri)) {\n\t\t\t\t\treturn Promise.resolve({ links: [] }); // File too large\n\t\t\t\t}\n\t\t\t\tconst worker = await this._workerWithResources([model.uri]);\n\t\t\t\tconst links = await worker.$computeLinks(model.uri.toString());\n\t\t\t\treturn links && { links };\n\t\t\t}\n\t\t}));\n\t\tthis._register(languageFeaturesService.completionProvider.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService, this._languageConfigurationService, this._logService)));\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t}\n\n\tpublic canComputeUnicodeHighlights(uri: URI): boolean {\n\t\treturn canSyncModel(this._modelService, uri);\n\t}\n\n\tpublic async computedUnicodeHighlights(uri: URI, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeUnicodeHighlights(uri.toString(), options, range);\n\t}\n\n\tpublic async computeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName): Promise<IDocumentDiff | null> {\n\t\tconst worker = await this._workerWithResources([original, modified], /* forceLargeModels */true);\n\t\tconst result = await worker.$computeDiff(original.toString(), modified.toString(), options, algorithm);\n\t\tif (!result) {\n\t\t\treturn null;\n\t\t}\n\t\t// Convert from space efficient JSON data to rich objects.\n\t\tconst diff: IDocumentDiff = {\n\t\t\tidentical: result.identical,\n\t\t\tquitEarly: result.quitEarly,\n\t\t\tchanges: toLineRangeMappings(result.changes),\n\t\t\tmoves: result.moves.map(m => new MovedText(\n\t\t\t\tnew LineRangeMapping(new LineRange(m[0], m[1]), new LineRange(m[2], m[3])),\n\t\t\t\ttoLineRangeMappings(m[4])\n\t\t\t))\n\t\t};\n\t\treturn diff;\n\n\t\tfunction toLineRangeMappings(changes: readonly ILineChange[]): readonly DetailedLineRangeMapping[] {\n\t\t\treturn changes.map(\n\t\t\t\t(c) => new DetailedLineRangeMapping(\n\t\t\t\t\tnew LineRange(c[0], c[1]),\n\t\t\t\t\tnew LineRange(c[2], c[3]),\n\t\t\t\t\tc[4]?.map(\n\t\t\t\t\t\t(c) => new RangeMapping(\n\t\t\t\t\t\t\tnew Range(c[0], c[1], c[2], c[3]),\n\t\t\t\t\t\t\tnew Range(c[4], c[5], c[6], c[7])\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic async computeMoreMinimalEdits(resource: URI, edits: languages.TextEdit[] | null | undefined, pretty: boolean = false): Promise<languages.TextEdit[] | undefined> {\n\t\tif (isNonEmptyArray(edits)) {\n\t\t\tif (!canSyncModel(this._modelService, resource)) {\n\t\t\t\treturn Promise.resolve(edits); // File too large\n\t\t\t}\n\t\t\tconst sw = StopWatch.create();\n\t\t\tconst result = this._workerWithResources([resource]).then(worker => worker.$computeMoreMinimalEdits(resource.toString(), edits, pretty));\n\t\t\tresult.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\n\t\t\treturn Promise.race([result, timeout(1000).then(() => edits)]);\n\n\t\t} else {\n\t\t\treturn Promise.resolve(undefined);\n\t\t}\n\t}\n\n\tpublic canNavigateValueSet(resource: URI): boolean {\n\t\treturn (canSyncModel(this._modelService, resource));\n\t}\n\n\tpublic async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise<languages.IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\n\t}\n\n\tpublic canComputeWordRanges(resource: URI): boolean {\n\t\treturn canSyncModel(this._modelService, resource);\n\t}\n\n\tpublic async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\n\t}\n\n\tpublic async findSectionHeaders(uri: URI, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$findSectionHeaders(uri.toString(), options);\n\t}\n\n\tpublic async computeDefaultDocumentColors(uri: URI): Promise<languages.IColorInformation[] | null> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeDefaultDocumentColors(uri.toString());\n\t}\n\n\tprivate async _workerWithResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tconst worker = await this._workerManager.withWorker();\n\t\treturn await worker.workerWithSyncedResources(resources, forceLargeModels);\n\t}\n}\n\nclass WordBasedCompletionItemProvider implements languages.CompletionItemProvider {\n\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _configurationService: ITextResourceConfigurationService;\n\tprivate readonly _modelService: IModelService;\n\n\treadonly _debugDisplayName = 'wordbasedCompletions';\n\n\tconstructor(\n\t\tworkerManager: WorkerManager,\n\t\tconfigurationService: ITextResourceConfigurationService,\n\t\tmodelService: IModelService,\n\t\tprivate readonly languageConfigurationService: ILanguageConfigurationService,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tthis._workerManager = workerManager;\n\t\tthis._configurationService = configurationService;\n\t\tthis._modelService = modelService;\n\t}\n\n\tasync provideCompletionItems(model: ITextModel, position: Position): Promise<languages.CompletionList | undefined> {\n\t\ttype WordBasedSuggestionsConfig = {\n\t\t\twordBasedSuggestions?: 'off' | 'currentDocument' | 'matchingDocuments' | 'allDocuments';\n\t\t};\n\t\tconst config = this._configurationService.getValue<WordBasedSuggestionsConfig>(model.uri, position, 'editor');\n\t\tif (config.wordBasedSuggestions === 'off') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst models: URI[] = [];\n\t\tif (config.wordBasedSuggestions === 'currentDocument') {\n\t\t\t// only current file and only if not too large\n\t\t\tif (canSyncModel(this._modelService, model.uri)) {\n\t\t\t\tmodels.push(model.uri);\n\t\t\t}\n\t\t} else {\n\t\t\t// either all files or files of same language\n\t\t\tfor (const candidate of this._modelService.getModels()) {\n\t\t\t\tif (!canSyncModel(this._modelService, candidate.uri)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (candidate === model) {\n\t\t\t\t\tmodels.unshift(candidate.uri);\n\n\t\t\t\t} else if (config.wordBasedSuggestions === 'allDocuments' || candidate.getLanguageId() === model.getLanguageId()) {\n\t\t\t\t\tmodels.push(candidate.uri);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (models.length === 0) {\n\t\t\treturn undefined; // File too large, no other files\n\t\t}\n\n\t\tconst wordDefRegExp = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst word = model.getWordAtPosition(position);\n\t\tconst replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n\t\tconst insert = replace.setEndPosition(position.lineNumber, position.column);\n\n\t\t// Trace logging about the word and replace/insert ranges\n\t\tthis.logService.trace('[WordBasedCompletionItemProvider]', `word: \"${word?.word || ''}\", wordDef: \"${wordDefRegExp}\", replace: [${replace.toString()}], insert: [${insert.toString()}]`);\n\n\t\tconst client = await this._workerManager.withWorker();\n\t\tconst data = await client.textualSuggest(models, word?.word, wordDefRegExp);\n\t\tif (!data) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tduration: data.duration,\n\t\t\tsuggestions: data.words.map((word): languages.CompletionItem => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: languages.CompletionItemKind.Text,\n\t\t\t\t\tlabel: word,\n\t\t\t\t\tinsertText: word,\n\t\t\t\t\trange: { insert, replace }\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n}\n\nclass WorkerManager extends Disposable {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate _editorWorkerClient: EditorWorkerClient | null;\n\tprivate _lastWorkerUsedTime: number;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._editorWorkerClient = null;\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\n\t\tconst stopWorkerInterval = this._register(new WindowIntervalTimer());\n\t\tstopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2), mainWindow);\n\n\t\tthis._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tif (this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t\tsuper.dispose();\n\t}\n\n\t/**\n\t * Check if the model service has no more models and stop the worker if that is the case.\n\t */\n\tprivate _checkStopEmptyWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst models = this._modelService.getModels();\n\t\tif (models.length === 0) {\n\t\t\t// There are no more models => nothing possible for me to do\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\t/**\n\t * Check if the worker has been idle for a while and then stop it.\n\t */\n\tprivate _checkStopIdleWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\n\t\tif (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\tpublic withWorker(): Promise<EditorWorkerClient> {\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\t\tif (!this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService);\n\t\t}\n\t\treturn Promise.resolve(this._editorWorkerClient);\n\t}\n}\n\nclass SynchronousWorkerClient<T extends IDisposable> implements IWebWorkerClient<T> {\n\tprivate readonly _instance: T;\n\tpublic readonly proxy: Proxied<T>;\n\n\tconstructor(instance: T) {\n\t\tthis._instance = instance;\n\t\tthis.proxy = this._instance as Proxied<T>;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._instance.dispose();\n\t}\n\n\tpublic setChannel<T extends object>(channel: string, handler: T): void {\n\t\tthrow new Error(`Not supported`);\n\t}\n}\n\nexport interface IEditorWorkerClient {\n}\n\nexport class EditorWorkerClient extends Disposable implements IEditorWorkerClient {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _keepIdleModels: boolean;\n\tprivate _worker: IWebWorkerClient<EditorWorker> | null;\n\tprivate _modelManager: WorkerTextModelSyncClient | null;\n\tprivate _disposed = false;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptorOrWorker: IWebWorkerDescriptor | Worker | Promise<Worker>,\n\t\tkeepIdleModels: boolean,\n\t\t@IModelService modelService: IModelService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._keepIdleModels = keepIdleModels;\n\t\tthis._worker = null;\n\t\tthis._modelManager = null;\n\t}\n\n\t// foreign host request\n\tpublic fhr(method: string, args: any[]): Promise<any> {\n\t\tthrow new Error(`Not implemented!`);\n\t}\n\n\tprivate _getOrCreateWorker(): IWebWorkerClient<EditorWorker> {\n\t\tif (!this._worker) {\n\t\t\ttry {\n\t\t\t\tthis._worker = this._register(createWebWorker<EditorWorker>(this._workerDescriptorOrWorker));\n\t\t\t\tEditorWorkerHost.setChannel(this._worker, this._createEditorWorkerHost());\n\t\t\t} catch (err) {\n\t\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\t}\n\t\t}\n\t\treturn this._worker;\n\t}\n\n\tprotected async _getProxy(): Promise<Proxied<EditorWorker>> {\n\t\ttry {\n\t\t\tconst proxy = this._getOrCreateWorker().proxy;\n\t\t\tawait proxy.$ping();\n\t\t\treturn proxy;\n\t\t} catch (err) {\n\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\treturn this._worker.proxy;\n\t\t}\n\t}\n\n\tprivate _createFallbackLocalWorker(): SynchronousWorkerClient<EditorWorker> {\n\t\treturn new SynchronousWorkerClient(new EditorWorker(null));\n\t}\n\n\tprivate _createEditorWorkerHost(): EditorWorkerHost {\n\t\treturn {\n\t\t\t$fhr: (method, args) => this.fhr(method, args)\n\t\t};\n\t}\n\n\tprivate _getOrCreateModelManager(proxy: Proxied<EditorWorker>): WorkerTextModelSyncClient {\n\t\tif (!this._modelManager) {\n\t\t\tthis._modelManager = this._register(new WorkerTextModelSyncClient(proxy, this._modelService, this._keepIdleModels));\n\t\t}\n\t\treturn this._modelManager;\n\t}\n\n\tpublic async workerWithSyncedResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tif (this._disposed) {\n\t\t\treturn Promise.reject(canceled());\n\t\t}\n\t\tconst proxy = await this._getProxy();\n\t\tthis._getOrCreateModelManager(proxy).ensureSyncedResources(resources, forceLargeModels);\n\t\treturn proxy;\n\t}\n\n\tpublic async textualSuggest(resources: URI[], leadingWord: string | undefined, wordDefRegExp: RegExp): Promise<{ words: string[]; duration: number } | null> {\n\t\tconst proxy = await this.workerWithSyncedResources(resources);\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\treturn proxy.$textualSuggest(resources.map(r => r.toString()), leadingWord, wordDef, wordDefFlags);\n\t}\n\n\toverride dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._disposed = true;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\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 { timeout } from '../../../base/common/async.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { logOnceWebWorkerWarning, IWebWorkerClient, Proxied } from '../../../base/common/worker/webWorker.js';\nimport { createWebWorker, IWebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';\nimport { Position } from '../../common/core/position.js';\nimport { IRange, Range } from '../../common/core/range.js';\nimport { ITextModel } from '../../common/model.js';\nimport * as languages from '../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { EditorWorker } from '../../common/services/editorWebWorker.js';\nimport { DiffAlgorithmName, IEditorWorkerService, ILineChange, IUnicodeHighlightsResult } from '../../common/services/editorWorker.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { ITextResourceConfigurationService } from '../../common/services/textResourceConfiguration.js';\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\nimport { ILogService } from '../../../platform/log/common/log.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { canceled } from '../../../base/common/errors.js';\nimport { UnicodeHighlighterOptions } from '../../common/services/unicodeTextModelHighlighter.js';\nimport { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';\nimport { IDocumentDiff, IDocumentDiffProviderOptions } from '../../common/diff/documentDiffProvider.js';\nimport { MovedText } from '../../common/diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping, RangeMapping, LineRangeMapping } from '../../common/diff/rangeMapping.js';\nimport { LineRange } from '../../common/core/ranges/lineRange.js';\nimport { SectionHeader, FindSectionHeaderOptions } from '../../common/services/findSectionHeaders.js';\nimport { mainWindow } from '../../../base/browser/window.js';\nimport { WindowIntervalTimer } from '../../../base/browser/dom.js';\nimport { WorkerTextModelSyncClient } from '../../common/services/textModelSync/textModelSync.impl.js';\nimport { EditorWorkerHost } from '../../common/services/editorWorkerHost.js';\n\n/**\n * Stop the worker if it was not needed for 5 min.\n */\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\n\nfunction canSyncModel(modelService: IModelService, resource: URI): boolean {\n\tconst model = modelService.getModel(resource);\n\tif (!model) {\n\t\treturn false;\n\t}\n\tif (model.isTooLargeForSyncing()) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport abstract class EditorWorkerService extends Disposable implements IEditorWorkerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _logService: ILogService;\n\n\tconstructor(\n\t\tworkerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService,\n\t\t@ITextResourceConfigurationService configurationService: ITextResourceConfigurationService,\n\t\t@ILogService logService: ILogService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService));\n\t\tthis._logService = logService;\n\n\t\t// register default link-provider and default completions-provider\n\t\tthis._register(languageFeaturesService.linkProvider.register({ language: '*', hasAccessToAllModels: true }, {\n\t\t\tprovideLinks: async (model, token) => {\n\t\t\t\tif (!canSyncModel(this._modelService, model.uri)) {\n\t\t\t\t\treturn Promise.resolve({ links: [] }); // File too large\n\t\t\t\t}\n\t\t\t\tconst worker = await this._workerWithResources([model.uri]);\n\t\t\t\tconst links = await worker.$computeLinks(model.uri.toString());\n\t\t\t\treturn links && { links };\n\t\t\t}\n\t\t}));\n\t\tthis._register(languageFeaturesService.completionProvider.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService, this._languageConfigurationService, this._logService)));\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t}\n\n\tpublic canComputeUnicodeHighlights(uri: URI): boolean {\n\t\treturn canSyncModel(this._modelService, uri);\n\t}\n\n\tpublic async computedUnicodeHighlights(uri: URI, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeUnicodeHighlights(uri.toString(), options, range);\n\t}\n\n\tpublic async computeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName): Promise<IDocumentDiff | null> {\n\t\tconst worker = await this._workerWithResources([original, modified], /* forceLargeModels */true);\n\t\tconst result = await worker.$computeDiff(original.toString(), modified.toString(), options, algorithm);\n\t\tif (!result) {\n\t\t\treturn null;\n\t\t}\n\t\t// Convert from space efficient JSON data to rich objects.\n\t\tconst diff: IDocumentDiff = {\n\t\t\tidentical: result.identical,\n\t\t\tquitEarly: result.quitEarly,\n\t\t\tchanges: toLineRangeMappings(result.changes),\n\t\t\tmoves: result.moves.map(m => new MovedText(\n\t\t\t\tnew LineRangeMapping(new LineRange(m[0], m[1]), new LineRange(m[2], m[3])),\n\t\t\t\ttoLineRangeMappings(m[4])\n\t\t\t))\n\t\t};\n\t\treturn diff;\n\n\t\tfunction toLineRangeMappings(changes: readonly ILineChange[]): readonly DetailedLineRangeMapping[] {\n\t\t\treturn changes.map(\n\t\t\t\t(c) => new DetailedLineRangeMapping(\n\t\t\t\t\tnew LineRange(c[0], c[1]),\n\t\t\t\t\tnew LineRange(c[2], c[3]),\n\t\t\t\t\tc[4]?.map(\n\t\t\t\t\t\t(c) => new RangeMapping(\n\t\t\t\t\t\t\tnew Range(c[0], c[1], c[2], c[3]),\n\t\t\t\t\t\t\tnew Range(c[4], c[5], c[6], c[7])\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic async computeMoreMinimalEdits(resource: URI, edits: languages.TextEdit[] | null | undefined, pretty: boolean = false): Promise<languages.TextEdit[] | undefined> {\n\t\tif (isNonEmptyArray(edits)) {\n\t\t\tif (!canSyncModel(this._modelService, resource)) {\n\t\t\t\treturn Promise.resolve(edits); // File too large\n\t\t\t}\n\t\t\tconst sw = StopWatch.create();\n\t\t\tconst result = this._workerWithResources([resource]).then(worker => worker.$computeMoreMinimalEdits(resource.toString(), edits, pretty));\n\t\t\tresult.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\n\t\t\treturn Promise.race([result, timeout(1000).then(() => edits)]);\n\n\t\t} else {\n\t\t\treturn Promise.resolve(undefined);\n\t\t}\n\t}\n\n\tpublic canNavigateValueSet(resource: URI): boolean {\n\t\treturn (canSyncModel(this._modelService, resource));\n\t}\n\n\tpublic async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise<languages.IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\n\t}\n\n\tpublic canComputeWordRanges(resource: URI): boolean {\n\t\treturn canSyncModel(this._modelService, resource);\n\t}\n\n\tpublic async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\n\t}\n\n\tpublic async findSectionHeaders(uri: URI, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$findSectionHeaders(uri.toString(), options);\n\t}\n\n\tpublic async computeDefaultDocumentColors(uri: URI): Promise<languages.IColorInformation[] | null> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeDefaultDocumentColors(uri.toString());\n\t}\n\n\tprivate async _workerWithResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tconst worker = await this._workerManager.withWorker();\n\t\treturn await worker.workerWithSyncedResources(resources, forceLargeModels);\n\t}\n}\n\nclass WordBasedCompletionItemProvider implements languages.CompletionItemProvider {\n\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _configurationService: ITextResourceConfigurationService;\n\tprivate readonly _modelService: IModelService;\n\n\treadonly _debugDisplayName = 'wordbasedCompletions';\n\n\tconstructor(\n\t\tworkerManager: WorkerManager,\n\t\tconfigurationService: ITextResourceConfigurationService,\n\t\tmodelService: IModelService,\n\t\tprivate readonly languageConfigurationService: ILanguageConfigurationService,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tthis._workerManager = workerManager;\n\t\tthis._configurationService = configurationService;\n\t\tthis._modelService = modelService;\n\t}\n\n\tasync provideCompletionItems(model: ITextModel, position: Position): Promise<languages.CompletionList | undefined> {\n\t\ttype WordBasedSuggestionsConfig = {\n\t\t\twordBasedSuggestions?: 'off' | 'currentDocument' | 'matchingDocuments' | 'allDocuments';\n\t\t};\n\t\tconst config = this._configurationService.getValue<WordBasedSuggestionsConfig>(model.uri, position, 'editor');\n\t\tif (config.wordBasedSuggestions === 'off') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst models: URI[] = [];\n\t\tif (config.wordBasedSuggestions === 'currentDocument') {\n\t\t\t// only current file and only if not too large\n\t\t\tif (canSyncModel(this._modelService, model.uri)) {\n\t\t\t\tmodels.push(model.uri);\n\t\t\t}\n\t\t} else {\n\t\t\t// either all files or files of same language\n\t\t\tfor (const candidate of this._modelService.getModels()) {\n\t\t\t\tif (!canSyncModel(this._modelService, candidate.uri)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (candidate === model) {\n\t\t\t\t\tmodels.unshift(candidate.uri);\n\n\t\t\t\t} else if (config.wordBasedSuggestions === 'allDocuments' || candidate.getLanguageId() === model.getLanguageId()) {\n\t\t\t\t\tmodels.push(candidate.uri);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (models.length === 0) {\n\t\t\treturn undefined; // File too large, no other files\n\t\t}\n\n\t\tconst wordDefRegExp = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst word = model.getWordAtPosition(position);\n\t\tconst replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n\t\tconst insert = replace.setEndPosition(position.lineNumber, position.column);\n\n\t\t// Trace logging about the word and replace/insert ranges\n\t\tthis.logService.trace('[WordBasedCompletionItemProvider]', `word: \"${word?.word || ''}\", wordDef: \"${wordDefRegExp}\", replace: [${replace.toString()}], insert: [${insert.toString()}]`);\n\n\t\tconst client = await this._workerManager.withWorker();\n\t\tconst data = await client.textualSuggest(models, word?.word, wordDefRegExp);\n\t\tif (!data) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tduration: data.duration,\n\t\t\tsuggestions: data.words.map((word): languages.CompletionItem => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: languages.CompletionItemKind.Text,\n\t\t\t\t\tlabel: word,\n\t\t\t\t\tinsertText: word,\n\t\t\t\t\trange: { insert, replace }\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n}\n\nclass WorkerManager extends Disposable {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate _editorWorkerClient: EditorWorkerClient | null;\n\tprivate _lastWorkerUsedTime: number;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._editorWorkerClient = null;\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\n\t\tconst stopWorkerInterval = this._register(new WindowIntervalTimer());\n\t\tstopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2), mainWindow);\n\n\t\tthis._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tif (this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t\tsuper.dispose();\n\t}\n\n\t/**\n\t * Check if the model service has no more models and stop the worker if that is the case.\n\t */\n\tprivate _checkStopEmptyWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst models = this._modelService.getModels();\n\t\tif (models.length === 0) {\n\t\t\t// There are no more models => nothing possible for me to do\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\t/**\n\t * Check if the worker has been idle for a while and then stop it.\n\t */\n\tprivate _checkStopIdleWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\n\t\tif (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\tpublic withWorker(): Promise<EditorWorkerClient> {\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\t\tif (!this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService);\n\t\t}\n\t\treturn Promise.resolve(this._editorWorkerClient);\n\t}\n}\n\nclass SynchronousWorkerClient<T extends IDisposable> implements IWebWorkerClient<T> {\n\tprivate readonly _instance: T;\n\tpublic readonly proxy: Proxied<T>;\n\n\tconstructor(instance: T) {\n\t\tthis._instance = instance;\n\t\tthis.proxy = this._instance as Proxied<T>;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._instance.dispose();\n\t}\n\n\tpublic setChannel<T extends object>(channel: string, handler: T): void {\n\t\tthrow new Error(`Not supported`);\n\t}\n}\n\nexport interface IEditorWorkerClient {\n}\n\nexport class EditorWorkerClient extends Disposable implements IEditorWorkerClient {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _keepIdleModels: boolean;\n\tprivate _worker: IWebWorkerClient<EditorWorker> | null;\n\tprivate _modelManager: WorkerTextModelSyncClient | null;\n\tprivate _disposed = false;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptorOrWorker: IWebWorkerDescriptor | Worker | Promise<Worker>,\n\t\tkeepIdleModels: boolean,\n\t\t@IModelService modelService: IModelService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._keepIdleModels = keepIdleModels;\n\t\tthis._worker = null;\n\t\tthis._modelManager = null;\n\t}\n\n\t// foreign host request\n\tpublic fhr(method: string, args: any[]): Promise<any> {\n\t\tthrow new Error(`Not implemented!`);\n\t}\n\n\tprivate _getOrCreateWorker(): IWebWorkerClient<EditorWorker> {\n\t\tif (!this._worker) {\n\t\t\ttry {\n\t\t\t\tthis._worker = this._register(createWebWorker<EditorWorker>(this._workerDescriptorOrWorker));\n\t\t\t\tEditorWorkerHost.setChannel(this._worker, this._createEditorWorkerHost());\n\t\t\t} catch (err) {\n\t\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\t}\n\t\t}\n\t\treturn this._worker;\n\t}\n\n\tprotected async _getProxy(): Promise<Proxied<EditorWorker>> {\n\t\ttry {\n\t\t\tconst proxy = this._getOrCreateWorker().proxy;\n\t\t\tawait proxy.$ping();\n\t\t\treturn proxy;\n\t\t} catch (err) {\n\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\treturn this._worker.proxy;\n\t\t}\n\t}\n\n\tprivate _createFallbackLocalWorker(): SynchronousWorkerClient<EditorWorker> {\n\t\treturn new SynchronousWorkerClient(new EditorWorker(null));\n\t}\n\n\tprivate _createEditorWorkerHost(): EditorWorkerHost {\n\t\treturn {\n\t\t\t$fhr: (method, args) => this.fhr(method, args)\n\t\t};\n\t}\n\n\tprivate _getOrCreateModelManager(proxy: Proxied<EditorWorker>): WorkerTextModelSyncClient {\n\t\tif (!this._modelManager) {\n\t\t\tthis._modelManager = this._register(new WorkerTextModelSyncClient(proxy, this._modelService, this._keepIdleModels));\n\t\t}\n\t\treturn this._modelManager;\n\t}\n\n\tpublic async workerWithSyncedResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tif (this._disposed) {\n\t\t\treturn Promise.reject(canceled());\n\t\t}\n\t\tconst proxy = await this._getProxy();\n\t\tthis._getOrCreateModelManager(proxy).ensureSyncedResources(resources, forceLargeModels);\n\t\treturn proxy;\n\t}\n\n\tpublic async textualSuggest(resources: URI[], leadingWord: string | undefined, wordDefRegExp: RegExp): Promise<{ words: string[]; duration: number } | null> {\n\t\tconst proxy = await this.workerWithSyncedResources(resources);\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\treturn proxy.$textualSuggest(resources.map(r => r.toString()), leadingWord, wordDef, wordDefFlags);\n\t}\n\n\toverride dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._disposed = true;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/editorWorkerService.ts","vs/editor/browser/services/editorWorkerService.ts"],"names":[],"mappings":"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","file":"editorWorkerService.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 { timeout } from '../../../base/common/async.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { logOnceWebWorkerWarning, IWebWorkerClient, Proxied } from '../../../base/common/worker/webWorker.js';\nimport { createWebWorker, IWebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';\nimport { Position } from '../../common/core/position.js';\nimport { IRange, Range } from '../../common/core/range.js';\nimport { ITextModel } from '../../common/model.js';\nimport * as languages from '../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { EditorWorker } from '../../common/services/editorWebWorker.js';\nimport { DiffAlgorithmName, IEditorWorkerService, ILineChange, IUnicodeHighlightsResult } from '../../common/services/editorWorker.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { ITextResourceConfigurationService } from '../../common/services/textResourceConfiguration.js';\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\nimport { ILogService } from '../../../platform/log/common/log.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { canceled } from '../../../base/common/errors.js';\nimport { UnicodeHighlighterOptions } from '../../common/services/unicodeTextModelHighlighter.js';\nimport { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';\nimport { IDocumentDiff, IDocumentDiffProviderOptions } from '../../common/diff/documentDiffProvider.js';\nimport { MovedText } from '../../common/diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping, RangeMapping, LineRangeMapping } from '../../common/diff/rangeMapping.js';\nimport { LineRange } from '../../common/core/ranges/lineRange.js';\nimport { SectionHeader, FindSectionHeaderOptions } from '../../common/services/findSectionHeaders.js';\nimport { mainWindow } from '../../../base/browser/window.js';\nimport { WindowIntervalTimer } from '../../../base/browser/dom.js';\nimport { WorkerTextModelSyncClient } from '../../common/services/textModelSync/textModelSync.impl.js';\nimport { EditorWorkerHost } from '../../common/services/editorWorkerHost.js';\n\n/**\n * Stop the worker if it was not needed for 5 min.\n */\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\n\nfunction canSyncModel(modelService: IModelService, resource: URI): boolean {\n\tconst model = modelService.getModel(resource);\n\tif (!model) {\n\t\treturn false;\n\t}\n\tif (model.isTooLargeForSyncing()) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport abstract class EditorWorkerService extends Disposable implements IEditorWorkerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _logService: ILogService;\n\n\tconstructor(\n\t\tworkerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService,\n\t\t@ITextResourceConfigurationService configurationService: ITextResourceConfigurationService,\n\t\t@ILogService logService: ILogService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService));\n\t\tthis._logService = logService;\n\n\t\t// register default link-provider and default completions-provider\n\t\tthis._register(languageFeaturesService.linkProvider.register({ language: '*', hasAccessToAllModels: true }, {\n\t\t\tprovideLinks: async (model, token) => {\n\t\t\t\tif (!canSyncModel(this._modelService, model.uri)) {\n\t\t\t\t\treturn Promise.resolve({ links: [] }); // File too large\n\t\t\t\t}\n\t\t\t\tconst worker = await this._workerWithResources([model.uri]);\n\t\t\t\tconst links = await worker.$computeLinks(model.uri.toString());\n\t\t\t\treturn links && { links };\n\t\t\t}\n\t\t}));\n\t\tthis._register(languageFeaturesService.completionProvider.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService, this._languageConfigurationService, this._logService)));\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t}\n\n\tpublic canComputeUnicodeHighlights(uri: URI): boolean {\n\t\treturn canSyncModel(this._modelService, uri);\n\t}\n\n\tpublic async computedUnicodeHighlights(uri: URI, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeUnicodeHighlights(uri.toString(), options, range);\n\t}\n\n\tpublic async computeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName): Promise<IDocumentDiff | null> {\n\t\tconst worker = await this._workerWithResources([original, modified], /* forceLargeModels */true);\n\t\tconst result = await worker.$computeDiff(original.toString(), modified.toString(), options, algorithm);\n\t\tif (!result) {\n\t\t\treturn null;\n\t\t}\n\t\t// Convert from space efficient JSON data to rich objects.\n\t\tconst diff: IDocumentDiff = {\n\t\t\tidentical: result.identical,\n\t\t\tquitEarly: result.quitEarly,\n\t\t\tchanges: toLineRangeMappings(result.changes),\n\t\t\tmoves: result.moves.map(m => new MovedText(\n\t\t\t\tnew LineRangeMapping(new LineRange(m[0], m[1]), new LineRange(m[2], m[3])),\n\t\t\t\ttoLineRangeMappings(m[4])\n\t\t\t))\n\t\t};\n\t\treturn diff;\n\n\t\tfunction toLineRangeMappings(changes: readonly ILineChange[]): readonly DetailedLineRangeMapping[] {\n\t\t\treturn changes.map(\n\t\t\t\t(c) => new DetailedLineRangeMapping(\n\t\t\t\t\tnew LineRange(c[0], c[1]),\n\t\t\t\t\tnew LineRange(c[2], c[3]),\n\t\t\t\t\tc[4]?.map(\n\t\t\t\t\t\t(c) => new RangeMapping(\n\t\t\t\t\t\t\tnew Range(c[0], c[1], c[2], c[3]),\n\t\t\t\t\t\t\tnew Range(c[4], c[5], c[6], c[7])\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic async computeMoreMinimalEdits(resource: URI, edits: languages.TextEdit[] | null | undefined, pretty: boolean = false): Promise<languages.TextEdit[] | undefined> {\n\t\tif (isNonEmptyArray(edits)) {\n\t\t\tif (!canSyncModel(this._modelService, resource)) {\n\t\t\t\treturn Promise.resolve(edits); // File too large\n\t\t\t}\n\t\t\tconst sw = StopWatch.create();\n\t\t\tconst result = this._workerWithResources([resource]).then(worker => worker.$computeMoreMinimalEdits(resource.toString(), edits, pretty));\n\t\t\tresult.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\n\t\t\treturn Promise.race([result, timeout(1000).then(() => edits)]);\n\n\t\t} else {\n\t\t\treturn Promise.resolve(undefined);\n\t\t}\n\t}\n\n\tpublic canNavigateValueSet(resource: URI): boolean {\n\t\treturn (canSyncModel(this._modelService, resource));\n\t}\n\n\tpublic async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise<languages.IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\n\t}\n\n\tpublic canComputeWordRanges(resource: URI): boolean {\n\t\treturn canSyncModel(this._modelService, resource);\n\t}\n\n\tpublic async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\n\t}\n\n\tpublic async findSectionHeaders(uri: URI, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$findSectionHeaders(uri.toString(), options);\n\t}\n\n\tpublic async computeDefaultDocumentColors(uri: URI): Promise<languages.IColorInformation[] | null> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeDefaultDocumentColors(uri.toString());\n\t}\n\n\tprivate async _workerWithResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tconst worker = await this._workerManager.withWorker();\n\t\treturn await worker.workerWithSyncedResources(resources, forceLargeModels);\n\t}\n}\n\nclass WordBasedCompletionItemProvider implements languages.CompletionItemProvider {\n\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _configurationService: ITextResourceConfigurationService;\n\tprivate readonly _modelService: IModelService;\n\n\treadonly _debugDisplayName = 'wordbasedCompletions';\n\n\tconstructor(\n\t\tworkerManager: WorkerManager,\n\t\tconfigurationService: ITextResourceConfigurationService,\n\t\tmodelService: IModelService,\n\t\tprivate readonly languageConfigurationService: ILanguageConfigurationService,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tthis._workerManager = workerManager;\n\t\tthis._configurationService = configurationService;\n\t\tthis._modelService = modelService;\n\t}\n\n\tasync provideCompletionItems(model: ITextModel, position: Position): Promise<languages.CompletionList | undefined> {\n\t\ttype WordBasedSuggestionsConfig = {\n\t\t\twordBasedSuggestions?: 'off' | 'currentDocument' | 'matchingDocuments' | 'allDocuments';\n\t\t};\n\t\tconst config = this._configurationService.getValue<WordBasedSuggestionsConfig>(model.uri, position, 'editor');\n\t\tif (config.wordBasedSuggestions === 'off') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst models: URI[] = [];\n\t\tif (config.wordBasedSuggestions === 'currentDocument') {\n\t\t\t// only current file and only if not too large\n\t\t\tif (canSyncModel(this._modelService, model.uri)) {\n\t\t\t\tmodels.push(model.uri);\n\t\t\t}\n\t\t} else {\n\t\t\t// either all files or files of same language\n\t\t\tfor (const candidate of this._modelService.getModels()) {\n\t\t\t\tif (!canSyncModel(this._modelService, candidate.uri)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (candidate === model) {\n\t\t\t\t\tmodels.unshift(candidate.uri);\n\n\t\t\t\t} else if (config.wordBasedSuggestions === 'allDocuments' || candidate.getLanguageId() === model.getLanguageId()) {\n\t\t\t\t\tmodels.push(candidate.uri);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (models.length === 0) {\n\t\t\treturn undefined; // File too large, no other files\n\t\t}\n\n\t\tconst wordDefRegExp = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst word = model.getWordAtPosition(position);\n\t\tconst replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n\t\tconst insert = replace.setEndPosition(position.lineNumber, position.column);\n\n\t\t// Trace logging about the word and replace/insert ranges\n\t\tthis.logService.trace('[WordBasedCompletionItemProvider]', `word: \"${word?.word || ''}\", wordDef: \"${wordDefRegExp}\", replace: [${replace.toString()}], insert: [${insert.toString()}]`);\n\n\t\tconst client = await this._workerManager.withWorker();\n\t\tconst data = await client.textualSuggest(models, word?.word, wordDefRegExp);\n\t\tif (!data) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tduration: data.duration,\n\t\t\tsuggestions: data.words.map((word): languages.CompletionItem => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: languages.CompletionItemKind.Text,\n\t\t\t\t\tlabel: word,\n\t\t\t\t\tinsertText: word,\n\t\t\t\t\trange: { insert, replace }\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n}\n\nclass WorkerManager extends Disposable {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate _editorWorkerClient: EditorWorkerClient | null;\n\tprivate _lastWorkerUsedTime: number;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._editorWorkerClient = null;\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\n\t\tconst stopWorkerInterval = this._register(new WindowIntervalTimer());\n\t\tstopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2), mainWindow);\n\n\t\tthis._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tif (this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t\tsuper.dispose();\n\t}\n\n\t/**\n\t * Check if the model service has no more models and stop the worker if that is the case.\n\t */\n\tprivate _checkStopEmptyWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst models = this._modelService.getModels();\n\t\tif (models.length === 0) {\n\t\t\t// There are no more models => nothing possible for me to do\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\t/**\n\t * Check if the worker has been idle for a while and then stop it.\n\t */\n\tprivate _checkStopIdleWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\n\t\tif (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\tpublic withWorker(): Promise<EditorWorkerClient> {\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\t\tif (!this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService);\n\t\t}\n\t\treturn Promise.resolve(this._editorWorkerClient);\n\t}\n}\n\nclass SynchronousWorkerClient<T extends IDisposable> implements IWebWorkerClient<T> {\n\tprivate readonly _instance: T;\n\tpublic readonly proxy: Proxied<T>;\n\n\tconstructor(instance: T) {\n\t\tthis._instance = instance;\n\t\tthis.proxy = this._instance as Proxied<T>;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._instance.dispose();\n\t}\n\n\tpublic setChannel<T extends object>(channel: string, handler: T): void {\n\t\tthrow new Error(`Not supported`);\n\t}\n}\n\nexport interface IEditorWorkerClient {\n}\n\nexport class EditorWorkerClient extends Disposable implements IEditorWorkerClient {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _keepIdleModels: boolean;\n\tprivate _worker: IWebWorkerClient<EditorWorker> | null;\n\tprivate _modelManager: WorkerTextModelSyncClient | null;\n\tprivate _disposed = false;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptorOrWorker: IWebWorkerDescriptor | Worker | Promise<Worker>,\n\t\tkeepIdleModels: boolean,\n\t\t@IModelService modelService: IModelService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._keepIdleModels = keepIdleModels;\n\t\tthis._worker = null;\n\t\tthis._modelManager = null;\n\t}\n\n\t// foreign host request\n\tpublic fhr(method: string, args: unknown[]): Promise<unknown> {\n\t\tthrow new Error(`Not implemented!`);\n\t}\n\n\tprivate _getOrCreateWorker(): IWebWorkerClient<EditorWorker> {\n\t\tif (!this._worker) {\n\t\t\ttry {\n\t\t\t\tthis._worker = this._register(createWebWorker<EditorWorker>(this._workerDescriptorOrWorker));\n\t\t\t\tEditorWorkerHost.setChannel(this._worker, this._createEditorWorkerHost());\n\t\t\t} catch (err) {\n\t\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\t}\n\t\t}\n\t\treturn this._worker;\n\t}\n\n\tprotected async _getProxy(): Promise<Proxied<EditorWorker>> {\n\t\ttry {\n\t\t\tconst proxy = this._getOrCreateWorker().proxy;\n\t\t\tawait proxy.$ping();\n\t\t\treturn proxy;\n\t\t} catch (err) {\n\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\treturn this._worker.proxy;\n\t\t}\n\t}\n\n\tprivate _createFallbackLocalWorker(): SynchronousWorkerClient<EditorWorker> {\n\t\treturn new SynchronousWorkerClient(new EditorWorker(null));\n\t}\n\n\tprivate _createEditorWorkerHost(): EditorWorkerHost {\n\t\treturn {\n\t\t\t$fhr: (method, args) => this.fhr(method, args)\n\t\t};\n\t}\n\n\tprivate _getOrCreateModelManager(proxy: Proxied<EditorWorker>): WorkerTextModelSyncClient {\n\t\tif (!this._modelManager) {\n\t\t\tthis._modelManager = this._register(new WorkerTextModelSyncClient(proxy, this._modelService, this._keepIdleModels));\n\t\t}\n\t\treturn this._modelManager;\n\t}\n\n\tpublic async workerWithSyncedResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tif (this._disposed) {\n\t\t\treturn Promise.reject(canceled());\n\t\t}\n\t\tconst proxy = await this._getProxy();\n\t\tthis._getOrCreateModelManager(proxy).ensureSyncedResources(resources, forceLargeModels);\n\t\treturn proxy;\n\t}\n\n\tpublic async textualSuggest(resources: URI[], leadingWord: string | undefined, wordDefRegExp: RegExp): Promise<{ words: string[]; duration: number } | null> {\n\t\tconst proxy = await this.workerWithSyncedResources(resources);\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\treturn proxy.$textualSuggest(resources.map(r => r.toString()), leadingWord, wordDef, wordDefFlags);\n\t}\n\n\toverride dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._disposed = true;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\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 { timeout } from '../../../base/common/async.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { logOnceWebWorkerWarning, IWebWorkerClient, Proxied } from '../../../base/common/worker/webWorker.js';\nimport { createWebWorker, IWebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';\nimport { Position } from '../../common/core/position.js';\nimport { IRange, Range } from '../../common/core/range.js';\nimport { ITextModel } from '../../common/model.js';\nimport * as languages from '../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { EditorWorker } from '../../common/services/editorWebWorker.js';\nimport { DiffAlgorithmName, IEditorWorkerService, ILineChange, IUnicodeHighlightsResult } from '../../common/services/editorWorker.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { ITextResourceConfigurationService } from '../../common/services/textResourceConfiguration.js';\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\nimport { ILogService } from '../../../platform/log/common/log.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { canceled } from '../../../base/common/errors.js';\nimport { UnicodeHighlighterOptions } from '../../common/services/unicodeTextModelHighlighter.js';\nimport { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';\nimport { IDocumentDiff, IDocumentDiffProviderOptions } from '../../common/diff/documentDiffProvider.js';\nimport { MovedText } from '../../common/diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping, RangeMapping, LineRangeMapping } from '../../common/diff/rangeMapping.js';\nimport { LineRange } from '../../common/core/ranges/lineRange.js';\nimport { SectionHeader, FindSectionHeaderOptions } from '../../common/services/findSectionHeaders.js';\nimport { mainWindow } from '../../../base/browser/window.js';\nimport { WindowIntervalTimer } from '../../../base/browser/dom.js';\nimport { WorkerTextModelSyncClient } from '../../common/services/textModelSync/textModelSync.impl.js';\nimport { EditorWorkerHost } from '../../common/services/editorWorkerHost.js';\n\n/**\n * Stop the worker if it was not needed for 5 min.\n */\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\n\nfunction canSyncModel(modelService: IModelService, resource: URI): boolean {\n\tconst model = modelService.getModel(resource);\n\tif (!model) {\n\t\treturn false;\n\t}\n\tif (model.isTooLargeForSyncing()) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport abstract class EditorWorkerService extends Disposable implements IEditorWorkerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _logService: ILogService;\n\n\tconstructor(\n\t\tworkerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService,\n\t\t@ITextResourceConfigurationService configurationService: ITextResourceConfigurationService,\n\t\t@ILogService logService: ILogService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService));\n\t\tthis._logService = logService;\n\n\t\t// register default link-provider and default completions-provider\n\t\tthis._register(languageFeaturesService.linkProvider.register({ language: '*', hasAccessToAllModels: true }, {\n\t\t\tprovideLinks: async (model, token) => {\n\t\t\t\tif (!canSyncModel(this._modelService, model.uri)) {\n\t\t\t\t\treturn Promise.resolve({ links: [] }); // File too large\n\t\t\t\t}\n\t\t\t\tconst worker = await this._workerWithResources([model.uri]);\n\t\t\t\tconst links = await worker.$computeLinks(model.uri.toString());\n\t\t\t\treturn links && { links };\n\t\t\t}\n\t\t}));\n\t\tthis._register(languageFeaturesService.completionProvider.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService, this._languageConfigurationService, this._logService)));\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t}\n\n\tpublic canComputeUnicodeHighlights(uri: URI): boolean {\n\t\treturn canSyncModel(this._modelService, uri);\n\t}\n\n\tpublic async computedUnicodeHighlights(uri: URI, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeUnicodeHighlights(uri.toString(), options, range);\n\t}\n\n\tpublic async computeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName): Promise<IDocumentDiff | null> {\n\t\tconst worker = await this._workerWithResources([original, modified], /* forceLargeModels */true);\n\t\tconst result = await worker.$computeDiff(original.toString(), modified.toString(), options, algorithm);\n\t\tif (!result) {\n\t\t\treturn null;\n\t\t}\n\t\t// Convert from space efficient JSON data to rich objects.\n\t\tconst diff: IDocumentDiff = {\n\t\t\tidentical: result.identical,\n\t\t\tquitEarly: result.quitEarly,\n\t\t\tchanges: toLineRangeMappings(result.changes),\n\t\t\tmoves: result.moves.map(m => new MovedText(\n\t\t\t\tnew LineRangeMapping(new LineRange(m[0], m[1]), new LineRange(m[2], m[3])),\n\t\t\t\ttoLineRangeMappings(m[4])\n\t\t\t))\n\t\t};\n\t\treturn diff;\n\n\t\tfunction toLineRangeMappings(changes: readonly ILineChange[]): readonly DetailedLineRangeMapping[] {\n\t\t\treturn changes.map(\n\t\t\t\t(c) => new DetailedLineRangeMapping(\n\t\t\t\t\tnew LineRange(c[0], c[1]),\n\t\t\t\t\tnew LineRange(c[2], c[3]),\n\t\t\t\t\tc[4]?.map(\n\t\t\t\t\t\t(c) => new RangeMapping(\n\t\t\t\t\t\t\tnew Range(c[0], c[1], c[2], c[3]),\n\t\t\t\t\t\t\tnew Range(c[4], c[5], c[6], c[7])\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic async computeMoreMinimalEdits(resource: URI, edits: languages.TextEdit[] | null | undefined, pretty: boolean = false): Promise<languages.TextEdit[] | undefined> {\n\t\tif (isNonEmptyArray(edits)) {\n\t\t\tif (!canSyncModel(this._modelService, resource)) {\n\t\t\t\treturn Promise.resolve(edits); // File too large\n\t\t\t}\n\t\t\tconst sw = StopWatch.create();\n\t\t\tconst result = this._workerWithResources([resource]).then(worker => worker.$computeMoreMinimalEdits(resource.toString(), edits, pretty));\n\t\t\tresult.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\n\t\t\treturn Promise.race([result, timeout(1000).then(() => edits)]);\n\n\t\t} else {\n\t\t\treturn Promise.resolve(undefined);\n\t\t}\n\t}\n\n\tpublic canNavigateValueSet(resource: URI): boolean {\n\t\treturn (canSyncModel(this._modelService, resource));\n\t}\n\n\tpublic async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise<languages.IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\n\t}\n\n\tpublic canComputeWordRanges(resource: URI): boolean {\n\t\treturn canSyncModel(this._modelService, resource);\n\t}\n\n\tpublic async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> {\n\t\tconst model = this._modelService.getModel(resource);\n\t\tif (!model) {\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t\tconst wordDefRegExp = this._languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\tconst worker = await this._workerWithResources([resource]);\n\t\treturn worker.$computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\n\t}\n\n\tpublic async findSectionHeaders(uri: URI, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$findSectionHeaders(uri.toString(), options);\n\t}\n\n\tpublic async computeDefaultDocumentColors(uri: URI): Promise<languages.IColorInformation[] | null> {\n\t\tconst worker = await this._workerWithResources([uri]);\n\t\treturn worker.$computeDefaultDocumentColors(uri.toString());\n\t}\n\n\tprivate async _workerWithResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tconst worker = await this._workerManager.withWorker();\n\t\treturn await worker.workerWithSyncedResources(resources, forceLargeModels);\n\t}\n}\n\nclass WordBasedCompletionItemProvider implements languages.CompletionItemProvider {\n\n\tprivate readonly _workerManager: WorkerManager;\n\tprivate readonly _configurationService: ITextResourceConfigurationService;\n\tprivate readonly _modelService: IModelService;\n\n\treadonly _debugDisplayName = 'wordbasedCompletions';\n\n\tconstructor(\n\t\tworkerManager: WorkerManager,\n\t\tconfigurationService: ITextResourceConfigurationService,\n\t\tmodelService: IModelService,\n\t\tprivate readonly languageConfigurationService: ILanguageConfigurationService,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tthis._workerManager = workerManager;\n\t\tthis._configurationService = configurationService;\n\t\tthis._modelService = modelService;\n\t}\n\n\tasync provideCompletionItems(model: ITextModel, position: Position): Promise<languages.CompletionList | undefined> {\n\t\ttype WordBasedSuggestionsConfig = {\n\t\t\twordBasedSuggestions?: 'off' | 'currentDocument' | 'matchingDocuments' | 'allDocuments';\n\t\t};\n\t\tconst config = this._configurationService.getValue<WordBasedSuggestionsConfig>(model.uri, position, 'editor');\n\t\tif (config.wordBasedSuggestions === 'off') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst models: URI[] = [];\n\t\tif (config.wordBasedSuggestions === 'currentDocument') {\n\t\t\t// only current file and only if not too large\n\t\t\tif (canSyncModel(this._modelService, model.uri)) {\n\t\t\t\tmodels.push(model.uri);\n\t\t\t}\n\t\t} else {\n\t\t\t// either all files or files of same language\n\t\t\tfor (const candidate of this._modelService.getModels()) {\n\t\t\t\tif (!canSyncModel(this._modelService, candidate.uri)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (candidate === model) {\n\t\t\t\t\tmodels.unshift(candidate.uri);\n\n\t\t\t\t} else if (config.wordBasedSuggestions === 'allDocuments' || candidate.getLanguageId() === model.getLanguageId()) {\n\t\t\t\t\tmodels.push(candidate.uri);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (models.length === 0) {\n\t\t\treturn undefined; // File too large, no other files\n\t\t}\n\n\t\tconst wordDefRegExp = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n\t\tconst word = model.getWordAtPosition(position);\n\t\tconst replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n\t\tconst insert = replace.setEndPosition(position.lineNumber, position.column);\n\n\t\t// Trace logging about the word and replace/insert ranges\n\t\tthis.logService.trace('[WordBasedCompletionItemProvider]', `word: \"${word?.word || ''}\", wordDef: \"${wordDefRegExp}\", replace: [${replace.toString()}], insert: [${insert.toString()}]`);\n\n\t\tconst client = await this._workerManager.withWorker();\n\t\tconst data = await client.textualSuggest(models, word?.word, wordDefRegExp);\n\t\tif (!data) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tduration: data.duration,\n\t\t\tsuggestions: data.words.map((word): languages.CompletionItem => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: languages.CompletionItemKind.Text,\n\t\t\t\t\tlabel: word,\n\t\t\t\t\tinsertText: word,\n\t\t\t\t\trange: { insert, replace }\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n}\n\nclass WorkerManager extends Disposable {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate _editorWorkerClient: EditorWorkerClient | null;\n\tprivate _lastWorkerUsedTime: number;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptor: IWebWorkerDescriptor,\n\t\t@IModelService modelService: IModelService\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._editorWorkerClient = null;\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\n\t\tconst stopWorkerInterval = this._register(new WindowIntervalTimer());\n\t\tstopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2), mainWindow);\n\n\t\tthis._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tif (this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t\tsuper.dispose();\n\t}\n\n\t/**\n\t * Check if the model service has no more models and stop the worker if that is the case.\n\t */\n\tprivate _checkStopEmptyWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst models = this._modelService.getModels();\n\t\tif (models.length === 0) {\n\t\t\t// There are no more models => nothing possible for me to do\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\t/**\n\t * Check if the worker has been idle for a while and then stop it.\n\t */\n\tprivate _checkStopIdleWorker(): void {\n\t\tif (!this._editorWorkerClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\n\t\tif (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\n\t\t\tthis._editorWorkerClient.dispose();\n\t\t\tthis._editorWorkerClient = null;\n\t\t}\n\t}\n\n\tpublic withWorker(): Promise<EditorWorkerClient> {\n\t\tthis._lastWorkerUsedTime = (new Date()).getTime();\n\t\tif (!this._editorWorkerClient) {\n\t\t\tthis._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService);\n\t\t}\n\t\treturn Promise.resolve(this._editorWorkerClient);\n\t}\n}\n\nclass SynchronousWorkerClient<T extends IDisposable> implements IWebWorkerClient<T> {\n\tprivate readonly _instance: T;\n\tpublic readonly proxy: Proxied<T>;\n\n\tconstructor(instance: T) {\n\t\tthis._instance = instance;\n\t\tthis.proxy = this._instance as Proxied<T>;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._instance.dispose();\n\t}\n\n\tpublic setChannel<T extends object>(channel: string, handler: T): void {\n\t\tthrow new Error(`Not supported`);\n\t}\n}\n\nexport interface IEditorWorkerClient {\n}\n\nexport class EditorWorkerClient extends Disposable implements IEditorWorkerClient {\n\n\tprivate readonly _modelService: IModelService;\n\tprivate readonly _keepIdleModels: boolean;\n\tprivate _worker: IWebWorkerClient<EditorWorker> | null;\n\tprivate _modelManager: WorkerTextModelSyncClient | null;\n\tprivate _disposed = false;\n\n\tconstructor(\n\t\tprivate readonly _workerDescriptorOrWorker: IWebWorkerDescriptor | Worker | Promise<Worker>,\n\t\tkeepIdleModels: boolean,\n\t\t@IModelService modelService: IModelService,\n\t) {\n\t\tsuper();\n\t\tthis._modelService = modelService;\n\t\tthis._keepIdleModels = keepIdleModels;\n\t\tthis._worker = null;\n\t\tthis._modelManager = null;\n\t}\n\n\t// foreign host request\n\tpublic fhr(method: string, args: unknown[]): Promise<unknown> {\n\t\tthrow new Error(`Not implemented!`);\n\t}\n\n\tprivate _getOrCreateWorker(): IWebWorkerClient<EditorWorker> {\n\t\tif (!this._worker) {\n\t\t\ttry {\n\t\t\t\tthis._worker = this._register(createWebWorker<EditorWorker>(this._workerDescriptorOrWorker));\n\t\t\t\tEditorWorkerHost.setChannel(this._worker, this._createEditorWorkerHost());\n\t\t\t} catch (err) {\n\t\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\t}\n\t\t}\n\t\treturn this._worker;\n\t}\n\n\tprotected async _getProxy(): Promise<Proxied<EditorWorker>> {\n\t\ttry {\n\t\t\tconst proxy = this._getOrCreateWorker().proxy;\n\t\t\tawait proxy.$ping();\n\t\t\treturn proxy;\n\t\t} catch (err) {\n\t\t\tlogOnceWebWorkerWarning(err);\n\t\t\tthis._worker = this._createFallbackLocalWorker();\n\t\t\treturn this._worker.proxy;\n\t\t}\n\t}\n\n\tprivate _createFallbackLocalWorker(): SynchronousWorkerClient<EditorWorker> {\n\t\treturn new SynchronousWorkerClient(new EditorWorker(null));\n\t}\n\n\tprivate _createEditorWorkerHost(): EditorWorkerHost {\n\t\treturn {\n\t\t\t$fhr: (method, args) => this.fhr(method, args)\n\t\t};\n\t}\n\n\tprivate _getOrCreateModelManager(proxy: Proxied<EditorWorker>): WorkerTextModelSyncClient {\n\t\tif (!this._modelManager) {\n\t\t\tthis._modelManager = this._register(new WorkerTextModelSyncClient(proxy, this._modelService, this._keepIdleModels));\n\t\t}\n\t\treturn this._modelManager;\n\t}\n\n\tpublic async workerWithSyncedResources(resources: URI[], forceLargeModels: boolean = false): Promise<Proxied<EditorWorker>> {\n\t\tif (this._disposed) {\n\t\t\treturn Promise.reject(canceled());\n\t\t}\n\t\tconst proxy = await this._getProxy();\n\t\tthis._getOrCreateModelManager(proxy).ensureSyncedResources(resources, forceLargeModels);\n\t\treturn proxy;\n\t}\n\n\tpublic async textualSuggest(resources: URI[], leadingWord: string | undefined, wordDefRegExp: RegExp): Promise<{ words: string[]; duration: number } | null> {\n\t\tconst proxy = await this.workerWithSyncedResources(resources);\n\t\tconst wordDef = wordDefRegExp.source;\n\t\tconst wordDefFlags = wordDefRegExp.flags;\n\t\treturn proxy.$textualSuggest(resources.map(r => r.toString()), leadingWord, wordDef, wordDefFlags);\n\t}\n\n\toverride dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._disposed = true;\n\t}\n}\n"]}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
|
|
6
|
+
/* stylelint-disable layer-checker */
|
|
7
|
+
|
|
6
8
|
.monaco-workbench .workbench-hover {
|
|
7
9
|
position: relative;
|
|
8
10
|
font-size: 13px;
|