monaco-editor11 1.1.0 → 1.1.2
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/dist/index.d.ts +1 -8
- package/dist/monaco-editor11.es.js +1 -49
- package/dist/monaco-editor11.umd.js +1 -1
- package/dist/workers/_.contribution.js +120 -0
- package/dist/workers/abap.contribution.js +8 -0
- package/dist/workers/abap.js +1397 -0
- package/dist/workers/abstractCodeEditorService.js +129 -0
- package/dist/workers/abstractKeybindingService.js +286 -0
- package/dist/workers/abstractScrollbar.js +214 -0
- package/dist/workers/abstractSyntaxTokenBackend.js +128 -0
- package/dist/workers/abstractText.js +89 -0
- package/dist/workers/abstractTree.js +2027 -0
- package/dist/workers/accessibility.js +11 -0
- package/dist/workers/accessibilityService.js +111 -0
- package/dist/workers/accessibilitySignalService.js +331 -0
- package/dist/workers/accessibleDiffViewer.js +588 -0
- package/dist/workers/accessibleViewRegistry.js +25 -0
- package/dist/workers/action.js +15 -0
- package/dist/workers/actionCommonCategories.js +16 -0
- package/dist/workers/actionList.js +344 -0
- package/dist/workers/actionViewItemService.js +29 -0
- package/dist/workers/actionViewItems.js +376 -0
- package/dist/workers/actionWidget.js +236 -0
- package/dist/workers/actionbar.js +462 -0
- package/dist/workers/actions.js +483 -0
- package/dist/workers/anchorSelect.js +160 -0
- package/dist/workers/animation.js +74 -0
- package/dist/workers/apex.contribution.js +9 -0
- package/dist/workers/apex.js +329 -0
- package/dist/workers/aria.js +84 -0
- package/dist/workers/arrays.js +529 -0
- package/dist/workers/arraysFind.js +177 -0
- package/dist/workers/assert.js +79 -0
- package/dist/workers/ast.js +485 -0
- package/dist/workers/async.js +938 -0
- package/dist/workers/asyncDataTree.js +946 -0
- package/dist/workers/autoIndent.js +390 -0
- package/dist/workers/autorun.js +89 -0
- package/dist/workers/autorunImpl.js +215 -0
- package/dist/workers/azcli.contribution.js +8 -0
- package/dist/workers/azcli.js +67 -0
- package/dist/workers/bannerController.js +118 -0
- package/dist/workers/base.js +19 -0
- package/dist/workers/baseColors.js +31 -0
- package/dist/workers/baseObservable.js +106 -0
- package/dist/workers/baseRenderStrategy.js +19 -0
- package/dist/workers/baseResolvedKeybinding.js +56 -0
- package/dist/workers/bat.contribution.js +8 -0
- package/dist/workers/bat.js +99 -0
- package/dist/workers/beforeEditPositionMapper.js +110 -0
- package/dist/workers/bicep.contribution.js +8 -0
- package/dist/workers/bicep.js +108 -0
- package/dist/workers/blockCommentCommand.js +149 -0
- package/dist/workers/blockDecorations.js +97 -0
- package/dist/workers/bracketMatching.js +359 -0
- package/dist/workers/bracketPairsImpl.js +717 -0
- package/dist/workers/bracketPairsTree.js +343 -0
- package/dist/workers/bracketSelections.js +149 -0
- package/dist/workers/brackets.js +108 -0
- package/dist/workers/browser.js +57 -0
- package/dist/workers/buffer.js +81 -0
- package/dist/workers/bufferDirtyTracker.js +45 -0
- package/dist/workers/bulkEditService.js +76 -0
- package/dist/workers/button.js +226 -0
- package/dist/workers/cache.js +61 -0
- package/dist/workers/cameligo.contribution.js +8 -0
- package/dist/workers/cameligo.js +173 -0
- package/dist/workers/canIUse.js +23 -0
- package/dist/workers/cancellation.js +116 -0
- package/dist/workers/caretOperations.js +48 -0
- package/dist/workers/changeRecorder.js +78 -0
- package/dist/workers/changeTracker.js +80 -0
- package/dist/workers/charWidthReader.js +104 -0
- package/dist/workers/characterClassifier.js +59 -0
- package/dist/workers/characterPair.js +40 -0
- package/dist/workers/chartsColors.js +18 -0
- package/dist/workers/clickLinkGesture.js +161 -0
- package/dist/workers/clipboard.js +308 -0
- package/dist/workers/clipboardService.js +9 -0
- package/dist/workers/clipboardUtils.js +85 -0
- package/dist/workers/clojure.contribution.js +8 -0
- package/dist/workers/clojure.js +760 -0
- package/dist/workers/codeAction.js +306 -0
- package/dist/workers/codeActionCommands.js +230 -0
- package/dist/workers/codeActionContributions.js +55 -0
- package/dist/workers/codeActionController.js +372 -0
- package/dist/workers/codeActionKeybindingResolver.js +90 -0
- package/dist/workers/codeActionMenu.js +68 -0
- package/dist/workers/codeActionModel.js +334 -0
- package/dist/workers/codeEditorContributions.js +132 -0
- package/dist/workers/codeEditorService.js +9 -0
- package/dist/workers/codeEditorWidget.js +1856 -0
- package/dist/workers/codeLensCache.js +112 -0
- package/dist/workers/codelens.js +114 -0
- package/dist/workers/codelensController.js +469 -0
- package/dist/workers/codelensWidget.js +265 -0
- package/dist/workers/codicons.js +50 -0
- package/dist/workers/codiconsLibrary.js +642 -0
- package/dist/workers/codiconsUtil.js +22 -0
- package/dist/workers/coffee.contribution.js +9 -0
- package/dist/workers/coffee.js +231 -0
- package/dist/workers/collections.js +98 -0
- package/dist/workers/color.js +94 -0
- package/dist/workers/colorDetector.js +245 -0
- package/dist/workers/colorPickerBody.js +71 -0
- package/dist/workers/colorPickerCloseButton.js +34 -0
- package/dist/workers/colorPickerContribution.js +50 -0
- package/dist/workers/colorPickerHeader.js +79 -0
- package/dist/workers/colorPickerInsertButton.js +27 -0
- package/dist/workers/colorPickerModel.js +74 -0
- package/dist/workers/colorPickerParticipantUtils.js +52 -0
- package/dist/workers/colorPickerSaturationBox.js +106 -0
- package/dist/workers/colorPickerStrip.js +98 -0
- package/dist/workers/colorPickerWidget.js +32 -0
- package/dist/workers/colorUtils.js +199 -0
- package/dist/workers/colorizedBracketPairsDecorationProvider.js +97 -0
- package/dist/workers/colorizer.js +120 -0
- package/dist/workers/colors.js +20 -0
- package/dist/workers/columnRange.js +35 -0
- package/dist/workers/combineTextEditInfos.js +124 -0
- package/dist/workers/commandIds.js +12 -0
- package/dist/workers/commands.js +329 -0
- package/dist/workers/commandsQuickAccess.js +40 -0
- package/dist/workers/comment.js +147 -0
- package/dist/workers/common.js +20 -0
- package/dist/workers/comparers.js +87 -0
- package/dist/workers/completionModel.js +227 -0
- package/dist/workers/compressedObjectTreeModel.js +385 -0
- package/dist/workers/computeGhostText.js +182 -0
- package/dist/workers/computeMovedLines.js +249 -0
- package/dist/workers/concat23Trees.js +192 -0
- package/dist/workers/configuration.js +92 -0
- package/dist/workers/configurationModels.js +614 -0
- package/dist/workers/configurationRegistry.js +400 -0
- package/dist/workers/configurations.js +46 -0
- package/dist/workers/consoleObservableLogger.js +83 -0
- package/dist/workers/constObservable.js +35 -0
- package/dist/workers/contentHoverComputer.js +71 -0
- package/dist/workers/contentHoverController.js +320 -0
- package/dist/workers/contentHoverRendered.js +336 -0
- package/dist/workers/contentHoverStatusBar.js +52 -0
- package/dist/workers/contentHoverTypes.js +29 -0
- package/dist/workers/contentHoverWidget.js +394 -0
- package/dist/workers/contentHoverWidgetWrapper.js +362 -0
- package/dist/workers/contentSegmenter.js +52 -0
- package/dist/workers/contentWidgets.js +495 -0
- package/dist/workers/contextKeyService.js +468 -0
- package/dist/workers/contextMenuHandler.js +126 -0
- package/dist/workers/contextMenuService.js +103 -0
- package/dist/workers/contextScopedHistoryWidget.js +106 -0
- package/dist/workers/contextViewService.js +73 -0
- package/dist/workers/contextkey.js +1551 -0
- package/dist/workers/contextkeys.js +21 -0
- package/dist/workers/contextmenu.js +334 -0
- package/dist/workers/contextview.js +298 -0
- package/dist/workers/contiguousMultilineTokens.js +32 -0
- package/dist/workers/contiguousMultilineTokensBuilder.js +23 -0
- package/dist/workers/contiguousTokensEditing.js +128 -0
- package/dist/workers/contiguousTokensStore.js +207 -0
- package/dist/workers/contribution.js +36 -0
- package/dist/workers/coordinatesConverter.js +51 -0
- package/dist/workers/copyLinesCommand.js +73 -0
- package/dist/workers/copyPasteContribution.js +114 -0
- package/dist/workers/copyPasteController.js +585 -0
- package/dist/workers/copySelection.js +47 -0
- package/dist/workers/coreCommands.js +1731 -0
- package/dist/workers/countBadge.js +52 -0
- package/dist/workers/cpp.contribution.js +14 -0
- package/dist/workers/cpp.js +388 -0
- package/dist/workers/csharp.contribution.js +8 -0
- package/dist/workers/csharp.js +325 -0
- package/dist/workers/csp.contribution.js +8 -0
- package/dist/workers/csp.js +52 -0
- package/dist/workers/css.contribution.js +9 -0
- package/dist/workers/css.js +184 -0
- package/dist/workers/cssMode.js +198 -0
- package/dist/workers/cssValue.js +69 -0
- package/dist/workers/cssWorker.js +183 -0
- package/dist/workers/currentLineHighlight.js +205 -0
- package/dist/workers/cursor.js +899 -0
- package/dist/workers/cursorAtomicMoveOperations.js +145 -0
- package/dist/workers/cursorCollection.js +194 -0
- package/dist/workers/cursorColumnSelection.js +93 -0
- package/dist/workers/cursorColumns.js +112 -0
- package/dist/workers/cursorCommon.js +250 -0
- package/dist/workers/cursorContext.js +15 -0
- package/dist/workers/cursorDeleteOperations.js +231 -0
- package/dist/workers/cursorMoveCommands.js +676 -0
- package/dist/workers/cursorMoveOperations.js +290 -0
- package/dist/workers/cursorTypeEditOperations.js +968 -0
- package/dist/workers/cursorTypeOperations.js +173 -0
- package/dist/workers/cursorUndo.js +133 -0
- package/dist/workers/cursorUtils.js +75 -0
- package/dist/workers/cursorWordOperations.js +720 -0
- package/dist/workers/cypher.contribution.js +8 -0
- package/dist/workers/cypher.js +262 -0
- package/dist/workers/dart.contribution.js +9 -0
- package/dist/workers/dart.js +280 -0
- package/dist/workers/dataChannel.js +12 -0
- package/dist/workers/dataTransfer.js +80 -0
- package/dist/workers/dataTree.js +20 -0
- package/dist/workers/date.js +57 -0
- package/dist/workers/debugLocation.js +66 -0
- package/dist/workers/debugName.js +110 -0
- package/dist/workers/debuggerRpc.js +67 -0
- package/dist/workers/decorationCssRuleExtractor.js +73 -0
- package/dist/workers/decorationStyleCache.js +40 -0
- package/dist/workers/decorations.js +196 -0
- package/dist/workers/decorationsOverviewRuler.js +416 -0
- package/dist/workers/decorators.js +33 -0
- package/dist/workers/defaultDocumentColorProvider.js +55 -0
- package/dist/workers/defaultDocumentColorsComputer.js +138 -0
- package/dist/workers/defaultLinesDiffComputer.js +188 -0
- package/dist/workers/defaultProviders.js +230 -0
- package/dist/workers/defaultStyles.js +194 -0
- package/dist/workers/delegatingEditorImpl.js +111 -0
- package/dist/workers/derived.js +80 -0
- package/dist/workers/derivedImpl.js +353 -0
- package/dist/workers/descriptors.js +13 -0
- package/dist/workers/devToolsLogger.js +442 -0
- package/dist/workers/dialogs.js +5 -0
- package/dist/workers/diff.js +902 -0
- package/dist/workers/diffAlgorithm.js +139 -0
- package/dist/workers/diffChange.js +34 -0
- package/dist/workers/diffEditor.contribution.js +83 -0
- package/dist/workers/diffEditor.js +38 -0
- package/dist/workers/diffEditorDecorations.js +115 -0
- package/dist/workers/diffEditorEditors.js +190 -0
- package/dist/workers/diffEditorItemTemplate.js +272 -0
- package/dist/workers/diffEditorOptions.js +152 -0
- package/dist/workers/diffEditorSash.js +86 -0
- package/dist/workers/diffEditorViewModel.js +608 -0
- package/dist/workers/diffEditorViewZones.js +525 -0
- package/dist/workers/diffEditorWidget.js +590 -0
- package/dist/workers/diffProviderFactoryService.js +142 -0
- package/dist/workers/dnd.js +198 -0
- package/dist/workers/dockerfile.contribution.js +9 -0
- package/dist/workers/dockerfile.js +129 -0
- package/dist/workers/documentSemanticTokens.js +362 -0
- package/dist/workers/documentSymbols.js +24 -0
- package/dist/workers/dom.js +1454 -0
- package/dist/workers/domFontInfo.js +28 -0
- package/dist/workers/domLineBreaksComputer.js +301 -0
- package/dist/workers/domReadingContext.js +43 -0
- package/dist/workers/domSanitize.js +312 -0
- package/dist/workers/domStylesheets.js +145 -0
- package/dist/workers/dompurify.js +1347 -0
- package/dist/workers/dragAndDropCommand.js +65 -0
- package/dist/workers/dragScrolling.js +174 -0
- package/dist/workers/dropIntoEditorContribution.js +41 -0
- package/dist/workers/dropIntoEditorController.js +173 -0
- package/dist/workers/dropdown.js +141 -0
- package/dist/workers/dropdownActionViewItem.js +109 -0
- package/dist/workers/dynamicProgrammingDiffing.js +101 -0
- package/dist/workers/dynamicViewOverlay.js +10 -0
- package/dist/workers/ecl.contribution.js +8 -0
- package/dist/workers/ecl.js +455 -0
- package/dist/workers/edcore.main.js +74 -0
- package/dist/workers/edit.js +83 -0
- package/dist/workers/editContext.js +10 -0
- package/dist/workers/editContextFactory.js +16 -0
- package/dist/workers/editOperation.js +36 -0
- package/dist/workers/editStack.js +363 -0
- package/dist/workers/editor.all.js +65 -0
- package/dist/workers/editor.api.js +2 -0
- package/dist/workers/editor.api2.js +60 -0
- package/dist/workers/editor.js +15 -0
- package/dist/workers/editor.main.js +170 -0
- package/dist/workers/editor.worker.start.js +44 -0
- package/dist/workers/editorAction.js +26 -0
- package/dist/workers/editorBaseApi.js +43 -0
- package/dist/workers/editorBrowser.js +53 -0
- package/dist/workers/editorColorRegistry.js +102 -0
- package/dist/workers/editorColors.js +128 -0
- package/dist/workers/editorCommon.js +13 -0
- package/dist/workers/editorConfiguration.js +292 -0
- package/dist/workers/editorConfigurationSchema.js +338 -0
- package/dist/workers/editorContextKeys.js +84 -0
- package/dist/workers/editorDom.js +299 -0
- package/dist/workers/editorExtensions.js +489 -0
- package/dist/workers/editorFeatures.js +17 -0
- package/dist/workers/editorGutter.js +117 -0
- package/dist/workers/editorMarkdownCodeBlockRenderer.js +85 -0
- package/dist/workers/editorNavigationQuickAccess.js +152 -0
- package/dist/workers/editorOptions.js +3440 -0
- package/dist/workers/editorScrollbar.js +151 -0
- package/dist/workers/editorState.js +115 -0
- package/dist/workers/editorTheme.js +23 -0
- package/dist/workers/editorWebWorker.js +299 -0
- package/dist/workers/editorWorker.js +9 -0
- package/dist/workers/editorWorkerHost.js +15 -0
- package/dist/workers/editorWorkerService.js +366 -0
- package/dist/workers/editorZoom.js +26 -0
- package/dist/workers/electricCharacter.js +55 -0
- package/dist/workers/elementSizeObserver.js +107 -0
- package/dist/workers/elixir.contribution.js +8 -0
- package/dist/workers/elixir.js +568 -0
- package/dist/workers/embeddedCodeEditorWidget.js +66 -0
- package/dist/workers/encodedTokenAttributes.js +79 -0
- package/dist/workers/enterAction.js +53 -0
- package/dist/workers/environment.js +5 -0
- package/dist/workers/eolCounter.js +44 -0
- package/dist/workers/equals.js +84 -0
- package/dist/workers/errorMessage.js +71 -0
- package/dist/workers/errors.js +163 -0
- package/dist/workers/event.js +1197 -0
- package/dist/workers/extensions.js +18 -0
- package/dist/workers/extpath.js +147 -0
- package/dist/workers/fastDomNode.js +255 -0
- package/dist/workers/files.js +19 -0
- package/dist/workers/filters.js +742 -0
- package/dist/workers/findController.js +970 -0
- package/dist/workers/findDecorations.js +311 -0
- package/dist/workers/findInput.js +294 -0
- package/dist/workers/findInputToggles.js +52 -0
- package/dist/workers/findModel.js +497 -0
- package/dist/workers/findOptionsWidget.js +155 -0
- package/dist/workers/findSectionHeaders.js +128 -0
- package/dist/workers/findState.js +244 -0
- package/dist/workers/findWidget.js +1168 -0
- package/dist/workers/findWidgetSearchHistory.js +85 -0
- package/dist/workers/fixBrackets.js +67 -0
- package/dist/workers/fixedArray.js +70 -0
- package/dist/workers/floatingMenu.contribution.js +9 -0
- package/dist/workers/floatingMenu.js +94 -0
- package/dist/workers/flow9.contribution.js +8 -0
- package/dist/workers/flow9.js +141 -0
- package/dist/workers/folding.js +1136 -0
- package/dist/workers/foldingDecorations.js +158 -0
- package/dist/workers/foldingModel.js +532 -0
- package/dist/workers/foldingRanges.js +354 -0
- package/dist/workers/fontInfo.js +172 -0
- package/dist/workers/fontInfoFromSettings.js +29 -0
- package/dist/workers/fontMeasurements.js +206 -0
- package/dist/workers/fontZoom.js +47 -0
- package/dist/workers/fonts.js +17 -0
- package/dist/workers/format.js +367 -0
- package/dist/workers/formatActions.js +263 -0
- package/dist/workers/formattedTextRenderer.js +160 -0
- package/dist/workers/formattingEdit.js +57 -0
- package/dist/workers/forwardingTelemetryService.js +60 -0
- package/dist/workers/freemarker2.contribution.js +52 -0
- package/dist/workers/freemarker2.js +1062 -0
- package/dist/workers/fsharp.contribution.js +8 -0
- package/dist/workers/fsharp.js +216 -0
- package/dist/workers/fullFileRenderStrategy.js +414 -0
- package/dist/workers/fullFileRenderStrategy.wgsl.js +93 -0
- package/dist/workers/functional.js +24 -0
- package/dist/workers/fuzzyScorer.js +143 -0
- package/dist/workers/getHover.js +56 -0
- package/dist/workers/getIconClasses.js +106 -0
- package/dist/workers/getLinks.js +157 -0
- package/dist/workers/getPositionOffsetTransformerFromTextModel.js +24 -0
- package/dist/workers/getSemanticTokens.js +211 -0
- package/dist/workers/ghostText.js +111 -0
- package/dist/workers/ghostTextView.js +449 -0
- package/dist/workers/glob.js +581 -0
- package/dist/workers/globalPointerMoveMonitor.js +83 -0
- package/dist/workers/glyphHoverComputer.js +40 -0
- package/dist/workers/glyphHoverController.js +171 -0
- package/dist/workers/glyphHoverWidget.js +184 -0
- package/dist/workers/glyphLanesModel.js +61 -0
- package/dist/workers/glyphMargin.js +403 -0
- package/dist/workers/glyphRasterizer.js +276 -0
- package/dist/workers/go.contribution.js +8 -0
- package/dist/workers/go.js +217 -0
- package/dist/workers/goToCommands.js +694 -0
- package/dist/workers/goToDefinitionAtPosition.js +267 -0
- package/dist/workers/goToSymbol.js +128 -0
- package/dist/workers/gotoError.js +272 -0
- package/dist/workers/gotoErrorWidget.js +352 -0
- package/dist/workers/gotoLineQuickAccess.js +183 -0
- package/dist/workers/gotoSymbolQuickAccess.js +395 -0
- package/dist/workers/gpuActions.js +126 -0
- package/dist/workers/gpuDisposable.js +48 -0
- package/dist/workers/gpuMark.js +80 -0
- package/dist/workers/gpuUtils.js +58 -0
- package/dist/workers/graph.js +74 -0
- package/dist/workers/graphql.contribution.js +9 -0
- package/dist/workers/graphql.js +150 -0
- package/dist/workers/guidesTextModelPart.js +405 -0
- package/dist/workers/gutterFeature.js +238 -0
- package/dist/workers/gutterIndicatorMenu.js +252 -0
- package/dist/workers/gutterIndicatorView.js +456 -0
- package/dist/workers/handlebars.contribution.js +9 -0
- package/dist/workers/handlebars.js +485 -0
- package/dist/workers/hash.js +256 -0
- package/dist/workers/hcl.contribution.js +8 -0
- package/dist/workers/hcl.js +182 -0
- package/dist/workers/helpQuickAccess.js +77 -0
- package/dist/workers/heuristicSequenceOptimizations.js +374 -0
- package/dist/workers/hiddenRangeModel.js +126 -0
- package/dist/workers/hideUnchangedRegionsFeature.js +433 -0
- package/dist/workers/hierarchicalKind.js +26 -0
- package/dist/workers/highlightDecorations.js +111 -0
- package/dist/workers/highlightedLabel.js +129 -0
- package/dist/workers/history.js +85 -0
- package/dist/workers/historyWidgetKeybindingHint.js +9 -0
- package/dist/workers/horizontalScrollbar.js +91 -0
- package/dist/workers/hotReloadHelpers.js +17 -0
- package/dist/workers/hover.js +11 -0
- package/dist/workers/hoverAccessibleViews.js +8 -0
- package/dist/workers/hoverActionIds.js +23 -0
- package/dist/workers/hoverActions.js +424 -0
- package/dist/workers/hoverColorPicker.js +14 -0
- package/dist/workers/hoverColorPickerContribution.js +44 -0
- package/dist/workers/hoverColorPickerParticipant.js +151 -0
- package/dist/workers/hoverContribution.js +56 -0
- package/dist/workers/hoverCopyButton.js +54 -0
- package/dist/workers/hoverDelegate2.js +39 -0
- package/dist/workers/hoverDelegateFactory.js +34 -0
- package/dist/workers/hoverOperation.js +168 -0
- package/dist/workers/hoverParticipant.js +161 -0
- package/dist/workers/hoverService.js +542 -0
- package/dist/workers/hoverTypes.js +64 -0
- package/dist/workers/hoverUtils.js +18 -0
- package/dist/workers/hoverWidget.js +93 -0
- package/dist/workers/html.contribution.js +9 -0
- package/dist/workers/html.js +374 -0
- package/dist/workers/htmlContent.js +164 -0
- package/dist/workers/htmlMode.js +213 -0
- package/dist/workers/htmlWorker.js +126 -0
- package/dist/workers/iPadShowKeyboard.js +74 -0
- package/dist/workers/iconLabel.js +291 -0
- package/dist/workers/iconLabels.js +33 -0
- package/dist/workers/iconRegistry.js +183 -0
- package/dist/workers/iconsStyleSheet.js +75 -0
- package/dist/workers/idGenerator.js +16 -0
- package/dist/workers/iframe.js +87 -0
- package/dist/workers/ime.js +33 -0
- package/dist/workers/inPlaceReplace.js +151 -0
- package/dist/workers/inPlaceReplaceCommand.js +27 -0
- package/dist/workers/indentGuides.js +254 -0
- package/dist/workers/indentRangeProvider.js +166 -0
- package/dist/workers/indentRules.js +63 -0
- package/dist/workers/indentUtils.js +33 -0
- package/dist/workers/indentation.js +100 -0
- package/dist/workers/indentationGuesser.js +178 -0
- package/dist/workers/indentationLineProcessor.js +193 -0
- package/dist/workers/index.js +21 -0
- package/dist/workers/indexTreeModel.js +538 -0
- package/dist/workers/ini.contribution.js +9 -0
- package/dist/workers/ini.js +70 -0
- package/dist/workers/initialize.js +11 -0
- package/dist/workers/inlayHints.js +147 -0
- package/dist/workers/inlayHintsContribution.js +11 -0
- package/dist/workers/inlayHintsController.js +686 -0
- package/dist/workers/inlayHintsHover.js +162 -0
- package/dist/workers/inlayHintsLocations.js +96 -0
- package/dist/workers/inlineCompletionContextKeys.js +23 -0
- package/dist/workers/inlineCompletions.contribution.js +31 -0
- package/dist/workers/inlineCompletionsAccessibleView.js +4 -0
- package/dist/workers/inlineCompletionsController.js +427 -0
- package/dist/workers/inlineCompletionsHintsWidget.js +356 -0
- package/dist/workers/inlineCompletionsModel.js +1048 -0
- package/dist/workers/inlineCompletionsService.js +170 -0
- package/dist/workers/inlineCompletionsSource.js +548 -0
- package/dist/workers/inlineCompletionsView.js +86 -0
- package/dist/workers/inlineDecorations.js +26 -0
- package/dist/workers/inlineDiffDeletedCodeMargin.js +138 -0
- package/dist/workers/inlineEdit.js +17 -0
- package/dist/workers/inlineEditWithChanges.js +30 -0
- package/dist/workers/inlineEditsCollapsedView.js +132 -0
- package/dist/workers/inlineEditsCustomView.js +256 -0
- package/dist/workers/inlineEditsDeletionView.js +178 -0
- package/dist/workers/inlineEditsInsertionView.js +267 -0
- package/dist/workers/inlineEditsLineReplacementView.js +329 -0
- package/dist/workers/inlineEditsModel.js +59 -0
- package/dist/workers/inlineEditsNewUsers.js +174 -0
- package/dist/workers/inlineEditsSideBySideView.js +517 -0
- package/dist/workers/inlineEditsView.js +561 -0
- package/dist/workers/inlineEditsViewInterface.js +21 -0
- package/dist/workers/inlineEditsViewProducer.js +119 -0
- package/dist/workers/inlineEditsWordReplacementView.js +211 -0
- package/dist/workers/inlineProgress.js +139 -0
- package/dist/workers/inlineSuggestionItem.js +497 -0
- package/dist/workers/inplaceReplaceSupport.js +87 -0
- package/dist/workers/inputBox.js +510 -0
- package/dist/workers/inputColors.js +66 -0
- package/dist/workers/inputMode.js +22 -0
- package/dist/workers/insertFinalNewLine.js +32 -0
- package/dist/workers/insertFinalNewLineCommand.js +39 -0
- package/dist/workers/inspectTokens.js +240 -0
- package/dist/workers/instantiation.js +44 -0
- package/dist/workers/instantiationService.js +403 -0
- package/dist/workers/intervalTree.js +1002 -0
- package/dist/workers/iterator.js +186 -0
- package/dist/workers/java.contribution.js +9 -0
- package/dist/workers/java.js +231 -0
- package/dist/workers/javascript.contribution.js +11 -0
- package/dist/workers/javascript.js +70 -0
- package/dist/workers/jsonContributionRegistry.js +42 -0
- package/dist/workers/jsonMode.js +224 -0
- package/dist/workers/jsonWorker.js +187 -0
- package/dist/workers/julia.contribution.js +8 -0
- package/dist/workers/julia.js +510 -0
- package/dist/workers/keyCodes.js +351 -0
- package/dist/workers/keybinding.js +9 -0
- package/dist/workers/keybindingCancellation.js +81 -0
- package/dist/workers/keybindingLabel.js +122 -0
- package/dist/workers/keybindingLabels.js +139 -0
- package/dist/workers/keybindingResolver.js +304 -0
- package/dist/workers/keybindings.js +104 -0
- package/dist/workers/keybindingsRegistry.js +111 -0
- package/dist/workers/keyboardEvent.js +125 -0
- package/dist/workers/korean.js +321 -0
- package/dist/workers/kotlin.contribution.js +9 -0
- package/dist/workers/kotlin.js +251 -0
- package/dist/workers/label.js +5 -0
- package/dist/workers/labels.js +15 -0
- package/dist/workers/language.js +9 -0
- package/dist/workers/languageBracketsConfiguration.js +133 -0
- package/dist/workers/languageConfiguration.js +138 -0
- package/dist/workers/languageConfigurationRegistry.js +361 -0
- package/dist/workers/languageFeatureDebounce.js +137 -0
- package/dist/workers/languageFeatureRegistry.js +180 -0
- package/dist/workers/languageFeatures.js +9 -0
- package/dist/workers/languageFeaturesService.js +47 -0
- package/dist/workers/languageSelector.js +112 -0
- package/dist/workers/languageService.js +92 -0
- package/dist/workers/languages.js +522 -0
- package/dist/workers/languagesAssociations.js +193 -0
- package/dist/workers/languagesRegistry.js +237 -0
- package/dist/workers/layoutService.js +9 -0
- package/dist/workers/lazy.js +49 -0
- package/dist/workers/lazyObservableValue.js +125 -0
- package/dist/workers/legacyLinesDiffComputer.js +468 -0
- package/dist/workers/length.js +129 -0
- package/dist/workers/less.contribution.js +9 -0
- package/dist/workers/less.js +160 -0
- package/dist/workers/lexon.contribution.js +8 -0
- package/dist/workers/lexon.js +156 -0
- package/dist/workers/lib.index.js +103 -0
- package/dist/workers/lib.js +1107 -0
- package/dist/workers/lifecycle.js +311 -0
- package/dist/workers/lightBulbWidget.js +427 -0
- package/dist/workers/lineCommentCommand.js +328 -0
- package/dist/workers/lineDecorations.js +208 -0
- package/dist/workers/lineEdit.js +75 -0
- package/dist/workers/lineHeights.js +370 -0
- package/dist/workers/lineNumbers.js +184 -0
- package/dist/workers/linePart.js +25 -0
- package/dist/workers/lineRange.js +312 -0
- package/dist/workers/lineSelection.js +36 -0
- package/dist/workers/lineSequence.js +36 -0
- package/dist/workers/lineTokens.js +405 -0
- package/dist/workers/linesDecorations.js +104 -0
- package/dist/workers/linesDiffComputer.js +29 -0
- package/dist/workers/linesDiffComputers.js +13 -0
- package/dist/workers/linesLayout.js +765 -0
- package/dist/workers/linesOperations.js +1187 -0
- package/dist/workers/linesSliceCharSequence.js +205 -0
- package/dist/workers/link.js +95 -0
- package/dist/workers/linkComputer.js +269 -0
- package/dist/workers/linkedEditing.js +381 -0
- package/dist/workers/linkedList.js +126 -0
- package/dist/workers/linkedText.js +48 -0
- package/dist/workers/links.js +376 -0
- package/dist/workers/liquid.contribution.js +9 -0
- package/dist/workers/liquid.js +306 -0
- package/dist/workers/list.js +11 -0
- package/dist/workers/listColors.js +51 -0
- package/dist/workers/listPaging.js +128 -0
- package/dist/workers/listService.js +1025 -0
- package/dist/workers/listView.js +1173 -0
- package/dist/workers/listWidget.js +1535 -0
- package/dist/workers/log.js +271 -0
- package/dist/workers/logService.js +40 -0
- package/dist/workers/logging.js +86 -0
- package/dist/workers/longLinesHelper.js +23 -0
- package/dist/workers/lspLanguageFeatures.js +716 -0
- package/dist/workers/lua.contribution.js +8 -0
- package/dist/workers/lua.js +161 -0
- package/dist/workers/m3.contribution.js +8 -0
- package/dist/workers/m3.js +209 -0
- package/dist/workers/map.js +670 -0
- package/dist/workers/margin.js +71 -0
- package/dist/workers/marginDecorations.js +84 -0
- package/dist/workers/markdown.contribution.js +8 -0
- package/dist/workers/markdown.js +228 -0
- package/dist/workers/markdownHoverParticipant.js +419 -0
- package/dist/workers/markdownRenderer.js +73 -0
- package/dist/workers/marked.js +2478 -0
- package/dist/workers/markerDecorations.js +9 -0
- package/dist/workers/markerDecorationsService.js +248 -0
- package/dist/workers/markerHoverParticipant.js +270 -0
- package/dist/workers/markerNavigationService.js +223 -0
- package/dist/workers/markerService.js +330 -0
- package/dist/workers/markers.js +127 -0
- package/dist/workers/marshalling.js +62 -0
- package/dist/workers/mdx.contribution.js +8 -0
- package/dist/workers/mdx.js +230 -0
- package/dist/workers/menu.js +1147 -0
- package/dist/workers/menuColors.js +19 -0
- package/dist/workers/menuEntryActionViewItem.js +519 -0
- package/dist/workers/menuService.js +436 -0
- package/dist/workers/messageController.js +186 -0
- package/dist/workers/middleScroll.contribution.js +8 -0
- package/dist/workers/middleScrollController.js +128 -0
- package/dist/workers/migrateOptions.js +220 -0
- package/dist/workers/mime.js +11 -0
- package/dist/workers/minimap.js +1662 -0
- package/dist/workers/minimapCharRenderer.js +90 -0
- package/dist/workers/minimapCharRendererFactory.js +136 -0
- package/dist/workers/minimapCharSheet.js +25 -0
- package/dist/workers/minimapColors.js +23 -0
- package/dist/workers/minimapPreBaked.js +52 -0
- package/dist/workers/minimapTokensColorTracker.js +58 -0
- package/dist/workers/mips.contribution.js +9 -0
- package/dist/workers/mips.js +197 -0
- package/dist/workers/mirrorTextModel.js +117 -0
- package/dist/workers/miscColors.js +32 -0
- package/dist/workers/model.js +9 -0
- package/dist/workers/modelLineProjection.js +350 -0
- package/dist/workers/modelLineProjectionData.js +297 -0
- package/dist/workers/modelService.js +413 -0
- package/dist/workers/modesRegistry.js +75 -0
- package/dist/workers/monaco.contribution.js +302 -0
- package/dist/workers/monarchCommon.js +147 -0
- package/dist/workers/monarchCompile.js +546 -0
- package/dist/workers/monarchLexer.js +764 -0
- package/dist/workers/monospaceLineBreaksComputer.js +473 -0
- package/dist/workers/mouseCursor.js +9 -0
- package/dist/workers/mouseEvent.js +153 -0
- package/dist/workers/mouseHandler.js +539 -0
- package/dist/workers/mouseTarget.js +978 -0
- package/dist/workers/moveCaretCommand.js +49 -0
- package/dist/workers/moveLinesCommand.js +394 -0
- package/dist/workers/movedBlocksLinesFeature.js +277 -0
- package/dist/workers/msdax.contribution.js +8 -0
- package/dist/workers/msdax.js +374 -0
- package/dist/workers/multiDiffEditorWidget.js +43 -0
- package/dist/workers/multiDiffEditorWidgetImpl.js +427 -0
- package/dist/workers/multicursor.js +1004 -0
- package/dist/workers/myersDiffAlgorithm.js +159 -0
- package/dist/workers/mysql.contribution.js +8 -0
- package/dist/workers/mysql.js +877 -0
- package/dist/workers/nativeEditContext.js +518 -0
- package/dist/workers/nativeEditContextRegistry.js +23 -0
- package/dist/workers/nativeEditContextUtils.js +85 -0
- package/dist/workers/navigator.js +36 -0
- package/dist/workers/network.js +267 -0
- package/dist/workers/nls.js +76 -0
- package/dist/workers/nls.messages.js +18 -0
- package/dist/workers/nodeReader.js +127 -0
- package/dist/workers/normalization.js +41 -0
- package/dist/workers/notification.js +9 -0
- package/dist/workers/nullTokenize.js +29 -0
- package/dist/workers/numbers.js +45 -0
- package/dist/workers/objectCollectionBuffer.js +102 -0
- package/dist/workers/objectPool.js +47 -0
- package/dist/workers/objectTree.js +204 -0
- package/dist/workers/objectTreeModel.js +220 -0
- package/dist/workers/objective-c.contribution.js +8 -0
- package/dist/workers/objective-c.js +182 -0
- package/dist/workers/objects.js +152 -0
- package/dist/workers/observableCodeEditor.js +373 -0
- package/dist/workers/observableFromEvent.js +123 -0
- package/dist/workers/observableSignal.js +47 -0
- package/dist/workers/observableSignalFromEvent.js +41 -0
- package/dist/workers/observableValue.js +105 -0
- package/dist/workers/observableValueOpts.js +20 -0
- package/dist/workers/offsetRange.js +225 -0
- package/dist/workers/onEnter.js +109 -0
- package/dist/workers/oneCursor.js +117 -0
- package/dist/workers/opener.js +43 -0
- package/dist/workers/openerService.js +222 -0
- package/dist/workers/originalEditorInlineDiffView.js +215 -0
- package/dist/workers/outlineModel.js +265 -0
- package/dist/workers/overlayWidgets.js +181 -0
- package/dist/workers/overviewRuler.js +134 -0
- package/dist/workers/overviewRulerFeature.js +168 -0
- package/dist/workers/overviewZoneManager.js +176 -0
- package/dist/workers/parameterHints.js +126 -0
- package/dist/workers/parameterHintsModel.js +258 -0
- package/dist/workers/parameterHintsWidget.js +318 -0
- package/dist/workers/parser.js +121 -0
- package/dist/workers/pascal.contribution.js +9 -0
- package/dist/workers/pascal.js +250 -0
- package/dist/workers/pascaligo.contribution.js +8 -0
- package/dist/workers/pascaligo.js +163 -0
- package/dist/workers/path.js +1451 -0
- package/dist/workers/peekView.js +246 -0
- package/dist/workers/performance.js +222 -0
- package/dist/workers/perl.contribution.js +8 -0
- package/dist/workers/perl.js +625 -0
- package/dist/workers/pgsql.contribution.js +8 -0
- package/dist/workers/pgsql.js +850 -0
- package/dist/workers/php.contribution.js +9 -0
- package/dist/workers/php.js +499 -0
- package/dist/workers/pickerQuickAccess.js +271 -0
- package/dist/workers/pieceTreeBase.js +1473 -0
- package/dist/workers/pieceTreeTextBuffer.js +461 -0
- package/dist/workers/pieceTreeTextBufferBuilder.js +140 -0
- package/dist/workers/pixelRatio.js +88 -0
- package/dist/workers/pla.contribution.js +7 -0
- package/dist/workers/pla.js +136 -0
- package/dist/workers/placeholderText.contribution.js +14 -0
- package/dist/workers/placeholderTextContribution.js +77 -0
- package/dist/workers/platform.js +32 -0
- package/dist/workers/platformObservableUtils.js +31 -0
- package/dist/workers/point.js +50 -0
- package/dist/workers/pointerHandler.js +132 -0
- package/dist/workers/position.js +142 -0
- package/dist/workers/positionToOffset.js +17 -0
- package/dist/workers/positionToOffsetImpl.js +98 -0
- package/dist/workers/postEditWidget.js +220 -0
- package/dist/workers/postiats.contribution.js +8 -0
- package/dist/workers/postiats.js +906 -0
- package/dist/workers/powerquery.contribution.js +8 -0
- package/dist/workers/powerquery.js +889 -0
- package/dist/workers/powershell.contribution.js +8 -0
- package/dist/workers/powershell.js +238 -0
- package/dist/workers/prefixSumComputer.js +226 -0
- package/dist/workers/process.js +61 -0
- package/dist/workers/product.js +70 -0
- package/dist/workers/productService.js +9 -0
- package/dist/workers/progress.js +16 -0
- package/dist/workers/progressbar.js +105 -0
- package/dist/workers/promise.js +56 -0
- package/dist/workers/protobuf.contribution.js +8 -0
- package/dist/workers/protobuf.js +419 -0
- package/dist/workers/provideInlineCompletions.js +372 -0
- package/dist/workers/provideSignatureHelp.js +59 -0
- package/dist/workers/pug.contribution.js +8 -0
- package/dist/workers/pug.js +401 -0
- package/dist/workers/python.contribution.js +9 -0
- package/dist/workers/python.js +366 -0
- package/dist/workers/qsharp.contribution.js +8 -0
- package/dist/workers/qsharp.js +300 -0
- package/dist/workers/quickAccess.js +56 -0
- package/dist/workers/quickInput.js +108 -0
- package/dist/workers/quickInputActions.js +189 -0
- package/dist/workers/quickInputBox.js +104 -0
- package/dist/workers/quickInputController.js +901 -0
- package/dist/workers/quickInputDelegate.js +19 -0
- package/dist/workers/quickInputList.js +1391 -0
- package/dist/workers/quickInputService.js +197 -0
- package/dist/workers/quickInputTree.js +37 -0
- package/dist/workers/quickInputTreeAccessibilityProvider.js +39 -0
- package/dist/workers/quickInputTreeController.js +181 -0
- package/dist/workers/quickInputTreeFilter.js +42 -0
- package/dist/workers/quickInputTreeRenderer.js +141 -0
- package/dist/workers/quickInputTreeSorter.js +48 -0
- package/dist/workers/quickInputUtils.js +89 -0
- package/dist/workers/quickpickColors.js +21 -0
- package/dist/workers/r.contribution.js +8 -0
- package/dist/workers/r.js +242 -0
- package/dist/workers/range.js +421 -0
- package/dist/workers/rangeMap.js +161 -0
- package/dist/workers/rangeMapping.js +229 -0
- package/dist/workers/rangeSingleLine.js +17 -0
- package/dist/workers/rangeUtil.js +117 -0
- package/dist/workers/razor.contribution.js +9 -0
- package/dist/workers/razor.js +616 -0
- package/dist/workers/rbTreeBase.js +362 -0
- package/dist/workers/rect.js +163 -0
- package/dist/workers/rectangleRenderer.js +214 -0
- package/dist/workers/rectangleRenderer.wgsl.js +68 -0
- package/dist/workers/redis.contribution.js +8 -0
- package/dist/workers/redis.js +301 -0
- package/dist/workers/redshift.contribution.js +8 -0
- package/dist/workers/redshift.js +808 -0
- package/dist/workers/reducer.js +46 -0
- package/dist/workers/referencesController.js +382 -0
- package/dist/workers/referencesModel.js +241 -0
- package/dist/workers/referencesTree.js +200 -0
- package/dist/workers/referencesWidget.js +525 -0
- package/dist/workers/registrations.contribution.js +82 -0
- package/dist/workers/rename.js +458 -0
- package/dist/workers/renameWidget.js +741 -0
- package/dist/workers/renderLines.js +185 -0
- package/dist/workers/renderingContext.js +118 -0
- package/dist/workers/replaceAllCommand.js +54 -0
- package/dist/workers/replaceCommand.js +158 -0
- package/dist/workers/replaceInput.js +176 -0
- package/dist/workers/replacePattern.js +289 -0
- package/dist/workers/replaceWidgetHistory.js +85 -0
- package/dist/workers/resizable.js +150 -0
- package/dist/workers/resizableContentWidget.js +92 -0
- package/dist/workers/resolvedKeybindingItem.js +35 -0
- package/dist/workers/resolverService.js +5 -0
- package/dist/workers/resources.js +231 -0
- package/dist/workers/restructuredtext.contribution.js +8 -0
- package/dist/workers/restructuredtext.js +173 -0
- package/dist/workers/revertButtonsFeature.js +149 -0
- package/dist/workers/rgba.js +35 -0
- package/dist/workers/richEditBrackets.js +356 -0
- package/dist/workers/rowCache.js +110 -0
- package/dist/workers/rpc.js +57 -0
- package/dist/workers/ruby.contribution.js +9 -0
- package/dist/workers/ruby.js +510 -0
- package/dist/workers/rulers.js +82 -0
- package/dist/workers/rulersGpu.js +66 -0
- package/dist/workers/runOnChange.js +61 -0
- package/dist/workers/rust.contribution.js +8 -0
- package/dist/workers/rust.js +342 -0
- package/dist/workers/sash.js +451 -0
- package/dist/workers/sb.contribution.js +8 -0
- package/dist/workers/sb.js +114 -0
- package/dist/workers/scala.contribution.js +9 -0
- package/dist/workers/scala.js +369 -0
- package/dist/workers/scanner.js +287 -0
- package/dist/workers/scheme.contribution.js +8 -0
- package/dist/workers/scheme.js +107 -0
- package/dist/workers/screenReaderContentRich.js +337 -0
- package/dist/workers/screenReaderContentSimple.js +194 -0
- package/dist/workers/screenReaderSupport.js +175 -0
- package/dist/workers/screenReaderUtils.js +111 -0
- package/dist/workers/scrollDecoration.js +70 -0
- package/dist/workers/scrollable.js +323 -0
- package/dist/workers/scrollableElement.js +603 -0
- package/dist/workers/scrollbarArrow.js +78 -0
- package/dist/workers/scrollbarState.js +163 -0
- package/dist/workers/scrollbarVisibilityController.js +93 -0
- package/dist/workers/scss.contribution.js +9 -0
- package/dist/workers/scss.js +259 -0
- package/dist/workers/search.js +52 -0
- package/dist/workers/searchColors.js +13 -0
- package/dist/workers/sectionHeaders.js +179 -0
- package/dist/workers/selectBox.js +47 -0
- package/dist/workers/selectBoxCustom.js +858 -0
- package/dist/workers/selectBoxNative.js +142 -0
- package/dist/workers/selection.js +145 -0
- package/dist/workers/selections.js +338 -0
- package/dist/workers/semanticTokensConfig.js +14 -0
- package/dist/workers/semanticTokensDto.js +82 -0
- package/dist/workers/semanticTokensProviderStyling.js +263 -0
- package/dist/workers/semanticTokensStyling.js +9 -0
- package/dist/workers/semanticTokensStylingService.js +47 -0
- package/dist/workers/serviceCollection.js +22 -0
- package/dist/workers/severity.js +52 -0
- package/dist/workers/severityIcon.js +29 -0
- package/dist/workers/shell.contribution.js +8 -0
- package/dist/workers/shell.js +220 -0
- package/dist/workers/shiftCommand.js +241 -0
- package/dist/workers/singleTextEditHelpers.js +32 -0
- package/dist/workers/smallImmutableSet.js +108 -0
- package/dist/workers/smartSelect.js +281 -0
- package/dist/workers/snippetController2.js +297 -0
- package/dist/workers/snippetParser.js +890 -0
- package/dist/workers/snippetSession.js +650 -0
- package/dist/workers/snippetVariables.js +323 -0
- package/dist/workers/solidity.contribution.js +8 -0
- package/dist/workers/solidity.js +1366 -0
- package/dist/workers/sophia.contribution.js +8 -0
- package/dist/workers/sophia.js +198 -0
- package/dist/workers/sortLinesCommand.js +81 -0
- package/dist/workers/sparql.contribution.js +8 -0
- package/dist/workers/sparql.js +200 -0
- package/dist/workers/sparseMultilineTokens.js +548 -0
- package/dist/workers/sparseTokensStore.js +210 -0
- package/dist/workers/splice.js +14 -0
- package/dist/workers/splitview.js +829 -0
- package/dist/workers/sql.contribution.js +8 -0
- package/dist/workers/sql.js +852 -0
- package/dist/workers/st.contribution.js +8 -0
- package/dist/workers/st.js +415 -0
- package/dist/workers/stableEditorScroll.js +52 -0
- package/dist/workers/standaloneCodeEditor.js +335 -0
- package/dist/workers/standaloneCodeEditorService.js +96 -0
- package/dist/workers/standaloneColorPickerActions.js +81 -0
- package/dist/workers/standaloneColorPickerController.js +62 -0
- package/dist/workers/standaloneColorPickerParticipant.js +117 -0
- package/dist/workers/standaloneColorPickerWidget.js +215 -0
- package/dist/workers/standaloneCommandsQuickAccess.js +82 -0
- package/dist/workers/standaloneEditor.js +519 -0
- package/dist/workers/standaloneEnums.js +1017 -0
- package/dist/workers/standaloneGotoLineQuickAccess.js +67 -0
- package/dist/workers/standaloneGotoSymbolQuickAccess.js +77 -0
- package/dist/workers/standaloneHelpQuickAccess.js +14 -0
- package/dist/workers/standaloneLanguages.js +621 -0
- package/dist/workers/standaloneLayoutService.js +74 -0
- package/dist/workers/standaloneQuickInputService.js +150 -0
- package/dist/workers/standaloneReferenceSearch.js +38 -0
- package/dist/workers/standaloneServices.js +787 -0
- package/dist/workers/standaloneStrings.js +42 -0
- package/dist/workers/standaloneTheme.js +9 -0
- package/dist/workers/standaloneThemeService.js +367 -0
- package/dist/workers/standaloneTreeSitterLibraryService.js +23 -0
- package/dist/workers/standaloneWebWorker.js +55 -0
- package/dist/workers/stickyScrollActions.js +132 -0
- package/dist/workers/stickyScrollContribution.js +16 -0
- package/dist/workers/stickyScrollController.js +566 -0
- package/dist/workers/stickyScrollElement.js +39 -0
- package/dist/workers/stickyScrollModelProvider.js +338 -0
- package/dist/workers/stickyScrollProvider.js +197 -0
- package/dist/workers/stickyScrollWidget.js +474 -0
- package/dist/workers/stopwatch.js +30 -0
- package/dist/workers/storage.js +200 -0
- package/dist/workers/stringBuilder.js +122 -0
- package/dist/workers/stringEdit.js +165 -0
- package/dist/workers/strings.js +834 -0
- package/dist/workers/structuredLogger.js +56 -0
- package/dist/workers/suggest.js +322 -0
- package/dist/workers/suggestAlternatives.js +95 -0
- package/dist/workers/suggestCommitCharacters.js +59 -0
- package/dist/workers/suggestController.js +941 -0
- package/dist/workers/suggestInlineCompletions.js +193 -0
- package/dist/workers/suggestMemory.js +254 -0
- package/dist/workers/suggestModel.js +667 -0
- package/dist/workers/suggestOvertypingCapturer.js +62 -0
- package/dist/workers/suggestWidget.js +890 -0
- package/dist/workers/suggestWidgetAdapter.js +210 -0
- package/dist/workers/suggestWidgetDetails.js +393 -0
- package/dist/workers/suggestWidgetRenderer.js +208 -0
- package/dist/workers/suggestWidgetStatus.js +74 -0
- package/dist/workers/supports.js +58 -0
- package/dist/workers/surroundSelectionCommand.js +44 -0
- package/dist/workers/swift.contribution.js +9 -0
- package/dist/workers/swift.js +311 -0
- package/dist/workers/symbolIcons.js +101 -0
- package/dist/workers/symbolNavigation.js +178 -0
- package/dist/workers/symbols.js +10 -0
- package/dist/workers/syntaxRangeProvider.js +177 -0
- package/dist/workers/systemverilog.contribution.js +14 -0
- package/dist/workers/systemverilog.js +575 -0
- package/dist/workers/tabFocus.js +29 -0
- package/dist/workers/tableWidget.js +181 -0
- package/dist/workers/taskQueue.js +116 -0
- package/dist/workers/tcl.contribution.js +8 -0
- package/dist/workers/tcl.js +231 -0
- package/dist/workers/telemetry.js +9 -0
- package/dist/workers/ternarySearchTree.js +674 -0
- package/dist/workers/textAreaEditContext.js +720 -0
- package/dist/workers/textAreaEditContextInput.js +588 -0
- package/dist/workers/textAreaEditContextState.js +160 -0
- package/dist/workers/textChange.js +248 -0
- package/dist/workers/textEdit.js +269 -0
- package/dist/workers/textLength.js +87 -0
- package/dist/workers/textModel.js +2031 -0
- package/dist/workers/textModelBracketPairs.js +45 -0
- package/dist/workers/textModelDefaults.js +18 -0
- package/dist/workers/textModelEditSource.js +166 -0
- package/dist/workers/textModelEvents.js +216 -0
- package/dist/workers/textModelGuides.js +40 -0
- package/dist/workers/textModelPart.js +23 -0
- package/dist/workers/textModelSearch.js +455 -0
- package/dist/workers/textModelStringEdit.js +11 -0
- package/dist/workers/textModelSync.impl.js +307 -0
- package/dist/workers/textModelText.js +26 -0
- package/dist/workers/textModelTokens.js +436 -0
- package/dist/workers/textResourceConfiguration.js +6 -0
- package/dist/workers/textToHtmlTokenizer.js +139 -0
- package/dist/workers/textualHighlightProvider.js +78 -0
- package/dist/workers/textureAtlas.js +179 -0
- package/dist/workers/textureAtlasPage.js +110 -0
- package/dist/workers/textureAtlasShelfAllocator.js +129 -0
- package/dist/workers/textureAtlasSlabAllocator.js +346 -0
- package/dist/workers/tfIdf.js +179 -0
- package/dist/workers/themables.js +100 -0
- package/dist/workers/theme.js +110 -0
- package/dist/workers/themeService.js +67 -0
- package/dist/workers/themes.js +242 -0
- package/dist/workers/toggle.js +242 -0
- package/dist/workers/toggleHighContrast.js +35 -0
- package/dist/workers/toggleTabFocusMode.js +42 -0
- package/dist/workers/tokenStore.js +407 -0
- package/dist/workers/tokenWithTextArray.js +73 -0
- package/dist/workers/tokenization.js +29 -0
- package/dist/workers/tokenizationRegistry.js +123 -0
- package/dist/workers/tokenizationTextModelPart.js +275 -0
- package/dist/workers/tokenizer.js +301 -0
- package/dist/workers/tokenizerSyntaxTokenBackend.js +261 -0
- package/dist/workers/toolbar.js +244 -0
- package/dist/workers/touch.js +270 -0
- package/dist/workers/transaction.js +109 -0
- package/dist/workers/transpose.js +65 -0
- package/dist/workers/tree.js +45 -0
- package/dist/workers/treeSitterLibraryService.js +9 -0
- package/dist/workers/treeSitterSyntaxTokenBackend.js +167 -0
- package/dist/workers/treeSitterThemeService.js +9 -0
- package/dist/workers/treeSitterTokenizationImpl.js +713 -0
- package/dist/workers/treeSitterTree.js +395 -0
- package/dist/workers/treeViewsDnd.js +24 -0
- package/dist/workers/treeViewsDndService.js +12 -0
- package/dist/workers/triggerInlineEditCommandsRegistry.js +18 -0
- package/dist/workers/trimTrailingWhitespaceCommand.js +98 -0
- package/dist/workers/trustedTypes.js +29 -0
- package/dist/workers/tsMode.js +212 -0
- package/dist/workers/tsWorker.js +352 -0
- package/dist/workers/twig.contribution.js +9 -0
- package/dist/workers/twig.js +391 -0
- package/dist/workers/types.js +144 -0
- package/dist/workers/typescript.contribution.js +11 -0
- package/dist/workers/typescript.js +408 -0
- package/dist/workers/typescriptServices.js +210154 -0
- package/dist/workers/typescriptServicesMetadata.js +3 -0
- package/dist/workers/typespec.contribution.js +8 -0
- package/dist/workers/typespec.js +126 -0
- package/dist/workers/typingSpeed.js +165 -0
- package/dist/workers/uint.js +24 -0
- package/dist/workers/undoRedo.js +43 -0
- package/dist/workers/undoRedoService.js +1076 -0
- package/dist/workers/unicodeHighlighter.js +673 -0
- package/dist/workers/unicodeTextModelHighlighter.js +188 -0
- package/dist/workers/unusualLineTerminators.js +113 -0
- package/dist/workers/updatableHoverWidget.js +107 -0
- package/dist/workers/uri.js +606 -0
- package/dist/workers/usLayoutResolvedKeybinding.js +175 -0
- package/dist/workers/utils.js +209 -0
- package/dist/workers/utilsCancellation.js +63 -0
- package/dist/workers/uuid.js +53 -0
- package/dist/workers/validation.js +159 -0
- package/dist/workers/vb.contribution.js +8 -0
- package/dist/workers/vb.js +371 -0
- package/dist/workers/verticalScrollbar.js +94 -0
- package/dist/workers/view.js +720 -0
- package/dist/workers/viewContext.js +22 -0
- package/dist/workers/viewController.js +274 -0
- package/dist/workers/viewCursor.js +218 -0
- package/dist/workers/viewCursors.js +339 -0
- package/dist/workers/viewEventHandler.js +186 -0
- package/dist/workers/viewEvents.js +180 -0
- package/dist/workers/viewGpuContext.js +241 -0
- package/dist/workers/viewLayer.js +478 -0
- package/dist/workers/viewLayout.js +368 -0
- package/dist/workers/viewLine.js +544 -0
- package/dist/workers/viewLineOptions.js +43 -0
- package/dist/workers/viewLineRenderer.js +948 -0
- package/dist/workers/viewLines.js +721 -0
- package/dist/workers/viewLinesGpu.js +571 -0
- package/dist/workers/viewLinesViewportData.js +30 -0
- package/dist/workers/viewModel.js +98 -0
- package/dist/workers/viewModelDecoration.js +55 -0
- package/dist/workers/viewModelDecorations.js +132 -0
- package/dist/workers/viewModelEventDispatcher.js +398 -0
- package/dist/workers/viewModelImpl.js +1163 -0
- package/dist/workers/viewModelLines.js +938 -0
- package/dist/workers/viewOverlays.js +204 -0
- package/dist/workers/viewPart.js +49 -0
- package/dist/workers/viewUserInputEvents.js +91 -0
- package/dist/workers/viewZones.js +335 -0
- package/dist/workers/viewportRenderStrategy.js +316 -0
- package/dist/workers/viewportSemanticTokens.js +166 -0
- package/dist/workers/webWorker.js +396 -0
- package/dist/workers/webWorkerBootstrap.js +20 -0
- package/dist/workers/webWorkerFactory.js +171 -0
- package/dist/workers/wgsl.contribution.js +8 -0
- package/dist/workers/wgsl.js +452 -0
- package/dist/workers/whitespace.js +277 -0
- package/dist/workers/widget.js +44 -0
- package/dist/workers/window.js +60 -0
- package/dist/workers/wordCharacterClassifier.js +87 -0
- package/dist/workers/wordContextKey.js +69 -0
- package/dist/workers/wordDistance.js +64 -0
- package/dist/workers/wordHelper.js +127 -0
- package/dist/workers/wordHighlighter.js +796 -0
- package/dist/workers/wordOperations.js +442 -0
- package/dist/workers/wordPartOperations.js +145 -0
- package/dist/workers/wordSelections.js +82 -0
- package/dist/workers/workerManager.js +147 -0
- package/dist/workers/workers.js +141 -0
- package/dist/workers/workspace.js +84 -0
- package/dist/workers/workspaceTrust.js +9 -0
- package/dist/workers/wrapInHotClass.js +41 -0
- package/dist/workers/wrapInReloadableClass.js +35 -0
- package/dist/workers/xml.contribution.js +28 -0
- package/dist/workers/xml.js +160 -0
- package/dist/workers/yaml.contribution.js +9 -0
- package/dist/workers/yaml.js +271 -0
- package/dist/workers/zoneWidget.js +406 -0
- package/package.json +2 -2
- package/dist/assets/css.worker-C7FogG4G.js +0 -93
- package/dist/assets/editor.worker-iXcRX1Tq.js +0 -26
- package/dist/assets/html.worker-C8VxctEJ.js +0 -470
- package/dist/assets/json.worker-CMC9kgPL.js +0 -58
- package/dist/assets/ts.worker-CtTJ3hNN.js +0 -67731
|
@@ -0,0 +1,968 @@
|
|
|
1
|
+
import { onUnexpectedError } from '../../../base/common/errors.js';
|
|
2
|
+
import { getLeadingWhitespace, firstNonWhitespaceIndex, splitLines, lastNonWhitespaceIndex } from '../../../base/common/strings.js';
|
|
3
|
+
import { ReplaceCommandWithoutChangingPosition, ReplaceCommandWithOffsetCursorState, ReplaceCommand, ReplaceOvertypeCommand, ReplaceOvertypeCommandOnCompositionEnd, ReplaceCommandThatPreservesSelection } from '../commands/replaceCommand.js';
|
|
4
|
+
import { ShiftCommand } from '../commands/shiftCommand.js';
|
|
5
|
+
import { SurroundSelectionCommand } from '../commands/surroundSelectionCommand.js';
|
|
6
|
+
import { EditOperationResult, isQuote } from '../cursorCommon.js';
|
|
7
|
+
import { getMapForWordSeparators } from '../core/wordCharacterClassifier.js';
|
|
8
|
+
import { Range } from '../core/range.js';
|
|
9
|
+
import { Position } from '../core/position.js';
|
|
10
|
+
import { IndentAction } from '../languages/languageConfiguration.js';
|
|
11
|
+
import { getIndentationAtPosition } from '../languages/languageConfigurationRegistry.js';
|
|
12
|
+
import { createScopedLineTokens } from '../languages/supports.js';
|
|
13
|
+
import { getIndentForEnter, getInheritIndentForLine, getIndentActionForType } from '../languages/autoIndent.js';
|
|
14
|
+
import { getEnterAction } from '../languages/enterAction.js';
|
|
15
|
+
|
|
16
|
+
/*---------------------------------------------------------------------------------------------
|
|
17
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
18
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
19
|
+
*--------------------------------------------------------------------------------------------*/
|
|
20
|
+
class AutoIndentOperation {
|
|
21
|
+
static getEdits(config, model, selections, ch, isDoingComposition) {
|
|
22
|
+
if (!isDoingComposition && this._isAutoIndentType(config, model, selections)) {
|
|
23
|
+
const indentationForSelections = [];
|
|
24
|
+
for (const selection of selections) {
|
|
25
|
+
const indentation = this._findActualIndentationForSelection(config, model, selection, ch);
|
|
26
|
+
if (indentation === null) {
|
|
27
|
+
// Auto indentation failed
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
indentationForSelections.push({ selection, indentation });
|
|
31
|
+
}
|
|
32
|
+
const autoClosingPairClose = AutoClosingOpenCharTypeOperation.getAutoClosingPairClose(config, model, selections, ch, false);
|
|
33
|
+
return this._getIndentationAndAutoClosingPairEdits(config, model, indentationForSelections, ch, autoClosingPairClose);
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
static _isAutoIndentType(config, model, selections) {
|
|
38
|
+
if (config.autoIndent < 4 /* EditorAutoIndentStrategy.Full */) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
42
|
+
if (!model.tokenization.isCheapToTokenize(selections[i].getEndPosition().lineNumber)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
static _findActualIndentationForSelection(config, model, selection, ch) {
|
|
49
|
+
const actualIndentation = getIndentActionForType(config, model, selection, ch, {
|
|
50
|
+
shiftIndent: (indentation) => {
|
|
51
|
+
return shiftIndent(config, indentation);
|
|
52
|
+
},
|
|
53
|
+
unshiftIndent: (indentation) => {
|
|
54
|
+
return unshiftIndent(config, indentation);
|
|
55
|
+
},
|
|
56
|
+
}, config.languageConfigurationService);
|
|
57
|
+
if (actualIndentation === null) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const currentIndentation = getIndentationAtPosition(model, selection.startLineNumber, selection.startColumn);
|
|
61
|
+
if (actualIndentation === config.normalizeIndentation(currentIndentation)) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return actualIndentation;
|
|
65
|
+
}
|
|
66
|
+
static _getIndentationAndAutoClosingPairEdits(config, model, indentationForSelections, ch, autoClosingPairClose) {
|
|
67
|
+
const commands = indentationForSelections.map(({ selection, indentation }) => {
|
|
68
|
+
if (autoClosingPairClose !== null) {
|
|
69
|
+
// Apply both auto closing pair edits and auto indentation edits
|
|
70
|
+
const indentationEdit = this._getEditFromIndentationAndSelection(config, model, indentation, selection, ch, false);
|
|
71
|
+
return new TypeWithIndentationAndAutoClosingCommand(indentationEdit, selection, ch, autoClosingPairClose);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Apply only auto indentation edits
|
|
75
|
+
const indentationEdit = this._getEditFromIndentationAndSelection(config, model, indentation, selection, ch, true);
|
|
76
|
+
return typeCommand(indentationEdit.range, indentationEdit.text, false);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const editOptions = { shouldPushStackElementBefore: true, shouldPushStackElementAfter: false };
|
|
80
|
+
return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, editOptions);
|
|
81
|
+
}
|
|
82
|
+
static _getEditFromIndentationAndSelection(config, model, indentation, selection, ch, includeChInEdit = true) {
|
|
83
|
+
const startLineNumber = selection.startLineNumber;
|
|
84
|
+
const firstNonWhitespaceColumn = model.getLineFirstNonWhitespaceColumn(startLineNumber);
|
|
85
|
+
let text = config.normalizeIndentation(indentation);
|
|
86
|
+
if (firstNonWhitespaceColumn !== 0) {
|
|
87
|
+
const startLine = model.getLineContent(startLineNumber);
|
|
88
|
+
text += startLine.substring(firstNonWhitespaceColumn - 1, selection.startColumn - 1);
|
|
89
|
+
}
|
|
90
|
+
text += includeChInEdit ? ch : '';
|
|
91
|
+
const range = new Range(startLineNumber, 1, selection.endLineNumber, selection.endColumn);
|
|
92
|
+
return { range, text };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class AutoClosingOvertypeOperation {
|
|
96
|
+
static getEdits(prevEditOperationType, config, model, selections, autoClosedCharacters, ch) {
|
|
97
|
+
if (isAutoClosingOvertype(config, model, selections, autoClosedCharacters, ch)) {
|
|
98
|
+
return this._runAutoClosingOvertype(prevEditOperationType, selections, ch);
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
static _runAutoClosingOvertype(prevEditOperationType, selections, ch) {
|
|
103
|
+
const commands = [];
|
|
104
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
105
|
+
const selection = selections[i];
|
|
106
|
+
const position = selection.getPosition();
|
|
107
|
+
const typeSelection = new Range(position.lineNumber, position.column, position.lineNumber, position.column + 1);
|
|
108
|
+
commands[i] = new ReplaceCommand(typeSelection, ch);
|
|
109
|
+
}
|
|
110
|
+
return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, {
|
|
111
|
+
shouldPushStackElementBefore: shouldPushStackElementBetween(prevEditOperationType, 4 /* EditOperationType.TypingOther */),
|
|
112
|
+
shouldPushStackElementAfter: false
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
class AutoClosingOvertypeWithInterceptorsOperation {
|
|
117
|
+
static getEdits(config, model, selections, autoClosedCharacters, ch) {
|
|
118
|
+
if (isAutoClosingOvertype(config, model, selections, autoClosedCharacters, ch)) {
|
|
119
|
+
// Unfortunately, the close character is at this point "doubled", so we need to delete it...
|
|
120
|
+
const commands = selections.map(s => new ReplaceCommand(new Range(s.positionLineNumber, s.positionColumn, s.positionLineNumber, s.positionColumn + 1), '', false));
|
|
121
|
+
return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, {
|
|
122
|
+
shouldPushStackElementBefore: true,
|
|
123
|
+
shouldPushStackElementAfter: false
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
class AutoClosingOpenCharTypeOperation {
|
|
130
|
+
static getEdits(config, model, selections, ch, chIsAlreadyTyped, isDoingComposition) {
|
|
131
|
+
if (!isDoingComposition) {
|
|
132
|
+
const autoClosingPairClose = this.getAutoClosingPairClose(config, model, selections, ch, chIsAlreadyTyped);
|
|
133
|
+
if (autoClosingPairClose !== null) {
|
|
134
|
+
return this._runAutoClosingOpenCharType(selections, ch, chIsAlreadyTyped, autoClosingPairClose);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
static _runAutoClosingOpenCharType(selections, ch, chIsAlreadyTyped, autoClosingPairClose) {
|
|
140
|
+
const commands = [];
|
|
141
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
142
|
+
const selection = selections[i];
|
|
143
|
+
commands[i] = new TypeWithAutoClosingCommand(selection, ch, !chIsAlreadyTyped, autoClosingPairClose);
|
|
144
|
+
}
|
|
145
|
+
return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, {
|
|
146
|
+
shouldPushStackElementBefore: true,
|
|
147
|
+
shouldPushStackElementAfter: false
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
static getAutoClosingPairClose(config, model, selections, ch, chIsAlreadyTyped) {
|
|
151
|
+
for (const selection of selections) {
|
|
152
|
+
if (!selection.isEmpty()) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// This method is called both when typing (regularly) and when composition ends
|
|
157
|
+
// This means that we need to work with a text buffer where sometimes `ch` is not
|
|
158
|
+
// there (it is being typed right now) or with a text buffer where `ch` has already been typed
|
|
159
|
+
//
|
|
160
|
+
// In order to avoid adding checks for `chIsAlreadyTyped` in all places, we will work
|
|
161
|
+
// with two conceptual positions, the position before `ch` and the position after `ch`
|
|
162
|
+
//
|
|
163
|
+
const positions = selections.map((s) => {
|
|
164
|
+
const position = s.getPosition();
|
|
165
|
+
if (chIsAlreadyTyped) {
|
|
166
|
+
return { lineNumber: position.lineNumber, beforeColumn: position.column - ch.length, afterColumn: position.column };
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return { lineNumber: position.lineNumber, beforeColumn: position.column, afterColumn: position.column };
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
// Find the longest auto-closing open pair in case of multiple ending in `ch`
|
|
173
|
+
// e.g. when having [f","] and [","], it picks [f","] if the character before is f
|
|
174
|
+
const pair = this._findAutoClosingPairOpen(config, model, positions.map(p => new Position(p.lineNumber, p.beforeColumn)), ch);
|
|
175
|
+
if (!pair) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
let autoCloseConfig;
|
|
179
|
+
let shouldAutoCloseBefore;
|
|
180
|
+
const chIsQuote = isQuote(ch);
|
|
181
|
+
if (chIsQuote) {
|
|
182
|
+
autoCloseConfig = config.autoClosingQuotes;
|
|
183
|
+
shouldAutoCloseBefore = config.shouldAutoCloseBefore.quote;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
const pairIsForComments = config.blockCommentStartToken ? pair.open.includes(config.blockCommentStartToken) : false;
|
|
187
|
+
if (pairIsForComments) {
|
|
188
|
+
autoCloseConfig = config.autoClosingComments;
|
|
189
|
+
shouldAutoCloseBefore = config.shouldAutoCloseBefore.comment;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
autoCloseConfig = config.autoClosingBrackets;
|
|
193
|
+
shouldAutoCloseBefore = config.shouldAutoCloseBefore.bracket;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (autoCloseConfig === 'never') {
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
// Sometimes, it is possible to have two auto-closing pairs that have a containment relationship
|
|
200
|
+
// e.g. when having [(,)] and [(*,*)]
|
|
201
|
+
// - when typing (, the resulting state is (|)
|
|
202
|
+
// - when typing *, the desired resulting state is (*|*), not (*|*))
|
|
203
|
+
const containedPair = this._findContainedAutoClosingPair(config, pair);
|
|
204
|
+
const containedPairClose = containedPair ? containedPair.close : '';
|
|
205
|
+
let isContainedPairPresent = true;
|
|
206
|
+
for (const position of positions) {
|
|
207
|
+
const { lineNumber, beforeColumn, afterColumn } = position;
|
|
208
|
+
const lineText = model.getLineContent(lineNumber);
|
|
209
|
+
const lineBefore = lineText.substring(0, beforeColumn - 1);
|
|
210
|
+
const lineAfter = lineText.substring(afterColumn - 1);
|
|
211
|
+
if (!lineAfter.startsWith(containedPairClose)) {
|
|
212
|
+
isContainedPairPresent = false;
|
|
213
|
+
}
|
|
214
|
+
// Only consider auto closing the pair if an allowed character follows or if another autoclosed pair closing brace follows
|
|
215
|
+
if (lineAfter.length > 0) {
|
|
216
|
+
const characterAfter = lineAfter.charAt(0);
|
|
217
|
+
const isBeforeCloseBrace = this._isBeforeClosingBrace(config, lineAfter);
|
|
218
|
+
if (!isBeforeCloseBrace && !shouldAutoCloseBefore(characterAfter)) {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Do not auto-close ' or " after a word character
|
|
223
|
+
if (pair.open.length === 1 && (ch === '\'' || ch === '"') && autoCloseConfig !== 'always') {
|
|
224
|
+
const wordSeparators = getMapForWordSeparators(config.wordSeparators, []);
|
|
225
|
+
if (lineBefore.length > 0) {
|
|
226
|
+
const characterBefore = lineBefore.charCodeAt(lineBefore.length - 1);
|
|
227
|
+
if (wordSeparators.get(characterBefore) === 0 /* WordCharacterClass.Regular */) {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (!model.tokenization.isCheapToTokenize(lineNumber)) {
|
|
233
|
+
// Do not force tokenization
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
model.tokenization.forceTokenization(lineNumber);
|
|
237
|
+
const lineTokens = model.tokenization.getLineTokens(lineNumber);
|
|
238
|
+
const scopedLineTokens = createScopedLineTokens(lineTokens, beforeColumn - 1);
|
|
239
|
+
if (!pair.shouldAutoClose(scopedLineTokens, beforeColumn - scopedLineTokens.firstCharOffset)) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
// Typing for example a quote could either start a new string, in which case auto-closing is desirable
|
|
243
|
+
// or it could end a previously started string, in which case auto-closing is not desirable
|
|
244
|
+
//
|
|
245
|
+
// In certain cases, it is really not possible to look at the previous token to determine
|
|
246
|
+
// what would happen. That's why we do something really unusual, we pretend to type a different
|
|
247
|
+
// character and ask the tokenizer what the outcome of doing that is: after typing a neutral
|
|
248
|
+
// character, are we in a string (i.e. the quote would most likely end a string) or not?
|
|
249
|
+
//
|
|
250
|
+
const neutralCharacter = pair.findNeutralCharacter();
|
|
251
|
+
if (neutralCharacter) {
|
|
252
|
+
const tokenType = model.tokenization.getTokenTypeIfInsertingCharacter(lineNumber, beforeColumn, neutralCharacter);
|
|
253
|
+
if (!pair.isOK(tokenType)) {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (isContainedPairPresent) {
|
|
259
|
+
return pair.close.substring(0, pair.close.length - containedPairClose.length);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
return pair.close;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Find another auto-closing pair that is contained by the one passed in.
|
|
267
|
+
*
|
|
268
|
+
* e.g. when having [(,)] and [(*,*)] as auto-closing pairs
|
|
269
|
+
* this method will find [(,)] as a containment pair for [(*,*)]
|
|
270
|
+
*/
|
|
271
|
+
static _findContainedAutoClosingPair(config, pair) {
|
|
272
|
+
if (pair.open.length <= 1) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
const lastChar = pair.close.charAt(pair.close.length - 1);
|
|
276
|
+
// get candidates with the same last character as close
|
|
277
|
+
const candidates = config.autoClosingPairs.autoClosingPairsCloseByEnd.get(lastChar) || [];
|
|
278
|
+
let result = null;
|
|
279
|
+
for (const candidate of candidates) {
|
|
280
|
+
if (candidate.open !== pair.open && pair.open.includes(candidate.open) && pair.close.endsWith(candidate.close)) {
|
|
281
|
+
if (!result || candidate.open.length > result.open.length) {
|
|
282
|
+
result = candidate;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return result;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Determine if typing `ch` at all `positions` in the `model` results in an
|
|
290
|
+
* auto closing open sequence being typed.
|
|
291
|
+
*
|
|
292
|
+
* Auto closing open sequences can consist of multiple characters, which
|
|
293
|
+
* can lead to ambiguities. In such a case, the longest auto-closing open
|
|
294
|
+
* sequence is returned.
|
|
295
|
+
*/
|
|
296
|
+
static _findAutoClosingPairOpen(config, model, positions, ch) {
|
|
297
|
+
const candidates = config.autoClosingPairs.autoClosingPairsOpenByEnd.get(ch);
|
|
298
|
+
if (!candidates) {
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
// Determine which auto-closing pair it is
|
|
302
|
+
let result = null;
|
|
303
|
+
for (const candidate of candidates) {
|
|
304
|
+
if (result === null || candidate.open.length > result.open.length) {
|
|
305
|
+
let candidateIsMatch = true;
|
|
306
|
+
for (const position of positions) {
|
|
307
|
+
const relevantText = model.getValueInRange(new Range(position.lineNumber, position.column - candidate.open.length + 1, position.lineNumber, position.column));
|
|
308
|
+
if (relevantText + ch !== candidate.open) {
|
|
309
|
+
candidateIsMatch = false;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (candidateIsMatch) {
|
|
314
|
+
result = candidate;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return result;
|
|
319
|
+
}
|
|
320
|
+
static _isBeforeClosingBrace(config, lineAfter) {
|
|
321
|
+
// If the start of lineAfter can be interpretted as both a starting or ending brace, default to returning false
|
|
322
|
+
const nextChar = lineAfter.charAt(0);
|
|
323
|
+
const potentialStartingBraces = config.autoClosingPairs.autoClosingPairsOpenByStart.get(nextChar) || [];
|
|
324
|
+
const potentialClosingBraces = config.autoClosingPairs.autoClosingPairsCloseByStart.get(nextChar) || [];
|
|
325
|
+
const isBeforeStartingBrace = potentialStartingBraces.some(x => lineAfter.startsWith(x.open));
|
|
326
|
+
const isBeforeClosingBrace = potentialClosingBraces.some(x => lineAfter.startsWith(x.close));
|
|
327
|
+
return !isBeforeStartingBrace && isBeforeClosingBrace;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
class CompositionEndOvertypeOperation {
|
|
331
|
+
static getEdits(config, compositions) {
|
|
332
|
+
const isOvertypeMode = config.inputMode === 'overtype';
|
|
333
|
+
if (!isOvertypeMode) {
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
const commands = compositions.map(composition => new ReplaceOvertypeCommandOnCompositionEnd(composition.insertedTextRange));
|
|
337
|
+
return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, {
|
|
338
|
+
shouldPushStackElementBefore: true,
|
|
339
|
+
shouldPushStackElementAfter: false
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
class SurroundSelectionOperation {
|
|
344
|
+
static getEdits(config, model, selections, ch, isDoingComposition) {
|
|
345
|
+
if (!isDoingComposition && this._isSurroundSelectionType(config, model, selections, ch)) {
|
|
346
|
+
return this._runSurroundSelectionType(config, selections, ch);
|
|
347
|
+
}
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
static _runSurroundSelectionType(config, selections, ch) {
|
|
351
|
+
const commands = [];
|
|
352
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
353
|
+
const selection = selections[i];
|
|
354
|
+
const closeCharacter = config.surroundingPairs[ch];
|
|
355
|
+
commands[i] = new SurroundSelectionCommand(selection, ch, closeCharacter);
|
|
356
|
+
}
|
|
357
|
+
return new EditOperationResult(0 /* EditOperationType.Other */, commands, {
|
|
358
|
+
shouldPushStackElementBefore: true,
|
|
359
|
+
shouldPushStackElementAfter: true
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
static _isSurroundSelectionType(config, model, selections, ch) {
|
|
363
|
+
if (!shouldSurroundChar(config, ch) || !config.surroundingPairs.hasOwnProperty(ch)) {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
const isTypingAQuoteCharacter = isQuote(ch);
|
|
367
|
+
for (const selection of selections) {
|
|
368
|
+
if (selection.isEmpty()) {
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
let selectionContainsOnlyWhitespace = true;
|
|
372
|
+
for (let lineNumber = selection.startLineNumber; lineNumber <= selection.endLineNumber; lineNumber++) {
|
|
373
|
+
const lineText = model.getLineContent(lineNumber);
|
|
374
|
+
const startIndex = (lineNumber === selection.startLineNumber ? selection.startColumn - 1 : 0);
|
|
375
|
+
const endIndex = (lineNumber === selection.endLineNumber ? selection.endColumn - 1 : lineText.length);
|
|
376
|
+
const selectedText = lineText.substring(startIndex, endIndex);
|
|
377
|
+
if (/[^ \t]/.test(selectedText)) {
|
|
378
|
+
// this selected text contains something other than whitespace
|
|
379
|
+
selectionContainsOnlyWhitespace = false;
|
|
380
|
+
break;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
if (selectionContainsOnlyWhitespace) {
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
if (isTypingAQuoteCharacter && selection.startLineNumber === selection.endLineNumber && selection.startColumn + 1 === selection.endColumn) {
|
|
387
|
+
const selectionText = model.getValueInRange(selection);
|
|
388
|
+
if (isQuote(selectionText)) {
|
|
389
|
+
// Typing a quote character on top of another quote character
|
|
390
|
+
// => disable surround selection type
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return true;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
class InterceptorElectricCharOperation {
|
|
399
|
+
static getEdits(prevEditOperationType, config, model, selections, ch, isDoingComposition) {
|
|
400
|
+
// Electric characters make sense only when dealing with a single cursor,
|
|
401
|
+
// as multiple cursors typing brackets for example would interfer with bracket matching
|
|
402
|
+
if (!isDoingComposition && this._isTypeInterceptorElectricChar(config, model, selections)) {
|
|
403
|
+
const r = this._typeInterceptorElectricChar(prevEditOperationType, config, model, selections[0], ch);
|
|
404
|
+
if (r) {
|
|
405
|
+
return r;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
static _isTypeInterceptorElectricChar(config, model, selections) {
|
|
411
|
+
if (selections.length === 1 && model.tokenization.isCheapToTokenize(selections[0].getEndPosition().lineNumber)) {
|
|
412
|
+
return true;
|
|
413
|
+
}
|
|
414
|
+
return false;
|
|
415
|
+
}
|
|
416
|
+
static _typeInterceptorElectricChar(prevEditOperationType, config, model, selection, ch) {
|
|
417
|
+
if (!config.electricChars.hasOwnProperty(ch) || !selection.isEmpty()) {
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
const position = selection.getPosition();
|
|
421
|
+
model.tokenization.forceTokenization(position.lineNumber);
|
|
422
|
+
const lineTokens = model.tokenization.getLineTokens(position.lineNumber);
|
|
423
|
+
let electricAction;
|
|
424
|
+
try {
|
|
425
|
+
electricAction = config.onElectricCharacter(ch, lineTokens, position.column);
|
|
426
|
+
}
|
|
427
|
+
catch (e) {
|
|
428
|
+
onUnexpectedError(e);
|
|
429
|
+
return null;
|
|
430
|
+
}
|
|
431
|
+
if (!electricAction) {
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
if (electricAction.matchOpenBracket) {
|
|
435
|
+
const endColumn = (lineTokens.getLineContent() + ch).lastIndexOf(electricAction.matchOpenBracket) + 1;
|
|
436
|
+
const match = model.bracketPairs.findMatchingBracketUp(electricAction.matchOpenBracket, {
|
|
437
|
+
lineNumber: position.lineNumber,
|
|
438
|
+
column: endColumn
|
|
439
|
+
}, 500 /* give at most 500ms to compute */);
|
|
440
|
+
if (match) {
|
|
441
|
+
if (match.startLineNumber === position.lineNumber) {
|
|
442
|
+
// matched something on the same line => no change in indentation
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
const matchLine = model.getLineContent(match.startLineNumber);
|
|
446
|
+
const matchLineIndentation = getLeadingWhitespace(matchLine);
|
|
447
|
+
const newIndentation = config.normalizeIndentation(matchLineIndentation);
|
|
448
|
+
const lineText = model.getLineContent(position.lineNumber);
|
|
449
|
+
const lineFirstNonBlankColumn = model.getLineFirstNonWhitespaceColumn(position.lineNumber) || position.column;
|
|
450
|
+
const prefix = lineText.substring(lineFirstNonBlankColumn - 1, position.column - 1);
|
|
451
|
+
const typeText = newIndentation + prefix + ch;
|
|
452
|
+
const typeSelection = new Range(position.lineNumber, 1, position.lineNumber, position.column);
|
|
453
|
+
const command = new ReplaceCommand(typeSelection, typeText);
|
|
454
|
+
return new EditOperationResult(getTypingOperation(typeText, prevEditOperationType), [command], {
|
|
455
|
+
shouldPushStackElementBefore: false,
|
|
456
|
+
shouldPushStackElementAfter: true
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
return null;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
class SimpleCharacterTypeOperation {
|
|
464
|
+
static getEdits(config, prevEditOperationType, selections, ch, isDoingComposition) {
|
|
465
|
+
// A simple character type
|
|
466
|
+
const commands = [];
|
|
467
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
468
|
+
const ChosenReplaceCommand = config.inputMode === 'overtype' && !isDoingComposition ? ReplaceOvertypeCommand : ReplaceCommand;
|
|
469
|
+
commands[i] = new ChosenReplaceCommand(selections[i], ch);
|
|
470
|
+
}
|
|
471
|
+
const opType = getTypingOperation(ch, prevEditOperationType);
|
|
472
|
+
return new EditOperationResult(opType, commands, {
|
|
473
|
+
shouldPushStackElementBefore: shouldPushStackElementBetween(prevEditOperationType, opType),
|
|
474
|
+
shouldPushStackElementAfter: false
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
class EnterOperation {
|
|
479
|
+
static getEdits(config, model, selections, ch, isDoingComposition) {
|
|
480
|
+
if (!isDoingComposition && ch === '\n') {
|
|
481
|
+
const commands = [];
|
|
482
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
483
|
+
commands[i] = this._enter(config, model, false, selections[i]);
|
|
484
|
+
}
|
|
485
|
+
return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, {
|
|
486
|
+
shouldPushStackElementBefore: true,
|
|
487
|
+
shouldPushStackElementAfter: false,
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
static _enter(config, model, keepPosition, range) {
|
|
493
|
+
if (config.autoIndent === 0 /* EditorAutoIndentStrategy.None */) {
|
|
494
|
+
return typeCommand(range, '\n', keepPosition);
|
|
495
|
+
}
|
|
496
|
+
if (!model.tokenization.isCheapToTokenize(range.getStartPosition().lineNumber) || config.autoIndent === 1 /* EditorAutoIndentStrategy.Keep */) {
|
|
497
|
+
const lineText = model.getLineContent(range.startLineNumber);
|
|
498
|
+
const indentation = getLeadingWhitespace(lineText).substring(0, range.startColumn - 1);
|
|
499
|
+
return typeCommand(range, '\n' + config.normalizeIndentation(indentation), keepPosition);
|
|
500
|
+
}
|
|
501
|
+
const r = getEnterAction(config.autoIndent, model, range, config.languageConfigurationService);
|
|
502
|
+
if (r) {
|
|
503
|
+
if (r.indentAction === IndentAction.None) {
|
|
504
|
+
// Nothing special
|
|
505
|
+
return typeCommand(range, '\n' + config.normalizeIndentation(r.indentation + r.appendText), keepPosition);
|
|
506
|
+
}
|
|
507
|
+
else if (r.indentAction === IndentAction.Indent) {
|
|
508
|
+
// Indent once
|
|
509
|
+
return typeCommand(range, '\n' + config.normalizeIndentation(r.indentation + r.appendText), keepPosition);
|
|
510
|
+
}
|
|
511
|
+
else if (r.indentAction === IndentAction.IndentOutdent) {
|
|
512
|
+
// Ultra special
|
|
513
|
+
const normalIndent = config.normalizeIndentation(r.indentation);
|
|
514
|
+
const increasedIndent = config.normalizeIndentation(r.indentation + r.appendText);
|
|
515
|
+
const typeText = '\n' + increasedIndent + '\n' + normalIndent;
|
|
516
|
+
if (keepPosition) {
|
|
517
|
+
return new ReplaceCommandWithoutChangingPosition(range, typeText, true);
|
|
518
|
+
}
|
|
519
|
+
else {
|
|
520
|
+
return new ReplaceCommandWithOffsetCursorState(range, typeText, -1, increasedIndent.length - normalIndent.length, true);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
else if (r.indentAction === IndentAction.Outdent) {
|
|
524
|
+
const actualIndentation = unshiftIndent(config, r.indentation);
|
|
525
|
+
return typeCommand(range, '\n' + config.normalizeIndentation(actualIndentation + r.appendText), keepPosition);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
const lineText = model.getLineContent(range.startLineNumber);
|
|
529
|
+
const indentation = getLeadingWhitespace(lineText).substring(0, range.startColumn - 1);
|
|
530
|
+
if (config.autoIndent >= 4 /* EditorAutoIndentStrategy.Full */) {
|
|
531
|
+
const ir = getIndentForEnter(config.autoIndent, model, range, {
|
|
532
|
+
unshiftIndent: (indent) => {
|
|
533
|
+
return unshiftIndent(config, indent);
|
|
534
|
+
},
|
|
535
|
+
shiftIndent: (indent) => {
|
|
536
|
+
return shiftIndent(config, indent);
|
|
537
|
+
},
|
|
538
|
+
normalizeIndentation: (indent) => {
|
|
539
|
+
return config.normalizeIndentation(indent);
|
|
540
|
+
}
|
|
541
|
+
}, config.languageConfigurationService);
|
|
542
|
+
if (ir) {
|
|
543
|
+
let oldEndViewColumn = config.visibleColumnFromColumn(model, range.getEndPosition());
|
|
544
|
+
const oldEndColumn = range.endColumn;
|
|
545
|
+
const newLineContent = model.getLineContent(range.endLineNumber);
|
|
546
|
+
const firstNonWhitespace = firstNonWhitespaceIndex(newLineContent);
|
|
547
|
+
if (firstNonWhitespace >= 0) {
|
|
548
|
+
range = range.setEndPosition(range.endLineNumber, Math.max(range.endColumn, firstNonWhitespace + 1));
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
range = range.setEndPosition(range.endLineNumber, model.getLineMaxColumn(range.endLineNumber));
|
|
552
|
+
}
|
|
553
|
+
if (keepPosition) {
|
|
554
|
+
return new ReplaceCommandWithoutChangingPosition(range, '\n' + config.normalizeIndentation(ir.afterEnter), true);
|
|
555
|
+
}
|
|
556
|
+
else {
|
|
557
|
+
let offset = 0;
|
|
558
|
+
if (oldEndColumn <= firstNonWhitespace + 1) {
|
|
559
|
+
if (!config.insertSpaces) {
|
|
560
|
+
oldEndViewColumn = Math.ceil(oldEndViewColumn / config.indentSize);
|
|
561
|
+
}
|
|
562
|
+
offset = Math.min(oldEndViewColumn + 1 - config.normalizeIndentation(ir.afterEnter).length - 1, 0);
|
|
563
|
+
}
|
|
564
|
+
return new ReplaceCommandWithOffsetCursorState(range, '\n' + config.normalizeIndentation(ir.afterEnter), 0, offset, true);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
return typeCommand(range, '\n' + config.normalizeIndentation(indentation), keepPosition);
|
|
569
|
+
}
|
|
570
|
+
static lineInsertBefore(config, model, selections) {
|
|
571
|
+
if (model === null || selections === null) {
|
|
572
|
+
return [];
|
|
573
|
+
}
|
|
574
|
+
const commands = [];
|
|
575
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
576
|
+
let lineNumber = selections[i].positionLineNumber;
|
|
577
|
+
if (lineNumber === 1) {
|
|
578
|
+
commands[i] = new ReplaceCommandWithoutChangingPosition(new Range(1, 1, 1, 1), '\n');
|
|
579
|
+
}
|
|
580
|
+
else {
|
|
581
|
+
lineNumber--;
|
|
582
|
+
const column = model.getLineMaxColumn(lineNumber);
|
|
583
|
+
commands[i] = this._enter(config, model, false, new Range(lineNumber, column, lineNumber, column));
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
return commands;
|
|
587
|
+
}
|
|
588
|
+
static lineInsertAfter(config, model, selections) {
|
|
589
|
+
if (model === null || selections === null) {
|
|
590
|
+
return [];
|
|
591
|
+
}
|
|
592
|
+
const commands = [];
|
|
593
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
594
|
+
const lineNumber = selections[i].positionLineNumber;
|
|
595
|
+
const column = model.getLineMaxColumn(lineNumber);
|
|
596
|
+
commands[i] = this._enter(config, model, false, new Range(lineNumber, column, lineNumber, column));
|
|
597
|
+
}
|
|
598
|
+
return commands;
|
|
599
|
+
}
|
|
600
|
+
static lineBreakInsert(config, model, selections) {
|
|
601
|
+
const commands = [];
|
|
602
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
603
|
+
commands[i] = this._enter(config, model, true, selections[i]);
|
|
604
|
+
}
|
|
605
|
+
return commands;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
class PasteOperation {
|
|
609
|
+
static getEdits(config, model, selections, text, pasteOnNewLine, multicursorText) {
|
|
610
|
+
const distributedPaste = this._distributePasteToCursors(config, selections, text, pasteOnNewLine, multicursorText);
|
|
611
|
+
if (distributedPaste) {
|
|
612
|
+
selections = selections.sort(Range.compareRangesUsingStarts);
|
|
613
|
+
return this._distributedPaste(config, model, selections, distributedPaste);
|
|
614
|
+
}
|
|
615
|
+
else {
|
|
616
|
+
return this._simplePaste(config, model, selections, text, pasteOnNewLine);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
static _distributePasteToCursors(config, selections, text, pasteOnNewLine, multicursorText) {
|
|
620
|
+
if (pasteOnNewLine) {
|
|
621
|
+
return null;
|
|
622
|
+
}
|
|
623
|
+
if (selections.length === 1) {
|
|
624
|
+
return null;
|
|
625
|
+
}
|
|
626
|
+
if (multicursorText && multicursorText.length === selections.length) {
|
|
627
|
+
return multicursorText;
|
|
628
|
+
}
|
|
629
|
+
if (config.multiCursorPaste === 'spread') {
|
|
630
|
+
// Try to spread the pasted text in case the line count matches the cursor count
|
|
631
|
+
// Remove trailing \n if present
|
|
632
|
+
if (text.charCodeAt(text.length - 1) === 10 /* CharCode.LineFeed */) {
|
|
633
|
+
text = text.substring(0, text.length - 1);
|
|
634
|
+
}
|
|
635
|
+
// Remove trailing \r if present
|
|
636
|
+
if (text.charCodeAt(text.length - 1) === 13 /* CharCode.CarriageReturn */) {
|
|
637
|
+
text = text.substring(0, text.length - 1);
|
|
638
|
+
}
|
|
639
|
+
const lines = splitLines(text);
|
|
640
|
+
if (lines.length === selections.length) {
|
|
641
|
+
return lines;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
return null;
|
|
645
|
+
}
|
|
646
|
+
static _distributedPaste(config, model, selections, text) {
|
|
647
|
+
const commands = [];
|
|
648
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
649
|
+
const shouldOvertypeOnPaste = config.overtypeOnPaste && config.inputMode === 'overtype';
|
|
650
|
+
const ChosenReplaceCommand = shouldOvertypeOnPaste ? ReplaceOvertypeCommand : ReplaceCommand;
|
|
651
|
+
commands[i] = new ChosenReplaceCommand(selections[i], text[i]);
|
|
652
|
+
}
|
|
653
|
+
return new EditOperationResult(0 /* EditOperationType.Other */, commands, {
|
|
654
|
+
shouldPushStackElementBefore: true,
|
|
655
|
+
shouldPushStackElementAfter: true
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
static _simplePaste(config, model, selections, text, pasteOnNewLine) {
|
|
659
|
+
const commands = [];
|
|
660
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
661
|
+
const selection = selections[i];
|
|
662
|
+
const position = selection.getPosition();
|
|
663
|
+
if (pasteOnNewLine && !selection.isEmpty()) {
|
|
664
|
+
pasteOnNewLine = false;
|
|
665
|
+
}
|
|
666
|
+
if (pasteOnNewLine && text.indexOf('\n') !== text.length - 1) {
|
|
667
|
+
pasteOnNewLine = false;
|
|
668
|
+
}
|
|
669
|
+
if (pasteOnNewLine) {
|
|
670
|
+
// Paste entire line at the beginning of line
|
|
671
|
+
const typeSelection = new Range(position.lineNumber, 1, position.lineNumber, 1);
|
|
672
|
+
commands[i] = new ReplaceCommandThatPreservesSelection(typeSelection, text, selection, true);
|
|
673
|
+
}
|
|
674
|
+
else {
|
|
675
|
+
const shouldOvertypeOnPaste = config.overtypeOnPaste && config.inputMode === 'overtype';
|
|
676
|
+
const ChosenReplaceCommand = shouldOvertypeOnPaste ? ReplaceOvertypeCommand : ReplaceCommand;
|
|
677
|
+
commands[i] = new ChosenReplaceCommand(selection, text);
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
return new EditOperationResult(0 /* EditOperationType.Other */, commands, {
|
|
681
|
+
shouldPushStackElementBefore: true,
|
|
682
|
+
shouldPushStackElementAfter: true
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
class CompositionOperation {
|
|
687
|
+
static getEdits(prevEditOperationType, config, model, selections, text, replacePrevCharCnt, replaceNextCharCnt, positionDelta) {
|
|
688
|
+
const commands = selections.map(selection => this._compositionType(model, selection, text, replacePrevCharCnt, replaceNextCharCnt, positionDelta));
|
|
689
|
+
return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, {
|
|
690
|
+
shouldPushStackElementBefore: shouldPushStackElementBetween(prevEditOperationType, 4 /* EditOperationType.TypingOther */),
|
|
691
|
+
shouldPushStackElementAfter: false
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
static _compositionType(model, selection, text, replacePrevCharCnt, replaceNextCharCnt, positionDelta) {
|
|
695
|
+
if (!selection.isEmpty()) {
|
|
696
|
+
// looks like https://github.com/microsoft/vscode/issues/2773
|
|
697
|
+
// where a cursor operation occurred before a canceled composition
|
|
698
|
+
// => ignore composition
|
|
699
|
+
return null;
|
|
700
|
+
}
|
|
701
|
+
const pos = selection.getPosition();
|
|
702
|
+
const startColumn = Math.max(1, pos.column - replacePrevCharCnt);
|
|
703
|
+
const endColumn = Math.min(model.getLineMaxColumn(pos.lineNumber), pos.column + replaceNextCharCnt);
|
|
704
|
+
const range = new Range(pos.lineNumber, startColumn, pos.lineNumber, endColumn);
|
|
705
|
+
return new ReplaceCommandWithOffsetCursorState(range, text, 0, positionDelta);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
class TypeWithoutInterceptorsOperation {
|
|
709
|
+
static getEdits(prevEditOperationType, selections, str) {
|
|
710
|
+
const commands = [];
|
|
711
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
712
|
+
commands[i] = new ReplaceCommand(selections[i], str);
|
|
713
|
+
}
|
|
714
|
+
const opType = getTypingOperation(str, prevEditOperationType);
|
|
715
|
+
return new EditOperationResult(opType, commands, {
|
|
716
|
+
shouldPushStackElementBefore: shouldPushStackElementBetween(prevEditOperationType, opType),
|
|
717
|
+
shouldPushStackElementAfter: false
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
class TabOperation {
|
|
722
|
+
static getCommands(config, model, selections) {
|
|
723
|
+
const commands = [];
|
|
724
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
725
|
+
const selection = selections[i];
|
|
726
|
+
if (selection.isEmpty()) {
|
|
727
|
+
const lineText = model.getLineContent(selection.startLineNumber);
|
|
728
|
+
if (/^\s*$/.test(lineText) && model.tokenization.isCheapToTokenize(selection.startLineNumber)) {
|
|
729
|
+
let goodIndent = this._goodIndentForLine(config, model, selection.startLineNumber);
|
|
730
|
+
goodIndent = goodIndent || '\t';
|
|
731
|
+
const possibleTypeText = config.normalizeIndentation(goodIndent);
|
|
732
|
+
if (!lineText.startsWith(possibleTypeText)) {
|
|
733
|
+
commands[i] = new ReplaceCommand(new Range(selection.startLineNumber, 1, selection.startLineNumber, lineText.length + 1), possibleTypeText, true);
|
|
734
|
+
continue;
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
commands[i] = this._replaceJumpToNextIndent(config, model, selection, true);
|
|
738
|
+
}
|
|
739
|
+
else {
|
|
740
|
+
if (selection.startLineNumber === selection.endLineNumber) {
|
|
741
|
+
const lineMaxColumn = model.getLineMaxColumn(selection.startLineNumber);
|
|
742
|
+
if (selection.startColumn !== 1 || selection.endColumn !== lineMaxColumn) {
|
|
743
|
+
// This is a single line selection that is not the entire line
|
|
744
|
+
commands[i] = this._replaceJumpToNextIndent(config, model, selection, false);
|
|
745
|
+
continue;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
commands[i] = new ShiftCommand(selection, {
|
|
749
|
+
isUnshift: false,
|
|
750
|
+
tabSize: config.tabSize,
|
|
751
|
+
indentSize: config.indentSize,
|
|
752
|
+
insertSpaces: config.insertSpaces,
|
|
753
|
+
useTabStops: config.useTabStops,
|
|
754
|
+
autoIndent: config.autoIndent
|
|
755
|
+
}, config.languageConfigurationService);
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
return commands;
|
|
759
|
+
}
|
|
760
|
+
static _goodIndentForLine(config, model, lineNumber) {
|
|
761
|
+
let action = null;
|
|
762
|
+
let indentation = '';
|
|
763
|
+
const expectedIndentAction = getInheritIndentForLine(config.autoIndent, model, lineNumber, false, config.languageConfigurationService);
|
|
764
|
+
if (expectedIndentAction) {
|
|
765
|
+
action = expectedIndentAction.action;
|
|
766
|
+
indentation = expectedIndentAction.indentation;
|
|
767
|
+
}
|
|
768
|
+
else if (lineNumber > 1) {
|
|
769
|
+
let lastLineNumber;
|
|
770
|
+
for (lastLineNumber = lineNumber - 1; lastLineNumber >= 1; lastLineNumber--) {
|
|
771
|
+
const lineText = model.getLineContent(lastLineNumber);
|
|
772
|
+
const nonWhitespaceIdx = lastNonWhitespaceIndex(lineText);
|
|
773
|
+
if (nonWhitespaceIdx >= 0) {
|
|
774
|
+
break;
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
if (lastLineNumber < 1) {
|
|
778
|
+
// No previous line with content found
|
|
779
|
+
return null;
|
|
780
|
+
}
|
|
781
|
+
const maxColumn = model.getLineMaxColumn(lastLineNumber);
|
|
782
|
+
const expectedEnterAction = getEnterAction(config.autoIndent, model, new Range(lastLineNumber, maxColumn, lastLineNumber, maxColumn), config.languageConfigurationService);
|
|
783
|
+
if (expectedEnterAction) {
|
|
784
|
+
indentation = expectedEnterAction.indentation + expectedEnterAction.appendText;
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
if (action) {
|
|
788
|
+
if (action === IndentAction.Indent) {
|
|
789
|
+
indentation = shiftIndent(config, indentation);
|
|
790
|
+
}
|
|
791
|
+
if (action === IndentAction.Outdent) {
|
|
792
|
+
indentation = unshiftIndent(config, indentation);
|
|
793
|
+
}
|
|
794
|
+
indentation = config.normalizeIndentation(indentation);
|
|
795
|
+
}
|
|
796
|
+
if (!indentation) {
|
|
797
|
+
return null;
|
|
798
|
+
}
|
|
799
|
+
return indentation;
|
|
800
|
+
}
|
|
801
|
+
static _replaceJumpToNextIndent(config, model, selection, insertsAutoWhitespace) {
|
|
802
|
+
let typeText = '';
|
|
803
|
+
const position = selection.getStartPosition();
|
|
804
|
+
if (config.insertSpaces) {
|
|
805
|
+
const visibleColumnFromColumn = config.visibleColumnFromColumn(model, position);
|
|
806
|
+
const indentSize = config.indentSize;
|
|
807
|
+
const spacesCnt = indentSize - (visibleColumnFromColumn % indentSize);
|
|
808
|
+
for (let i = 0; i < spacesCnt; i++) {
|
|
809
|
+
typeText += ' ';
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
else {
|
|
813
|
+
typeText = '\t';
|
|
814
|
+
}
|
|
815
|
+
return new ReplaceCommand(selection, typeText, insertsAutoWhitespace);
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
class BaseTypeWithAutoClosingCommand extends ReplaceCommandWithOffsetCursorState {
|
|
819
|
+
constructor(selection, text, lineNumberDeltaOffset, columnDeltaOffset, openCharacter, closeCharacter) {
|
|
820
|
+
super(selection, text, lineNumberDeltaOffset, columnDeltaOffset);
|
|
821
|
+
this._openCharacter = openCharacter;
|
|
822
|
+
this._closeCharacter = closeCharacter;
|
|
823
|
+
this.closeCharacterRange = null;
|
|
824
|
+
this.enclosingRange = null;
|
|
825
|
+
}
|
|
826
|
+
_computeCursorStateWithRange(model, range, helper) {
|
|
827
|
+
this.closeCharacterRange = new Range(range.startLineNumber, range.endColumn - this._closeCharacter.length, range.endLineNumber, range.endColumn);
|
|
828
|
+
this.enclosingRange = new Range(range.startLineNumber, range.endColumn - this._openCharacter.length - this._closeCharacter.length, range.endLineNumber, range.endColumn);
|
|
829
|
+
return super.computeCursorState(model, helper);
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
class TypeWithAutoClosingCommand extends BaseTypeWithAutoClosingCommand {
|
|
833
|
+
constructor(selection, openCharacter, insertOpenCharacter, closeCharacter) {
|
|
834
|
+
const text = (insertOpenCharacter ? openCharacter : '') + closeCharacter;
|
|
835
|
+
const lineNumberDeltaOffset = 0;
|
|
836
|
+
const columnDeltaOffset = -closeCharacter.length;
|
|
837
|
+
super(selection, text, lineNumberDeltaOffset, columnDeltaOffset, openCharacter, closeCharacter);
|
|
838
|
+
}
|
|
839
|
+
computeCursorState(model, helper) {
|
|
840
|
+
const inverseEditOperations = helper.getInverseEditOperations();
|
|
841
|
+
const range = inverseEditOperations[0].range;
|
|
842
|
+
return this._computeCursorStateWithRange(model, range, helper);
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
class TypeWithIndentationAndAutoClosingCommand extends BaseTypeWithAutoClosingCommand {
|
|
846
|
+
constructor(autoIndentationEdit, selection, openCharacter, closeCharacter) {
|
|
847
|
+
const text = openCharacter + closeCharacter;
|
|
848
|
+
const lineNumberDeltaOffset = 0;
|
|
849
|
+
const columnDeltaOffset = openCharacter.length;
|
|
850
|
+
super(selection, text, lineNumberDeltaOffset, columnDeltaOffset, openCharacter, closeCharacter);
|
|
851
|
+
this._autoIndentationEdit = autoIndentationEdit;
|
|
852
|
+
this._autoClosingEdit = { range: selection, text };
|
|
853
|
+
}
|
|
854
|
+
getEditOperations(model, builder) {
|
|
855
|
+
builder.addTrackedEditOperation(this._autoIndentationEdit.range, this._autoIndentationEdit.text);
|
|
856
|
+
builder.addTrackedEditOperation(this._autoClosingEdit.range, this._autoClosingEdit.text);
|
|
857
|
+
}
|
|
858
|
+
computeCursorState(model, helper) {
|
|
859
|
+
const inverseEditOperations = helper.getInverseEditOperations();
|
|
860
|
+
if (inverseEditOperations.length !== 2) {
|
|
861
|
+
throw new Error('There should be two inverse edit operations!');
|
|
862
|
+
}
|
|
863
|
+
const range1 = inverseEditOperations[0].range;
|
|
864
|
+
const range2 = inverseEditOperations[1].range;
|
|
865
|
+
const range = range1.plusRange(range2);
|
|
866
|
+
return this._computeCursorStateWithRange(model, range, helper);
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
function getTypingOperation(typedText, previousTypingOperation) {
|
|
870
|
+
if (typedText === ' ') {
|
|
871
|
+
return previousTypingOperation === 5 /* EditOperationType.TypingFirstSpace */
|
|
872
|
+
|| previousTypingOperation === 6 /* EditOperationType.TypingConsecutiveSpace */
|
|
873
|
+
? 6 /* EditOperationType.TypingConsecutiveSpace */
|
|
874
|
+
: 5 /* EditOperationType.TypingFirstSpace */;
|
|
875
|
+
}
|
|
876
|
+
return 4 /* EditOperationType.TypingOther */;
|
|
877
|
+
}
|
|
878
|
+
function shouldPushStackElementBetween(previousTypingOperation, typingOperation) {
|
|
879
|
+
if (isTypingOperation(previousTypingOperation) && !isTypingOperation(typingOperation)) {
|
|
880
|
+
// Always set an undo stop before non-type operations
|
|
881
|
+
return true;
|
|
882
|
+
}
|
|
883
|
+
if (previousTypingOperation === 5 /* EditOperationType.TypingFirstSpace */) {
|
|
884
|
+
// `abc |d`: No undo stop
|
|
885
|
+
// `abc |d`: Undo stop
|
|
886
|
+
return false;
|
|
887
|
+
}
|
|
888
|
+
// Insert undo stop between different operation types
|
|
889
|
+
return normalizeOperationType(previousTypingOperation) !== normalizeOperationType(typingOperation);
|
|
890
|
+
}
|
|
891
|
+
function normalizeOperationType(type) {
|
|
892
|
+
return (type === 6 /* EditOperationType.TypingConsecutiveSpace */ || type === 5 /* EditOperationType.TypingFirstSpace */)
|
|
893
|
+
? 'space'
|
|
894
|
+
: type;
|
|
895
|
+
}
|
|
896
|
+
function isTypingOperation(type) {
|
|
897
|
+
return type === 4 /* EditOperationType.TypingOther */
|
|
898
|
+
|| type === 5 /* EditOperationType.TypingFirstSpace */
|
|
899
|
+
|| type === 6 /* EditOperationType.TypingConsecutiveSpace */;
|
|
900
|
+
}
|
|
901
|
+
function isAutoClosingOvertype(config, model, selections, autoClosedCharacters, ch) {
|
|
902
|
+
if (config.autoClosingOvertype === 'never') {
|
|
903
|
+
return false;
|
|
904
|
+
}
|
|
905
|
+
if (!config.autoClosingPairs.autoClosingPairsCloseSingleChar.has(ch)) {
|
|
906
|
+
return false;
|
|
907
|
+
}
|
|
908
|
+
for (let i = 0, len = selections.length; i < len; i++) {
|
|
909
|
+
const selection = selections[i];
|
|
910
|
+
if (!selection.isEmpty()) {
|
|
911
|
+
return false;
|
|
912
|
+
}
|
|
913
|
+
const position = selection.getPosition();
|
|
914
|
+
const lineText = model.getLineContent(position.lineNumber);
|
|
915
|
+
const afterCharacter = lineText.charAt(position.column - 1);
|
|
916
|
+
if (afterCharacter !== ch) {
|
|
917
|
+
return false;
|
|
918
|
+
}
|
|
919
|
+
// Do not over-type quotes after a backslash
|
|
920
|
+
const chIsQuote = isQuote(ch);
|
|
921
|
+
const beforeCharacter = position.column > 2 ? lineText.charCodeAt(position.column - 2) : 0 /* CharCode.Null */;
|
|
922
|
+
if (beforeCharacter === 92 /* CharCode.Backslash */ && chIsQuote) {
|
|
923
|
+
return false;
|
|
924
|
+
}
|
|
925
|
+
// Must over-type a closing character typed by the editor
|
|
926
|
+
if (config.autoClosingOvertype === 'auto') {
|
|
927
|
+
let found = false;
|
|
928
|
+
for (let j = 0, lenJ = autoClosedCharacters.length; j < lenJ; j++) {
|
|
929
|
+
const autoClosedCharacter = autoClosedCharacters[j];
|
|
930
|
+
if (position.lineNumber === autoClosedCharacter.startLineNumber && position.column === autoClosedCharacter.startColumn) {
|
|
931
|
+
found = true;
|
|
932
|
+
break;
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
if (!found) {
|
|
936
|
+
return false;
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
return true;
|
|
941
|
+
}
|
|
942
|
+
function typeCommand(range, text, keepPosition) {
|
|
943
|
+
if (keepPosition) {
|
|
944
|
+
return new ReplaceCommandWithoutChangingPosition(range, text, true);
|
|
945
|
+
}
|
|
946
|
+
else {
|
|
947
|
+
return new ReplaceCommand(range, text, true);
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
function shiftIndent(config, indentation, count) {
|
|
951
|
+
count = count || 1;
|
|
952
|
+
return ShiftCommand.shiftIndent(indentation, indentation.length + count, config.tabSize, config.indentSize, config.insertSpaces);
|
|
953
|
+
}
|
|
954
|
+
function unshiftIndent(config, indentation, count) {
|
|
955
|
+
count = count || 1;
|
|
956
|
+
return ShiftCommand.unshiftIndent(indentation, indentation.length + count, config.tabSize, config.indentSize, config.insertSpaces);
|
|
957
|
+
}
|
|
958
|
+
function shouldSurroundChar(config, ch) {
|
|
959
|
+
if (isQuote(ch)) {
|
|
960
|
+
return (config.autoSurround === 'quotes' || config.autoSurround === 'languageDefined');
|
|
961
|
+
}
|
|
962
|
+
else {
|
|
963
|
+
// Character is a bracket
|
|
964
|
+
return (config.autoSurround === 'brackets' || config.autoSurround === 'languageDefined');
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
export { AutoClosingOpenCharTypeOperation, AutoClosingOvertypeOperation, AutoClosingOvertypeWithInterceptorsOperation, AutoIndentOperation, BaseTypeWithAutoClosingCommand, CompositionEndOvertypeOperation, CompositionOperation, EnterOperation, InterceptorElectricCharOperation, PasteOperation, SimpleCharacterTypeOperation, SurroundSelectionOperation, TabOperation, TypeWithoutInterceptorsOperation, shiftIndent, shouldSurroundChar, unshiftIndent };
|