monaco-editor-core 0.57.0 → 0.58.0-dev-20261104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +38 -6
- package/esm/vs/base/browser/browser.js +8 -0
- package/esm/vs/base/browser/browser.js.map +1 -1
- package/esm/vs/base/browser/contextmenu.js +8 -1
- package/esm/vs/base/browser/contextmenu.js.map +1 -1
- package/esm/vs/base/browser/dom.js +34 -5
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/dompurify/dompurify.js +2457 -2640
- package/esm/vs/base/browser/markdownRenderer.js +48 -21
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/pixelRatio.js +3 -2
- package/esm/vs/base/browser/pixelRatio.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionViewItems.js +5 -2
- package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionbar.js +7 -2
- package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
- package/esm/vs/base/browser/ui/animations/animations.js +68 -40
- package/esm/vs/base/browser/ui/animations/animations.js.map +1 -1
- package/esm/vs/base/browser/ui/button/button.js +7 -0
- package/esm/vs/base/browser/ui/button/button.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/contextview/contextview.css +15 -0
- package/esm/vs/base/browser/ui/contextview/contextview.js +266 -40
- package/esm/vs/base/browser/ui/contextview/contextview.js.map +1 -1
- package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js +72 -0
- package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js.map +1 -0
- package/esm/vs/base/browser/ui/dialog/dialog.css +5 -0
- package/esm/vs/base/browser/ui/dropdown/dropdown.js +2 -1
- package/esm/vs/base/browser/ui/dropdown/dropdown.js.map +1 -1
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +1 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
- package/esm/vs/base/browser/ui/hover/hover.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listView.js +87 -15
- package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js +37 -15
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/menu/menu.js +189 -52
- package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
- package/esm/vs/base/browser/ui/radio/radio.css +11 -0
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +2 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +14 -8
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
- package/esm/vs/base/browser/ui/splitview/splitview.js +11 -7
- package/esm/vs/base/browser/ui/splitview/splitview.js.map +1 -1
- package/esm/vs/base/browser/ui/toggle/switch.css +16 -7
- package/esm/vs/base/browser/ui/toggle/switch.js +9 -6
- package/esm/vs/base/browser/ui/toggle/switch.js.map +1 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.css +1 -2
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +85 -38
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js +48 -9
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +10 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTree.js +3 -0
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
- package/esm/vs/base/common/actions.js +8 -2
- package/esm/vs/base/common/actions.js.map +1 -1
- package/esm/vs/base/common/arrays.js +4 -4
- package/esm/vs/base/common/arrays.js.map +1 -1
- package/esm/vs/base/common/async.js +12 -8
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/base/common/cancellation.js +25 -0
- package/esm/vs/base/common/cancellation.js.map +1 -1
- package/esm/vs/base/common/codicons.js +2 -0
- package/esm/vs/base/common/codicons.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +2 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/color.js +1 -1
- package/esm/vs/base/common/color.js.map +1 -1
- package/esm/vs/base/common/diff/diff.js +60 -1
- package/esm/vs/base/common/diff/diff.js.map +1 -1
- package/esm/vs/base/common/event.js +1 -1
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/glob.js +1 -0
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/htmlContent.js +74 -12
- package/esm/vs/base/common/htmlContent.js.map +1 -1
- package/esm/vs/base/common/json.js +19 -0
- package/esm/vs/base/common/json.js.map +1 -0
- package/esm/vs/base/common/network.js +16 -0
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/resources.js +14 -2
- package/esm/vs/base/common/resources.js.map +1 -1
- package/esm/vs/base/common/strings.js +1 -1
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/base/common/uri.js +2 -2
- package/esm/vs/base/common/uri.js.map +1 -1
- package/esm/vs/editor/browser/config/editorConfiguration.js +1 -1
- package/esm/vs/editor/browser/config/fontMeasurements.js +19 -6
- package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js +3 -3
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +11 -5
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -38
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderContentRich.js +3 -3
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +6 -6
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +12 -10
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +7 -7
- package/esm/vs/editor/browser/controller/mouseTarget.js +3 -3
- package/esm/vs/editor/browser/coreCommands.js +2 -2
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorMarkdownSanitizer.js +19 -0
- package/esm/vs/editor/browser/editorMarkdownSanitizer.js.map +1 -0
- package/esm/vs/editor/browser/gpu/rectangleRenderer.js +1 -1
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js +3 -2
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js +6 -2
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js +34 -11
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
- package/esm/vs/editor/browser/view/viewController.js +7 -7
- package/esm/vs/editor/browser/view/viewController.js.map +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js +1 -1
- package/esm/vs/editor/browser/view/viewOverlays.js +4 -4
- package/esm/vs/editor/browser/view.js +5 -5
- package/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.js +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +11 -3
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +6 -6
- package/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js +12 -12
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +9 -2
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js +2 -2
- package/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js +2 -2
- package/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js +2 -2
- package/esm/vs/editor/browser/viewParts/margin/margin.js +2 -2
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js +6 -6
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +9 -2
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js +5 -5
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +3 -3
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js +2 -2
- package/esm/vs/editor/browser/viewParts/rulersGpu/rulersGpu.js +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +3 -3
- package/esm/vs/editor/browser/viewParts/selections/selections.js +2 -2
- package/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js +2 -2
- package/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js +6 -6
- package/esm/vs/editor/browser/viewParts/viewLines/viewLineOptions.js +5 -5
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +11 -11
- package/esm/vs/editor/browser/viewParts/viewLinesGpu/viewLinesGpu.js +1 -1
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +2 -2
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +4 -4
- package/esm/vs/editor/browser/viewParts/wordWrapIndicator/wordWrapIndicator.js +2 -2
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +22 -21
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
- package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +18 -18
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/diffEditorViewZones.js +3 -3
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +10 -10
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +4 -4
- package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js +21 -3
- package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/gutterFeature.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +10 -10
- package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/features/overviewRulerFeature.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
- package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js +2 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js +21 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +11 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js +1 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js.map +1 -1
- package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js +64 -0
- package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js.map +1 -0
- package/esm/vs/editor/common/config/editorConfigurationSchema.js +68 -58
- package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +560 -500
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/core/editorColorRegistry.js +71 -71
- package/esm/vs/editor/common/core/edits/textEdit.js +16 -0
- package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursor.js +20 -10
- package/esm/vs/editor/common/cursor/cursor.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +67 -14
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorTypeOperations.js +2 -2
- package/esm/vs/editor/common/cursor/cursorTypeOperations.js.map +1 -1
- package/esm/vs/editor/common/cursorCommon.js +22 -21
- package/esm/vs/editor/common/cursorCommon.js.map +1 -1
- package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js +21 -8
- package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js.map +1 -1
- package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
- package/esm/vs/editor/common/diff/externalLinesDiffComputer.js +38 -26
- package/esm/vs/editor/common/diff/externalLinesDiffComputer.js.map +1 -1
- package/esm/vs/editor/common/diff/rangeMapping.js +11 -1
- package/esm/vs/editor/common/diff/rangeMapping.js.map +1 -1
- package/esm/vs/editor/common/diff/verifyLinesDiff.js +28 -0
- package/esm/vs/editor/common/diff/verifyLinesDiff.js.map +1 -0
- package/esm/vs/editor/common/editorContextKeys.js +53 -53
- package/esm/vs/editor/common/languages/languageConfiguration.js +8 -0
- package/esm/vs/editor/common/languages/languageConfiguration.js.map +1 -1
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/services/editorWebWorker.js +27 -6
- package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
- package/esm/vs/editor/common/services/editorWorker.js.map +1 -1
- package/esm/vs/editor/common/services/languageService.js +6 -4
- package/esm/vs/editor/common/services/languageService.js.map +1 -1
- package/esm/vs/editor/common/services/markerDecorationsService.js +21 -2
- package/esm/vs/editor/common/services/markerDecorationsService.js.map +1 -1
- package/esm/vs/editor/common/standalone/standaloneEnums.js +100 -97
- package/esm/vs/editor/common/standalone/standaloneEnums.js.map +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +11 -11
- package/esm/vs/editor/common/textModelEditSource.js +9 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLayout.js +16 -16
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +19 -19
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +9 -9
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +23 -20
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/codeActionModel.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +25 -10
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerContribution.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +3 -3
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +17 -17
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +39 -39
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js +19 -0
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js.map +1 -0
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +26 -18
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js.map +1 -1
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +18 -18
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findModel.js +6 -6
- package/esm/vs/editor/contrib/find/browser/findWidget.js +40 -40
- package/esm/vs/editor/contrib/find/browser/findWidget.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +23 -23
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +2 -2
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +4 -4
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js.map +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +9 -3
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +2 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -8
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +6 -6
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +5 -5
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +9 -9
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js +3 -3
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +6 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +7 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +5 -4
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js.map +1 -1
- package/esm/vs/editor/contrib/links/browser/links.js +16 -15
- package/esm/vs/editor/contrib/links/browser/links.js.map +1 -1
- package/esm/vs/editor/contrib/longLinesHelper/browser/longLinesHelper.js +1 -1
- package/esm/vs/editor/contrib/message/browser/messageController.js +16 -12
- package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
- package/esm/vs/editor/contrib/middleScroll/browser/middleScrollController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +91 -55
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js +3 -3
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +6 -4
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderTextContribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +12 -12
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +3 -3
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +6 -6
- package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +23 -13
- package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +5 -5
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +5 -5
- package/esm/vs/editor/contrib/snippet/browser/snippetSession.js +2 -2
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +10 -8
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider.js +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js +2 -2
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +6 -6
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +15 -15
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestModel.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +27 -27
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +8 -6
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +5 -5
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +3 -3
- package/esm/vs/editor/contrib/suggest/browser/wordDistance.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +27 -27
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js +1 -1
- package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js.map +1 -1
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +50 -14
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +6 -6
- package/esm/vs/editor/editor.api.d.ts +133 -98
- package/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js +1 -1
- package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js +5 -3
- package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +15 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/nls.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +72 -66
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js.map +1 -1
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +434 -136
- package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +74 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +24 -26
- package/esm/vs/platform/actionWidget/browser/actionWidget.js.map +1 -1
- package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js +16 -0
- package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js.map +1 -0
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +15 -17
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
- package/esm/vs/platform/actions/browser/toolbar.js +25 -12
- package/esm/vs/platform/actions/browser/toolbar.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js +4 -2
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +15 -8
- package/esm/vs/platform/actions/common/menuService.js.map +1 -1
- package/esm/vs/platform/configuration/common/configuration.js +3 -1
- package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationModels.js +16 -11
- package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationRegistry.js +29 -27
- package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurations.js +13 -1
- package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +2 -2
- package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +28 -14
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkeys.js +10 -10
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/contextview/browser/contextMenuHandler.js +17 -4
- package/esm/vs/platform/contextview/browser/contextMenuHandler.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextMenuService.js +1 -1
- package/esm/vs/platform/contextview/browser/contextMenuService.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextView.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextViewService.js +7 -2
- package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
- package/esm/vs/platform/editor/common/editor.js +17 -0
- package/esm/vs/platform/editor/common/editor.js.map +1 -1
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverService.js +6 -3
- package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +38 -6
- package/esm/vs/platform/hover/browser/hoverWidget.js.map +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +32 -5
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +5 -5
- package/esm/vs/platform/keybinding/common/keybindingResolver.js +1 -1
- package/esm/vs/platform/keybinding/common/keybindingResolver.js.map +1 -1
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/markers/common/markerService.js +11 -8
- package/esm/vs/platform/markers/common/markerService.js.map +1 -1
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/markers/common/markers.js.map +1 -1
- package/esm/vs/platform/notification/common/notification.js.map +1 -1
- package/esm/vs/platform/notification/common/notificationMessage.js +37 -0
- package/esm/vs/platform/notification/common/notificationMessage.js.map +1 -0
- package/esm/vs/platform/opener/common/opener.js.map +1 -1
- package/esm/vs/platform/progress/common/progress.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +33 -2
- package/esm/vs/platform/quickinput/browser/quickAccess.js +7 -4
- package/esm/vs/platform/quickinput/browser/quickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +65 -15
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js +96 -90
- package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputService.js +5 -7
- package/esm/vs/platform/quickinput/browser/quickInputService.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickTree.js +1 -1
- package/esm/vs/platform/quickinput/common/quickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
- package/esm/vs/platform/storage/common/storage.js.map +1 -1
- package/esm/vs/platform/theme/common/colorRegistry.js +1 -0
- package/esm/vs/platform/theme/common/colorRegistry.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +11 -3
- package/esm/vs/platform/theme/common/colorUtils.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/baseColors.js +19 -19
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -9
- package/esm/vs/platform/theme/common/colors/chartsColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/confettiColors.js +14 -0
- package/esm/vs/platform/theme/common/colors/confettiColors.js.map +1 -0
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +48 -48
- package/esm/vs/platform/theme/common/colors/inputColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
- package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +10 -10
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +133 -98
- package/package.json +3 -3
- package/version.txt +1 -1
|
@@ -105,35 +105,35 @@ export var CompletionItemKinds;
|
|
|
105
105
|
*/
|
|
106
106
|
function toLabel(kind) {
|
|
107
107
|
switch (kind) {
|
|
108
|
-
case 0 /* CompletionItemKind.Method */: return localize(
|
|
109
|
-
case 1 /* CompletionItemKind.Function */: return localize(
|
|
110
|
-
case 2 /* CompletionItemKind.Constructor */: return localize(
|
|
111
|
-
case 3 /* CompletionItemKind.Field */: return localize(
|
|
112
|
-
case 4 /* CompletionItemKind.Variable */: return localize(
|
|
113
|
-
case 5 /* CompletionItemKind.Class */: return localize(
|
|
114
|
-
case 6 /* CompletionItemKind.Struct */: return localize(
|
|
115
|
-
case 7 /* CompletionItemKind.Interface */: return localize(
|
|
116
|
-
case 8 /* CompletionItemKind.Module */: return localize(
|
|
117
|
-
case 9 /* CompletionItemKind.Property */: return localize(
|
|
118
|
-
case 10 /* CompletionItemKind.Event */: return localize(
|
|
119
|
-
case 11 /* CompletionItemKind.Operator */: return localize(
|
|
120
|
-
case 12 /* CompletionItemKind.Unit */: return localize(
|
|
121
|
-
case 13 /* CompletionItemKind.Value */: return localize(
|
|
122
|
-
case 14 /* CompletionItemKind.Constant */: return localize(
|
|
123
|
-
case 15 /* CompletionItemKind.Enum */: return localize(
|
|
124
|
-
case 16 /* CompletionItemKind.EnumMember */: return localize(
|
|
125
|
-
case 17 /* CompletionItemKind.Keyword */: return localize(
|
|
126
|
-
case 18 /* CompletionItemKind.Text */: return localize(
|
|
127
|
-
case 19 /* CompletionItemKind.Color */: return localize(
|
|
128
|
-
case 20 /* CompletionItemKind.File */: return localize(
|
|
129
|
-
case 21 /* CompletionItemKind.Reference */: return localize(
|
|
130
|
-
case 22 /* CompletionItemKind.Customcolor */: return localize(
|
|
131
|
-
case 23 /* CompletionItemKind.Folder */: return localize(
|
|
132
|
-
case 24 /* CompletionItemKind.TypeParameter */: return localize(
|
|
133
|
-
case 25 /* CompletionItemKind.User */: return localize(
|
|
134
|
-
case 26 /* CompletionItemKind.Issue */: return localize(
|
|
135
|
-
case 27 /* CompletionItemKind.Tool */: return localize(
|
|
136
|
-
case 28 /* CompletionItemKind.Snippet */: return localize(
|
|
108
|
+
case 0 /* CompletionItemKind.Method */: return localize(785, 'Method');
|
|
109
|
+
case 1 /* CompletionItemKind.Function */: return localize(786, 'Function');
|
|
110
|
+
case 2 /* CompletionItemKind.Constructor */: return localize(787, 'Constructor');
|
|
111
|
+
case 3 /* CompletionItemKind.Field */: return localize(788, 'Field');
|
|
112
|
+
case 4 /* CompletionItemKind.Variable */: return localize(789, 'Variable');
|
|
113
|
+
case 5 /* CompletionItemKind.Class */: return localize(790, 'Class');
|
|
114
|
+
case 6 /* CompletionItemKind.Struct */: return localize(791, 'Struct');
|
|
115
|
+
case 7 /* CompletionItemKind.Interface */: return localize(792, 'Interface');
|
|
116
|
+
case 8 /* CompletionItemKind.Module */: return localize(793, 'Module');
|
|
117
|
+
case 9 /* CompletionItemKind.Property */: return localize(794, 'Property');
|
|
118
|
+
case 10 /* CompletionItemKind.Event */: return localize(795, 'Event');
|
|
119
|
+
case 11 /* CompletionItemKind.Operator */: return localize(796, 'Operator');
|
|
120
|
+
case 12 /* CompletionItemKind.Unit */: return localize(797, 'Unit');
|
|
121
|
+
case 13 /* CompletionItemKind.Value */: return localize(798, 'Value');
|
|
122
|
+
case 14 /* CompletionItemKind.Constant */: return localize(799, 'Constant');
|
|
123
|
+
case 15 /* CompletionItemKind.Enum */: return localize(800, 'Enum');
|
|
124
|
+
case 16 /* CompletionItemKind.EnumMember */: return localize(801, 'Enum Member');
|
|
125
|
+
case 17 /* CompletionItemKind.Keyword */: return localize(802, 'Keyword');
|
|
126
|
+
case 18 /* CompletionItemKind.Text */: return localize(803, 'Text');
|
|
127
|
+
case 19 /* CompletionItemKind.Color */: return localize(804, 'Color');
|
|
128
|
+
case 20 /* CompletionItemKind.File */: return localize(805, 'File');
|
|
129
|
+
case 21 /* CompletionItemKind.Reference */: return localize(806, 'Reference');
|
|
130
|
+
case 22 /* CompletionItemKind.Customcolor */: return localize(807, 'Custom Color');
|
|
131
|
+
case 23 /* CompletionItemKind.Folder */: return localize(808, 'Folder');
|
|
132
|
+
case 24 /* CompletionItemKind.TypeParameter */: return localize(809, 'Type Parameter');
|
|
133
|
+
case 25 /* CompletionItemKind.User */: return localize(810, 'User');
|
|
134
|
+
case 26 /* CompletionItemKind.Issue */: return localize(811, 'Issue');
|
|
135
|
+
case 27 /* CompletionItemKind.Tool */: return localize(812, 'Tool');
|
|
136
|
+
case 28 /* CompletionItemKind.Snippet */: return localize(813, 'Snippet');
|
|
137
137
|
default: return '';
|
|
138
138
|
}
|
|
139
139
|
}
|
|
@@ -315,38 +315,38 @@ export function isLocationLink(thing) {
|
|
|
315
315
|
* @internal
|
|
316
316
|
*/
|
|
317
317
|
export const symbolKindNames = {
|
|
318
|
-
[17 /* SymbolKind.Array */]: localize(
|
|
319
|
-
[16 /* SymbolKind.Boolean */]: localize(
|
|
320
|
-
[4 /* SymbolKind.Class */]: localize(
|
|
321
|
-
[13 /* SymbolKind.Constant */]: localize(
|
|
322
|
-
[8 /* SymbolKind.Constructor */]: localize(
|
|
323
|
-
[9 /* SymbolKind.Enum */]: localize(
|
|
324
|
-
[21 /* SymbolKind.EnumMember */]: localize(
|
|
325
|
-
[23 /* SymbolKind.Event */]: localize(
|
|
326
|
-
[7 /* SymbolKind.Field */]: localize(
|
|
327
|
-
[0 /* SymbolKind.File */]: localize(
|
|
328
|
-
[11 /* SymbolKind.Function */]: localize(
|
|
329
|
-
[10 /* SymbolKind.Interface */]: localize(
|
|
330
|
-
[19 /* SymbolKind.Key */]: localize(
|
|
331
|
-
[5 /* SymbolKind.Method */]: localize(
|
|
332
|
-
[1 /* SymbolKind.Module */]: localize(
|
|
333
|
-
[2 /* SymbolKind.Namespace */]: localize(
|
|
334
|
-
[20 /* SymbolKind.Null */]: localize(
|
|
335
|
-
[15 /* SymbolKind.Number */]: localize(
|
|
336
|
-
[18 /* SymbolKind.Object */]: localize(
|
|
337
|
-
[24 /* SymbolKind.Operator */]: localize(
|
|
338
|
-
[3 /* SymbolKind.Package */]: localize(
|
|
339
|
-
[6 /* SymbolKind.Property */]: localize(
|
|
340
|
-
[14 /* SymbolKind.String */]: localize(
|
|
341
|
-
[22 /* SymbolKind.Struct */]: localize(
|
|
342
|
-
[25 /* SymbolKind.TypeParameter */]: localize(
|
|
343
|
-
[12 /* SymbolKind.Variable */]: localize(
|
|
318
|
+
[17 /* SymbolKind.Array */]: localize(814, "array"),
|
|
319
|
+
[16 /* SymbolKind.Boolean */]: localize(815, "boolean"),
|
|
320
|
+
[4 /* SymbolKind.Class */]: localize(816, "class"),
|
|
321
|
+
[13 /* SymbolKind.Constant */]: localize(817, "constant"),
|
|
322
|
+
[8 /* SymbolKind.Constructor */]: localize(818, "constructor"),
|
|
323
|
+
[9 /* SymbolKind.Enum */]: localize(819, "enumeration"),
|
|
324
|
+
[21 /* SymbolKind.EnumMember */]: localize(820, "enumeration member"),
|
|
325
|
+
[23 /* SymbolKind.Event */]: localize(821, "event"),
|
|
326
|
+
[7 /* SymbolKind.Field */]: localize(822, "field"),
|
|
327
|
+
[0 /* SymbolKind.File */]: localize(823, "file"),
|
|
328
|
+
[11 /* SymbolKind.Function */]: localize(824, "function"),
|
|
329
|
+
[10 /* SymbolKind.Interface */]: localize(825, "interface"),
|
|
330
|
+
[19 /* SymbolKind.Key */]: localize(826, "key"),
|
|
331
|
+
[5 /* SymbolKind.Method */]: localize(827, "method"),
|
|
332
|
+
[1 /* SymbolKind.Module */]: localize(828, "module"),
|
|
333
|
+
[2 /* SymbolKind.Namespace */]: localize(829, "namespace"),
|
|
334
|
+
[20 /* SymbolKind.Null */]: localize(830, "null"),
|
|
335
|
+
[15 /* SymbolKind.Number */]: localize(831, "number"),
|
|
336
|
+
[18 /* SymbolKind.Object */]: localize(832, "object"),
|
|
337
|
+
[24 /* SymbolKind.Operator */]: localize(833, "operator"),
|
|
338
|
+
[3 /* SymbolKind.Package */]: localize(834, "package"),
|
|
339
|
+
[6 /* SymbolKind.Property */]: localize(835, "property"),
|
|
340
|
+
[14 /* SymbolKind.String */]: localize(836, "string"),
|
|
341
|
+
[22 /* SymbolKind.Struct */]: localize(837, "struct"),
|
|
342
|
+
[25 /* SymbolKind.TypeParameter */]: localize(838, "type parameter"),
|
|
343
|
+
[12 /* SymbolKind.Variable */]: localize(839, "variable"),
|
|
344
344
|
};
|
|
345
345
|
/**
|
|
346
346
|
* @internal
|
|
347
347
|
*/
|
|
348
348
|
export function getAriaLabelForSymbol(symbolName, kind) {
|
|
349
|
-
return localize(
|
|
349
|
+
return localize(840, '{0} ({1})', symbolName, symbolKindNames[kind]);
|
|
350
350
|
}
|
|
351
351
|
/**
|
|
352
352
|
* @internal
|
|
@@ -325,7 +325,7 @@ export class EditStack {
|
|
|
325
325
|
if (isEditStackElement(lastElement) && lastElement.canAppend(this._model)) {
|
|
326
326
|
return lastElement;
|
|
327
327
|
}
|
|
328
|
-
const newElement = new SingleModelEditStackElement(nls.localize(
|
|
328
|
+
const newElement = new SingleModelEditStackElement(nls.localize(842, "Typing"), 'undoredo.textBufferEdit', this._model, beforeCursorState);
|
|
329
329
|
this._undoRedoService.pushElement(newElement, group);
|
|
330
330
|
return newElement;
|
|
331
331
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { stringDiff } from '../../../base/common/diff/diff.js';
|
|
6
|
+
import { isHighSurrogate } from '../../../base/common/strings.js';
|
|
6
7
|
import { Range } from '../core/range.js';
|
|
7
8
|
import { computeLinks } from '../languages/linkComputer.js';
|
|
8
9
|
import { BasicInplaceReplace } from '../languages/supports/inplaceReplaceSupport.js';
|
|
@@ -10,6 +11,7 @@ import { createMonacoBaseAPI } from './editorBaseApi.js';
|
|
|
10
11
|
import { StopWatch } from '../../../base/common/stopwatch.js';
|
|
11
12
|
import { UnicodeTextModelHighlighter } from './unicodeTextModelHighlighter.js';
|
|
12
13
|
import { linesDiffComputers } from '../diff/linesDiffComputers.js';
|
|
14
|
+
import { verifyLinesDiff } from '../diff/verifyLinesDiff.js';
|
|
13
15
|
import { computeDefaultDocumentColors } from '../languages/defaultDocumentColorsComputer.js';
|
|
14
16
|
import { findSectionHeaders } from './findSectionHeaders.js';
|
|
15
17
|
import { WorkerTextModelSyncServer } from './textModelSync/textModelSync.impl.js';
|
|
@@ -57,20 +59,21 @@ export class EditorWorker {
|
|
|
57
59
|
return findSectionHeaders(model, options);
|
|
58
60
|
}
|
|
59
61
|
// ---- BEGIN diff --------------------------------------------------------------------------
|
|
60
|
-
async $computeDiff(originalUrl, modifiedUrl, options, algorithm) {
|
|
62
|
+
async $computeDiff(originalUrl, modifiedUrl, options, algorithm, verify = false) {
|
|
61
63
|
const original = this._getModel(originalUrl);
|
|
62
64
|
const modified = this._getModel(modifiedUrl);
|
|
63
65
|
if (!original || !modified) {
|
|
64
66
|
return null;
|
|
65
67
|
}
|
|
66
68
|
const diffAlgorithm = await resolveLinesDiffComputer(algorithm);
|
|
67
|
-
const result = EditorWorker.computeDiff(original, modified, options, diffAlgorithm);
|
|
69
|
+
const result = EditorWorker.computeDiff(original, modified, options, diffAlgorithm, verify);
|
|
68
70
|
return result;
|
|
69
71
|
}
|
|
70
|
-
static computeDiff(originalTextModel, modifiedTextModel, options, diffAlgorithm) {
|
|
72
|
+
static computeDiff(originalTextModel, modifiedTextModel, options, diffAlgorithm, verify) {
|
|
71
73
|
const originalLines = originalTextModel.getLinesContent();
|
|
72
74
|
const modifiedLines = modifiedTextModel.getLinesContent();
|
|
73
75
|
const result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);
|
|
76
|
+
const validity = verify ? verifyLinesDiff(result, originalLines, modifiedLines, options.ignoreTrimWhitespace) : undefined;
|
|
74
77
|
const identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));
|
|
75
78
|
function getLineChanges(changes) {
|
|
76
79
|
return changes.map(m => ([m.original.startLineNumber, m.original.endLineNumberExclusive, m.modified.startLineNumber, m.modified.endLineNumberExclusive, m.innerChanges?.map(m => [
|
|
@@ -87,6 +90,7 @@ export class EditorWorker {
|
|
|
87
90
|
return {
|
|
88
91
|
identical,
|
|
89
92
|
quitEarly: result.hitTimeout,
|
|
93
|
+
validity,
|
|
90
94
|
changes: getLineChanges(result.changes),
|
|
91
95
|
moves: result.moves.map(m => ([
|
|
92
96
|
m.lineRangeMapping.original.startLineNumber,
|
|
@@ -166,17 +170,34 @@ export class EditorWorker {
|
|
|
166
170
|
// compute diff between original and edit.text
|
|
167
171
|
const changes = stringDiff(original, text, pretty);
|
|
168
172
|
const editOffset = model.offsetAt(Range.lift(range).getStartPosition());
|
|
173
|
+
const newEdits = [];
|
|
174
|
+
let useOriginalEdit = false;
|
|
169
175
|
for (const change of changes) {
|
|
176
|
+
const originalEnd = change.originalStart + change.originalLength;
|
|
170
177
|
const start = model.positionAt(editOffset + change.originalStart);
|
|
171
|
-
const end = model.positionAt(editOffset +
|
|
178
|
+
const end = model.positionAt(editOffset + originalEnd);
|
|
179
|
+
const startLineContent = model.getLineContent(start.lineNumber);
|
|
180
|
+
const endLineContent = model.getLineContent(end.lineNumber);
|
|
181
|
+
const startFollowsHighSurrogate = start.column > 1 && isHighSurrogate(startLineContent.charCodeAt(start.column - 2));
|
|
182
|
+
const endFollowsHighSurrogate = end.column > 1 && end.column <= endLineContent.length && isHighSurrogate(endLineContent.charCodeAt(end.column - 2));
|
|
183
|
+
if (startFollowsHighSurrogate || endFollowsHighSurrogate) {
|
|
184
|
+
useOriginalEdit = true;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
172
187
|
const newEdit = {
|
|
173
|
-
text: text.
|
|
188
|
+
text: text.slice(change.modifiedStart, change.modifiedStart + change.modifiedLength),
|
|
174
189
|
range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }
|
|
175
190
|
};
|
|
176
191
|
if (model.getValueInRange(newEdit.range) !== newEdit.text) {
|
|
177
|
-
|
|
192
|
+
newEdits.push(newEdit);
|
|
178
193
|
}
|
|
179
194
|
}
|
|
195
|
+
if (useOriginalEdit) {
|
|
196
|
+
result.push({ range, text });
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
result.push(...newEdits);
|
|
200
|
+
}
|
|
180
201
|
}
|
|
181
202
|
if (typeof lastEol === 'number') {
|
|
182
203
|
result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/services/editorWebWorker.ts","vs/editor/common/services/editorWebWorker.ts"],"names":[],"mappings":"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","file":"editorWebWorker.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 { stringDiff } from '../../../base/common/diff/diff.js';\nimport { IDisposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IWebWorkerServerRequestHandler } from '../../../base/common/worker/webWorker.js';\nimport { IRange, Range } from '../core/range.js';\nimport { EndOfLineSequence, ITextModel } from '../model.js';\nimport { IMirrorTextModel, IModelChangedEvent } from '../model/mirrorTextModel.js';\nimport { IColorInformation, IInplaceReplaceSupportResult, ILink, TextEdit } from '../languages.js';\nimport { computeLinks } from '../languages/linkComputer.js';\nimport { BasicInplaceReplace } from '../languages/supports/inplaceReplaceSupport.js';\nimport { DiffAlgorithmName, IDiffComputationResult, ILineChange, IUnicodeHighlightsResult } from './editorWorker.js';\nimport { createMonacoBaseAPI } from './editorBaseApi.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { UnicodeTextModelHighlighter, UnicodeHighlighterOptions } from './unicodeTextModelHighlighter.js';\nimport { ILinesDiffComputer } from '../diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping } from '../diff/rangeMapping.js';\nimport { linesDiffComputers } from '../diff/linesDiffComputers.js';\nimport { IDocumentDiffProviderOptions } from '../diff/documentDiffProvider.js';\nimport { computeDefaultDocumentColors } from '../languages/defaultDocumentColorsComputer.js';\nimport { FindSectionHeaderOptions, SectionHeader, findSectionHeaders } from './findSectionHeaders.js';\nimport { IRawModelData, IWorkerTextModelSyncChannelServer } from './textModelSync/textModelSync.protocol.js';\nimport { ICommonModel, WorkerTextModelSyncServer } from './textModelSync/textModelSync.impl.js';\n\nexport interface IMirrorModel extends IMirrorTextModel {\n\treadonly uri: URI;\n\treadonly version: number;\n\tgetValue(): string;\n}\n\nexport interface IWorkerContext<H = {}> {\n\t/**\n\t * A proxy to the main thread host object.\n\t */\n\thost: H;\n\t/**\n\t * Get all available mirror models in this worker.\n\t */\n\tgetMirrorModels(): IMirrorModel[];\n}\n\n/**\n * Range of a word inside a model.\n * @internal\n */\nexport interface IWordRange {\n\t/**\n\t * The index where the word starts.\n\t */\n\treadonly start: number;\n\t/**\n\t * The index where the word ends.\n\t */\n\treadonly end: number;\n}\n\n/**\n * @internal\n */\nexport class EditorWorker implements IDisposable, IWorkerTextModelSyncChannelServer, IWebWorkerServerRequestHandler {\n\t_requestHandlerBrand: void = undefined;\n\n\tprivate readonly _workerTextModelSyncServer = new WorkerTextModelSyncServer();\n\n\tconstructor(\n\t\tprivate readonly _foreignModule: unknown | null = null\n\t) { }\n\n\tdispose(): void {\n\t}\n\n\tpublic async $ping() {\n\t\treturn 'pong';\n\t}\n\n\tprotected _getModel(uri: string): ICommonModel | undefined {\n\t\treturn this._workerTextModelSyncServer.getModel(uri);\n\t}\n\n\tpublic getModels(): ICommonModel[] {\n\t\treturn this._workerTextModelSyncServer.getModels();\n\t}\n\n\tpublic $acceptNewModel(data: IRawModelData): void {\n\t\tthis._workerTextModelSyncServer.$acceptNewModel(data);\n\t}\n\n\tpublic $acceptModelChanged(uri: string, e: IModelChangedEvent): void {\n\t\tthis._workerTextModelSyncServer.$acceptModelChanged(uri, e);\n\t}\n\n\tpublic $acceptRemovedModel(uri: string): void {\n\t\tthis._workerTextModelSyncServer.$acceptRemovedModel(uri);\n\t}\n\n\tpublic async $computeUnicodeHighlights(url: string, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 };\n\t\t}\n\t\treturn UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range);\n\t}\n\n\tpublic async $findSectionHeaders(url: string, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\treturn findSectionHeaders(model, options);\n\t}\n\n\t// ---- BEGIN diff --------------------------------------------------------------------------\n\n\tpublic async $computeDiff(originalUrl: string, modifiedUrl: string, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName): Promise<IDiffComputationResult | null> {\n\t\tconst original = this._getModel(originalUrl);\n\t\tconst modified = this._getModel(modifiedUrl);\n\t\tif (!original || !modified) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst diffAlgorithm = await resolveLinesDiffComputer(algorithm);\n\t\tconst result = EditorWorker.computeDiff(original, modified, options, diffAlgorithm);\n\t\treturn result;\n\t}\n\n\tprivate static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, options: IDocumentDiffProviderOptions, diffAlgorithm: ILinesDiffComputer): IDiffComputationResult {\n\n\t\tconst originalLines = originalTextModel.getLinesContent();\n\t\tconst modifiedLines = modifiedTextModel.getLinesContent();\n\n\t\tconst result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);\n\n\t\tconst identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));\n\n\t\tfunction getLineChanges(changes: readonly DetailedLineRangeMapping[]): ILineChange[] {\n\t\t\treturn changes.map(m => ([m.original.startLineNumber, m.original.endLineNumberExclusive, m.modified.startLineNumber, m.modified.endLineNumberExclusive, m.innerChanges?.map(m => [\n\t\t\t\tm.originalRange.startLineNumber,\n\t\t\t\tm.originalRange.startColumn,\n\t\t\t\tm.originalRange.endLineNumber,\n\t\t\t\tm.originalRange.endColumn,\n\t\t\t\tm.modifiedRange.startLineNumber,\n\t\t\t\tm.modifiedRange.startColumn,\n\t\t\t\tm.modifiedRange.endLineNumber,\n\t\t\t\tm.modifiedRange.endColumn,\n\t\t\t])]));\n\t\t}\n\n\t\treturn {\n\t\t\tidentical,\n\t\t\tquitEarly: result.hitTimeout,\n\t\t\tchanges: getLineChanges(result.changes),\n\t\t\tmoves: result.moves.map(m => ([\n\t\t\t\tm.lineRangeMapping.original.startLineNumber,\n\t\t\t\tm.lineRangeMapping.original.endLineNumberExclusive,\n\t\t\t\tm.lineRangeMapping.modified.startLineNumber,\n\t\t\t\tm.lineRangeMapping.modified.endLineNumberExclusive,\n\t\t\t\tgetLineChanges(m.changes)\n\t\t\t])),\n\t\t};\n\t}\n\n\tprivate static _modelsAreIdentical(original: ICommonModel | ITextModel, modified: ICommonModel | ITextModel): boolean {\n\t\tconst originalLineCount = original.getLineCount();\n\t\tconst modifiedLineCount = modified.getLineCount();\n\t\tif (originalLineCount !== modifiedLineCount) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let line = 1; line <= originalLineCount; line++) {\n\t\t\tconst originalLine = original.getLineContent(line);\n\t\t\tconst modifiedLine = modified.getLineContent(line);\n\t\t\tif (originalLine !== modifiedLine) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// ---- END diff --------------------------------------------------------------------------\n\n\n\t// ---- BEGIN minimal edits ---------------------------------------------------------------\n\n\tprivate static readonly _diffLimit = 100000;\n\n\tpublic async $computeMoreMinimalEdits(modelUrl: string, edits: TextEdit[], pretty: boolean): Promise<TextEdit[]> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn edits;\n\t\t}\n\n\t\tconst result: TextEdit[] = [];\n\t\tlet lastEol: EndOfLineSequence | undefined = undefined;\n\n\t\tedits = edits.slice(0).sort((a, b) => {\n\t\t\tif (a.range && b.range) {\n\t\t\t\treturn Range.compareRangesUsingStarts(a.range, b.range);\n\t\t\t}\n\t\t\t// eol only changes should go to the end\n\t\t\tconst aRng = a.range ? 0 : 1;\n\t\t\tconst bRng = b.range ? 0 : 1;\n\t\t\treturn aRng - bRng;\n\t\t});\n\n\t\t// merge adjacent edits\n\t\tlet writeIndex = 0;\n\t\tfor (let readIndex = 1; readIndex < edits.length; readIndex++) {\n\t\t\tif (Range.getEndPosition(edits[writeIndex].range).equals(Range.getStartPosition(edits[readIndex].range))) {\n\t\t\t\tedits[writeIndex].range = Range.fromPositions(Range.getStartPosition(edits[writeIndex].range), Range.getEndPosition(edits[readIndex].range));\n\t\t\t\tedits[writeIndex].text += edits[readIndex].text;\n\t\t\t} else {\n\t\t\t\twriteIndex++;\n\t\t\t\tedits[writeIndex] = edits[readIndex];\n\t\t\t}\n\t\t}\n\t\tedits.length = writeIndex + 1;\n\n\t\tfor (let { range, text, eol } of edits) {\n\n\t\t\tif (typeof eol === 'number') {\n\t\t\t\tlastEol = eol;\n\t\t\t}\n\n\t\t\tif (Range.isEmpty(range) && !text) {\n\t\t\t\t// empty change\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst original = model.getValueInRange(range);\n\t\t\ttext = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\n\n\t\t\tif (original === text) {\n\t\t\t\t// noop\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// make sure diff won't take too long\n\t\t\tif (Math.max(text.length, original.length) > EditorWorker._diffLimit) {\n\t\t\t\tresult.push({ range, text });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// compute diff between original and edit.text\n\t\t\tconst changes = stringDiff(original, text, pretty);\n\t\t\tconst editOffset = model.offsetAt(Range.lift(range).getStartPosition());\n\n\t\t\tfor (const change of changes) {\n\t\t\t\tconst start = model.positionAt(editOffset + change.originalStart);\n\t\t\t\tconst end = model.positionAt(editOffset + change.originalStart + change.originalLength);\n\t\t\t\tconst newEdit: TextEdit = {\n\t\t\t\t\ttext: text.substr(change.modifiedStart, change.modifiedLength),\n\t\t\t\t\trange: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\n\t\t\t\t};\n\n\t\t\t\tif (model.getValueInRange(newEdit.range) !== newEdit.text) {\n\t\t\t\t\tresult.push(newEdit);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof lastEol === 'number') {\n\t\t\tresult.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// ---- END minimal edits ---------------------------------------------------------------\n\n\tpublic async $computeLinks(modelUrl: string): Promise<ILink[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn computeLinks(model);\n\t}\n\n\t// --- BEGIN default document colors -----------------------------------------------------------\n\n\tpublic async $computeDefaultDocumentColors(modelUrl: string): Promise<IColorInformation[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn computeDefaultDocumentColors(model);\n\t}\n\n\t// ---- BEGIN suggest --------------------------------------------------------------------------\n\n\tprivate static readonly _suggestionsLimit = 10000;\n\n\tpublic async $textualSuggest(modelUrls: string[], leadingWord: string | undefined, wordDef: string, wordDefFlags: string): Promise<{ words: string[]; duration: number } | null> {\n\n\t\tconst sw = new StopWatch();\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst seen = new Set<string>();\n\n\t\touter: for (const url of modelUrls) {\n\t\t\tconst model = this._getModel(url);\n\t\t\tif (!model) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const word of model.words(wordDefRegExp)) {\n\t\t\t\tif (word === leadingWord || !isNaN(Number(word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tseen.add(word);\n\t\t\t\tif (seen.size > EditorWorker._suggestionsLimit) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { words: Array.from(seen), duration: sw.elapsed() };\n\t}\n\n\n\t// ---- END suggest --------------------------------------------------------------------------\n\n\t//#region -- word ranges --\n\n\tpublic async $computeWordRanges(modelUrl: string, range: IRange, wordDef: string, wordDefFlags: string): Promise<{ [word: string]: IRange[] }> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn Object.create(null);\n\t\t}\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst result: { [word: string]: IRange[] } = Object.create(null);\n\t\tfor (let line = range.startLineNumber; line < range.endLineNumber; line++) {\n\t\t\tconst words = model.getLineWords(line, wordDefRegExp);\n\t\t\tfor (const word of words) {\n\t\t\t\tif (!isNaN(Number(word.word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet array = result[word.word];\n\t\t\t\tif (!array) {\n\t\t\t\t\tarray = [];\n\t\t\t\t\tresult[word.word] = array;\n\t\t\t\t}\n\t\t\t\tarray.push({\n\t\t\t\t\tstartLineNumber: line,\n\t\t\t\t\tstartColumn: word.startColumn,\n\t\t\t\t\tendLineNumber: line,\n\t\t\t\t\tendColumn: word.endColumn\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t//#endregion\n\n\tpublic async $navigateValueSet(modelUrl: string, range: IRange, up: boolean, wordDef: string, wordDefFlags: string): Promise<IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\n\t\tif (range.startColumn === range.endColumn) {\n\t\t\trange = {\n\t\t\t\tstartLineNumber: range.startLineNumber,\n\t\t\t\tstartColumn: range.startColumn,\n\t\t\t\tendLineNumber: range.endLineNumber,\n\t\t\t\tendColumn: range.endColumn + 1\n\t\t\t};\n\t\t}\n\n\t\tconst selectionText = model.getValueInRange(range);\n\n\t\tconst wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\n\t\tif (!wordRange) {\n\t\t\treturn null;\n\t\t}\n\t\tconst word = model.getValueInRange(wordRange);\n\t\tconst result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\n\t\treturn result;\n\t}\n\n\t// ---- BEGIN foreign module support --------------------------------------------------------------------------\n\n\t// foreign method request\n\tpublic $fmr(method: string, args: unknown[]): Promise<unknown> {\n\t\tif (!this._foreignModule || typeof (this._foreignModule as Record<string, unknown>)[method] !== 'function') {\n\t\t\treturn Promise.reject(new Error('Missing requestHandler or method: ' + method));\n\t\t}\n\n\t\ttry {\n\t\t\treturn Promise.resolve((this._foreignModule as Record<string, Function>)[method].apply(this._foreignModule, args));\n\t\t} catch (e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n\n\t// ---- END foreign module support --------------------------------------------------------------------------\n}\n\n// This is only available in a Web Worker\ndeclare function importScripts(...urls: string[]): void;\n\nif (typeof importScripts === 'function') {\n\t// Running in a web worker\n\tglobalThis.monaco = createMonacoBaseAPI();\n}\n\nfunction resolveLinesDiffComputer(algorithm: DiffAlgorithmName): ILinesDiffComputer | Promise<ILinesDiffComputer> {\n\tswitch (algorithm) {\n\t\tcase 'legacy': return linesDiffComputers.getLegacy();\n\t\tcase 'advanced': return linesDiffComputers.getDefault();\n\t\tcase 'advanced-external': return linesDiffComputers.getAdvancedExternal();\n\t\tcase 'advanced-wasm': return linesDiffComputers.getAdvancedWasm();\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 { stringDiff } from '../../../base/common/diff/diff.js';\nimport { IDisposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IWebWorkerServerRequestHandler } from '../../../base/common/worker/webWorker.js';\nimport { IRange, Range } from '../core/range.js';\nimport { EndOfLineSequence, ITextModel } from '../model.js';\nimport { IMirrorTextModel, IModelChangedEvent } from '../model/mirrorTextModel.js';\nimport { IColorInformation, IInplaceReplaceSupportResult, ILink, TextEdit } from '../languages.js';\nimport { computeLinks } from '../languages/linkComputer.js';\nimport { BasicInplaceReplace } from '../languages/supports/inplaceReplaceSupport.js';\nimport { DiffAlgorithmName, IDiffComputationResult, ILineChange, IUnicodeHighlightsResult } from './editorWorker.js';\nimport { createMonacoBaseAPI } from './editorBaseApi.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { UnicodeTextModelHighlighter, UnicodeHighlighterOptions } from './unicodeTextModelHighlighter.js';\nimport { ILinesDiffComputer } from '../diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping } from '../diff/rangeMapping.js';\nimport { linesDiffComputers } from '../diff/linesDiffComputers.js';\nimport { IDocumentDiffProviderOptions } from '../diff/documentDiffProvider.js';\nimport { computeDefaultDocumentColors } from '../languages/defaultDocumentColorsComputer.js';\nimport { FindSectionHeaderOptions, SectionHeader, findSectionHeaders } from './findSectionHeaders.js';\nimport { IRawModelData, IWorkerTextModelSyncChannelServer } from './textModelSync/textModelSync.protocol.js';\nimport { ICommonModel, WorkerTextModelSyncServer } from './textModelSync/textModelSync.impl.js';\n\nexport interface IMirrorModel extends IMirrorTextModel {\n\treadonly uri: URI;\n\treadonly version: number;\n\tgetValue(): string;\n}\n\nexport interface IWorkerContext<H = {}> {\n\t/**\n\t * A proxy to the main thread host object.\n\t */\n\thost: H;\n\t/**\n\t * Get all available mirror models in this worker.\n\t */\n\tgetMirrorModels(): IMirrorModel[];\n}\n\n/**\n * Range of a word inside a model.\n * @internal\n */\nexport interface IWordRange {\n\t/**\n\t * The index where the word starts.\n\t */\n\treadonly start: number;\n\t/**\n\t * The index where the word ends.\n\t */\n\treadonly end: number;\n}\n\n/**\n * @internal\n */\nexport class EditorWorker implements IDisposable, IWorkerTextModelSyncChannelServer, IWebWorkerServerRequestHandler {\n\t_requestHandlerBrand: void = undefined;\n\n\tprivate readonly _workerTextModelSyncServer = new WorkerTextModelSyncServer();\n\n\tconstructor(\n\t\tprivate readonly _foreignModule: unknown | null = null\n\t) { }\n\n\tdispose(): void {\n\t}\n\n\tpublic async $ping() {\n\t\treturn 'pong';\n\t}\n\n\tprotected _getModel(uri: string): ICommonModel | undefined {\n\t\treturn this._workerTextModelSyncServer.getModel(uri);\n\t}\n\n\tpublic getModels(): ICommonModel[] {\n\t\treturn this._workerTextModelSyncServer.getModels();\n\t}\n\n\tpublic $acceptNewModel(data: IRawModelData): void {\n\t\tthis._workerTextModelSyncServer.$acceptNewModel(data);\n\t}\n\n\tpublic $acceptModelChanged(uri: string, e: IModelChangedEvent): void {\n\t\tthis._workerTextModelSyncServer.$acceptModelChanged(uri, e);\n\t}\n\n\tpublic $acceptRemovedModel(uri: string): void {\n\t\tthis._workerTextModelSyncServer.$acceptRemovedModel(uri);\n\t}\n\n\tpublic async $computeUnicodeHighlights(url: string, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 };\n\t\t}\n\t\treturn UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range);\n\t}\n\n\tpublic async $findSectionHeaders(url: string, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\treturn findSectionHeaders(model, options);\n\t}\n\n\t// ---- BEGIN diff --------------------------------------------------------------------------\n\n\tpublic async $computeDiff(originalUrl: string, modifiedUrl: string, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName): Promise<IDiffComputationResult | null> {\n\t\tconst original = this._getModel(originalUrl);\n\t\tconst modified = this._getModel(modifiedUrl);\n\t\tif (!original || !modified) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst diffAlgorithm = await resolveLinesDiffComputer(algorithm);\n\t\tconst result = EditorWorker.computeDiff(original, modified, options, diffAlgorithm);\n\t\treturn result;\n\t}\n\n\tprivate static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, options: IDocumentDiffProviderOptions, diffAlgorithm: ILinesDiffComputer): IDiffComputationResult {\n\n\t\tconst originalLines = originalTextModel.getLinesContent();\n\t\tconst modifiedLines = modifiedTextModel.getLinesContent();\n\n\t\tconst result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);\n\n\t\tconst identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));\n\n\t\tfunction getLineChanges(changes: readonly DetailedLineRangeMapping[]): ILineChange[] {\n\t\t\treturn changes.map(m => ([m.original.startLineNumber, m.original.endLineNumberExclusive, m.modified.startLineNumber, m.modified.endLineNumberExclusive, m.innerChanges?.map(m => [\n\t\t\t\tm.originalRange.startLineNumber,\n\t\t\t\tm.originalRange.startColumn,\n\t\t\t\tm.originalRange.endLineNumber,\n\t\t\t\tm.originalRange.endColumn,\n\t\t\t\tm.modifiedRange.startLineNumber,\n\t\t\t\tm.modifiedRange.startColumn,\n\t\t\t\tm.modifiedRange.endLineNumber,\n\t\t\t\tm.modifiedRange.endColumn,\n\t\t\t])]));\n\t\t}\n\n\t\treturn {\n\t\t\tidentical,\n\t\t\tquitEarly: result.hitTimeout,\n\t\t\tchanges: getLineChanges(result.changes),\n\t\t\tmoves: result.moves.map(m => ([\n\t\t\t\tm.lineRangeMapping.original.startLineNumber,\n\t\t\t\tm.lineRangeMapping.original.endLineNumberExclusive,\n\t\t\t\tm.lineRangeMapping.modified.startLineNumber,\n\t\t\t\tm.lineRangeMapping.modified.endLineNumberExclusive,\n\t\t\t\tgetLineChanges(m.changes)\n\t\t\t])),\n\t\t};\n\t}\n\n\tprivate static _modelsAreIdentical(original: ICommonModel | ITextModel, modified: ICommonModel | ITextModel): boolean {\n\t\tconst originalLineCount = original.getLineCount();\n\t\tconst modifiedLineCount = modified.getLineCount();\n\t\tif (originalLineCount !== modifiedLineCount) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let line = 1; line <= originalLineCount; line++) {\n\t\t\tconst originalLine = original.getLineContent(line);\n\t\t\tconst modifiedLine = modified.getLineContent(line);\n\t\t\tif (originalLine !== modifiedLine) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// ---- END diff --------------------------------------------------------------------------\n\n\n\t// ---- BEGIN minimal edits ---------------------------------------------------------------\n\n\tprivate static readonly _diffLimit = 100000;\n\n\tpublic async $computeMoreMinimalEdits(modelUrl: string, edits: TextEdit[], pretty: boolean): Promise<TextEdit[]> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn edits;\n\t\t}\n\n\t\tconst result: TextEdit[] = [];\n\t\tlet lastEol: EndOfLineSequence | undefined = undefined;\n\n\t\tedits = edits.slice(0).sort((a, b) => {\n\t\t\tif (a.range && b.range) {\n\t\t\t\treturn Range.compareRangesUsingStarts(a.range, b.range);\n\t\t\t}\n\t\t\t// eol only changes should go to the end\n\t\t\tconst aRng = a.range ? 0 : 1;\n\t\t\tconst bRng = b.range ? 0 : 1;\n\t\t\treturn aRng - bRng;\n\t\t});\n\n\t\t// merge adjacent edits\n\t\tlet writeIndex = 0;\n\t\tfor (let readIndex = 1; readIndex < edits.length; readIndex++) {\n\t\t\tif (Range.getEndPosition(edits[writeIndex].range).equals(Range.getStartPosition(edits[readIndex].range))) {\n\t\t\t\tedits[writeIndex].range = Range.fromPositions(Range.getStartPosition(edits[writeIndex].range), Range.getEndPosition(edits[readIndex].range));\n\t\t\t\tedits[writeIndex].text += edits[readIndex].text;\n\t\t\t} else {\n\t\t\t\twriteIndex++;\n\t\t\t\tedits[writeIndex] = edits[readIndex];\n\t\t\t}\n\t\t}\n\t\tedits.length = writeIndex + 1;\n\n\t\tfor (let { range, text, eol } of edits) {\n\n\t\t\tif (typeof eol === 'number') {\n\t\t\t\tlastEol = eol;\n\t\t\t}\n\n\t\t\tif (Range.isEmpty(range) && !text) {\n\t\t\t\t// empty change\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst original = model.getValueInRange(range);\n\t\t\ttext = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\n\n\t\t\tif (original === text) {\n\t\t\t\t// noop\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// make sure diff won't take too long\n\t\t\tif (Math.max(text.length, original.length) > EditorWorker._diffLimit) {\n\t\t\t\tresult.push({ range, text });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// compute diff between original and edit.text\n\t\t\tconst changes = stringDiff(original, text, pretty);\n\t\t\tconst editOffset = model.offsetAt(Range.lift(range).getStartPosition());\n\n\t\t\tfor (const change of changes) {\n\t\t\t\tconst start = model.positionAt(editOffset + change.originalStart);\n\t\t\t\tconst end = model.positionAt(editOffset + change.originalStart + change.originalLength);\n\t\t\t\tconst newEdit: TextEdit = {\n\t\t\t\t\ttext: text.substr(change.modifiedStart, change.modifiedLength),\n\t\t\t\t\trange: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\n\t\t\t\t};\n\n\t\t\t\tif (model.getValueInRange(newEdit.range) !== newEdit.text) {\n\t\t\t\t\tresult.push(newEdit);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof lastEol === 'number') {\n\t\t\tresult.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// ---- END minimal edits ---------------------------------------------------------------\n\n\tpublic async $computeLinks(modelUrl: string): Promise<ILink[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn computeLinks(model);\n\t}\n\n\t// --- BEGIN default document colors -----------------------------------------------------------\n\n\tpublic async $computeDefaultDocumentColors(modelUrl: string): Promise<IColorInformation[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn computeDefaultDocumentColors(model);\n\t}\n\n\t// ---- BEGIN suggest --------------------------------------------------------------------------\n\n\tprivate static readonly _suggestionsLimit = 10000;\n\n\tpublic async $textualSuggest(modelUrls: string[], leadingWord: string | undefined, wordDef: string, wordDefFlags: string): Promise<{ words: string[]; duration: number } | null> {\n\n\t\tconst sw = new StopWatch();\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst seen = new Set<string>();\n\n\t\touter: for (const url of modelUrls) {\n\t\t\tconst model = this._getModel(url);\n\t\t\tif (!model) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const word of model.words(wordDefRegExp)) {\n\t\t\t\tif (word === leadingWord || !isNaN(Number(word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tseen.add(word);\n\t\t\t\tif (seen.size > EditorWorker._suggestionsLimit) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { words: Array.from(seen), duration: sw.elapsed() };\n\t}\n\n\n\t// ---- END suggest --------------------------------------------------------------------------\n\n\t//#region -- word ranges --\n\n\tpublic async $computeWordRanges(modelUrl: string, range: IRange, wordDef: string, wordDefFlags: string): Promise<{ [word: string]: IRange[] }> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn Object.create(null);\n\t\t}\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst result: { [word: string]: IRange[] } = Object.create(null);\n\t\tfor (let line = range.startLineNumber; line < range.endLineNumber; line++) {\n\t\t\tconst words = model.getLineWords(line, wordDefRegExp);\n\t\t\tfor (const word of words) {\n\t\t\t\tif (!isNaN(Number(word.word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet array = result[word.word];\n\t\t\t\tif (!array) {\n\t\t\t\t\tarray = [];\n\t\t\t\t\tresult[word.word] = array;\n\t\t\t\t}\n\t\t\t\tarray.push({\n\t\t\t\t\tstartLineNumber: line,\n\t\t\t\t\tstartColumn: word.startColumn,\n\t\t\t\t\tendLineNumber: line,\n\t\t\t\t\tendColumn: word.endColumn\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t//#endregion\n\n\tpublic async $navigateValueSet(modelUrl: string, range: IRange, up: boolean, wordDef: string, wordDefFlags: string): Promise<IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\n\t\tif (range.startColumn === range.endColumn) {\n\t\t\trange = {\n\t\t\t\tstartLineNumber: range.startLineNumber,\n\t\t\t\tstartColumn: range.startColumn,\n\t\t\t\tendLineNumber: range.endLineNumber,\n\t\t\t\tendColumn: range.endColumn + 1\n\t\t\t};\n\t\t}\n\n\t\tconst selectionText = model.getValueInRange(range);\n\n\t\tconst wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\n\t\tif (!wordRange) {\n\t\t\treturn null;\n\t\t}\n\t\tconst word = model.getValueInRange(wordRange);\n\t\tconst result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\n\t\treturn result;\n\t}\n\n\t// ---- BEGIN foreign module support --------------------------------------------------------------------------\n\n\t// foreign method request\n\tpublic $fmr(method: string, args: unknown[]): Promise<unknown> {\n\t\tif (!this._foreignModule || typeof (this._foreignModule as Record<string, unknown>)[method] !== 'function') {\n\t\t\treturn Promise.reject(new Error('Missing requestHandler or method: ' + method));\n\t\t}\n\n\t\ttry {\n\t\t\treturn Promise.resolve((this._foreignModule as Record<string, Function>)[method].apply(this._foreignModule, args));\n\t\t} catch (e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n\n\t// ---- END foreign module support --------------------------------------------------------------------------\n}\n\n// This is only available in a Web Worker\ndeclare function importScripts(...urls: string[]): void;\n\nif (typeof importScripts === 'function') {\n\t// Running in a web worker\n\tglobalThis.monaco = createMonacoBaseAPI();\n}\n\nfunction resolveLinesDiffComputer(algorithm: DiffAlgorithmName): ILinesDiffComputer | Promise<ILinesDiffComputer> {\n\tswitch (algorithm) {\n\t\tcase 'legacy': return linesDiffComputers.getLegacy();\n\t\tcase 'advanced': return linesDiffComputers.getDefault();\n\t\tcase 'advanced-external': return linesDiffComputers.getAdvancedExternal();\n\t\tcase 'advanced-wasm': return linesDiffComputers.getAdvancedWasm();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/services/editorWebWorker.ts","vs/editor/common/services/editorWebWorker.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAU,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAA6B,MAAM,kCAAkC,CAAC;AAG1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAA2C,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAgB,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAkChG;;GAEG;AACH,MAAM,OAAO,YAAY;IAKxB,YACkB,iBAAiC,IAAI;QAArC,mBAAc,GAAd,cAAc,CAAuB;QALvD,yBAAoB,GAAS,SAAS,CAAC;QAEtB,+BAA0B,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAI1E,CAAC;IAEL,OAAO;IACP,CAAC;IAEM,KAAK,CAAC,KAAK;QACjB,OAAO,MAAM,CAAC;IACf,CAAC;IAES,SAAS,CAAC,GAAW;QAC9B,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,CAAC;IACpD,CAAC;IAEM,eAAe,CAAC,IAAmB;QACzC,IAAI,CAAC,0BAA0B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAEM,mBAAmB,CAAC,GAAW,EAAE,CAAqB;QAC5D,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEM,mBAAmB,CAAC,GAAW;QACrC,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,GAAW,EAAE,OAAkC,EAAE,KAAc;QACrG,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,CAAC;QAC/H,CAAC;QACD,OAAO,2BAA2B,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,GAAW,EAAE,OAAiC;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,6FAA6F;IAEtF,KAAK,CAAC,YAAY,CAAC,WAAmB,EAAE,WAAmB,EAAE,OAAqC,EAAE,SAA4B,EAAE,SAAkB,KAAK;QAC/J,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAC5F,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,iBAA4C,EAAE,iBAA4C,EAAE,OAAqC,EAAE,aAAiC,EAAE,MAAe;QAE/M,MAAM,aAAa,GAAG,iBAAiB,CAAC,eAAe,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,iBAAiB,CAAC,eAAe,EAAE,CAAC;QAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1H,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAEvH,SAAS,cAAc,CAAC,OAA4C;YACnE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChL,CAAC,CAAC,aAAa,CAAC,eAAe;oBAC/B,CAAC,CAAC,aAAa,CAAC,WAAW;oBAC3B,CAAC,CAAC,aAAa,CAAC,aAAa;oBAC7B,CAAC,CAAC,aAAa,CAAC,SAAS;oBACzB,CAAC,CAAC,aAAa,CAAC,eAAe;oBAC/B,CAAC,CAAC,aAAa,CAAC,WAAW;oBAC3B,CAAC,CAAC,aAAa,CAAC,aAAa;oBAC7B,CAAC,CAAC,aAAa,CAAC,SAAS;iBACzB,CAAC,CAAC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO;YACN,SAAS;YACT,SAAS,EAAE,MAAM,CAAC,UAAU;YAC5B,QAAQ;YACR,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe;gBAC3C,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,sBAAsB;gBAClD,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe;gBAC3C,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,sBAAsB;gBAClD,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;aACzB,CAAC,CAAC;SACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,QAAmC,EAAE,QAAmC;QAC1G,MAAM,iBAAiB,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAClD,IAAI,iBAAiB,KAAK,iBAAiB,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACd,CAAC;QACD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,2FAA2F;IAG3F,2FAA2F;aAEnE,eAAU,GAAG,MAAH,AAAS,CAAC;IAErC,KAAK,CAAC,wBAAwB,CAAC,QAAgB,EAAE,KAAiB,EAAE,MAAe;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAkC,SAAS,CAAC;QAEvD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YACD,wCAAwC;YACxC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,IAAI,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YAC/D,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC1G,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7I,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACP,UAAU,EAAE,CAAC;gBACb,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;QAE9B,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;YAExC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;YACf,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnC,eAAe;gBACf,SAAS;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAE9C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACvB,OAAO;gBACP,SAAS;YACV,CAAC;YAED,qCAAqC;YACrC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7B,SAAS;YACV,CAAC;YAED,8CAA8C;YAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAe,EAAE,CAAC;YAChC,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;gBACjE,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;gBACvD,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAChE,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC5D,MAAM,yBAAyB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrH,MAAM,uBAAuB,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,IAAI,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpJ,IAAI,yBAAyB,IAAI,uBAAuB,EAAE,CAAC;oBAC1D,eAAe,GAAG,IAAI,CAAC;oBACvB,MAAM;gBACP,CAAC;gBAED,MAAM,OAAO,GAAa;oBACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;oBACpF,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;iBAC7H,CAAC;gBAEF,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC3D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACF,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACF,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxH,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED,yFAAyF;IAElF,KAAK,CAAC,aAAa,CAAC,QAAgB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,gGAAgG;IAEzF,KAAK,CAAC,6BAA6B,CAAC,QAAgB;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,gGAAgG;aAExE,sBAAiB,GAAG,KAAH,AAAQ,CAAC;IAE3C,KAAK,CAAC,eAAe,CAAC,SAAmB,EAAE,WAA+B,EAAE,OAAe,EAAE,YAAoB;QAEvH,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,KAAK,EAAE,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,SAAS;YACV,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/C,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAClD,SAAS;gBACV,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACf,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC;oBAChD,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5D,CAAC;IAGD,8FAA8F;IAE9F,2BAA2B;IAEpB,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,YAAoB;QACrG,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,MAAM,GAAiC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjE,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,eAAe,EAAE,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC/B,SAAS;gBACV,CAAC;gBACD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACZ,KAAK,GAAG,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC3B,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACV,eAAe,EAAE,IAAI;oBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,aAAa,EAAE,IAAI;oBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;iBACzB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY;IAEL,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,KAAa,EAAE,EAAW,EAAE,OAAe,EAAE,YAAoB;QACjH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAExD,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YAC3C,KAAK,GAAG;gBACP,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC;aAC9B,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEnD,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QAC3H,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxG,OAAO,MAAM,CAAC;IACf,CAAC;IAED,+GAA+G;IAE/G,yBAAyB;IAClB,IAAI,CAAC,MAAc,EAAE,IAAe;QAC1C,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,OAAQ,IAAI,CAAC,cAA0C,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YAC5G,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,GAAG,MAAM,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC;YACJ,OAAO,OAAO,CAAC,OAAO,CAAE,IAAI,CAAC,cAA2C,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QACpH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;;AAQF,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;IACzC,0BAA0B;IAC1B,UAAU,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,wBAAwB,CAAC,SAA4B;IAC7D,QAAQ,SAAS,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,OAAO,kBAAkB,CAAC,SAAS,EAAE,CAAC;QACrD,KAAK,UAAU,CAAC,CAAC,OAAO,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACxD,KAAK,mBAAmB,CAAC,CAAC,OAAO,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;QAC1E,KAAK,eAAe,CAAC,CAAC,OAAO,kBAAkB,CAAC,eAAe,EAAE,CAAC;IACnE,CAAC;AACF,CAAC","file":"editorWebWorker.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 { stringDiff } from '../../../base/common/diff/diff.js';\nimport { IDisposable } from '../../../base/common/lifecycle.js';\nimport { isHighSurrogate } from '../../../base/common/strings.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IWebWorkerServerRequestHandler } from '../../../base/common/worker/webWorker.js';\nimport { IRange, Range } from '../core/range.js';\nimport { EndOfLineSequence, ITextModel } from '../model.js';\nimport { IMirrorTextModel, IModelChangedEvent } from '../model/mirrorTextModel.js';\nimport { IColorInformation, IInplaceReplaceSupportResult, ILink, TextEdit } from '../languages.js';\nimport { computeLinks } from '../languages/linkComputer.js';\nimport { BasicInplaceReplace } from '../languages/supports/inplaceReplaceSupport.js';\nimport { DiffAlgorithmName, IDiffComputationResult, ILineChange, IUnicodeHighlightsResult } from './editorWorker.js';\nimport { createMonacoBaseAPI } from './editorBaseApi.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { UnicodeTextModelHighlighter, UnicodeHighlighterOptions } from './unicodeTextModelHighlighter.js';\nimport { ILinesDiffComputer } from '../diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping } from '../diff/rangeMapping.js';\nimport { linesDiffComputers } from '../diff/linesDiffComputers.js';\nimport { IDocumentDiffProviderOptions } from '../diff/documentDiffProvider.js';\nimport { verifyLinesDiff } from '../diff/verifyLinesDiff.js';\nimport { computeDefaultDocumentColors } from '../languages/defaultDocumentColorsComputer.js';\nimport { FindSectionHeaderOptions, SectionHeader, findSectionHeaders } from './findSectionHeaders.js';\nimport { IRawModelData, IWorkerTextModelSyncChannelServer } from './textModelSync/textModelSync.protocol.js';\nimport { ICommonModel, WorkerTextModelSyncServer } from './textModelSync/textModelSync.impl.js';\n\nexport interface IMirrorModel extends IMirrorTextModel {\n\treadonly uri: URI;\n\treadonly version: number;\n\tgetValue(): string;\n}\n\nexport interface IWorkerContext<H = {}> {\n\t/**\n\t * A proxy to the main thread host object.\n\t */\n\thost: H;\n\t/**\n\t * Get all available mirror models in this worker.\n\t */\n\tgetMirrorModels(): IMirrorModel[];\n}\n\n/**\n * Range of a word inside a model.\n * @internal\n */\nexport interface IWordRange {\n\t/**\n\t * The index where the word starts.\n\t */\n\treadonly start: number;\n\t/**\n\t * The index where the word ends.\n\t */\n\treadonly end: number;\n}\n\n/**\n * @internal\n */\nexport class EditorWorker implements IDisposable, IWorkerTextModelSyncChannelServer, IWebWorkerServerRequestHandler {\n\t_requestHandlerBrand: void = undefined;\n\n\tprivate readonly _workerTextModelSyncServer = new WorkerTextModelSyncServer();\n\n\tconstructor(\n\t\tprivate readonly _foreignModule: unknown | null = null\n\t) { }\n\n\tdispose(): void {\n\t}\n\n\tpublic async $ping() {\n\t\treturn 'pong';\n\t}\n\n\tprotected _getModel(uri: string): ICommonModel | undefined {\n\t\treturn this._workerTextModelSyncServer.getModel(uri);\n\t}\n\n\tpublic getModels(): ICommonModel[] {\n\t\treturn this._workerTextModelSyncServer.getModels();\n\t}\n\n\tpublic $acceptNewModel(data: IRawModelData): void {\n\t\tthis._workerTextModelSyncServer.$acceptNewModel(data);\n\t}\n\n\tpublic $acceptModelChanged(uri: string, e: IModelChangedEvent): void {\n\t\tthis._workerTextModelSyncServer.$acceptModelChanged(uri, e);\n\t}\n\n\tpublic $acceptRemovedModel(uri: string): void {\n\t\tthis._workerTextModelSyncServer.$acceptRemovedModel(uri);\n\t}\n\n\tpublic async $computeUnicodeHighlights(url: string, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 };\n\t\t}\n\t\treturn UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range);\n\t}\n\n\tpublic async $findSectionHeaders(url: string, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\treturn findSectionHeaders(model, options);\n\t}\n\n\t// ---- BEGIN diff --------------------------------------------------------------------------\n\n\tpublic async $computeDiff(originalUrl: string, modifiedUrl: string, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName, verify: boolean = false): Promise<IDiffComputationResult | null> {\n\t\tconst original = this._getModel(originalUrl);\n\t\tconst modified = this._getModel(modifiedUrl);\n\t\tif (!original || !modified) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst diffAlgorithm = await resolveLinesDiffComputer(algorithm);\n\t\tconst result = EditorWorker.computeDiff(original, modified, options, diffAlgorithm, verify);\n\t\treturn result;\n\t}\n\n\tprivate static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, options: IDocumentDiffProviderOptions, diffAlgorithm: ILinesDiffComputer, verify: boolean): IDiffComputationResult {\n\n\t\tconst originalLines = originalTextModel.getLinesContent();\n\t\tconst modifiedLines = modifiedTextModel.getLinesContent();\n\n\t\tconst result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);\n\t\tconst validity = verify ? verifyLinesDiff(result, originalLines, modifiedLines, options.ignoreTrimWhitespace) : undefined;\n\n\t\tconst identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));\n\n\t\tfunction getLineChanges(changes: readonly DetailedLineRangeMapping[]): ILineChange[] {\n\t\t\treturn changes.map(m => ([m.original.startLineNumber, m.original.endLineNumberExclusive, m.modified.startLineNumber, m.modified.endLineNumberExclusive, m.innerChanges?.map(m => [\n\t\t\t\tm.originalRange.startLineNumber,\n\t\t\t\tm.originalRange.startColumn,\n\t\t\t\tm.originalRange.endLineNumber,\n\t\t\t\tm.originalRange.endColumn,\n\t\t\t\tm.modifiedRange.startLineNumber,\n\t\t\t\tm.modifiedRange.startColumn,\n\t\t\t\tm.modifiedRange.endLineNumber,\n\t\t\t\tm.modifiedRange.endColumn,\n\t\t\t])]));\n\t\t}\n\n\t\treturn {\n\t\t\tidentical,\n\t\t\tquitEarly: result.hitTimeout,\n\t\t\tvalidity,\n\t\t\tchanges: getLineChanges(result.changes),\n\t\t\tmoves: result.moves.map(m => ([\n\t\t\t\tm.lineRangeMapping.original.startLineNumber,\n\t\t\t\tm.lineRangeMapping.original.endLineNumberExclusive,\n\t\t\t\tm.lineRangeMapping.modified.startLineNumber,\n\t\t\t\tm.lineRangeMapping.modified.endLineNumberExclusive,\n\t\t\t\tgetLineChanges(m.changes)\n\t\t\t])),\n\t\t};\n\t}\n\n\tprivate static _modelsAreIdentical(original: ICommonModel | ITextModel, modified: ICommonModel | ITextModel): boolean {\n\t\tconst originalLineCount = original.getLineCount();\n\t\tconst modifiedLineCount = modified.getLineCount();\n\t\tif (originalLineCount !== modifiedLineCount) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let line = 1; line <= originalLineCount; line++) {\n\t\t\tconst originalLine = original.getLineContent(line);\n\t\t\tconst modifiedLine = modified.getLineContent(line);\n\t\t\tif (originalLine !== modifiedLine) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// ---- END diff --------------------------------------------------------------------------\n\n\n\t// ---- BEGIN minimal edits ---------------------------------------------------------------\n\n\tprivate static readonly _diffLimit = 100000;\n\n\tpublic async $computeMoreMinimalEdits(modelUrl: string, edits: TextEdit[], pretty: boolean): Promise<TextEdit[]> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn edits;\n\t\t}\n\n\t\tconst result: TextEdit[] = [];\n\t\tlet lastEol: EndOfLineSequence | undefined = undefined;\n\n\t\tedits = edits.slice(0).sort((a, b) => {\n\t\t\tif (a.range && b.range) {\n\t\t\t\treturn Range.compareRangesUsingStarts(a.range, b.range);\n\t\t\t}\n\t\t\t// eol only changes should go to the end\n\t\t\tconst aRng = a.range ? 0 : 1;\n\t\t\tconst bRng = b.range ? 0 : 1;\n\t\t\treturn aRng - bRng;\n\t\t});\n\n\t\t// merge adjacent edits\n\t\tlet writeIndex = 0;\n\t\tfor (let readIndex = 1; readIndex < edits.length; readIndex++) {\n\t\t\tif (Range.getEndPosition(edits[writeIndex].range).equals(Range.getStartPosition(edits[readIndex].range))) {\n\t\t\t\tedits[writeIndex].range = Range.fromPositions(Range.getStartPosition(edits[writeIndex].range), Range.getEndPosition(edits[readIndex].range));\n\t\t\t\tedits[writeIndex].text += edits[readIndex].text;\n\t\t\t} else {\n\t\t\t\twriteIndex++;\n\t\t\t\tedits[writeIndex] = edits[readIndex];\n\t\t\t}\n\t\t}\n\t\tedits.length = writeIndex + 1;\n\n\t\tfor (let { range, text, eol } of edits) {\n\n\t\t\tif (typeof eol === 'number') {\n\t\t\t\tlastEol = eol;\n\t\t\t}\n\n\t\t\tif (Range.isEmpty(range) && !text) {\n\t\t\t\t// empty change\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst original = model.getValueInRange(range);\n\t\t\ttext = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\n\n\t\t\tif (original === text) {\n\t\t\t\t// noop\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// make sure diff won't take too long\n\t\t\tif (Math.max(text.length, original.length) > EditorWorker._diffLimit) {\n\t\t\t\tresult.push({ range, text });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// compute diff between original and edit.text\n\t\t\tconst changes = stringDiff(original, text, pretty);\n\t\t\tconst editOffset = model.offsetAt(Range.lift(range).getStartPosition());\n\t\t\tconst newEdits: TextEdit[] = [];\n\t\t\tlet useOriginalEdit = false;\n\n\t\t\tfor (const change of changes) {\n\t\t\t\tconst originalEnd = change.originalStart + change.originalLength;\n\t\t\t\tconst start = model.positionAt(editOffset + change.originalStart);\n\t\t\t\tconst end = model.positionAt(editOffset + originalEnd);\n\t\t\t\tconst startLineContent = model.getLineContent(start.lineNumber);\n\t\t\t\tconst endLineContent = model.getLineContent(end.lineNumber);\n\t\t\t\tconst startFollowsHighSurrogate = start.column > 1 && isHighSurrogate(startLineContent.charCodeAt(start.column - 2));\n\t\t\t\tconst endFollowsHighSurrogate = end.column > 1 && end.column <= endLineContent.length && isHighSurrogate(endLineContent.charCodeAt(end.column - 2));\n\t\t\t\tif (startFollowsHighSurrogate || endFollowsHighSurrogate) {\n\t\t\t\t\tuseOriginalEdit = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst newEdit: TextEdit = {\n\t\t\t\t\ttext: text.slice(change.modifiedStart, change.modifiedStart + change.modifiedLength),\n\t\t\t\t\trange: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\n\t\t\t\t};\n\n\t\t\t\tif (model.getValueInRange(newEdit.range) !== newEdit.text) {\n\t\t\t\t\tnewEdits.push(newEdit);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (useOriginalEdit) {\n\t\t\t\tresult.push({ range, text });\n\t\t\t} else {\n\t\t\t\tresult.push(...newEdits);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof lastEol === 'number') {\n\t\t\tresult.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// ---- END minimal edits ---------------------------------------------------------------\n\n\tpublic async $computeLinks(modelUrl: string): Promise<ILink[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn computeLinks(model);\n\t}\n\n\t// --- BEGIN default document colors -----------------------------------------------------------\n\n\tpublic async $computeDefaultDocumentColors(modelUrl: string): Promise<IColorInformation[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn computeDefaultDocumentColors(model);\n\t}\n\n\t// ---- BEGIN suggest --------------------------------------------------------------------------\n\n\tprivate static readonly _suggestionsLimit = 10000;\n\n\tpublic async $textualSuggest(modelUrls: string[], leadingWord: string | undefined, wordDef: string, wordDefFlags: string): Promise<{ words: string[]; duration: number } | null> {\n\n\t\tconst sw = new StopWatch();\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst seen = new Set<string>();\n\n\t\touter: for (const url of modelUrls) {\n\t\t\tconst model = this._getModel(url);\n\t\t\tif (!model) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const word of model.words(wordDefRegExp)) {\n\t\t\t\tif (word === leadingWord || !isNaN(Number(word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tseen.add(word);\n\t\t\t\tif (seen.size > EditorWorker._suggestionsLimit) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { words: Array.from(seen), duration: sw.elapsed() };\n\t}\n\n\n\t// ---- END suggest --------------------------------------------------------------------------\n\n\t//#region -- word ranges --\n\n\tpublic async $computeWordRanges(modelUrl: string, range: IRange, wordDef: string, wordDefFlags: string): Promise<{ [word: string]: IRange[] }> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn Object.create(null);\n\t\t}\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst result: { [word: string]: IRange[] } = Object.create(null);\n\t\tfor (let line = range.startLineNumber; line < range.endLineNumber; line++) {\n\t\t\tconst words = model.getLineWords(line, wordDefRegExp);\n\t\t\tfor (const word of words) {\n\t\t\t\tif (!isNaN(Number(word.word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet array = result[word.word];\n\t\t\t\tif (!array) {\n\t\t\t\t\tarray = [];\n\t\t\t\t\tresult[word.word] = array;\n\t\t\t\t}\n\t\t\t\tarray.push({\n\t\t\t\t\tstartLineNumber: line,\n\t\t\t\t\tstartColumn: word.startColumn,\n\t\t\t\t\tendLineNumber: line,\n\t\t\t\t\tendColumn: word.endColumn\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t//#endregion\n\n\tpublic async $navigateValueSet(modelUrl: string, range: IRange, up: boolean, wordDef: string, wordDefFlags: string): Promise<IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\n\t\tif (range.startColumn === range.endColumn) {\n\t\t\trange = {\n\t\t\t\tstartLineNumber: range.startLineNumber,\n\t\t\t\tstartColumn: range.startColumn,\n\t\t\t\tendLineNumber: range.endLineNumber,\n\t\t\t\tendColumn: range.endColumn + 1\n\t\t\t};\n\t\t}\n\n\t\tconst selectionText = model.getValueInRange(range);\n\n\t\tconst wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\n\t\tif (!wordRange) {\n\t\t\treturn null;\n\t\t}\n\t\tconst word = model.getValueInRange(wordRange);\n\t\tconst result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\n\t\treturn result;\n\t}\n\n\t// ---- BEGIN foreign module support --------------------------------------------------------------------------\n\n\t// foreign method request\n\tpublic $fmr(method: string, args: unknown[]): Promise<unknown> {\n\t\tif (!this._foreignModule || typeof (this._foreignModule as Record<string, unknown>)[method] !== 'function') {\n\t\t\treturn Promise.reject(new Error('Missing requestHandler or method: ' + method));\n\t\t}\n\n\t\ttry {\n\t\t\treturn Promise.resolve((this._foreignModule as Record<string, Function>)[method].apply(this._foreignModule, args));\n\t\t} catch (e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n\n\t// ---- END foreign module support --------------------------------------------------------------------------\n}\n\n// This is only available in a Web Worker\ndeclare function importScripts(...urls: string[]): void;\n\nif (typeof importScripts === 'function') {\n\t// Running in a web worker\n\tglobalThis.monaco = createMonacoBaseAPI();\n}\n\nfunction resolveLinesDiffComputer(algorithm: DiffAlgorithmName): ILinesDiffComputer | Promise<ILinesDiffComputer> {\n\tswitch (algorithm) {\n\t\tcase 'legacy': return linesDiffComputers.getLegacy();\n\t\tcase 'advanced': return linesDiffComputers.getDefault();\n\t\tcase 'advanced-external': return linesDiffComputers.getAdvancedExternal();\n\t\tcase 'advanced-wasm': return linesDiffComputers.getAdvancedWasm();\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 { stringDiff } from '../../../base/common/diff/diff.js';\nimport { IDisposable } from '../../../base/common/lifecycle.js';\nimport { isHighSurrogate } from '../../../base/common/strings.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IWebWorkerServerRequestHandler } from '../../../base/common/worker/webWorker.js';\nimport { IRange, Range } from '../core/range.js';\nimport { EndOfLineSequence, ITextModel } from '../model.js';\nimport { IMirrorTextModel, IModelChangedEvent } from '../model/mirrorTextModel.js';\nimport { IColorInformation, IInplaceReplaceSupportResult, ILink, TextEdit } from '../languages.js';\nimport { computeLinks } from '../languages/linkComputer.js';\nimport { BasicInplaceReplace } from '../languages/supports/inplaceReplaceSupport.js';\nimport { DiffAlgorithmName, IDiffComputationResult, ILineChange, IUnicodeHighlightsResult } from './editorWorker.js';\nimport { createMonacoBaseAPI } from './editorBaseApi.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { UnicodeTextModelHighlighter, UnicodeHighlighterOptions } from './unicodeTextModelHighlighter.js';\nimport { ILinesDiffComputer } from '../diff/linesDiffComputer.js';\nimport { DetailedLineRangeMapping } from '../diff/rangeMapping.js';\nimport { linesDiffComputers } from '../diff/linesDiffComputers.js';\nimport { IDocumentDiffProviderOptions } from '../diff/documentDiffProvider.js';\nimport { verifyLinesDiff } from '../diff/verifyLinesDiff.js';\nimport { computeDefaultDocumentColors } from '../languages/defaultDocumentColorsComputer.js';\nimport { FindSectionHeaderOptions, SectionHeader, findSectionHeaders } from './findSectionHeaders.js';\nimport { IRawModelData, IWorkerTextModelSyncChannelServer } from './textModelSync/textModelSync.protocol.js';\nimport { ICommonModel, WorkerTextModelSyncServer } from './textModelSync/textModelSync.impl.js';\n\nexport interface IMirrorModel extends IMirrorTextModel {\n\treadonly uri: URI;\n\treadonly version: number;\n\tgetValue(): string;\n}\n\nexport interface IWorkerContext<H = {}> {\n\t/**\n\t * A proxy to the main thread host object.\n\t */\n\thost: H;\n\t/**\n\t * Get all available mirror models in this worker.\n\t */\n\tgetMirrorModels(): IMirrorModel[];\n}\n\n/**\n * Range of a word inside a model.\n * @internal\n */\nexport interface IWordRange {\n\t/**\n\t * The index where the word starts.\n\t */\n\treadonly start: number;\n\t/**\n\t * The index where the word ends.\n\t */\n\treadonly end: number;\n}\n\n/**\n * @internal\n */\nexport class EditorWorker implements IDisposable, IWorkerTextModelSyncChannelServer, IWebWorkerServerRequestHandler {\n\t_requestHandlerBrand: void = undefined;\n\n\tprivate readonly _workerTextModelSyncServer = new WorkerTextModelSyncServer();\n\n\tconstructor(\n\t\tprivate readonly _foreignModule: unknown | null = null\n\t) { }\n\n\tdispose(): void {\n\t}\n\n\tpublic async $ping() {\n\t\treturn 'pong';\n\t}\n\n\tprotected _getModel(uri: string): ICommonModel | undefined {\n\t\treturn this._workerTextModelSyncServer.getModel(uri);\n\t}\n\n\tpublic getModels(): ICommonModel[] {\n\t\treturn this._workerTextModelSyncServer.getModels();\n\t}\n\n\tpublic $acceptNewModel(data: IRawModelData): void {\n\t\tthis._workerTextModelSyncServer.$acceptNewModel(data);\n\t}\n\n\tpublic $acceptModelChanged(uri: string, e: IModelChangedEvent): void {\n\t\tthis._workerTextModelSyncServer.$acceptModelChanged(uri, e);\n\t}\n\n\tpublic $acceptRemovedModel(uri: string): void {\n\t\tthis._workerTextModelSyncServer.$acceptRemovedModel(uri);\n\t}\n\n\tpublic async $computeUnicodeHighlights(url: string, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 };\n\t\t}\n\t\treturn UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range);\n\t}\n\n\tpublic async $findSectionHeaders(url: string, options: FindSectionHeaderOptions): Promise<SectionHeader[]> {\n\t\tconst model = this._getModel(url);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\treturn findSectionHeaders(model, options);\n\t}\n\n\t// ---- BEGIN diff --------------------------------------------------------------------------\n\n\tpublic async $computeDiff(originalUrl: string, modifiedUrl: string, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName, verify: boolean = false): Promise<IDiffComputationResult | null> {\n\t\tconst original = this._getModel(originalUrl);\n\t\tconst modified = this._getModel(modifiedUrl);\n\t\tif (!original || !modified) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst diffAlgorithm = await resolveLinesDiffComputer(algorithm);\n\t\tconst result = EditorWorker.computeDiff(original, modified, options, diffAlgorithm, verify);\n\t\treturn result;\n\t}\n\n\tprivate static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, options: IDocumentDiffProviderOptions, diffAlgorithm: ILinesDiffComputer, verify: boolean): IDiffComputationResult {\n\n\t\tconst originalLines = originalTextModel.getLinesContent();\n\t\tconst modifiedLines = modifiedTextModel.getLinesContent();\n\n\t\tconst result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);\n\t\tconst validity = verify ? verifyLinesDiff(result, originalLines, modifiedLines, options.ignoreTrimWhitespace) : undefined;\n\n\t\tconst identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));\n\n\t\tfunction getLineChanges(changes: readonly DetailedLineRangeMapping[]): ILineChange[] {\n\t\t\treturn changes.map(m => ([m.original.startLineNumber, m.original.endLineNumberExclusive, m.modified.startLineNumber, m.modified.endLineNumberExclusive, m.innerChanges?.map(m => [\n\t\t\t\tm.originalRange.startLineNumber,\n\t\t\t\tm.originalRange.startColumn,\n\t\t\t\tm.originalRange.endLineNumber,\n\t\t\t\tm.originalRange.endColumn,\n\t\t\t\tm.modifiedRange.startLineNumber,\n\t\t\t\tm.modifiedRange.startColumn,\n\t\t\t\tm.modifiedRange.endLineNumber,\n\t\t\t\tm.modifiedRange.endColumn,\n\t\t\t])]));\n\t\t}\n\n\t\treturn {\n\t\t\tidentical,\n\t\t\tquitEarly: result.hitTimeout,\n\t\t\tvalidity,\n\t\t\tchanges: getLineChanges(result.changes),\n\t\t\tmoves: result.moves.map(m => ([\n\t\t\t\tm.lineRangeMapping.original.startLineNumber,\n\t\t\t\tm.lineRangeMapping.original.endLineNumberExclusive,\n\t\t\t\tm.lineRangeMapping.modified.startLineNumber,\n\t\t\t\tm.lineRangeMapping.modified.endLineNumberExclusive,\n\t\t\t\tgetLineChanges(m.changes)\n\t\t\t])),\n\t\t};\n\t}\n\n\tprivate static _modelsAreIdentical(original: ICommonModel | ITextModel, modified: ICommonModel | ITextModel): boolean {\n\t\tconst originalLineCount = original.getLineCount();\n\t\tconst modifiedLineCount = modified.getLineCount();\n\t\tif (originalLineCount !== modifiedLineCount) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let line = 1; line <= originalLineCount; line++) {\n\t\t\tconst originalLine = original.getLineContent(line);\n\t\t\tconst modifiedLine = modified.getLineContent(line);\n\t\t\tif (originalLine !== modifiedLine) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// ---- END diff --------------------------------------------------------------------------\n\n\n\t// ---- BEGIN minimal edits ---------------------------------------------------------------\n\n\tprivate static readonly _diffLimit = 100000;\n\n\tpublic async $computeMoreMinimalEdits(modelUrl: string, edits: TextEdit[], pretty: boolean): Promise<TextEdit[]> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn edits;\n\t\t}\n\n\t\tconst result: TextEdit[] = [];\n\t\tlet lastEol: EndOfLineSequence | undefined = undefined;\n\n\t\tedits = edits.slice(0).sort((a, b) => {\n\t\t\tif (a.range && b.range) {\n\t\t\t\treturn Range.compareRangesUsingStarts(a.range, b.range);\n\t\t\t}\n\t\t\t// eol only changes should go to the end\n\t\t\tconst aRng = a.range ? 0 : 1;\n\t\t\tconst bRng = b.range ? 0 : 1;\n\t\t\treturn aRng - bRng;\n\t\t});\n\n\t\t// merge adjacent edits\n\t\tlet writeIndex = 0;\n\t\tfor (let readIndex = 1; readIndex < edits.length; readIndex++) {\n\t\t\tif (Range.getEndPosition(edits[writeIndex].range).equals(Range.getStartPosition(edits[readIndex].range))) {\n\t\t\t\tedits[writeIndex].range = Range.fromPositions(Range.getStartPosition(edits[writeIndex].range), Range.getEndPosition(edits[readIndex].range));\n\t\t\t\tedits[writeIndex].text += edits[readIndex].text;\n\t\t\t} else {\n\t\t\t\twriteIndex++;\n\t\t\t\tedits[writeIndex] = edits[readIndex];\n\t\t\t}\n\t\t}\n\t\tedits.length = writeIndex + 1;\n\n\t\tfor (let { range, text, eol } of edits) {\n\n\t\t\tif (typeof eol === 'number') {\n\t\t\t\tlastEol = eol;\n\t\t\t}\n\n\t\t\tif (Range.isEmpty(range) && !text) {\n\t\t\t\t// empty change\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst original = model.getValueInRange(range);\n\t\t\ttext = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\n\n\t\t\tif (original === text) {\n\t\t\t\t// noop\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// make sure diff won't take too long\n\t\t\tif (Math.max(text.length, original.length) > EditorWorker._diffLimit) {\n\t\t\t\tresult.push({ range, text });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// compute diff between original and edit.text\n\t\t\tconst changes = stringDiff(original, text, pretty);\n\t\t\tconst editOffset = model.offsetAt(Range.lift(range).getStartPosition());\n\t\t\tconst newEdits: TextEdit[] = [];\n\t\t\tlet useOriginalEdit = false;\n\n\t\t\tfor (const change of changes) {\n\t\t\t\tconst originalEnd = change.originalStart + change.originalLength;\n\t\t\t\tconst start = model.positionAt(editOffset + change.originalStart);\n\t\t\t\tconst end = model.positionAt(editOffset + originalEnd);\n\t\t\t\tconst startLineContent = model.getLineContent(start.lineNumber);\n\t\t\t\tconst endLineContent = model.getLineContent(end.lineNumber);\n\t\t\t\tconst startFollowsHighSurrogate = start.column > 1 && isHighSurrogate(startLineContent.charCodeAt(start.column - 2));\n\t\t\t\tconst endFollowsHighSurrogate = end.column > 1 && end.column <= endLineContent.length && isHighSurrogate(endLineContent.charCodeAt(end.column - 2));\n\t\t\t\tif (startFollowsHighSurrogate || endFollowsHighSurrogate) {\n\t\t\t\t\tuseOriginalEdit = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst newEdit: TextEdit = {\n\t\t\t\t\ttext: text.slice(change.modifiedStart, change.modifiedStart + change.modifiedLength),\n\t\t\t\t\trange: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\n\t\t\t\t};\n\n\t\t\t\tif (model.getValueInRange(newEdit.range) !== newEdit.text) {\n\t\t\t\t\tnewEdits.push(newEdit);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (useOriginalEdit) {\n\t\t\t\tresult.push({ range, text });\n\t\t\t} else {\n\t\t\t\tresult.push(...newEdits);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof lastEol === 'number') {\n\t\t\tresult.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// ---- END minimal edits ---------------------------------------------------------------\n\n\tpublic async $computeLinks(modelUrl: string): Promise<ILink[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn computeLinks(model);\n\t}\n\n\t// --- BEGIN default document colors -----------------------------------------------------------\n\n\tpublic async $computeDefaultDocumentColors(modelUrl: string): Promise<IColorInformation[] | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn computeDefaultDocumentColors(model);\n\t}\n\n\t// ---- BEGIN suggest --------------------------------------------------------------------------\n\n\tprivate static readonly _suggestionsLimit = 10000;\n\n\tpublic async $textualSuggest(modelUrls: string[], leadingWord: string | undefined, wordDef: string, wordDefFlags: string): Promise<{ words: string[]; duration: number } | null> {\n\n\t\tconst sw = new StopWatch();\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst seen = new Set<string>();\n\n\t\touter: for (const url of modelUrls) {\n\t\t\tconst model = this._getModel(url);\n\t\t\tif (!model) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const word of model.words(wordDefRegExp)) {\n\t\t\t\tif (word === leadingWord || !isNaN(Number(word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tseen.add(word);\n\t\t\t\tif (seen.size > EditorWorker._suggestionsLimit) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { words: Array.from(seen), duration: sw.elapsed() };\n\t}\n\n\n\t// ---- END suggest --------------------------------------------------------------------------\n\n\t//#region -- word ranges --\n\n\tpublic async $computeWordRanges(modelUrl: string, range: IRange, wordDef: string, wordDefFlags: string): Promise<{ [word: string]: IRange[] }> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn Object.create(null);\n\t\t}\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\t\tconst result: { [word: string]: IRange[] } = Object.create(null);\n\t\tfor (let line = range.startLineNumber; line < range.endLineNumber; line++) {\n\t\t\tconst words = model.getLineWords(line, wordDefRegExp);\n\t\t\tfor (const word of words) {\n\t\t\t\tif (!isNaN(Number(word.word))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet array = result[word.word];\n\t\t\t\tif (!array) {\n\t\t\t\t\tarray = [];\n\t\t\t\t\tresult[word.word] = array;\n\t\t\t\t}\n\t\t\t\tarray.push({\n\t\t\t\t\tstartLineNumber: line,\n\t\t\t\t\tstartColumn: word.startColumn,\n\t\t\t\t\tendLineNumber: line,\n\t\t\t\t\tendColumn: word.endColumn\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t//#endregion\n\n\tpublic async $navigateValueSet(modelUrl: string, range: IRange, up: boolean, wordDef: string, wordDefFlags: string): Promise<IInplaceReplaceSupportResult | null> {\n\t\tconst model = this._getModel(modelUrl);\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n\n\t\tif (range.startColumn === range.endColumn) {\n\t\t\trange = {\n\t\t\t\tstartLineNumber: range.startLineNumber,\n\t\t\t\tstartColumn: range.startColumn,\n\t\t\t\tendLineNumber: range.endLineNumber,\n\t\t\t\tendColumn: range.endColumn + 1\n\t\t\t};\n\t\t}\n\n\t\tconst selectionText = model.getValueInRange(range);\n\n\t\tconst wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\n\t\tif (!wordRange) {\n\t\t\treturn null;\n\t\t}\n\t\tconst word = model.getValueInRange(wordRange);\n\t\tconst result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\n\t\treturn result;\n\t}\n\n\t// ---- BEGIN foreign module support --------------------------------------------------------------------------\n\n\t// foreign method request\n\tpublic $fmr(method: string, args: unknown[]): Promise<unknown> {\n\t\tif (!this._foreignModule || typeof (this._foreignModule as Record<string, unknown>)[method] !== 'function') {\n\t\t\treturn Promise.reject(new Error('Missing requestHandler or method: ' + method));\n\t\t}\n\n\t\ttry {\n\t\t\treturn Promise.resolve((this._foreignModule as Record<string, Function>)[method].apply(this._foreignModule, args));\n\t\t} catch (e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n\n\t// ---- END foreign module support --------------------------------------------------------------------------\n}\n\n// This is only available in a Web Worker\ndeclare function importScripts(...urls: string[]): void;\n\nif (typeof importScripts === 'function') {\n\t// Running in a web worker\n\tglobalThis.monaco = createMonacoBaseAPI();\n}\n\nfunction resolveLinesDiffComputer(algorithm: DiffAlgorithmName): ILinesDiffComputer | Promise<ILinesDiffComputer> {\n\tswitch (algorithm) {\n\t\tcase 'legacy': return linesDiffComputers.getLegacy();\n\t\tcase 'advanced': return linesDiffComputers.getDefault();\n\t\tcase 'advanced-external': return linesDiffComputers.getAdvancedExternal();\n\t\tcase 'advanced-wasm': return linesDiffComputers.getAdvancedWasm();\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/services/editorWorker.ts","vs/editor/common/services/editorWorker.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/services/editorWorker.ts","vs/editor/common/services/editorWorker.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAQhG,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAG1F,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAuB,qBAAqB,CAAC,CAAC","file":"editorWorker.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 { URI } from '../../../base/common/uri.js';\nimport { IRange } from '../core/range.js';\nimport { IDocumentDiff, IDocumentDiffProviderOptions } from '../diff/documentDiffProvider.js';\nimport { LinesDiffValidity } from '../diff/verifyLinesDiff.js';\nimport { IColorInformation, IInplaceReplaceSupportResult, TextEdit } from '../languages.js';\nimport { UnicodeHighlighterOptions } from './unicodeTextModelHighlighter.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { SectionHeader, FindSectionHeaderOptions } from './findSectionHeaders.js';\n\nexport const IEditorWorkerService = createDecorator<IEditorWorkerService>('editorWorkerService');\n\nexport type DiffAlgorithmName = 'legacy' | 'advanced' | 'advanced-external' | 'advanced-wasm';\n\nexport interface IEditorWorkerService {\n\treadonly _serviceBrand: undefined;\n\n\tcanComputeUnicodeHighlights(uri: URI): boolean;\n\tcomputedUnicodeHighlights(uri: URI, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult>;\n\n\t/**\n\t * Implementation in {@link EditorWorker.computeDiff}.\n\t * If `verify` is set, the worker also checks that the diff reproduces the modified text, see {@link IDocumentDiff.validity}.\n\t * This is linear in the document size, so it should only be requested for a sample of diffs.\n\t */\n\tcomputeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName, verify?: boolean): Promise<IDocumentDiff | null>;\n\n\tcomputeMoreMinimalEdits(resource: URI, edits: TextEdit[] | null | undefined, pretty?: boolean): Promise<TextEdit[] | undefined>;\n\n\tcanComputeWordRanges(resource: URI): boolean;\n\tcomputeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null>;\n\n\tcanNavigateValueSet(resource: URI): boolean;\n\tnavigateValueSet(resource: URI, range: IRange, up: boolean): Promise<IInplaceReplaceSupportResult | null>;\n\n\tfindSectionHeaders(uri: URI, options: FindSectionHeaderOptions): Promise<SectionHeader[]>;\n\n\tcomputeDefaultDocumentColors(uri: URI): Promise<IColorInformation[] | null>;\n\n}\n\nexport interface IDiffComputationResult {\n\tquitEarly: boolean;\n\tchanges: ILineChange[];\n\tidentical: boolean;\n\tmoves: ITextMove[];\n\t/** Only set if verification was requested. */\n\tvalidity?: LinesDiffValidity;\n}\n\nexport type ILineChange = [\n\toriginalStartLine: number,\n\toriginalEndLine: number,\n\tmodifiedStartLine: number,\n\tmodifiedEndLine: number,\n\tcharChanges: ICharChange[] | undefined,\n];\n\nexport type ICharChange = [\n\toriginalStartLine: number,\n\toriginalStartColumn: number,\n\toriginalEndLine: number,\n\toriginalEndColumn: number,\n\n\tmodifiedStartLine: number,\n\tmodifiedStartColumn: number,\n\tmodifiedEndLine: number,\n\tmodifiedEndColumn: number,\n];\n\nexport type ITextMove = [\n\toriginalStartLine: number,\n\toriginalEndLine: number,\n\tmodifiedStartLine: number,\n\tmodifiedEndLine: number,\n\tchanges: ILineChange[],\n];\n\nexport interface IUnicodeHighlightsResult {\n\tranges: IRange[];\n\thasMore: boolean;\n\tnonBasicAsciiCharacterCount: number;\n\tinvisibleCharacterCount: number;\n\tambiguousCharacterCount: number;\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 { URI } from '../../../base/common/uri.js';\nimport { IRange } from '../core/range.js';\nimport { IDocumentDiff, IDocumentDiffProviderOptions } from '../diff/documentDiffProvider.js';\nimport { LinesDiffValidity } from '../diff/verifyLinesDiff.js';\nimport { IColorInformation, IInplaceReplaceSupportResult, TextEdit } from '../languages.js';\nimport { UnicodeHighlighterOptions } from './unicodeTextModelHighlighter.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { SectionHeader, FindSectionHeaderOptions } from './findSectionHeaders.js';\n\nexport const IEditorWorkerService = createDecorator<IEditorWorkerService>('editorWorkerService');\n\nexport type DiffAlgorithmName = 'legacy' | 'advanced' | 'advanced-external' | 'advanced-wasm';\n\nexport interface IEditorWorkerService {\n\treadonly _serviceBrand: undefined;\n\n\tcanComputeUnicodeHighlights(uri: URI): boolean;\n\tcomputedUnicodeHighlights(uri: URI, options: UnicodeHighlighterOptions, range?: IRange): Promise<IUnicodeHighlightsResult>;\n\n\t/**\n\t * Implementation in {@link EditorWorker.computeDiff}.\n\t * If `verify` is set, the worker also checks that the diff reproduces the modified text, see {@link IDocumentDiff.validity}.\n\t * This is linear in the document size, so it should only be requested for a sample of diffs.\n\t */\n\tcomputeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions, algorithm: DiffAlgorithmName, verify?: boolean): Promise<IDocumentDiff | null>;\n\n\tcomputeMoreMinimalEdits(resource: URI, edits: TextEdit[] | null | undefined, pretty?: boolean): Promise<TextEdit[] | undefined>;\n\n\tcanComputeWordRanges(resource: URI): boolean;\n\tcomputeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null>;\n\n\tcanNavigateValueSet(resource: URI): boolean;\n\tnavigateValueSet(resource: URI, range: IRange, up: boolean): Promise<IInplaceReplaceSupportResult | null>;\n\n\tfindSectionHeaders(uri: URI, options: FindSectionHeaderOptions): Promise<SectionHeader[]>;\n\n\tcomputeDefaultDocumentColors(uri: URI): Promise<IColorInformation[] | null>;\n\n}\n\nexport interface IDiffComputationResult {\n\tquitEarly: boolean;\n\tchanges: ILineChange[];\n\tidentical: boolean;\n\tmoves: ITextMove[];\n\t/** Only set if verification was requested. */\n\tvalidity?: LinesDiffValidity;\n}\n\nexport type ILineChange = [\n\toriginalStartLine: number,\n\toriginalEndLine: number,\n\tmodifiedStartLine: number,\n\tmodifiedEndLine: number,\n\tcharChanges: ICharChange[] | undefined,\n];\n\nexport type ICharChange = [\n\toriginalStartLine: number,\n\toriginalStartColumn: number,\n\toriginalEndLine: number,\n\toriginalEndColumn: number,\n\n\tmodifiedStartLine: number,\n\tmodifiedStartColumn: number,\n\tmodifiedEndLine: number,\n\tmodifiedEndColumn: number,\n];\n\nexport type ITextMove = [\n\toriginalStartLine: number,\n\toriginalEndLine: number,\n\tmodifiedStartLine: number,\n\tmodifiedEndLine: number,\n\tchanges: ILineChange[],\n];\n\nexport interface IUnicodeHighlightsResult {\n\tranges: IRange[];\n\thasMore: boolean;\n\tnonBasicAsciiCharacterCount: number;\n\tinvisibleCharacterCount: number;\n\tambiguousCharacterCount: number;\n}\n"]}
|
|
@@ -7,7 +7,7 @@ import { Disposable } from '../../../base/common/lifecycle.js';
|
|
|
7
7
|
import { LanguagesRegistry } from './languagesRegistry.js';
|
|
8
8
|
import { TokenizationRegistry } from '../languages.js';
|
|
9
9
|
import { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';
|
|
10
|
-
import {
|
|
10
|
+
import { observableSignalFromEvent } from '../../../base/common/observable.js';
|
|
11
11
|
export class LanguageService extends Disposable {
|
|
12
12
|
static { this.instanceCount = 0; }
|
|
13
13
|
constructor(warnOnOverwrite = false) {
|
|
@@ -18,6 +18,8 @@ export class LanguageService extends Disposable {
|
|
|
18
18
|
this.onDidRequestRichLanguageFeatures = this._onDidRequestRichLanguageFeatures.event;
|
|
19
19
|
this._onDidChange = this._register(new Emitter({ leakWarningThreshold: 200, leakWarningName: 'LanguageService._onDidChange' /* https://github.com/microsoft/vscode/issues/119968 */ }));
|
|
20
20
|
this.onDidChange = this._onDidChange.event;
|
|
21
|
+
// Observed language selections share one subscription to the registry.
|
|
22
|
+
this._languagesChanged = observableSignalFromEvent(this, this.onDidChange);
|
|
21
23
|
this._requestedBasicLanguages = new Set();
|
|
22
24
|
this._requestedRichLanguages = new Set();
|
|
23
25
|
LanguageService.instanceCount++;
|
|
@@ -43,12 +45,12 @@ export class LanguageService extends Disposable {
|
|
|
43
45
|
return languageIds.at(0) ?? null;
|
|
44
46
|
}
|
|
45
47
|
createById(languageId) {
|
|
46
|
-
return new LanguageSelection(this.
|
|
48
|
+
return new LanguageSelection(this._languagesChanged, () => {
|
|
47
49
|
return this._createAndGetLanguageIdentifier(languageId);
|
|
48
50
|
});
|
|
49
51
|
}
|
|
50
52
|
createByFilepathOrFirstLine(resource, firstLine) {
|
|
51
|
-
return new LanguageSelection(this.
|
|
53
|
+
return new LanguageSelection(this._languagesChanged, () => {
|
|
52
54
|
const languageId = this.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);
|
|
53
55
|
return this._createAndGetLanguageIdentifier(languageId);
|
|
54
56
|
});
|
|
@@ -79,7 +81,7 @@ export class LanguageService extends Disposable {
|
|
|
79
81
|
}
|
|
80
82
|
class LanguageSelection {
|
|
81
83
|
constructor(onDidChangeLanguages, selector) {
|
|
82
|
-
this._value =
|
|
84
|
+
this._value = onDidChangeLanguages.map(this, selector);
|
|
83
85
|
this.onDidChange = Event.fromObservable(this._value);
|
|
84
86
|
}
|
|
85
87
|
get languageId() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/services/languageService.ts","vs/editor/common/services/languageService.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAoB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAe,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEtF,MAAM,OAAO,eAAgB,SAAQ,UAAU;aAGvC,kBAAa,GAAG,CAAH,AAAI,CAAC;IAiBzB,YAAY,eAAe,GAAG,KAAK;QAClC,KAAK,EAAE,CAAC;QAhBQ,uCAAkC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAU,CAAC,CAAC;QAC5E,sCAAiC,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;QAEjF,sCAAiC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAU,CAAC,CAAC;QAC3E,qCAAgC,GAAG,IAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC;QAE7E,iBAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,eAAe,EAAE,8BAA8B,CAAC,uDAAuD,EAAE,CAAC,CAAC,CAAC;QAC5L,gBAAW,GAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAElD,6BAAwB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,4BAAuB,GAAG,IAAI,GAAG,EAAU,CAAC;QAO5D,eAAe,CAAC,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEe,OAAO;QACtB,eAAe,CAAC,aAAa,EAAE,CAAC;QAChC,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,sBAAsB,CAAC,UAAqC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAEM,2BAA2B,CAAC,YAAoB;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAEM,uBAAuB,CAAC,QAAmC;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEM,oCAAoC,CAAC,QAAoB,EAAE,SAAkB;QACnF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,oCAAoC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7F,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAClC,CAAC;IAEM,UAAU,CAAC,UAAqC;QACtD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YACnD,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,2BAA2B,CAAC,QAAoB,EAAE,SAAkB;QAC1E,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,oCAAoC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,+BAA+B,CAAC,UAAqC;QAC5E,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,iDAAiD;YACjD,UAAU,GAAG,qBAAqB,CAAC;QACpC,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAEM,4BAA4B,CAAC,UAAkB;QACrD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAEM,2BAA2B,CAAC,UAAkB;QACpD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE7C,sCAAsC;YACtC,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;YAE9C,gCAAgC;YAChC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAE7C,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;;AAGF,MAAM,iBAAiB;IAItB,YAAY,oBAAiC,EAAE,QAAsB;QACpE,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;CACD","file":"languageService.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { LanguagesRegistry } from './languagesRegistry.js';\nimport { ILanguageSelection, ILanguageService } from '../languages/language.js';\nimport { ILanguageIdCodec, TokenizationRegistry } from '../languages.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nimport { IObservable, observableFromEvent } from '../../../base/common/observable.js';\n\nexport class LanguageService extends Disposable implements ILanguageService {\n\tpublic _serviceBrand: undefined;\n\n\tstatic instanceCount = 0;\n\n\tprivate readonly _onDidRequestBasicLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestBasicLanguageFeatures = this._onDidRequestBasicLanguageFeatures.event;\n\n\tprivate readonly _onDidRequestRichLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestRichLanguageFeatures = this._onDidRequestRichLanguageFeatures.event;\n\n\tprotected readonly _onDidChange = this._register(new Emitter<void>({ leakWarningThreshold: 200, leakWarningName: 'LanguageService._onDidChange' /* https://github.com/microsoft/vscode/issues/119968 */ }));\n\tpublic readonly onDidChange: Event<void> = this._onDidChange.event;\n\n\tprivate readonly _requestedBasicLanguages = new Set<string>();\n\tprivate readonly _requestedRichLanguages = new Set<string>();\n\n\tprotected readonly _registry: LanguagesRegistry;\n\tpublic readonly languageIdCodec: ILanguageIdCodec;\n\n\tconstructor(warnOnOverwrite = false) {\n\t\tsuper();\n\t\tLanguageService.instanceCount++;\n\t\tthis._registry = this._register(new LanguagesRegistry(true, warnOnOverwrite));\n\t\tthis.languageIdCodec = this._registry.languageIdCodec;\n\t\tthis._register(this._registry.onDidChange(() => this._onDidChange.fire()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tLanguageService.instanceCount--;\n\t\tsuper.dispose();\n\t}\n\n\tpublic isRegisteredLanguageId(languageId: string | null | undefined): boolean {\n\t\treturn this._registry.isRegisteredLanguageId(languageId);\n\t}\n\n\tpublic getLanguageIdByLanguageName(languageName: string): string | null {\n\t\treturn this._registry.getLanguageIdByLanguageName(languageName);\n\t}\n\n\tpublic getLanguageIdByMimeType(mimeType: string | null | undefined): string | null {\n\t\treturn this._registry.getLanguageIdByMimeType(mimeType);\n\t}\n\n\tpublic guessLanguageIdByFilepathOrFirstLine(resource: URI | null, firstLine?: string): string | null {\n\t\tconst languageIds = this._registry.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\treturn languageIds.at(0) ?? null;\n\t}\n\n\tpublic createById(languageId: string | null | undefined): ILanguageSelection {\n\t\treturn new LanguageSelection(this.onDidChange, () => {\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tpublic createByFilepathOrFirstLine(resource: URI | null, firstLine?: string): ILanguageSelection {\n\t\treturn new LanguageSelection(this.onDidChange, () => {\n\t\t\tconst languageId = this.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tprivate _createAndGetLanguageIdentifier(languageId: string | null | undefined): string {\n\t\tif (!languageId || !this.isRegisteredLanguageId(languageId)) {\n\t\t\t// Fall back to plain text if language is unknown\n\t\t\tlanguageId = PLAINTEXT_LANGUAGE_ID;\n\t\t}\n\n\t\treturn languageId;\n\t}\n\n\tpublic requestBasicLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedBasicLanguages.has(languageId)) {\n\t\t\tthis._requestedBasicLanguages.add(languageId);\n\t\t\tthis._onDidRequestBasicLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n\n\tpublic requestRichLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedRichLanguages.has(languageId)) {\n\t\t\tthis._requestedRichLanguages.add(languageId);\n\n\t\t\t// Ensure basic features are requested\n\t\t\tthis.requestBasicLanguageFeatures(languageId);\n\n\t\t\t// Ensure tokenizers are created\n\t\t\tTokenizationRegistry.getOrCreate(languageId);\n\n\t\t\tthis._onDidRequestRichLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n}\n\nclass LanguageSelection implements ILanguageSelection {\n\tprivate readonly _value: IObservable<string>;\n\tpublic readonly onDidChange: Event<string>;\n\n\tconstructor(onDidChangeLanguages: Event<void>, selector: () => string) {\n\t\tthis._value = observableFromEvent(this, onDidChangeLanguages, () => selector());\n\t\tthis.onDidChange = Event.fromObservable(this._value);\n\t}\n\n\tpublic get languageId(): string {\n\t\treturn this._value.get();\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 { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { LanguagesRegistry } from './languagesRegistry.js';\nimport { ILanguageSelection, ILanguageService } from '../languages/language.js';\nimport { ILanguageIdCodec, TokenizationRegistry } from '../languages.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nimport { IObservable, observableFromEvent } from '../../../base/common/observable.js';\n\nexport class LanguageService extends Disposable implements ILanguageService {\n\tpublic _serviceBrand: undefined;\n\n\tstatic instanceCount = 0;\n\n\tprivate readonly _onDidRequestBasicLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestBasicLanguageFeatures = this._onDidRequestBasicLanguageFeatures.event;\n\n\tprivate readonly _onDidRequestRichLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestRichLanguageFeatures = this._onDidRequestRichLanguageFeatures.event;\n\n\tprotected readonly _onDidChange = this._register(new Emitter<void>({ leakWarningThreshold: 200, leakWarningName: 'LanguageService._onDidChange' /* https://github.com/microsoft/vscode/issues/119968 */ }));\n\tpublic readonly onDidChange: Event<void> = this._onDidChange.event;\n\n\tprivate readonly _requestedBasicLanguages = new Set<string>();\n\tprivate readonly _requestedRichLanguages = new Set<string>();\n\n\tprotected readonly _registry: LanguagesRegistry;\n\tpublic readonly languageIdCodec: ILanguageIdCodec;\n\n\tconstructor(warnOnOverwrite = false) {\n\t\tsuper();\n\t\tLanguageService.instanceCount++;\n\t\tthis._registry = this._register(new LanguagesRegistry(true, warnOnOverwrite));\n\t\tthis.languageIdCodec = this._registry.languageIdCodec;\n\t\tthis._register(this._registry.onDidChange(() => this._onDidChange.fire()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tLanguageService.instanceCount--;\n\t\tsuper.dispose();\n\t}\n\n\tpublic isRegisteredLanguageId(languageId: string | null | undefined): boolean {\n\t\treturn this._registry.isRegisteredLanguageId(languageId);\n\t}\n\n\tpublic getLanguageIdByLanguageName(languageName: string): string | null {\n\t\treturn this._registry.getLanguageIdByLanguageName(languageName);\n\t}\n\n\tpublic getLanguageIdByMimeType(mimeType: string | null | undefined): string | null {\n\t\treturn this._registry.getLanguageIdByMimeType(mimeType);\n\t}\n\n\tpublic guessLanguageIdByFilepathOrFirstLine(resource: URI | null, firstLine?: string): string | null {\n\t\tconst languageIds = this._registry.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\treturn languageIds.at(0) ?? null;\n\t}\n\n\tpublic createById(languageId: string | null | undefined): ILanguageSelection {\n\t\treturn new LanguageSelection(this.onDidChange, () => {\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tpublic createByFilepathOrFirstLine(resource: URI | null, firstLine?: string): ILanguageSelection {\n\t\treturn new LanguageSelection(this.onDidChange, () => {\n\t\t\tconst languageId = this.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tprivate _createAndGetLanguageIdentifier(languageId: string | null | undefined): string {\n\t\tif (!languageId || !this.isRegisteredLanguageId(languageId)) {\n\t\t\t// Fall back to plain text if language is unknown\n\t\t\tlanguageId = PLAINTEXT_LANGUAGE_ID;\n\t\t}\n\n\t\treturn languageId;\n\t}\n\n\tpublic requestBasicLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedBasicLanguages.has(languageId)) {\n\t\t\tthis._requestedBasicLanguages.add(languageId);\n\t\t\tthis._onDidRequestBasicLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n\n\tpublic requestRichLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedRichLanguages.has(languageId)) {\n\t\t\tthis._requestedRichLanguages.add(languageId);\n\n\t\t\t// Ensure basic features are requested\n\t\t\tthis.requestBasicLanguageFeatures(languageId);\n\n\t\t\t// Ensure tokenizers are created\n\t\t\tTokenizationRegistry.getOrCreate(languageId);\n\n\t\t\tthis._onDidRequestRichLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n}\n\nclass LanguageSelection implements ILanguageSelection {\n\tprivate readonly _value: IObservable<string>;\n\tpublic readonly onDidChange: Event<string>;\n\n\tconstructor(onDidChangeLanguages: Event<void>, selector: () => string) {\n\t\tthis._value = observableFromEvent(this, onDidChangeLanguages, () => selector());\n\t\tthis.onDidChange = Event.fromObservable(this._value);\n\t}\n\n\tpublic get languageId(): string {\n\t\treturn this._value.get();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/services/languageService.ts","vs/editor/common/services/languageService.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAoB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAe,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE5F,MAAM,OAAO,eAAgB,SAAQ,UAAU;aAGvC,kBAAa,GAAG,CAAH,AAAI,CAAC;IAoBzB,YAAY,eAAe,GAAG,KAAK;QAClC,KAAK,EAAE,CAAC;QAnBQ,uCAAkC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAU,CAAC,CAAC;QAC5E,sCAAiC,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;QAEjF,sCAAiC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAU,CAAC,CAAC;QAC3E,qCAAgC,GAAG,IAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC;QAE7E,iBAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,eAAe,EAAE,8BAA8B,CAAC,uDAAuD,EAAE,CAAC,CAAC,CAAC;QAC5L,gBAAW,GAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAEnE,uEAAuE;QACtD,sBAAiB,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEtE,6BAAwB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,4BAAuB,GAAG,IAAI,GAAG,EAAU,CAAC;QAO5D,eAAe,CAAC,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEe,OAAO;QACtB,eAAe,CAAC,aAAa,EAAE,CAAC;QAChC,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,sBAAsB,CAAC,UAAqC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAEM,2BAA2B,CAAC,YAAoB;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAEM,uBAAuB,CAAC,QAAmC;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEM,oCAAoC,CAAC,QAAoB,EAAE,SAAkB;QACnF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,oCAAoC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7F,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAClC,CAAC;IAEM,UAAU,CAAC,UAAqC;QACtD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACzD,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,2BAA2B,CAAC,QAAoB,EAAE,SAAkB;QAC1E,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,oCAAoC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,+BAA+B,CAAC,UAAqC;QAC5E,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,iDAAiD;YACjD,UAAU,GAAG,qBAAqB,CAAC;QACpC,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAEM,4BAA4B,CAAC,UAAkB;QACrD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAEM,2BAA2B,CAAC,UAAkB;QACpD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE7C,sCAAsC;YACtC,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;YAE9C,gCAAgC;YAChC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAE7C,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;;AAGF,MAAM,iBAAiB;IAItB,YAAY,oBAAuC,EAAE,QAAsB;QAC1E,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;CACD","file":"languageService.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { LanguagesRegistry } from './languagesRegistry.js';\nimport { ILanguageSelection, ILanguageService } from '../languages/language.js';\nimport { ILanguageIdCodec, TokenizationRegistry } from '../languages.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nimport { IObservable, observableSignalFromEvent } from '../../../base/common/observable.js';\n\nexport class LanguageService extends Disposable implements ILanguageService {\n\tpublic _serviceBrand: undefined;\n\n\tstatic instanceCount = 0;\n\n\tprivate readonly _onDidRequestBasicLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestBasicLanguageFeatures = this._onDidRequestBasicLanguageFeatures.event;\n\n\tprivate readonly _onDidRequestRichLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestRichLanguageFeatures = this._onDidRequestRichLanguageFeatures.event;\n\n\tprotected readonly _onDidChange = this._register(new Emitter<void>({ leakWarningThreshold: 200, leakWarningName: 'LanguageService._onDidChange' /* https://github.com/microsoft/vscode/issues/119968 */ }));\n\tpublic readonly onDidChange: Event<void> = this._onDidChange.event;\n\n\t// Observed language selections share one subscription to the registry.\n\tprivate readonly _languagesChanged = observableSignalFromEvent(this, this.onDidChange);\n\n\tprivate readonly _requestedBasicLanguages = new Set<string>();\n\tprivate readonly _requestedRichLanguages = new Set<string>();\n\n\tprotected readonly _registry: LanguagesRegistry;\n\tpublic readonly languageIdCodec: ILanguageIdCodec;\n\n\tconstructor(warnOnOverwrite = false) {\n\t\tsuper();\n\t\tLanguageService.instanceCount++;\n\t\tthis._registry = this._register(new LanguagesRegistry(true, warnOnOverwrite));\n\t\tthis.languageIdCodec = this._registry.languageIdCodec;\n\t\tthis._register(this._registry.onDidChange(() => this._onDidChange.fire()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tLanguageService.instanceCount--;\n\t\tsuper.dispose();\n\t}\n\n\tpublic isRegisteredLanguageId(languageId: string | null | undefined): boolean {\n\t\treturn this._registry.isRegisteredLanguageId(languageId);\n\t}\n\n\tpublic getLanguageIdByLanguageName(languageName: string): string | null {\n\t\treturn this._registry.getLanguageIdByLanguageName(languageName);\n\t}\n\n\tpublic getLanguageIdByMimeType(mimeType: string | null | undefined): string | null {\n\t\treturn this._registry.getLanguageIdByMimeType(mimeType);\n\t}\n\n\tpublic guessLanguageIdByFilepathOrFirstLine(resource: URI | null, firstLine?: string): string | null {\n\t\tconst languageIds = this._registry.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\treturn languageIds.at(0) ?? null;\n\t}\n\n\tpublic createById(languageId: string | null | undefined): ILanguageSelection {\n\t\treturn new LanguageSelection(this._languagesChanged, () => {\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tpublic createByFilepathOrFirstLine(resource: URI | null, firstLine?: string): ILanguageSelection {\n\t\treturn new LanguageSelection(this._languagesChanged, () => {\n\t\t\tconst languageId = this.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tprivate _createAndGetLanguageIdentifier(languageId: string | null | undefined): string {\n\t\tif (!languageId || !this.isRegisteredLanguageId(languageId)) {\n\t\t\t// Fall back to plain text if language is unknown\n\t\t\tlanguageId = PLAINTEXT_LANGUAGE_ID;\n\t\t}\n\n\t\treturn languageId;\n\t}\n\n\tpublic requestBasicLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedBasicLanguages.has(languageId)) {\n\t\t\tthis._requestedBasicLanguages.add(languageId);\n\t\t\tthis._onDidRequestBasicLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n\n\tpublic requestRichLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedRichLanguages.has(languageId)) {\n\t\t\tthis._requestedRichLanguages.add(languageId);\n\n\t\t\t// Ensure basic features are requested\n\t\t\tthis.requestBasicLanguageFeatures(languageId);\n\n\t\t\t// Ensure tokenizers are created\n\t\t\tTokenizationRegistry.getOrCreate(languageId);\n\n\t\t\tthis._onDidRequestRichLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n}\n\nclass LanguageSelection implements ILanguageSelection {\n\tprivate readonly _value: IObservable<string>;\n\tpublic readonly onDidChange: Event<string>;\n\n\tconstructor(onDidChangeLanguages: IObservable<void>, selector: () => string) {\n\t\tthis._value = onDidChangeLanguages.map(this, selector);\n\t\tthis.onDidChange = Event.fromObservable(this._value);\n\t}\n\n\tpublic get languageId(): string {\n\t\treturn this._value.get();\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 { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { LanguagesRegistry } from './languagesRegistry.js';\nimport { ILanguageSelection, ILanguageService } from '../languages/language.js';\nimport { ILanguageIdCodec, TokenizationRegistry } from '../languages.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nimport { IObservable, observableSignalFromEvent } from '../../../base/common/observable.js';\n\nexport class LanguageService extends Disposable implements ILanguageService {\n\tpublic _serviceBrand: undefined;\n\n\tstatic instanceCount = 0;\n\n\tprivate readonly _onDidRequestBasicLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestBasicLanguageFeatures = this._onDidRequestBasicLanguageFeatures.event;\n\n\tprivate readonly _onDidRequestRichLanguageFeatures = this._register(new Emitter<string>());\n\tpublic readonly onDidRequestRichLanguageFeatures = this._onDidRequestRichLanguageFeatures.event;\n\n\tprotected readonly _onDidChange = this._register(new Emitter<void>({ leakWarningThreshold: 200, leakWarningName: 'LanguageService._onDidChange' /* https://github.com/microsoft/vscode/issues/119968 */ }));\n\tpublic readonly onDidChange: Event<void> = this._onDidChange.event;\n\n\t// Observed language selections share one subscription to the registry.\n\tprivate readonly _languagesChanged = observableSignalFromEvent(this, this.onDidChange);\n\n\tprivate readonly _requestedBasicLanguages = new Set<string>();\n\tprivate readonly _requestedRichLanguages = new Set<string>();\n\n\tprotected readonly _registry: LanguagesRegistry;\n\tpublic readonly languageIdCodec: ILanguageIdCodec;\n\n\tconstructor(warnOnOverwrite = false) {\n\t\tsuper();\n\t\tLanguageService.instanceCount++;\n\t\tthis._registry = this._register(new LanguagesRegistry(true, warnOnOverwrite));\n\t\tthis.languageIdCodec = this._registry.languageIdCodec;\n\t\tthis._register(this._registry.onDidChange(() => this._onDidChange.fire()));\n\t}\n\n\tpublic override dispose(): void {\n\t\tLanguageService.instanceCount--;\n\t\tsuper.dispose();\n\t}\n\n\tpublic isRegisteredLanguageId(languageId: string | null | undefined): boolean {\n\t\treturn this._registry.isRegisteredLanguageId(languageId);\n\t}\n\n\tpublic getLanguageIdByLanguageName(languageName: string): string | null {\n\t\treturn this._registry.getLanguageIdByLanguageName(languageName);\n\t}\n\n\tpublic getLanguageIdByMimeType(mimeType: string | null | undefined): string | null {\n\t\treturn this._registry.getLanguageIdByMimeType(mimeType);\n\t}\n\n\tpublic guessLanguageIdByFilepathOrFirstLine(resource: URI | null, firstLine?: string): string | null {\n\t\tconst languageIds = this._registry.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\treturn languageIds.at(0) ?? null;\n\t}\n\n\tpublic createById(languageId: string | null | undefined): ILanguageSelection {\n\t\treturn new LanguageSelection(this._languagesChanged, () => {\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tpublic createByFilepathOrFirstLine(resource: URI | null, firstLine?: string): ILanguageSelection {\n\t\treturn new LanguageSelection(this._languagesChanged, () => {\n\t\t\tconst languageId = this.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n\t\t\treturn this._createAndGetLanguageIdentifier(languageId);\n\t\t});\n\t}\n\n\tprivate _createAndGetLanguageIdentifier(languageId: string | null | undefined): string {\n\t\tif (!languageId || !this.isRegisteredLanguageId(languageId)) {\n\t\t\t// Fall back to plain text if language is unknown\n\t\t\tlanguageId = PLAINTEXT_LANGUAGE_ID;\n\t\t}\n\n\t\treturn languageId;\n\t}\n\n\tpublic requestBasicLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedBasicLanguages.has(languageId)) {\n\t\t\tthis._requestedBasicLanguages.add(languageId);\n\t\t\tthis._onDidRequestBasicLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n\n\tpublic requestRichLanguageFeatures(languageId: string): void {\n\t\tif (!this._requestedRichLanguages.has(languageId)) {\n\t\t\tthis._requestedRichLanguages.add(languageId);\n\n\t\t\t// Ensure basic features are requested\n\t\t\tthis.requestBasicLanguageFeatures(languageId);\n\n\t\t\t// Ensure tokenizers are created\n\t\t\tTokenizationRegistry.getOrCreate(languageId);\n\n\t\t\tthis._onDidRequestRichLanguageFeatures.fire(languageId);\n\t\t}\n\t}\n}\n\nclass LanguageSelection implements ILanguageSelection {\n\tprivate readonly _value: IObservable<string>;\n\tpublic readonly onDidChange: Event<string>;\n\n\tconstructor(onDidChangeLanguages: IObservable<void>, selector: () => string) {\n\t\tthis._value = onDidChangeLanguages.map(this, selector);\n\t\tthis.onDidChange = Event.fromObservable(this._value);\n\t}\n\n\tpublic get languageId(): string {\n\t\treturn this._value.get();\n\t}\n}\n"]}
|