monaco-editor-core 0.56.0-dev-20260121 → 0.56.0-dev-20260123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +6 -2
- package/esm/vs/base/browser/markdownRenderer.js +0 -1
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/tree/abstractTree.js +15 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/common/actions.js +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +2 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/errorMessage.js +6 -6
- package/esm/vs/base/common/keybindingLabels.js +20 -20
- package/esm/vs/base/common/network.js +0 -2
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +10 -4
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
- package/esm/vs/base/common/policy.js +5 -5
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +1 -1
- package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js +4 -4
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +1 -1
- package/esm/vs/editor/browser/coreCommands.js +3 -3
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorExtensions.js +9 -9
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +41 -0
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/services/inlineCompletionsService.js +4 -4
- package/esm/vs/editor/browser/services/renameSymbolTrackerService.js +15 -0
- package/esm/vs/editor/browser/services/renameSymbolTrackerService.js.map +1 -0
- package/esm/vs/editor/browser/view.js +3 -0
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/viewLine.js +14 -0
- package/esm/vs/editor/browser/viewParts/viewLines/viewLine.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +7 -0
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +8 -2
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
- package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +14 -14
- package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +7 -7
- package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +5 -5
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +7 -7
- package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
- package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +2 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +2 -41
- package/esm/vs/editor/common/config/editorConfigurationSchema.js +55 -55
- package/esm/vs/editor/common/config/editorOptions.js +410 -410
- package/esm/vs/editor/common/core/editorColorRegistry.js +70 -70
- package/esm/vs/editor/common/editorContextKeys.js +48 -48
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +11 -11
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +44 -34
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +5 -4
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
- package/esm/vs/editor/contrib/find/browser/findWidget.css +5 -6
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +2 -1
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js +54 -45
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +7 -7
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +107 -18
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +2 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +10 -10
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +3 -3
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +2 -1
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +2 -0
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +34 -11
- package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +10 -0
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +3 -3
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/actions.js +2 -0
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +5 -5
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickTree.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +18 -18
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.ts"],"names":[],"mappings":"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","file":"renameSymbolProcessor.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { raceTimeout } from '../../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../../base/common/cancellation.js';\nimport { LcsDiff, StringDiffSequence } from '../../../../../base/common/diff/diff.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport { localize } from '../../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../../platform/commands/common/commands.js';\nimport { ServicesAccessor } from '../../../../browser/editorExtensions.js';\nimport { IBulkEditService } from '../../../../browser/services/bulkEditService.js';\nimport { TextReplacement } from '../../../../common/core/edits/textEdit.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { StandardTokenType } from '../../../../common/encodedTokenAttributes.js';\nimport { Command, type Rejection, type WorkspaceEdit } from '../../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../../common/languages/languageConfigurationRegistry.js';\nimport { ITextModel } from '../../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nimport { EditSources, TextModelEditSource } from '../../../../common/textModelEditSource.js';\nimport { hasProvider, rawRename } from '../../../rename/browser/rename.js';\nimport { renameSymbolCommandId } from '../controller/commandIds.js';\nimport { InlineSuggestionItem } from './inlineSuggestionItem.js';\nimport { IInlineSuggestDataActionEdit, InlineCompletionContextWithoutUuid } from './provideInlineCompletions.js';\nimport { InlineSuggestAlternativeAction } from './InlineSuggestAlternativeAction.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\n\nenum RenameKind {\n\tno = 'no',\n\tyes = 'yes',\n\tmaybe = 'maybe'\n}\n\nnamespace RenameKind {\n\texport function fromString(value: string): RenameKind {\n\t\tswitch (value) {\n\t\t\tcase 'no': return RenameKind.no;\n\t\t\tcase 'yes': return RenameKind.yes;\n\t\t\tcase 'maybe': return RenameKind.maybe;\n\t\t\tdefault: return RenameKind.no;\n\t\t}\n\t}\n}\n\nexport type RenameEdits = {\n\trenames: { edits: TextReplacement[]; position: Position; oldName: string; newName: string };\n\tothers: { edits: TextReplacement[] };\n};\n\nexport class RenameInferenceEngine {\n\n\tpublic constructor() {\n\t}\n\n\tpublic inferRename(textModel: ITextModel, editRange: Range, insertText: string, wordDefinition: RegExp): RenameEdits | undefined {\n\n\t\t// Extend the edit range to full lines to capture prefix/suffix renames\n\t\tconst extendedRange = new Range(editRange.startLineNumber, 1, editRange.endLineNumber, textModel.getLineMaxColumn(editRange.endLineNumber));\n\t\tconst startDiff = editRange.startColumn - extendedRange.startColumn;\n\t\tconst endDiff = extendedRange.endColumn - editRange.endColumn;\n\n\t\tconst originalText = textModel.getValueInRange(extendedRange);\n\t\tconst modifiedText =\n\t\t\ttextModel.getValueInRange(new Range(extendedRange.startLineNumber, extendedRange.startColumn, extendedRange.startLineNumber, extendedRange.startColumn + startDiff)) +\n\t\t\tinsertText +\n\t\t\ttextModel.getValueInRange(new Range(extendedRange.endLineNumber, extendedRange.endColumn - endDiff, extendedRange.endLineNumber, extendedRange.endColumn));\n\n\t\t// console.log(`Original: ${originalText} \\nmodified: ${modifiedText}`);\n\t\tconst others: TextReplacement[] = [];\n\t\tconst renames: TextReplacement[] = [];\n\t\tlet oldName: string | undefined = undefined;\n\t\tlet newName: string | undefined = undefined;\n\t\tlet position: Position | undefined = undefined;\n\n\t\tconst nesOffset = textModel.getOffsetAt(extendedRange.getStartPosition());\n\n\t\tconst { changes: originalChanges } = (new LcsDiff(new StringDiffSequence(originalText), new StringDiffSequence(modifiedText))).ComputeDiff(true);\n\t\tif (originalChanges.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Fold the changes to larger changes if the gap between two changes is a full word. This covers cases like renaming\n\t\t// `foo` to `abcfoobar`\n\t\tconst changes: typeof originalChanges = [];\n\t\tfor (const change of originalChanges) {\n\t\t\tif (changes.length === 0) {\n\t\t\t\tchanges.push(change);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst lastChange = changes[changes.length - 1];\n\t\t\tconst gapOriginalLength = change.originalStart - (lastChange.originalStart + lastChange.originalLength);\n\n\t\t\tif (gapOriginalLength > 0) {\n\t\t\t\tconst gapStartOffset = nesOffset + lastChange.originalStart + lastChange.originalLength;\n\t\t\t\tconst gapStartPos = textModel.getPositionAt(gapStartOffset);\n\t\t\t\tconst wordRange = textModel.getWordAtPosition(gapStartPos);\n\n\t\t\t\tif (wordRange) {\n\t\t\t\t\tconst wordStartOffset = textModel.getOffsetAt(new Position(gapStartPos.lineNumber, wordRange.startColumn));\n\t\t\t\t\tconst wordEndOffset = textModel.getOffsetAt(new Position(gapStartPos.lineNumber, wordRange.endColumn));\n\t\t\t\t\tconst gapEndOffset = gapStartOffset + gapOriginalLength;\n\n\t\t\t\t\tif (wordStartOffset <= gapStartOffset && gapEndOffset <= wordEndOffset && wordStartOffset <= gapEndOffset && gapEndOffset <= wordEndOffset) {\n\t\t\t\t\t\tlastChange.originalLength = (change.originalStart + change.originalLength) - lastChange.originalStart;\n\t\t\t\t\t\tlastChange.modifiedLength = (change.modifiedStart + change.modifiedLength) - lastChange.modifiedStart;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchanges.push(change);\n\t\t}\n\n\t\tlet tokenDiff: number = 0;\n\t\tfor (const change of changes) {\n\t\t\tconst originalTextSegment = originalText.substring(change.originalStart, change.originalStart + change.originalLength);\n\t\t\tconst insertedTextSegment = modifiedText.substring(change.modifiedStart, change.modifiedStart + change.modifiedLength);\n\n\t\t\tconst startOffset = nesOffset + change.originalStart;\n\t\t\tconst startPos = textModel.getPositionAt(startOffset);\n\n\t\t\tconst endOffset = startOffset + change.originalLength;\n\t\t\tconst endPos = textModel.getPositionAt(endOffset);\n\n\t\t\tconst range = Range.fromPositions(startPos, endPos);\n\n\t\t\tconst diff = insertedTextSegment.length - change.originalLength;\n\n\t\t\t// If the original text segment contains a whitespace character we don't consider this a rename since\n\t\t\t// identifiers in programming languages can't contain whitespace characters usually\n\t\t\tif (/\\s/.test(originalTextSegment)) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (originalTextSegment.length > 0) {\n\t\t\t\twordDefinition.lastIndex = 0;\n\t\t\t\tconst match = wordDefinition.exec(originalTextSegment);\n\t\t\t\tif (match === null || match.index !== 0 || match[0].length !== originalTextSegment.length) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the inserted text contains a whitespace character we don't consider this a rename since identifiers in\n\t\t\t// programming languages can't contain whitespace characters usually\n\t\t\tif (/\\s/.test(insertedTextSegment)) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (insertedTextSegment.length > 0) {\n\t\t\t\twordDefinition.lastIndex = 0;\n\t\t\t\tconst match = wordDefinition.exec(insertedTextSegment);\n\t\t\t\tif (match === null || match.index !== 0 || match[0].length !== insertedTextSegment.length) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst wordRange = textModel.getWordAtPosition(startPos);\n\t\t\t// If we don't have a word range at the start position of the current document then we\n\t\t\t// don't treat it as a rename assuming that the rename refactoring will fail as well since\n\t\t\t// there can't be an identifier at that position.\n\t\t\tif (wordRange === null) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst originalStartColumn = change.originalStart + 1;\n\t\t\tconst isInsertion = change.originalLength === 0 && change.modifiedLength > 0;\n\t\t\tlet tokenInfo: { type: StandardTokenType; range: Range };\n\t\t\t// Word info is left aligned whereas token info is right aligned for insertions.\n\t\t\t// We prefer a suffix insertion for renames so we take the word range for the token info.\n\t\t\tif (isInsertion && originalStartColumn === wordRange.endColumn && wordRange.endColumn > wordRange.startColumn) {\n\t\t\t\ttokenInfo = this.getTokenAtPosition(textModel, new Position(startPos.lineNumber, wordRange.startColumn));\n\t\t\t} else {\n\t\t\t\ttokenInfo = this.getTokenAtPosition(textModel, startPos);\n\t\t\t}\n\t\t\tif (wordRange.startColumn !== tokenInfo.range.startColumn || wordRange.endColumn !== tokenInfo.range.endColumn) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (tokenInfo.type === StandardTokenType.Other) {\n\n\t\t\t\tlet identifier = textModel.getValueInRange(tokenInfo.range);\n\t\t\t\tif (identifier.length === 0) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (oldName === undefined) {\n\t\t\t\t\toldName = identifier;\n\t\t\t\t} else if (oldName !== identifier) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// We assume that the new name starts at the same position as the old name from a token range perspective.\n\t\t\t\tconst tokenStartPos = textModel.getOffsetAt(tokenInfo.range.getStartPosition()) - nesOffset + tokenDiff;\n\t\t\t\tconst tokenEndPos = textModel.getOffsetAt(tokenInfo.range.getEndPosition()) - nesOffset + tokenDiff;\n\t\t\t\tidentifier = modifiedText.substring(tokenStartPos, tokenEndPos + diff);\n\t\t\t\tif (identifier.length === 0) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (newName === undefined) {\n\t\t\t\t\tnewName = identifier;\n\t\t\t\t} else if (newName !== identifier) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (position === undefined) {\n\t\t\t\t\tposition = tokenInfo.range.getStartPosition();\n\t\t\t\t}\n\n\t\t\t\tif (oldName !== undefined && newName !== undefined && oldName.length > 0 && newName.length > 0 && oldName !== newName) {\n\t\t\t\t\trenames.push(new TextReplacement(tokenInfo.range, newName));\n\t\t\t\t} else {\n\t\t\t\t\trenames.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t}\n\t\t\t\ttokenDiff += diff;\n\t\t\t} else {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += insertedTextSegment.length - change.originalLength;\n\t\t\t}\n\t\t}\n\n\t\tif (oldName === undefined || newName === undefined || position === undefined || oldName.length === 0 || newName.length === 0 || oldName === newName) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\twordDefinition.lastIndex = 0;\n\t\tlet match = wordDefinition.exec(oldName);\n\t\tif (match === null || match.index !== 0 || match[0].length !== oldName.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\twordDefinition.lastIndex = 0;\n\t\tmatch = wordDefinition.exec(newName);\n\t\tif (match === null || match.index !== 0 || match[0].length !== newName.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\trenames: { edits: renames, position, oldName, newName },\n\t\t\tothers: { edits: others }\n\t\t};\n\t}\n\n\n\tprotected getTokenAtPosition(textModel: ITextModel, position: Position): { type: StandardTokenType; range: Range } {\n\t\ttextModel.tokenization.tokenizeIfCheap(position.lineNumber);\n\t\tconst tokens = textModel.tokenization.getLineTokens(position.lineNumber);\n\t\tconst idx = tokens.findTokenIndexAtOffset(position.column - 1);\n\t\treturn {\n\t\t\ttype: tokens.getStandardTokenType(idx),\n\t\t\trange: new Range(position.lineNumber, 1 + tokens.getStartOffset(idx), position.lineNumber, 1 + tokens.getEndOffset(idx))\n\t\t};\n\t}\n}\n\nclass RenameSymbolRunnable {\n\n\tprivate readonly _requestUuid: string;\n\tprivate readonly _cancellationTokenSource: CancellationTokenSource;\n\tprivate readonly _promise: Promise<WorkspaceEdit & Rejection>;\n\tprivate _result: WorkspaceEdit & Rejection | undefined = undefined;\n\n\tconstructor(languageFeaturesService: ILanguageFeaturesService, textModel: ITextModel, position: Position, newName: string, requestUuid: string) {\n\t\tthis._requestUuid = requestUuid;\n\t\tthis._cancellationTokenSource = new CancellationTokenSource();\n\t\tthis._promise = rawRename(languageFeaturesService.renameProvider, textModel, position, newName, this._cancellationTokenSource.token);\n\t}\n\n\tpublic get requestUuid(): string {\n\t\treturn this._requestUuid;\n\t}\n\n\tpublic cancel(): void {\n\t\tthis._cancellationTokenSource.cancel();\n\t}\n\n\tpublic async getCount(): Promise<number> {\n\t\tif (this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn 0;\n\t\t}\n\t\tconst result = await this.getResult();\n\t\tif (result === undefined || this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn result.edits.length;\n\t}\n\n\tpublic async getWorkspaceEdit(): Promise<WorkspaceEdit | undefined> {\n\t\treturn this.getResult();\n\t}\n\n\tprivate async getResult(): Promise<WorkspaceEdit | undefined> {\n\t\tif (this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this._result === undefined) {\n\t\t\tthis._result = await this._promise;\n\t\t}\n\t\tif (this._result.rejectReason || this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this._result;\n\t}\n}\n\nexport class RenameSymbolProcessor extends Disposable {\n\n\tprivate readonly _renameInferenceEngine = new RenameInferenceEngine();\n\n\tprivate _renameRunnable: RenameSymbolRunnable | undefined = undefined;\n\n\tconstructor(\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t\t@IBulkEditService bulkEditService: IBulkEditService,\n\t) {\n\t\tsuper();\n\t\tthis._register(CommandsRegistry.registerCommand(renameSymbolCommandId, async (_: ServicesAccessor, source: TextModelEditSource, renameRunnable: RenameSymbolRunnable | undefined) => {\n\t\t\tif (renameRunnable === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst workspaceEdit = await renameRunnable.getWorkspaceEdit();\n\t\t\t\tif (workspaceEdit === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbulkEditService.apply(workspaceEdit, { reason: source });\n\t\t\t} finally {\n\t\t\t\tif (this._renameRunnable === renameRunnable) {\n\t\t\t\t\tthis._renameRunnable = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t}\n\n\tpublic async proposeRenameRefactoring(textModel: ITextModel, suggestItem: InlineSuggestionItem, context: InlineCompletionContextWithoutUuid): Promise<InlineSuggestionItem> {\n\t\tif (!suggestItem.supportsRename || suggestItem.action?.kind !== 'edit' || context.selectedSuggestionInfo) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\tif (!hasProvider(this._languageFeaturesService.renameProvider, textModel)) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\tconst start = Date.now();\n\t\tconst edit = suggestItem.action.textReplacement;\n\t\tconst languageConfiguration = this._languageConfigurationService.getLanguageConfiguration(textModel.getLanguageId());\n\n\t\t// Check synchronously if a rename is possible\n\t\tconst edits = this._renameInferenceEngine.inferRename(textModel, edit.range, edit.text, languageConfiguration.wordDefinition);\n\t\tif (edits === undefined || edits.renames.edits.length === 0) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\tconst { oldName, newName, position, edits: renameEdits } = edits.renames;\n\n\t\t// Check asynchronously if a rename is possible\n\t\tlet timedOut = false;\n\t\tconst check = await raceTimeout<RenameKind>(this.checkRenamePrecondition(suggestItem, textModel, position, oldName, newName), 100, () => { timedOut = true; });\n\t\tconst renamePossible = this.isRenamePossible(suggestItem, check);\n\n\t\tsuggestItem.setRenameProcessingInfo({\n\t\t\tcreatedRename: renamePossible,\n\t\t\tduration: Date.now() - start,\n\t\t\ttimedOut,\n\t\t\tdroppedOtherEdits: renamePossible ? edits.others.edits.length : undefined,\n\t\t\tdroppedRenameEdits: renamePossible ? renameEdits.length - 1 : undefined,\n\t\t});\n\n\t\tif (!renamePossible) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\t// Prepare the rename edits\n\t\tif (this._renameRunnable === undefined) {\n\t\t\tthis._renameRunnable = new RenameSymbolRunnable(this._languageFeaturesService, textModel, position, newName, suggestItem.requestUuid);\n\t\t}\n\n\t\t// Create alternative action\n\t\tconst source = EditSources.inlineCompletionAccept({\n\t\t\tnes: suggestItem.isInlineEdit,\n\t\t\trequestUuid: suggestItem.requestUuid,\n\t\t\tproviderId: suggestItem.source.provider.providerId,\n\t\t\tlanguageId: textModel.getLanguageId(),\n\t\t\tcorrelationId: suggestItem.getSourceCompletion().correlationId,\n\t\t});\n\t\tconst command: Command = {\n\t\t\tid: renameSymbolCommandId,\n\t\t\ttitle: localize('rename', \"Rename\"),\n\t\t\targuments: [source, this._renameRunnable],\n\t\t};\n\t\tconst alternativeAction: InlineSuggestAlternativeAction = {\n\t\t\tlabel: localize('rename', \"Rename\"),\n\t\t\ticon: Codicon.replaceAll,\n\t\t\tcommand,\n\t\t\tcount: this._renameRunnable.getCount(),\n\t\t};\n\t\tconst renameAction: IInlineSuggestDataActionEdit = {\n\t\t\tkind: 'edit',\n\t\t\trange: renameEdits[0].range,\n\t\t\tinsertText: renameEdits[0].text,\n\t\t\tsnippetInfo: suggestItem.snippetInfo,\n\t\t\talternativeAction,\n\t\t\turi: textModel.uri\n\t\t};\n\n\t\treturn InlineSuggestionItem.create(suggestItem.withAction(renameAction), textModel, false);\n\t}\n\n\tprivate async checkRenamePrecondition(suggestItem: InlineSuggestionItem, textModel: ITextModel, position: Position, oldName: string, newName: string): Promise<RenameKind> {\n\t\ttry {\n\t\t\tconst result = await this._commandService.executeCommand<RenameKind>('github.copilot.nes.prepareRename', textModel.uri, position, oldName, newName, suggestItem.requestUuid);\n\t\t\tif (result === undefined) {\n\t\t\t\treturn RenameKind.no;\n\t\t\t} else {\n\t\t\t\treturn RenameKind.fromString(result);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn RenameKind.no;\n\t\t}\n\t}\n\n\tprivate isRenamePossible(suggestItem: InlineSuggestionItem, check: RenameKind | undefined): boolean {\n\t\tif (check === undefined || check === RenameKind.no) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._renameRunnable === undefined) {\n\t\t\treturn true;\n\t\t}\n\t\tif (this._renameRunnable.requestUuid === suggestItem.requestUuid) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tthis._renameRunnable.cancel();\n\t\t\tthis._renameRunnable = undefined;\n\t\t\treturn true;\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.ts"],"names":[],"mappings":"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","file":"renameSymbolProcessor.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { raceTimeout } from '../../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../../base/common/cancellation.js';\nimport { LcsDiff, StringDiffSequence } from '../../../../../base/common/diff/diff.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport { localize } from '../../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../../platform/commands/common/commands.js';\nimport { ServicesAccessor } from '../../../../browser/editorExtensions.js';\nimport { IBulkEditService, ResourceTextEdit } from '../../../../browser/services/bulkEditService.js';\nimport { TextReplacement } from '../../../../common/core/edits/textEdit.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range, type IRange } from '../../../../common/core/range.js';\nimport { StandardTokenType } from '../../../../common/encodedTokenAttributes.js';\nimport { Command, type Rejection, type WorkspaceEdit } from '../../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../../common/languages/languageConfigurationRegistry.js';\nimport { ITextModel } from '../../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nimport { EditSources, TextModelEditSource } from '../../../../common/textModelEditSource.js';\nimport { hasProvider, rawRename } from '../../../rename/browser/rename.js';\nimport { renameSymbolCommandId } from '../controller/commandIds.js';\nimport { InlineSuggestionItem } from './inlineSuggestionItem.js';\nimport { IInlineSuggestDataActionEdit, InlineCompletionContextWithoutUuid } from './provideInlineCompletions.js';\nimport { InlineSuggestAlternativeAction } from './InlineSuggestAlternativeAction.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { IRenameSymbolTrackerService } from '../../../../browser/services/renameSymbolTrackerService.js';\nimport { URI } from '../../../../../base/common/uri.js';\nimport { ICodeEditor } from '../../../../browser/editorBrowser.js';\nimport { ICodeEditorService } from '../../../../browser/services/codeEditorService.js';\n\nenum RenameKind {\n\tno = 'no',\n\tyes = 'yes',\n\tmaybe = 'maybe'\n}\n\nnamespace RenameKind {\n\texport function fromString(value: string): RenameKind {\n\t\tswitch (value) {\n\t\t\tcase 'no': return RenameKind.no;\n\t\t\tcase 'yes': return RenameKind.yes;\n\t\t\tcase 'maybe': return RenameKind.maybe;\n\t\t\tdefault: return RenameKind.no;\n\t\t}\n\t}\n}\n\nexport namespace PrepareNesRenameResult {\n\texport type Yes = {\n\t\tcanRename: RenameKind.yes;\n\t\toldName: string;\n\t\tonOldState: boolean;\n\t};\n\texport type Maybe = {\n\t\tcanRename: RenameKind.maybe;\n\t\toldName: string;\n\t\tonOldState: boolean;\n\t};\n\texport type No = {\n\t\tcanRename: RenameKind.no;\n\t\ttimedOut: boolean;\n\t\treason?: string;\n\t};\n}\n\nexport type PrepareNesRenameResult = PrepareNesRenameResult.Yes | PrepareNesRenameResult.Maybe | PrepareNesRenameResult.No;\n\nexport type TextChange = {\n\trange: { start: { line: number; character: number }; end: { line: number; character: number } };\n\tnewText?: string;\n};\n\nexport type RenameGroup = {\n\tfile: URI;\n\tchanges: TextChange[];\n};\n\nexport type RenameEdits = {\n\trenames: { edits: TextReplacement[]; position: Position; oldName: string; newName: string };\n\tothers: { edits: TextReplacement[] };\n};\n\nexport class RenameInferenceEngine {\n\n\tpublic constructor() {\n\t}\n\n\tpublic inferRename(textModel: ITextModel, editRange: Range, insertText: string, wordDefinition: RegExp): RenameEdits | undefined {\n\n\t\t// Extend the edit range to full lines to capture prefix/suffix renames\n\t\tconst extendedRange = new Range(editRange.startLineNumber, 1, editRange.endLineNumber, textModel.getLineMaxColumn(editRange.endLineNumber));\n\t\tconst startDiff = editRange.startColumn - extendedRange.startColumn;\n\t\tconst endDiff = extendedRange.endColumn - editRange.endColumn;\n\n\t\tconst originalText = textModel.getValueInRange(extendedRange);\n\t\tconst modifiedText =\n\t\t\ttextModel.getValueInRange(new Range(extendedRange.startLineNumber, extendedRange.startColumn, extendedRange.startLineNumber, extendedRange.startColumn + startDiff)) +\n\t\t\tinsertText +\n\t\t\ttextModel.getValueInRange(new Range(extendedRange.endLineNumber, extendedRange.endColumn - endDiff, extendedRange.endLineNumber, extendedRange.endColumn));\n\n\t\t// console.log(`Original: ${originalText} \\nmodified: ${modifiedText}`);\n\t\tconst others: TextReplacement[] = [];\n\t\tconst renames: TextReplacement[] = [];\n\t\tlet oldName: string | undefined = undefined;\n\t\tlet newName: string | undefined = undefined;\n\t\tlet position: Position | undefined = undefined;\n\n\t\tconst nesOffset = textModel.getOffsetAt(extendedRange.getStartPosition());\n\n\t\tconst { changes: originalChanges } = (new LcsDiff(new StringDiffSequence(originalText), new StringDiffSequence(modifiedText))).ComputeDiff(true);\n\t\tif (originalChanges.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Fold the changes to larger changes if the gap between two changes is a full word. This covers cases like renaming\n\t\t// `foo` to `abcfoobar`\n\t\tconst changes: typeof originalChanges = [];\n\t\tfor (const change of originalChanges) {\n\t\t\tif (changes.length === 0) {\n\t\t\t\tchanges.push(change);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst lastChange = changes[changes.length - 1];\n\t\t\tconst gapOriginalLength = change.originalStart - (lastChange.originalStart + lastChange.originalLength);\n\n\t\t\tif (gapOriginalLength > 0) {\n\t\t\t\tconst gapStartOffset = nesOffset + lastChange.originalStart + lastChange.originalLength;\n\t\t\t\tconst gapStartPos = textModel.getPositionAt(gapStartOffset);\n\t\t\t\tconst wordRange = textModel.getWordAtPosition(gapStartPos);\n\n\t\t\t\tif (wordRange) {\n\t\t\t\t\tconst wordStartOffset = textModel.getOffsetAt(new Position(gapStartPos.lineNumber, wordRange.startColumn));\n\t\t\t\t\tconst wordEndOffset = textModel.getOffsetAt(new Position(gapStartPos.lineNumber, wordRange.endColumn));\n\t\t\t\t\tconst gapEndOffset = gapStartOffset + gapOriginalLength;\n\n\t\t\t\t\tif (wordStartOffset <= gapStartOffset && gapEndOffset <= wordEndOffset && wordStartOffset <= gapEndOffset && gapEndOffset <= wordEndOffset) {\n\t\t\t\t\t\tlastChange.originalLength = (change.originalStart + change.originalLength) - lastChange.originalStart;\n\t\t\t\t\t\tlastChange.modifiedLength = (change.modifiedStart + change.modifiedLength) - lastChange.modifiedStart;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchanges.push(change);\n\t\t}\n\n\t\tlet tokenDiff: number = 0;\n\t\tfor (const change of changes) {\n\t\t\tconst originalTextSegment = originalText.substring(change.originalStart, change.originalStart + change.originalLength);\n\t\t\tconst insertedTextSegment = modifiedText.substring(change.modifiedStart, change.modifiedStart + change.modifiedLength);\n\n\t\t\tconst startOffset = nesOffset + change.originalStart;\n\t\t\tconst startPos = textModel.getPositionAt(startOffset);\n\n\t\t\tconst endOffset = startOffset + change.originalLength;\n\t\t\tconst endPos = textModel.getPositionAt(endOffset);\n\n\t\t\tconst range = Range.fromPositions(startPos, endPos);\n\n\t\t\tconst diff = insertedTextSegment.length - change.originalLength;\n\n\t\t\t// If the original text segment contains a whitespace character we don't consider this a rename since\n\t\t\t// identifiers in programming languages can't contain whitespace characters usually\n\t\t\tif (/\\s/.test(originalTextSegment)) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (originalTextSegment.length > 0) {\n\t\t\t\twordDefinition.lastIndex = 0;\n\t\t\t\tconst match = wordDefinition.exec(originalTextSegment);\n\t\t\t\tif (match === null || match.index !== 0 || match[0].length !== originalTextSegment.length) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the inserted text contains a whitespace character we don't consider this a rename since identifiers in\n\t\t\t// programming languages can't contain whitespace characters usually\n\t\t\tif (/\\s/.test(insertedTextSegment)) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (insertedTextSegment.length > 0) {\n\t\t\t\twordDefinition.lastIndex = 0;\n\t\t\t\tconst match = wordDefinition.exec(insertedTextSegment);\n\t\t\t\tif (match === null || match.index !== 0 || match[0].length !== insertedTextSegment.length) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst wordRange = textModel.getWordAtPosition(startPos);\n\t\t\t// If we don't have a word range at the start position of the current document then we\n\t\t\t// don't treat it as a rename assuming that the rename refactoring will fail as well since\n\t\t\t// there can't be an identifier at that position.\n\t\t\tif (wordRange === null) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst originalStartColumn = change.originalStart + 1;\n\t\t\tconst isInsertion = change.originalLength === 0 && change.modifiedLength > 0;\n\t\t\tlet tokenInfo: { type: StandardTokenType; range: Range };\n\t\t\t// Word info is left aligned whereas token info is right aligned for insertions.\n\t\t\t// We prefer a suffix insertion for renames so we take the word range for the token info.\n\t\t\tif (isInsertion && originalStartColumn === wordRange.endColumn && wordRange.endColumn > wordRange.startColumn) {\n\t\t\t\ttokenInfo = this.getTokenAtPosition(textModel, new Position(startPos.lineNumber, wordRange.startColumn));\n\t\t\t} else {\n\t\t\t\ttokenInfo = this.getTokenAtPosition(textModel, startPos);\n\t\t\t}\n\t\t\tif (wordRange.startColumn !== tokenInfo.range.startColumn || wordRange.endColumn !== tokenInfo.range.endColumn) {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += diff;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (tokenInfo.type === StandardTokenType.Other) {\n\n\t\t\t\tlet identifier = textModel.getValueInRange(tokenInfo.range);\n\t\t\t\tif (identifier.length === 0) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (oldName === undefined) {\n\t\t\t\t\toldName = identifier;\n\t\t\t\t} else if (oldName !== identifier) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// We assume that the new name starts at the same position as the old name from a token range perspective.\n\t\t\t\tconst tokenStartPos = textModel.getOffsetAt(tokenInfo.range.getStartPosition()) - nesOffset + tokenDiff;\n\t\t\t\tconst tokenEndPos = textModel.getOffsetAt(tokenInfo.range.getEndPosition()) - nesOffset + tokenDiff;\n\t\t\t\tidentifier = modifiedText.substring(tokenStartPos, tokenEndPos + diff);\n\t\t\t\tif (identifier.length === 0) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (newName === undefined) {\n\t\t\t\t\tnewName = identifier;\n\t\t\t\t} else if (newName !== identifier) {\n\t\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t\ttokenDiff += diff;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (position === undefined) {\n\t\t\t\t\tposition = tokenInfo.range.getStartPosition();\n\t\t\t\t}\n\n\t\t\t\tif (oldName !== undefined && newName !== undefined && oldName.length > 0 && newName.length > 0 && oldName !== newName) {\n\t\t\t\t\trenames.push(new TextReplacement(tokenInfo.range, newName));\n\t\t\t\t} else {\n\t\t\t\t\trenames.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\t}\n\t\t\t\ttokenDiff += diff;\n\t\t\t} else {\n\t\t\t\tothers.push(new TextReplacement(range, insertedTextSegment));\n\t\t\t\ttokenDiff += insertedTextSegment.length - change.originalLength;\n\t\t\t}\n\t\t}\n\n\t\tif (oldName === undefined || newName === undefined || position === undefined || oldName.length === 0 || newName.length === 0 || oldName === newName) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\twordDefinition.lastIndex = 0;\n\t\tlet match = wordDefinition.exec(oldName);\n\t\tif (match === null || match.index !== 0 || match[0].length !== oldName.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\twordDefinition.lastIndex = 0;\n\t\tmatch = wordDefinition.exec(newName);\n\t\tif (match === null || match.index !== 0 || match[0].length !== newName.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\trenames: { edits: renames, position, oldName, newName },\n\t\t\tothers: { edits: others }\n\t\t};\n\t}\n\n\n\tprotected getTokenAtPosition(textModel: ITextModel, position: Position): { type: StandardTokenType; range: Range } {\n\t\ttextModel.tokenization.tokenizeIfCheap(position.lineNumber);\n\t\tconst tokens = textModel.tokenization.getLineTokens(position.lineNumber);\n\t\tconst idx = tokens.findTokenIndexAtOffset(position.column - 1);\n\t\treturn {\n\t\t\ttype: tokens.getStandardTokenType(idx),\n\t\t\trange: new Range(position.lineNumber, 1 + tokens.getStartOffset(idx), position.lineNumber, 1 + tokens.getEndOffset(idx))\n\t\t};\n\t}\n}\n\nclass EditorState {\n\n\tpublic static create(codeEditorService: ICodeEditorService, textModel: ITextModel): EditorState | undefined {\n\t\tconst editor = codeEditorService.getFocusedCodeEditor();\n\t\tif (editor === null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (editor.getModel() !== textModel) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn new EditorState(editor, textModel.getVersionId());\n\t}\n\n\tprivate constructor(\n\t\tprivate readonly editor: ICodeEditor,\n\t\tprivate readonly versionId: number,\n\t) { }\n\n\tpublic equals(other: EditorState | undefined): boolean {\n\t\tif (other === undefined) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.editor === other.editor && this.versionId === other.versionId;\n\t}\n}\n\nclass RenameSymbolRunnable {\n\n\tprivate readonly _commandService: ICommandService;\n\tprivate readonly _requestUuid: string;\n\tprivate readonly _textModel: ITextModel;\n\tprivate readonly _state: EditorState;\n\tprivate readonly _cancellationTokenSource: CancellationTokenSource;\n\tprivate readonly _promise: Promise<WorkspaceEdit & Rejection>;\n\tprivate _result: WorkspaceEdit & Rejection | undefined = undefined;\n\n\tconstructor(languageFeaturesService: ILanguageFeaturesService, commandService: ICommandService, requestUuid: string, textModel: ITextModel, state: EditorState, position: Position, newName: string, lastSymbolRename: IRange | undefined, oldName: string | undefined) {\n\t\tthis._commandService = commandService;\n\t\tthis._textModel = textModel;\n\t\tthis._state = state;\n\t\tthis._requestUuid = requestUuid;\n\t\tthis._cancellationTokenSource = new CancellationTokenSource();\n\t\tif (lastSymbolRename === undefined || oldName === undefined) {\n\t\t\tthis._promise = rawRename(languageFeaturesService.renameProvider, textModel, position, newName, this._cancellationTokenSource.token);\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._promise = this.sendNesRenameRequest(textModel, position, oldName, newName, lastSymbolRename);\n\t\t}\n\t}\n\n\tpublic get requestUuid(): string {\n\t\treturn this._requestUuid;\n\t}\n\n\tpublic isValid(codeEditorService: ICodeEditorService): boolean {\n\t\treturn this._state.equals(EditorState.create(codeEditorService, this._textModel));\n\t}\n\n\tpublic cancel(): void {\n\t\tthis._cancellationTokenSource.cancel();\n\t}\n\n\tpublic async getCount(): Promise<number> {\n\t\tif (this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn 0;\n\t\t}\n\t\tconst result = await this.getResult();\n\t\tif (result === undefined || this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn result.edits.length;\n\t}\n\n\tpublic async getWorkspaceEdit(): Promise<WorkspaceEdit | undefined> {\n\t\treturn this.getResult();\n\t}\n\n\tprivate async getResult(): Promise<WorkspaceEdit | undefined> {\n\t\tif (this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this._result === undefined) {\n\t\t\tthis._result = await this._promise;\n\t\t}\n\t\tif (this._result.rejectReason || this._cancellationTokenSource.token.isCancellationRequested) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this._result;\n\t}\n\n\tprivate async sendNesRenameRequest(textModel: ITextModel, position: Position, oldName: string, newName: string, lastSymbolRename: IRange | undefined): Promise<WorkspaceEdit & Rejection> {\n\t\ttry {\n\t\t\tconst result = await this._commandService.executeCommand<RenameGroup[]>('github.copilot.nes.postRename', textModel.uri, position, oldName, newName, lastSymbolRename);\n\t\t\tif (result === undefined) {\n\t\t\t\treturn { rejectReason: 'Rename failed', edits: [] };\n\t\t\t}\n\t\t\tconst edits: ResourceTextEdit[] = [];\n\t\t\tfor (const item of result) {\n\t\t\t\tfor (const change of item.changes) {\n\t\t\t\t\tconst range = new Range(change.range.start.line + 1, change.range.start.character + 1, change.range.end.line + 1, change.range.end.character + 1);\n\t\t\t\t\tconst edit = new ResourceTextEdit(item.file, new TextReplacement(range, change.newText ?? newName));\n\t\t\t\t\tedits.push(edit);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { edits };\n\t\t} catch (error) {\n\t\t\treturn { rejectReason: 'Rename failed', edits: [] };\n\t\t}\n\t}\n}\n\nexport class RenameSymbolProcessor extends Disposable {\n\n\tprivate readonly _renameInferenceEngine = new RenameInferenceEngine();\n\n\tprivate _renameRunnable: RenameSymbolRunnable | undefined = undefined;\n\n\tconstructor(\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t\t@IBulkEditService bulkEditService: IBulkEditService,\n\t\t@IRenameSymbolTrackerService private readonly _renameSymbolTrackerService: IRenameSymbolTrackerService,\n\t\t@ICodeEditorService private readonly _codeEditorService: ICodeEditorService,\n\t) {\n\t\tsuper();\n\t\tthis._register(CommandsRegistry.registerCommand(renameSymbolCommandId, async (_: ServicesAccessor, source: TextModelEditSource, renameRunnable: RenameSymbolRunnable | undefined) => {\n\t\t\tif (renameRunnable === undefined || !renameRunnable.isValid(this._codeEditorService)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst workspaceEdit = await renameRunnable.getWorkspaceEdit();\n\t\t\t\tif (workspaceEdit === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbulkEditService.apply(workspaceEdit, { reason: source });\n\t\t\t} finally {\n\t\t\t\tif (this._renameRunnable === renameRunnable) {\n\t\t\t\t\tthis._renameRunnable = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t}\n\n\tpublic async proposeRenameRefactoring(textModel: ITextModel, suggestItem: InlineSuggestionItem, context: InlineCompletionContextWithoutUuid): Promise<InlineSuggestionItem> {\n\t\tif (!suggestItem.supportsRename || suggestItem.action?.kind !== 'edit' || context.selectedSuggestionInfo) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\tif (!hasProvider(this._languageFeaturesService.renameProvider, textModel)) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\tconst state = EditorState.create(this._codeEditorService, textModel);\n\t\tif (state === undefined) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\tconst start = Date.now();\n\t\tconst edit = suggestItem.action.textReplacement;\n\t\tconst languageConfiguration = this._languageConfigurationService.getLanguageConfiguration(textModel.getLanguageId());\n\n\t\t// Check synchronously if a rename is possible\n\t\tconst edits = this._renameInferenceEngine.inferRename(textModel, edit.range, edit.text, languageConfiguration.wordDefinition);\n\t\tif (edits === undefined || edits.renames.edits.length === 0) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\tconst { oldName, newName, position, edits: renameEdits } = edits.renames;\n\n\t\tconst trackedWord = this._renameSymbolTrackerService.trackedWord.get();\n\t\tlet lastSymbolRename: IRange | undefined = undefined;\n\t\tif (trackedWord !== undefined && trackedWord.model === textModel && trackedWord.originalWord === oldName && trackedWord.currentWord === newName) {\n\t\t\tlastSymbolRename = trackedWord.currentRange;\n\t\t}\n\n\t\t// Check asynchronously if a rename is possible\n\t\tlet timedOut = false;\n\t\tconst check = await raceTimeout<PrepareNesRenameResult>(this.checkRenamePrecondition(suggestItem, textModel, position, oldName, newName, lastSymbolRename), 100, () => { timedOut = true; });\n\t\tconst renamePossible = this.isRenamePossible(suggestItem, check, state, textModel);\n\n\t\tsuggestItem.setRenameProcessingInfo({\n\t\t\tcreatedRename: renamePossible,\n\t\t\tduration: Date.now() - start,\n\t\t\ttimedOut,\n\t\t\tdroppedOtherEdits: renamePossible ? edits.others.edits.length : undefined,\n\t\t\tdroppedRenameEdits: renamePossible ? renameEdits.length - 1 : undefined,\n\t\t});\n\n\t\tif (!renamePossible) {\n\t\t\treturn suggestItem;\n\t\t}\n\n\t\t// Prepare the rename edits\n\t\tif (this._renameRunnable === undefined) {\n\t\t\tthis._renameRunnable = new RenameSymbolRunnable(this._languageFeaturesService, this._commandService, suggestItem.requestUuid, textModel, state, position, newName, lastSymbolRename, lastSymbolRename !== undefined ? oldName : undefined);\n\t\t}\n\n\t\t// Create alternative action\n\t\tconst source = EditSources.inlineCompletionAccept({\n\t\t\tnes: suggestItem.isInlineEdit,\n\t\t\trequestUuid: suggestItem.requestUuid,\n\t\t\tproviderId: suggestItem.source.provider.providerId,\n\t\t\tlanguageId: textModel.getLanguageId(),\n\t\t\tcorrelationId: suggestItem.getSourceCompletion().correlationId,\n\t\t});\n\t\tconst command: Command = {\n\t\t\tid: renameSymbolCommandId,\n\t\t\ttitle: localize('rename', \"Rename\"),\n\t\t\targuments: [source, this._renameRunnable],\n\t\t};\n\t\tconst alternativeAction: InlineSuggestAlternativeAction = {\n\t\t\tlabel: localize('rename', \"Rename\"),\n\t\t\ticon: Codicon.replaceAll,\n\t\t\tcommand,\n\t\t\tcount: this._renameRunnable.getCount(),\n\t\t};\n\t\tconst renameAction: IInlineSuggestDataActionEdit = {\n\t\t\tkind: 'edit',\n\t\t\trange: renameEdits[0].range,\n\t\t\tinsertText: renameEdits[0].text,\n\t\t\tsnippetInfo: suggestItem.snippetInfo,\n\t\t\talternativeAction,\n\t\t\turi: textModel.uri\n\t\t};\n\n\t\treturn InlineSuggestionItem.create(suggestItem.withAction(renameAction), textModel, false);\n\t}\n\n\tprivate async checkRenamePrecondition(suggestItem: InlineSuggestionItem, textModel: ITextModel, position: Position, oldName: string, newName: string, lastSymbolRename: IRange | undefined): Promise<PrepareNesRenameResult> {\n\t\tconst no: PrepareNesRenameResult.No = { canRename: RenameKind.no, timedOut: false };\n\t\ttry {\n\t\t\tconst result = await this._commandService.executeCommand<RenameKind | PrepareNesRenameResult>('github.copilot.nes.prepareRename', textModel.uri, position, oldName, newName, suggestItem.requestUuid, lastSymbolRename);\n\t\t\tif (result === undefined) {\n\t\t\t\treturn no;\n\t\t\t} else if (typeof result === 'string') {\n\t\t\t\tconst canRename = RenameKind.fromString(result);\n\t\t\t\tif (canRename === RenameKind.yes || canRename === RenameKind.maybe) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcanRename,\n\t\t\t\t\t\toldName,\n\t\t\t\t\t\tonOldState: false,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcanRename,\n\t\t\t\t\t\ttimedOut: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn no;\n\t\t}\n\t}\n\n\tprivate isRenamePossible(suggestItem: InlineSuggestionItem, check: PrepareNesRenameResult | undefined, state: EditorState, textModel: ITextModel): boolean {\n\t\tif (check === undefined || check.canRename === RenameKind.no) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!state.equals(EditorState.create(this._codeEditorService, textModel))) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._renameRunnable === undefined) {\n\t\t\treturn true;\n\t\t}\n\t\tif (this._renameRunnable.requestUuid === suggestItem.requestUuid) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tthis._renameRunnable.cancel();\n\t\t\tthis._renameRunnable = undefined;\n\t\t\treturn true;\n\t\t}\n\t}\n}\n"]}
|
|
@@ -62,13 +62,13 @@ let GutterIndicatorMenuContent = class GutterIndicatorMenuContent {
|
|
|
62
62
|
const title = header(this._data.displayName);
|
|
63
63
|
const gotoAndAccept = option(createOptionArgs({
|
|
64
64
|
id: 'gotoAndAccept',
|
|
65
|
-
title: `${localize(
|
|
65
|
+
title: `${localize(1224, "Go To")} / ${localize(1225, "Accept")}`,
|
|
66
66
|
icon: Codicon.check,
|
|
67
67
|
commandId: inlineSuggestCommitId,
|
|
68
68
|
}));
|
|
69
69
|
const reject = option(createOptionArgs({
|
|
70
70
|
id: 'reject',
|
|
71
|
-
title: localize(
|
|
71
|
+
title: localize(1226, "Reject"),
|
|
72
72
|
icon: Codicon.close,
|
|
73
73
|
commandId: hideInlineCompletionId
|
|
74
74
|
}));
|
|
@@ -100,25 +100,25 @@ let GutterIndicatorMenuContent = class GutterIndicatorMenuContent {
|
|
|
100
100
|
const toggleCollapsedMode = this._inlineEditsShowCollapsed.map(showCollapsed => showCollapsed ?
|
|
101
101
|
option(createOptionArgs({
|
|
102
102
|
id: 'showExpanded',
|
|
103
|
-
title: localize(
|
|
103
|
+
title: localize(1227, "Show Expanded"),
|
|
104
104
|
icon: Codicon.expandAll,
|
|
105
105
|
commandId: toggleShowCollapsedId
|
|
106
106
|
}))
|
|
107
107
|
: option(createOptionArgs({
|
|
108
108
|
id: 'showCollapsed',
|
|
109
|
-
title: localize(
|
|
109
|
+
title: localize(1228, "Show Collapsed"),
|
|
110
110
|
icon: Codicon.collapseAll,
|
|
111
111
|
commandId: toggleShowCollapsedId
|
|
112
112
|
})));
|
|
113
113
|
const snooze = option(createOptionArgs({
|
|
114
114
|
id: 'snooze',
|
|
115
|
-
title: localize(
|
|
115
|
+
title: localize(1229, "Snooze"),
|
|
116
116
|
icon: Codicon.bellSlash,
|
|
117
117
|
commandId: 'editor.action.inlineSuggest.snooze'
|
|
118
118
|
}));
|
|
119
119
|
const settings = option(createOptionArgs({
|
|
120
120
|
id: 'settings',
|
|
121
|
-
title: localize(
|
|
121
|
+
title: localize(1230, "Settings"),
|
|
122
122
|
icon: Codicon.gear,
|
|
123
123
|
commandId: 'workbench.action.openSettings',
|
|
124
124
|
commandArgs: ['@tag:nextEditSuggestions']
|
|
@@ -44,7 +44,7 @@ export class InlineEditsGutterIndicatorData {
|
|
|
44
44
|
export class InlineSuggestionGutterMenuData {
|
|
45
45
|
static fromInlineSuggestion(suggestion) {
|
|
46
46
|
const alternativeAction = suggestion.action?.kind === 'edit' ? suggestion.action.alternativeAction : undefined;
|
|
47
|
-
return new InlineSuggestionGutterMenuData(suggestion.gutterMenuLinkAction, suggestion.source.provider.displayName ?? localize(
|
|
47
|
+
return new InlineSuggestionGutterMenuData(suggestion.gutterMenuLinkAction, suggestion.source.provider.displayName ?? localize(1231, "Inline Suggestion"), suggestion.source.inlineSuggestions.commands ?? [], alternativeAction, suggestion.source.provider.modelInfo, suggestion.source.provider.setModelId?.bind(suggestion.source.provider));
|
|
48
48
|
}
|
|
49
49
|
constructor(action, displayName, extensionCommands, alternativeAction, modelInfo, setModelId) {
|
|
50
50
|
this.action = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.ts"],"names":[],"mappings":"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","file":"gutterIndicatorView.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ModifierKeyEmitter, n, trackFocus } from '../../../../../../../base/browser/dom.js';\nimport { renderIcon } from '../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { Codicon } from '../../../../../../../base/common/codicons.js';\nimport { BugIndicatingError } from '../../../../../../../base/common/errors.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../../../../base/common/lifecycle.js';\nimport { IObservable, ISettableObservable, autorun, constObservable, debouncedObservable, derived, observableFromEvent, observableValue, runOnChange } from '../../../../../../../base/common/observable.js';\nimport { IAccessibilityService } from '../../../../../../../platform/accessibility/common/accessibility.js';\nimport { IHoverService } from '../../../../../../../platform/hover/browser/hover.js';\nimport { IInstantiationService } from '../../../../../../../platform/instantiation/common/instantiation.js';\nimport { IThemeService } from '../../../../../../../platform/theme/common/themeService.js';\nimport { IEditorMouseEvent } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { Point } from '../../../../../../common/core/2d/point.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { HoverService } from '../../../../../../../platform/hover/browser/hoverService.js';\nimport { HoverWidget } from '../../../../../../../platform/hover/browser/hoverWidget.js';\nimport { EditorOption, RenderLineNumbersType } from '../../../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { StickyScrollController } from '../../../../../stickyScroll/browser/stickyScrollController.js';\nimport { InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getEditorBlendedColor, INLINE_EDITS_BORDER_RADIUS, inlineEditIndicatorBackground, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorPrimaryBorder, inlineEditIndicatorPrimaryForeground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSecondaryBorder, inlineEditIndicatorSecondaryForeground, inlineEditIndicatorSuccessfulBackground, inlineEditIndicatorSuccessfulBorder, inlineEditIndicatorSuccessfulForeground } from '../theme.js';\nimport { mapOutFalsy, rectToProps } from '../utils/utils.js';\nimport { GutterIndicatorMenuContent } from './gutterIndicatorMenu.js';\nimport { assertNever } from '../../../../../../../base/common/assert.js';\nimport { Command, InlineCompletionCommand, IInlineCompletionModelInfo } from '../../../../../../common/languages.js';\nimport { InlineSuggestionItem } from '../../../model/inlineSuggestionItem.js';\nimport { localize } from '../../../../../../../nls.js';\nimport { InlineCompletionsModel } from '../../../model/inlineCompletionsModel.js';\nimport { InlineSuggestAlternativeAction } from '../../../model/InlineSuggestAlternativeAction.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ThemeIcon } from '../../../../../../../base/common/themables.js';\n\n/**\n * Customization options for the gutter indicator appearance and behavior.\n */\nexport interface GutterIndicatorCustomization {\n\t/** Override the default icon */\n\treadonly icon?: ThemeIcon;\n}\n\nexport class InlineEditsGutterIndicatorData {\n\tconstructor(\n\t\treadonly gutterMenuData: InlineSuggestionGutterMenuData,\n\t\treadonly originalRange: LineRange,\n\t\treadonly model: SimpleInlineSuggestModel,\n\t\treadonly altAction: InlineSuggestAlternativeAction | undefined,\n\t\treadonly customization?: GutterIndicatorCustomization,\n\t) { }\n}\n\nexport class InlineSuggestionGutterMenuData {\n\tpublic static fromInlineSuggestion(suggestion: InlineSuggestionItem): InlineSuggestionGutterMenuData {\n\t\tconst alternativeAction = suggestion.action?.kind === 'edit' ? suggestion.action.alternativeAction : undefined;\n\t\treturn new InlineSuggestionGutterMenuData(\n\t\t\tsuggestion.gutterMenuLinkAction,\n\t\t\tsuggestion.source.provider.displayName ?? localize('inlineSuggestion', \"Inline Suggestion\"),\n\t\t\tsuggestion.source.inlineSuggestions.commands ?? [],\n\t\t\talternativeAction,\n\t\t\tsuggestion.source.provider.modelInfo,\n\t\t\tsuggestion.source.provider.setModelId?.bind(suggestion.source.provider),\n\t\t);\n\t}\n\n\tconstructor(\n\t\treadonly action: Command | undefined,\n\t\treadonly displayName: string,\n\t\treadonly extensionCommands: InlineCompletionCommand[],\n\t\treadonly alternativeAction: InlineSuggestAlternativeAction | undefined,\n\t\treadonly modelInfo: IInlineCompletionModelInfo | undefined,\n\t\treadonly setModelId: ((modelId: string) => Promise<void>) | undefined,\n\t) { }\n}\n\n// TODO this class does not make that much sense yet.\nexport class SimpleInlineSuggestModel {\n\tpublic static fromInlineCompletionModel(model: InlineCompletionsModel): SimpleInlineSuggestModel {\n\t\treturn new SimpleInlineSuggestModel(\n\t\t\t() => model.accept(),\n\t\t\t() => model.jump(),\n\t\t);\n\t}\n\n\tconstructor(\n\t\treadonly accept: () => void,\n\t\treadonly jump: () => void,\n\t) { }\n}\n\nconst CODICON_SIZE_PX = 16;\nconst CODICON_PADDING_PX = 2;\n\nexport class InlineEditsGutterIndicator extends Disposable {\n\tconstructor(\n\t\tprivate readonly _editorObs: ObservableCodeEditor,\n\t\tprivate readonly _data: IObservable<InlineEditsGutterIndicatorData | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\tprivate readonly _verticalOffset: IObservable<number>,\n\t\tprivate readonly _isHoveringOverInlineEdit: IObservable<boolean>,\n\t\tprivate readonly _focusIsInMenu: ISettableObservable<boolean>,\n\n\t\t@IHoverService private readonly _hoverService: HoverService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,\n\t\t@IThemeService private readonly _themeService: IThemeService\n\t) {\n\t\tsuper();\n\n\t\tthis._originalRangeObs = mapOutFalsy(this._data.map(d => d?.originalRange));\n\n\t\tthis._stickyScrollController = StickyScrollController.get(this._editorObs.editor);\n\t\tthis._stickyScrollHeight = this._stickyScrollController\n\t\t\t? observableFromEvent(this._stickyScrollController.onDidChangeStickyScrollHeight, () => this._stickyScrollController!.stickyScrollWidgetHeight)\n\t\t\t: constObservable(0);\n\n\t\tconst indicator = this._indicator.keepUpdated(this._store);\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: indicator.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t}));\n\n\t\tthis._register(this._editorObs.editor.onMouseMove((e: IEditorMouseEvent) => {\n\t\t\tconst state = this._state.get();\n\t\t\tif (state === undefined) { return; }\n\n\t\t\tconst el = this._iconRef.element;\n\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\tconst rectangularArea = Rect.fromLeftTopWidthHeight(rect.left, rect.top, rect.width, rect.height);\n\t\t\tconst point = new Point(e.event.posx, e.event.posy);\n\t\t\tthis._isHoveredOverIcon.set(rectangularArea.containsPoint(point), undefined);\n\t\t}));\n\n\t\tthis._register(this._editorObs.editor.onDidScrollChange(() => {\n\t\t\tthis._isHoveredOverIcon.set(false, undefined);\n\t\t}));\n\n\t\tthis._isHoveredOverInlineEditDebounced = debouncedObservable(this._isHoveringOverInlineEdit, 100);\n\n\t\t// pulse animation when hovering inline edit\n\t\tthis._register(runOnChange(this._isHoveredOverInlineEditDebounced, (isHovering) => {\n\t\t\tif (isHovering) {\n\t\t\t\tthis.triggerAnimation();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tindicator.readEffect(reader);\n\t\t\tif (indicator.element) {\n\t\t\t\t// For the line number\n\t\t\t\tthis._editorObs.editor.applyFontInfo(indicator.element);\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate readonly _isHoveredOverInlineEditDebounced: IObservable<boolean>;\n\n\tprivate readonly _modifierPressed = observableFromEvent(this, ModifierKeyEmitter.getInstance().event, () => ModifierKeyEmitter.getInstance().keyStatus.shiftKey);\n\tprivate readonly _gutterIndicatorStyles = derived(this, reader => {\n\t\tlet v = this._tabAction.read(reader);\n\n\t\t// TODO: add source of truth for alt action active and key pressed\n\t\tconst altAction = this._data.read(reader)?.altAction;\n\t\tconst modifiedPressed = this._modifierPressed.read(reader);\n\t\tif (altAction && modifiedPressed) {\n\t\t\tv = InlineEditTabAction.Inactive;\n\t\t}\n\n\t\tswitch (v) {\n\t\t\tcase InlineEditTabAction.Inactive: return {\n\t\t\t\tbackground: getEditorBlendedColor(inlineEditIndicatorSecondaryBackground, this._themeService).read(reader).toString(),\n\t\t\t\tforeground: getEditorBlendedColor(inlineEditIndicatorSecondaryForeground, this._themeService).read(reader).toString(),\n\t\t\t\tborder: getEditorBlendedColor(inlineEditIndicatorSecondaryBorder, this._themeService).read(reader).toString(),\n\t\t\t};\n\t\t\tcase InlineEditTabAction.Jump: return {\n\t\t\t\tbackground: getEditorBlendedColor(inlineEditIndicatorPrimaryBackground, this._themeService).read(reader).toString(),\n\t\t\t\tforeground: getEditorBlendedColor(inlineEditIndicatorPrimaryForeground, this._themeService).read(reader).toString(),\n\t\t\t\tborder: getEditorBlendedColor(inlineEditIndicatorPrimaryBorder, this._themeService).read(reader).toString()\n\t\t\t};\n\t\t\tcase InlineEditTabAction.Accept: return {\n\t\t\t\tbackground: getEditorBlendedColor(inlineEditIndicatorSuccessfulBackground, this._themeService).read(reader).toString(),\n\t\t\t\tforeground: getEditorBlendedColor(inlineEditIndicatorSuccessfulForeground, this._themeService).read(reader).toString(),\n\t\t\t\tborder: getEditorBlendedColor(inlineEditIndicatorSuccessfulBorder, this._themeService).read(reader).toString()\n\t\t\t};\n\t\t\tdefault:\n\t\t\t\tassertNever(v);\n\t\t}\n\t});\n\n\tpublic triggerAnimation(): Promise<Animation> {\n\t\tif (this._accessibilityService.isMotionReduced()) {\n\t\t\treturn new Animation(null, null).finished;\n\t\t}\n\n\t\t// PULSE ANIMATION:\n\t\tconst animation = this._iconRef.element.animate([\n\t\t\t{\n\t\t\t\toutline: `2px solid ${this._gutterIndicatorStyles.map(v => v.border).get()}`,\n\t\t\t\toutlineOffset: '-1px',\n\t\t\t\toffset: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\toutline: `2px solid transparent`,\n\t\t\t\toutlineOffset: '10px',\n\t\t\t\toffset: 1\n\t\t\t},\n\t\t], { duration: 500 });\n\n\t\treturn animation.finished;\n\t}\n\n\tprivate readonly _originalRangeObs;\n\n\tprivate readonly _state = derived(this, reader => {\n\t\tconst range = this._originalRangeObs.read(reader);\n\t\tif (!range) { return undefined; }\n\t\treturn {\n\t\t\trange,\n\t\t\tlineOffsetRange: this._editorObs.observeLineOffsetRange(range, reader.store),\n\t\t};\n\t});\n\n\tprivate readonly _stickyScrollController;\n\tprivate readonly _stickyScrollHeight;\n\n\tprivate readonly _lineNumberToRender = derived(this, reader => {\n\t\tif (this._verticalOffset.read(reader) !== 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst lineNumber = this._data.read(reader)?.originalRange.startLineNumber;\n\t\tconst lineNumberOptions = this._editorObs.getOption(EditorOption.lineNumbers).read(reader);\n\n\t\tif (lineNumber === undefined || lineNumberOptions.renderType === RenderLineNumbersType.Off) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Interval) {\n\t\t\tconst cursorPosition = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (lineNumber % 10 === 0 || cursorPosition && cursorPosition.lineNumber === lineNumber) {\n\t\t\t\treturn lineNumber.toString();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Relative) {\n\t\t\tconst cursorPosition = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (!cursorPosition) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tconst relativeLineNumber = Math.abs(lineNumber - cursorPosition.lineNumber);\n\t\t\tif (relativeLineNumber === 0) {\n\t\t\t\treturn lineNumber.toString();\n\t\t\t}\n\t\t\treturn relativeLineNumber.toString();\n\t\t}\n\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Custom) {\n\t\t\tif (lineNumberOptions.renderFn) {\n\t\t\t\treturn lineNumberOptions.renderFn(lineNumber);\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\n\t\treturn lineNumber.toString();\n\t});\n\n\tprivate readonly _availableWidthForIcon = derived(this, reader => {\n\t\tconst textModel = this._editorObs.editor.getModel();\n\t\tconst editor = this._editorObs.editor;\n\t\tconst layout = this._editorObs.layoutInfo.read(reader);\n\t\tconst gutterWidth = layout.decorationsLeft + layout.decorationsWidth - layout.glyphMarginLeft;\n\n\t\tif (!textModel || gutterWidth <= 0) {\n\t\t\treturn () => 0;\n\t\t}\n\n\t\t// no glyph margin => the entire gutter width is available as there is no optimal place to put the icon\n\t\tif (layout.lineNumbersLeft === 0) {\n\t\t\treturn () => gutterWidth;\n\t\t}\n\n\t\tconst lineNumberOptions = this._editorObs.getOption(EditorOption.lineNumbers).read(reader);\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Relative || /* likely to flicker */\n\t\t\tlineNumberOptions.renderType === RenderLineNumbersType.Off) {\n\t\t\treturn () => gutterWidth;\n\t\t}\n\n\t\tconst w = editor.getOption(EditorOption.fontInfo).typicalHalfwidthCharacterWidth;\n\t\tconst rightOfLineNumber = layout.lineNumbersLeft + layout.lineNumbersWidth;\n\t\tconst totalLines = textModel.getLineCount();\n\t\tconst totalLinesDigits = (totalLines + 1 /* 0 based to 1 based*/).toString().length;\n\n\t\tconst offsetDigits: {\n\t\t\tfirstLineNumberWithDigitCount: number;\n\t\t\ttopOfLineNumber: number;\n\t\t\tusableWidthLeftOfLineNumber: number;\n\t\t}[] = [];\n\n\t\t// We only need to pre compute the usable width left of the line number for the first line number with a given digit count\n\t\tfor (let digits = 1; digits <= totalLinesDigits; digits++) {\n\t\t\tconst firstLineNumberWithDigitCount = 10 ** (digits - 1);\n\t\t\tconst topOfLineNumber = editor.getTopForLineNumber(firstLineNumberWithDigitCount);\n\t\t\tconst digitsWidth = digits * w;\n\t\t\tconst usableWidthLeftOfLineNumber = Math.min(gutterWidth, Math.max(0, rightOfLineNumber - digitsWidth - layout.glyphMarginLeft));\n\t\t\toffsetDigits.push({ firstLineNumberWithDigitCount, topOfLineNumber, usableWidthLeftOfLineNumber });\n\t\t}\n\n\t\treturn (topOffset: number) => {\n\t\t\tfor (let i = offsetDigits.length - 1; i >= 0; i--) {\n\t\t\t\tif (topOffset >= offsetDigits[i].topOfLineNumber) {\n\t\t\t\t\treturn offsetDigits[i].usableWidthLeftOfLineNumber;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new BugIndicatingError('Could not find avilable width for icon');\n\t\t};\n\t});\n\n\tprivate readonly _layout = derived(this, reader => {\n\t\tconst s = this._state.read(reader);\n\t\tif (!s) { return undefined; }\n\n\t\tconst layout = this._editorObs.layoutInfo.read(reader);\n\n\t\tconst lineHeight = this._editorObs.observeLineHeightForLine(s.range.map(r => r.startLineNumber)).read(reader);\n\t\tconst gutterViewPortPaddingLeft = 1;\n\t\tconst gutterViewPortPaddingTop = 2;\n\n\t\t// Entire gutter view from top left to bottom right\n\t\tconst gutterWidthWithoutPadding = layout.decorationsLeft + layout.decorationsWidth - layout.glyphMarginLeft - 2 * gutterViewPortPaddingLeft;\n\t\tconst gutterHeightWithoutPadding = layout.height - 2 * gutterViewPortPaddingTop;\n\t\tconst gutterViewPortWithStickyScroll = Rect.fromLeftTopWidthHeight(gutterViewPortPaddingLeft, gutterViewPortPaddingTop, gutterWidthWithoutPadding, gutterHeightWithoutPadding);\n\t\tconst gutterViewPortWithoutStickyScrollWithoutPaddingTop = gutterViewPortWithStickyScroll.withTop(this._stickyScrollHeight.read(reader));\n\t\tconst gutterViewPortWithoutStickyScroll = gutterViewPortWithStickyScroll.withTop(gutterViewPortWithoutStickyScrollWithoutPaddingTop.top + gutterViewPortPaddingTop);\n\n\t\t// The glyph margin area across all relevant lines\n\t\tconst verticalEditRange = s.lineOffsetRange.read(reader);\n\t\tconst gutterEditArea = Rect.fromRanges(OffsetRange.fromTo(gutterViewPortWithoutStickyScroll.left, gutterViewPortWithoutStickyScroll.right), verticalEditRange);\n\n\t\t// The gutter view container (pill)\n\t\tconst pillHeight = lineHeight;\n\t\tconst pillOffset = this._verticalOffset.read(reader);\n\t\tconst pillFullyDockedRect = gutterEditArea.withHeight(pillHeight).translateY(pillOffset);\n\t\tconst pillIsFullyDocked = gutterViewPortWithoutStickyScrollWithoutPaddingTop.containsRect(pillFullyDockedRect);\n\n\t\t// The icon which will be rendered in the pill\n\t\tconst customIcon = this._data.read(reader)?.customization?.icon;\n\t\tconst iconNoneDocked = customIcon\n\t\t\t? constObservable(customIcon)\n\t\t\t: this._tabAction.map(action => action === InlineEditTabAction.Accept ? Codicon.keyboardTab : Codicon.arrowRight);\n\t\tconst iconDocked = customIcon\n\t\t\t? constObservable(customIcon)\n\t\t\t: derived(this, reader => {\n\t\t\t\tif (this._isHoveredOverIconDebounced.read(reader) || this._isHoveredOverInlineEditDebounced.read(reader)) {\n\t\t\t\t\treturn Codicon.check;\n\t\t\t\t}\n\t\t\t\tif (this._tabAction.read(reader) === InlineEditTabAction.Accept) {\n\t\t\t\t\treturn Codicon.keyboardTab;\n\t\t\t\t}\n\t\t\t\tconst cursorLineNumber = this._editorObs.cursorLineNumber.read(reader) ?? 0;\n\t\t\t\tconst editStartLineNumber = s.range.read(reader).startLineNumber;\n\t\t\t\treturn cursorLineNumber <= editStartLineNumber ? Codicon.keyboardTabAbove : Codicon.keyboardTabBelow;\n\t\t\t});\n\n\t\tconst idealIconAreaWidth = 22;\n\t\tconst iconWidth = (pillRect: Rect) => {\n\t\t\tconst availableIconAreaWidth = this._availableWidthForIcon.read(undefined)(pillRect.bottom + this._editorObs.editor.getScrollTop()) - gutterViewPortPaddingLeft;\n\t\t\treturn Math.max(Math.min(availableIconAreaWidth, idealIconAreaWidth), CODICON_SIZE_PX);\n\t\t};\n\n\t\tif (pillIsFullyDocked) {\n\t\t\tconst pillRect = pillFullyDockedRect;\n\n\t\t\tlet widthUntilLineNumberEnd;\n\t\t\tif (layout.lineNumbersWidth === 0) {\n\t\t\t\twidthUntilLineNumberEnd = Math.min(Math.max(layout.lineNumbersLeft - gutterViewPortWithStickyScroll.left, 0), pillRect.width - idealIconAreaWidth);\n\t\t\t} else {\n\t\t\t\twidthUntilLineNumberEnd = Math.max(layout.lineNumbersLeft + layout.lineNumbersWidth - gutterViewPortWithStickyScroll.left, 0);\n\t\t\t}\n\n\t\t\tconst lineNumberRect = pillRect.withWidth(widthUntilLineNumberEnd);\n\t\t\tconst minimalIconWidthWithPadding = CODICON_SIZE_PX + CODICON_PADDING_PX;\n\t\t\tconst iconWidth = Math.min(pillRect.width - widthUntilLineNumberEnd, idealIconAreaWidth);\n\t\t\tconst iconRect = pillRect.withWidth(Math.max(iconWidth, minimalIconWidthWithPadding)).translateX(widthUntilLineNumberEnd);\n\t\t\tconst iconVisible = iconWidth >= minimalIconWidthWithPadding;\n\n\t\t\treturn {\n\t\t\t\tgutterEditArea,\n\t\t\t\ticon: iconDocked,\n\t\t\t\ticonDirection: 'right' as const,\n\t\t\t\ticonRect,\n\t\t\t\ticonVisible,\n\t\t\t\tpillRect,\n\t\t\t\tlineNumberRect,\n\t\t\t};\n\t\t}\n\n\t\tconst pillPartiallyDockedPossibleArea = gutterViewPortWithStickyScroll.intersect(gutterEditArea); // The area in which the pill could be partially docked\n\t\tconst pillIsPartiallyDocked = pillPartiallyDockedPossibleArea && pillPartiallyDockedPossibleArea.height >= pillHeight;\n\n\t\tif (pillIsPartiallyDocked) {\n\t\t\t// pillFullyDockedRect is outside viewport, move it into the viewport under sticky scroll as we prefer the pill to not be on top of the sticky scroll\n\t\t\t// then move it into the possible area which will only cause it to move if it has to be rendered on top of the sticky scroll\n\t\t\tconst pillRectMoved = pillFullyDockedRect.moveToBeContainedIn(gutterViewPortWithoutStickyScroll).moveToBeContainedIn(pillPartiallyDockedPossibleArea);\n\t\t\tconst pillRect = pillRectMoved.withWidth(iconWidth(pillRectMoved));\n\t\t\tconst iconRect = pillRect;\n\n\t\t\treturn {\n\t\t\t\tgutterEditArea,\n\t\t\t\ticon: iconDocked,\n\t\t\t\ticonDirection: 'right' as const,\n\t\t\t\ticonRect,\n\t\t\t\tpillRect,\n\t\t\t\ticonVisible: true,\n\t\t\t};\n\t\t}\n\n\t\t// pillFullyDockedRect is outside viewport, so move it into viewport\n\t\tconst pillRectMoved = pillFullyDockedRect.moveToBeContainedIn(gutterViewPortWithStickyScroll);\n\t\tconst pillRect = pillRectMoved.withWidth(iconWidth(pillRectMoved));\n\t\tconst iconRect = pillRect;\n\n\t\t// docked = pill was already in the viewport\n\t\tconst iconDirection = pillRect.top < pillFullyDockedRect.top ?\n\t\t\t'top' as const :\n\t\t\t'bottom' as const;\n\n\t\treturn {\n\t\t\tgutterEditArea,\n\t\t\ticon: iconNoneDocked,\n\t\t\ticonDirection,\n\t\t\ticonRect,\n\t\t\tpillRect,\n\t\t\ticonVisible: true,\n\t\t};\n\t});\n\n\n\tprotected readonly _iconRef = n.ref<HTMLDivElement>();\n\n\tpublic readonly isVisible = this._layout.map(l => !!l);\n\n\tprotected readonly _hoverVisible = observableValue(this, false);\n\tpublic readonly isHoverVisible: IObservable<boolean> = this._hoverVisible;\n\n\tprivate readonly _isHoveredOverIcon = observableValue(this, false);\n\tprivate readonly _isHoveredOverIconDebounced: IObservable<boolean> = debouncedObservable(this._isHoveredOverIcon, 100);\n\tpublic readonly isHoveredOverIcon: IObservable<boolean> = this._isHoveredOverIconDebounced;\n\n\tprotected _showHover(): void {\n\t\tif (this._hoverVisible.get()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst data = this._data.get();\n\t\tif (!data) {\n\t\t\tthrow new BugIndicatingError('Gutter indicator data not available');\n\t\t}\n\t\tconst disposableStore = new DisposableStore();\n\t\tconst content = disposableStore.add(this._instantiationService.createInstance(\n\t\t\tGutterIndicatorMenuContent,\n\t\t\tthis._editorObs,\n\t\t\tdata.gutterMenuData,\n\t\t\t(focusEditor) => {\n\t\t\t\tif (focusEditor) {\n\t\t\t\t\tthis._editorObs.editor.focus();\n\t\t\t\t}\n\t\t\t\th?.dispose();\n\t\t\t},\n\t\t).toDisposableLiveElement());\n\n\t\tconst focusTracker = disposableStore.add(trackFocus(content.element)); // TODO@benibenj should this be removed?\n\t\tdisposableStore.add(focusTracker.onDidBlur(() => this._focusIsInMenu.set(false, undefined)));\n\t\tdisposableStore.add(focusTracker.onDidFocus(() => this._focusIsInMenu.set(true, undefined)));\n\t\tdisposableStore.add(toDisposable(() => this._focusIsInMenu.set(false, undefined)));\n\n\t\tconst h = this._hoverService.showInstantHover({\n\t\t\ttarget: this._iconRef.element,\n\t\t\tcontent: content.element,\n\t\t}) as HoverWidget | undefined;\n\t\tif (h) {\n\t\t\tthis._hoverVisible.set(true, undefined);\n\t\t\tdisposableStore.add(this._editorObs.editor.onDidScrollChange(() => h.dispose()));\n\t\t\tdisposableStore.add(h.onDispose(() => {\n\t\t\t\tthis._hoverVisible.set(false, undefined);\n\t\t\t\tdisposableStore.dispose();\n\t\t\t}));\n\t\t} else {\n\t\t\tdisposableStore.dispose();\n\t\t}\n\t}\n\n\tprivate readonly _indicator = n.div({\n\t\tclass: 'inline-edits-view-gutter-indicator',\n\t\tstyle: {\n\t\t\tposition: 'absolute',\n\t\t\toverflow: 'visible',\n\t\t},\n\t}, mapOutFalsy(this._layout).map(layout => !layout ? [] : [\n\t\tn.div({\n\t\t\tstyle: {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tbackground: asCssVariable(inlineEditIndicatorBackground),\n\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t...rectToProps(reader => layout.read(reader).gutterEditArea),\n\t\t\t}\n\t\t}),\n\t\tn.div({\n\t\t\tclass: 'icon',\n\t\t\tref: this._iconRef,\n\n\t\t\ttabIndex: 0,\n\t\t\tonclick: () => {\n\t\t\t\tconst layout = this._layout.get();\n\t\t\t\tconst acceptOnClick = layout?.icon.get() === Codicon.check;\n\n\t\t\t\tconst data = this._data.get();\n\t\t\t\tif (!data) { throw new BugIndicatingError('Gutter indicator data not available'); }\n\n\t\t\t\tthis._editorObs.editor.focus();\n\t\t\t\tif (acceptOnClick) {\n\t\t\t\t\tdata.model.accept();\n\t\t\t\t} else {\n\t\t\t\t\tdata.model.jump();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonmouseenter: () => {\n\t\t\t\t// TODO show hover when hovering ghost text etc.\n\t\t\t\tthis._showHover();\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\tcursor: 'pointer',\n\t\t\t\tzIndex: '20',\n\t\t\t\tposition: 'absolute',\n\t\t\t\tbackgroundColor: this._gutterIndicatorStyles.map(v => v.background),\n\t\t\t\t// eslint-disable-next-line local/code-no-any-casts\n\t\t\t\t['--vscodeIconForeground' as any]: this._gutterIndicatorStyles.map(v => v.foreground),\n\t\t\t\tborder: this._gutterIndicatorStyles.map(v => `1px solid ${v.border}`),\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tjustifyContent: layout.map(l => l.iconDirection === 'bottom' ? 'flex-start' : 'flex-end'),\n\t\t\t\ttransition: this._modifierPressed.map(m => m ? '' : 'background-color 0.2s ease-in-out, width 0.2s ease-in-out'),\n\t\t\t\t...rectToProps(reader => layout.read(reader).pillRect),\n\t\t\t}\n\t\t}, [\n\t\t\tn.div({\n\t\t\t\tclassName: 'line-number',\n\t\t\t\tstyle: {\n\t\t\t\t\tlineHeight: layout.map(l => l.lineNumberRect ? l.lineNumberRect.height : 0),\n\t\t\t\t\tdisplay: layout.map(l => l.lineNumberRect ? 'flex' : 'none'),\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tjustifyContent: 'flex-end',\n\t\t\t\t\twidth: layout.map(l => l.lineNumberRect ? l.lineNumberRect.width : 0),\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolor: this._gutterIndicatorStyles.map(v => v.foreground),\n\t\t\t\t}\n\t\t\t},\n\t\t\t\tthis._lineNumberToRender\n\t\t\t),\n\t\t\tn.div({\n\t\t\t\tstyle: {\n\t\t\t\t\ttransform: layout.map(l => `rotate(${getRotationFromDirection(l.iconDirection)}deg)`),\n\t\t\t\t\ttransition: 'rotate 0.2s ease-in-out, opacity 0.2s ease-in-out',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\topacity: layout.map(l => l.iconVisible ? '1' : '0'),\n\t\t\t\t\tmarginRight: layout.map(l => l.pillRect.width - l.iconRect.width - (l.lineNumberRect?.width ?? 0)),\n\t\t\t\t\twidth: layout.map(l => l.iconRect.width),\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t\tright: layout.map(l => l.iconDirection === 'top' ? '1px' : '0'),\n\t\t\t\t}\n\t\t\t}, [\n\t\t\t\tlayout.map((l, reader) => withStyles(renderIcon(l.icon.read(reader)), { fontSize: toPx(Math.min(l.iconRect.width - CODICON_PADDING_PX, CODICON_SIZE_PX)) })),\n\t\t\t])\n\t\t]),\n\t]));\n}\n\nfunction getRotationFromDirection(direction: 'top' | 'bottom' | 'right'): number {\n\tswitch (direction) {\n\t\tcase 'top': return 90;\n\t\tcase 'bottom': return -90;\n\t\tcase 'right': return 0;\n\t}\n}\n\nfunction withStyles<T extends HTMLElement>(element: T, styles: { [key: string]: string }): T {\n\tfor (const key in styles) {\n\t\t// eslint-disable-next-line local/code-no-any-casts\n\t\telement.style[key as any] = styles[key];\n\t}\n\treturn element;\n}\n\nfunction toPx(n: number): string {\n\treturn `${n}px`;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.ts"],"names":[],"mappings":"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","file":"gutterIndicatorView.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ModifierKeyEmitter, n, trackFocus } from '../../../../../../../base/browser/dom.js';\nimport { renderIcon } from '../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { Codicon } from '../../../../../../../base/common/codicons.js';\nimport { BugIndicatingError } from '../../../../../../../base/common/errors.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../../../../base/common/lifecycle.js';\nimport { IObservable, ISettableObservable, autorun, constObservable, debouncedObservable, derived, observableFromEvent, observableValue, runOnChange } from '../../../../../../../base/common/observable.js';\nimport { IAccessibilityService } from '../../../../../../../platform/accessibility/common/accessibility.js';\nimport { IHoverService } from '../../../../../../../platform/hover/browser/hover.js';\nimport { IInstantiationService } from '../../../../../../../platform/instantiation/common/instantiation.js';\nimport { IThemeService } from '../../../../../../../platform/theme/common/themeService.js';\nimport { IEditorMouseEvent } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { Point } from '../../../../../../common/core/2d/point.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { HoverService } from '../../../../../../../platform/hover/browser/hoverService.js';\nimport { HoverWidget } from '../../../../../../../platform/hover/browser/hoverWidget.js';\nimport { EditorOption, RenderLineNumbersType } from '../../../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { StickyScrollController } from '../../../../../stickyScroll/browser/stickyScrollController.js';\nimport { InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getEditorBlendedColor, INLINE_EDITS_BORDER_RADIUS, inlineEditIndicatorBackground, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorPrimaryBorder, inlineEditIndicatorPrimaryForeground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSecondaryBorder, inlineEditIndicatorSecondaryForeground, inlineEditIndicatorSuccessfulBackground, inlineEditIndicatorSuccessfulBorder, inlineEditIndicatorSuccessfulForeground } from '../theme.js';\nimport { mapOutFalsy, rectToProps } from '../utils/utils.js';\nimport { GutterIndicatorMenuContent } from './gutterIndicatorMenu.js';\nimport { assertNever } from '../../../../../../../base/common/assert.js';\nimport { Command, InlineCompletionCommand, IInlineCompletionModelInfo } from '../../../../../../common/languages.js';\nimport { InlineSuggestionItem } from '../../../model/inlineSuggestionItem.js';\nimport { localize } from '../../../../../../../nls.js';\nimport { InlineCompletionsModel } from '../../../model/inlineCompletionsModel.js';\nimport { InlineSuggestAlternativeAction } from '../../../model/InlineSuggestAlternativeAction.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ThemeIcon } from '../../../../../../../base/common/themables.js';\n\n/**\n * Customization options for the gutter indicator appearance and behavior.\n */\nexport interface GutterIndicatorCustomization {\n\t/** Override the default icon */\n\treadonly icon?: ThemeIcon;\n}\n\nexport class InlineEditsGutterIndicatorData {\n\tconstructor(\n\t\treadonly gutterMenuData: InlineSuggestionGutterMenuData,\n\t\treadonly originalRange: LineRange,\n\t\treadonly model: SimpleInlineSuggestModel,\n\t\treadonly altAction: InlineSuggestAlternativeAction | undefined,\n\t\treadonly customization?: GutterIndicatorCustomization,\n\t) { }\n}\n\nexport class InlineSuggestionGutterMenuData {\n\tpublic static fromInlineSuggestion(suggestion: InlineSuggestionItem): InlineSuggestionGutterMenuData {\n\t\tconst alternativeAction = suggestion.action?.kind === 'edit' ? suggestion.action.alternativeAction : undefined;\n\t\treturn new InlineSuggestionGutterMenuData(\n\t\t\tsuggestion.gutterMenuLinkAction,\n\t\t\tsuggestion.source.provider.displayName ?? localize('inlineSuggestion', \"Inline Suggestion\"),\n\t\t\tsuggestion.source.inlineSuggestions.commands ?? [],\n\t\t\talternativeAction,\n\t\t\tsuggestion.source.provider.modelInfo,\n\t\t\tsuggestion.source.provider.setModelId?.bind(suggestion.source.provider),\n\t\t);\n\t}\n\n\tconstructor(\n\t\treadonly action: Command | undefined,\n\t\treadonly displayName: string,\n\t\treadonly extensionCommands: InlineCompletionCommand[],\n\t\treadonly alternativeAction: InlineSuggestAlternativeAction | undefined,\n\t\treadonly modelInfo: IInlineCompletionModelInfo | undefined,\n\t\treadonly setModelId: ((modelId: string) => Promise<void>) | undefined,\n\t) { }\n}\n\n// TODO this class does not make that much sense yet.\nexport class SimpleInlineSuggestModel {\n\tpublic static fromInlineCompletionModel(model: InlineCompletionsModel): SimpleInlineSuggestModel {\n\t\treturn new SimpleInlineSuggestModel(\n\t\t\t() => model.accept(),\n\t\t\t() => model.jump(),\n\t\t);\n\t}\n\n\tconstructor(\n\t\treadonly accept: () => void,\n\t\treadonly jump: () => void,\n\t) { }\n}\n\nconst CODICON_SIZE_PX = 16;\nconst CODICON_PADDING_PX = 2;\n\nexport class InlineEditsGutterIndicator extends Disposable {\n\tconstructor(\n\t\tprivate readonly _editorObs: ObservableCodeEditor,\n\t\tprivate readonly _data: IObservable<InlineEditsGutterIndicatorData | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\tprivate readonly _verticalOffset: IObservable<number>,\n\t\tprivate readonly _isHoveringOverInlineEdit: IObservable<boolean>,\n\t\tprivate readonly _focusIsInMenu: ISettableObservable<boolean>,\n\n\t\t@IHoverService protected readonly _hoverService: HoverService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,\n\t\t@IThemeService private readonly _themeService: IThemeService\n\t) {\n\t\tsuper();\n\n\t\tthis._originalRangeObs = mapOutFalsy(this._data.map(d => d?.originalRange));\n\n\t\tthis._stickyScrollController = StickyScrollController.get(this._editorObs.editor);\n\t\tthis._stickyScrollHeight = this._stickyScrollController\n\t\t\t? observableFromEvent(this._stickyScrollController.onDidChangeStickyScrollHeight, () => this._stickyScrollController!.stickyScrollWidgetHeight)\n\t\t\t: constObservable(0);\n\n\t\tconst indicator = this._indicator.keepUpdated(this._store);\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: indicator.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t}));\n\n\t\tthis._register(this._editorObs.editor.onMouseMove((e: IEditorMouseEvent) => {\n\t\t\tconst state = this._state.get();\n\t\t\tif (state === undefined) { return; }\n\n\t\t\tconst el = this._iconRef.element;\n\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\tconst rectangularArea = Rect.fromLeftTopWidthHeight(rect.left, rect.top, rect.width, rect.height);\n\t\t\tconst point = new Point(e.event.posx, e.event.posy);\n\t\t\tthis._isHoveredOverIcon.set(rectangularArea.containsPoint(point), undefined);\n\t\t}));\n\n\t\tthis._register(this._editorObs.editor.onDidScrollChange(() => {\n\t\t\tthis._isHoveredOverIcon.set(false, undefined);\n\t\t}));\n\n\t\tthis._isHoveredOverInlineEditDebounced = debouncedObservable(this._isHoveringOverInlineEdit, 100);\n\n\t\t// pulse animation when hovering inline edit\n\t\tthis._register(runOnChange(this._isHoveredOverInlineEditDebounced, (isHovering) => {\n\t\t\tif (isHovering) {\n\t\t\t\tthis.triggerAnimation();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tindicator.readEffect(reader);\n\t\t\tif (indicator.element) {\n\t\t\t\t// For the line number\n\t\t\t\tthis._editorObs.editor.applyFontInfo(indicator.element);\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate readonly _isHoveredOverInlineEditDebounced: IObservable<boolean>;\n\n\tprivate readonly _modifierPressed = observableFromEvent(this, ModifierKeyEmitter.getInstance().event, () => ModifierKeyEmitter.getInstance().keyStatus.shiftKey);\n\tprivate readonly _gutterIndicatorStyles = derived(this, reader => {\n\t\tlet v = this._tabAction.read(reader);\n\n\t\t// TODO: add source of truth for alt action active and key pressed\n\t\tconst altAction = this._data.read(reader)?.altAction;\n\t\tconst modifiedPressed = this._modifierPressed.read(reader);\n\t\tif (altAction && modifiedPressed) {\n\t\t\tv = InlineEditTabAction.Inactive;\n\t\t}\n\n\t\tswitch (v) {\n\t\t\tcase InlineEditTabAction.Inactive: return {\n\t\t\t\tbackground: getEditorBlendedColor(inlineEditIndicatorSecondaryBackground, this._themeService).read(reader).toString(),\n\t\t\t\tforeground: getEditorBlendedColor(inlineEditIndicatorSecondaryForeground, this._themeService).read(reader).toString(),\n\t\t\t\tborder: getEditorBlendedColor(inlineEditIndicatorSecondaryBorder, this._themeService).read(reader).toString(),\n\t\t\t};\n\t\t\tcase InlineEditTabAction.Jump: return {\n\t\t\t\tbackground: getEditorBlendedColor(inlineEditIndicatorPrimaryBackground, this._themeService).read(reader).toString(),\n\t\t\t\tforeground: getEditorBlendedColor(inlineEditIndicatorPrimaryForeground, this._themeService).read(reader).toString(),\n\t\t\t\tborder: getEditorBlendedColor(inlineEditIndicatorPrimaryBorder, this._themeService).read(reader).toString()\n\t\t\t};\n\t\t\tcase InlineEditTabAction.Accept: return {\n\t\t\t\tbackground: getEditorBlendedColor(inlineEditIndicatorSuccessfulBackground, this._themeService).read(reader).toString(),\n\t\t\t\tforeground: getEditorBlendedColor(inlineEditIndicatorSuccessfulForeground, this._themeService).read(reader).toString(),\n\t\t\t\tborder: getEditorBlendedColor(inlineEditIndicatorSuccessfulBorder, this._themeService).read(reader).toString()\n\t\t\t};\n\t\t\tdefault:\n\t\t\t\tassertNever(v);\n\t\t}\n\t});\n\n\tpublic triggerAnimation(): Promise<Animation> {\n\t\tif (this._accessibilityService.isMotionReduced()) {\n\t\t\treturn new Animation(null, null).finished;\n\t\t}\n\n\t\t// PULSE ANIMATION:\n\t\tconst animation = this._iconRef.element.animate([\n\t\t\t{\n\t\t\t\toutline: `2px solid ${this._gutterIndicatorStyles.map(v => v.border).get()}`,\n\t\t\t\toutlineOffset: '-1px',\n\t\t\t\toffset: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\toutline: `2px solid transparent`,\n\t\t\t\toutlineOffset: '10px',\n\t\t\t\toffset: 1\n\t\t\t},\n\t\t], { duration: 500 });\n\n\t\treturn animation.finished;\n\t}\n\n\tprivate readonly _originalRangeObs;\n\n\tprivate readonly _state = derived(this, reader => {\n\t\tconst range = this._originalRangeObs.read(reader);\n\t\tif (!range) { return undefined; }\n\t\treturn {\n\t\t\trange,\n\t\t\tlineOffsetRange: this._editorObs.observeLineOffsetRange(range, reader.store),\n\t\t};\n\t});\n\n\tprivate readonly _stickyScrollController;\n\tprivate readonly _stickyScrollHeight;\n\n\tprivate readonly _lineNumberToRender = derived(this, reader => {\n\t\tif (this._verticalOffset.read(reader) !== 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst lineNumber = this._data.read(reader)?.originalRange.startLineNumber;\n\t\tconst lineNumberOptions = this._editorObs.getOption(EditorOption.lineNumbers).read(reader);\n\n\t\tif (lineNumber === undefined || lineNumberOptions.renderType === RenderLineNumbersType.Off) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Interval) {\n\t\t\tconst cursorPosition = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (lineNumber % 10 === 0 || cursorPosition && cursorPosition.lineNumber === lineNumber) {\n\t\t\t\treturn lineNumber.toString();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Relative) {\n\t\t\tconst cursorPosition = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (!cursorPosition) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tconst relativeLineNumber = Math.abs(lineNumber - cursorPosition.lineNumber);\n\t\t\tif (relativeLineNumber === 0) {\n\t\t\t\treturn lineNumber.toString();\n\t\t\t}\n\t\t\treturn relativeLineNumber.toString();\n\t\t}\n\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Custom) {\n\t\t\tif (lineNumberOptions.renderFn) {\n\t\t\t\treturn lineNumberOptions.renderFn(lineNumber);\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\n\t\treturn lineNumber.toString();\n\t});\n\n\tprivate readonly _availableWidthForIcon = derived(this, reader => {\n\t\tconst textModel = this._editorObs.editor.getModel();\n\t\tconst editor = this._editorObs.editor;\n\t\tconst layout = this._editorObs.layoutInfo.read(reader);\n\t\tconst gutterWidth = layout.decorationsLeft + layout.decorationsWidth - layout.glyphMarginLeft;\n\n\t\tif (!textModel || gutterWidth <= 0) {\n\t\t\treturn () => 0;\n\t\t}\n\n\t\t// no glyph margin => the entire gutter width is available as there is no optimal place to put the icon\n\t\tif (layout.lineNumbersLeft === 0) {\n\t\t\treturn () => gutterWidth;\n\t\t}\n\n\t\tconst lineNumberOptions = this._editorObs.getOption(EditorOption.lineNumbers).read(reader);\n\t\tif (lineNumberOptions.renderType === RenderLineNumbersType.Relative || /* likely to flicker */\n\t\t\tlineNumberOptions.renderType === RenderLineNumbersType.Off) {\n\t\t\treturn () => gutterWidth;\n\t\t}\n\n\t\tconst w = editor.getOption(EditorOption.fontInfo).typicalHalfwidthCharacterWidth;\n\t\tconst rightOfLineNumber = layout.lineNumbersLeft + layout.lineNumbersWidth;\n\t\tconst totalLines = textModel.getLineCount();\n\t\tconst totalLinesDigits = (totalLines + 1 /* 0 based to 1 based*/).toString().length;\n\n\t\tconst offsetDigits: {\n\t\t\tfirstLineNumberWithDigitCount: number;\n\t\t\ttopOfLineNumber: number;\n\t\t\tusableWidthLeftOfLineNumber: number;\n\t\t}[] = [];\n\n\t\t// We only need to pre compute the usable width left of the line number for the first line number with a given digit count\n\t\tfor (let digits = 1; digits <= totalLinesDigits; digits++) {\n\t\t\tconst firstLineNumberWithDigitCount = 10 ** (digits - 1);\n\t\t\tconst topOfLineNumber = editor.getTopForLineNumber(firstLineNumberWithDigitCount);\n\t\t\tconst digitsWidth = digits * w;\n\t\t\tconst usableWidthLeftOfLineNumber = Math.min(gutterWidth, Math.max(0, rightOfLineNumber - digitsWidth - layout.glyphMarginLeft));\n\t\t\toffsetDigits.push({ firstLineNumberWithDigitCount, topOfLineNumber, usableWidthLeftOfLineNumber });\n\t\t}\n\n\t\treturn (topOffset: number) => {\n\t\t\tfor (let i = offsetDigits.length - 1; i >= 0; i--) {\n\t\t\t\tif (topOffset >= offsetDigits[i].topOfLineNumber) {\n\t\t\t\t\treturn offsetDigits[i].usableWidthLeftOfLineNumber;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new BugIndicatingError('Could not find avilable width for icon');\n\t\t};\n\t});\n\n\tprivate readonly _layout = derived(this, reader => {\n\t\tconst s = this._state.read(reader);\n\t\tif (!s) { return undefined; }\n\n\t\tconst layout = this._editorObs.layoutInfo.read(reader);\n\n\t\tconst lineHeight = this._editorObs.observeLineHeightForLine(s.range.map(r => r.startLineNumber)).read(reader);\n\t\tconst gutterViewPortPaddingLeft = 1;\n\t\tconst gutterViewPortPaddingTop = 2;\n\n\t\t// Entire gutter view from top left to bottom right\n\t\tconst gutterWidthWithoutPadding = layout.decorationsLeft + layout.decorationsWidth - layout.glyphMarginLeft - 2 * gutterViewPortPaddingLeft;\n\t\tconst gutterHeightWithoutPadding = layout.height - 2 * gutterViewPortPaddingTop;\n\t\tconst gutterViewPortWithStickyScroll = Rect.fromLeftTopWidthHeight(gutterViewPortPaddingLeft, gutterViewPortPaddingTop, gutterWidthWithoutPadding, gutterHeightWithoutPadding);\n\t\tconst gutterViewPortWithoutStickyScrollWithoutPaddingTop = gutterViewPortWithStickyScroll.withTop(this._stickyScrollHeight.read(reader));\n\t\tconst gutterViewPortWithoutStickyScroll = gutterViewPortWithStickyScroll.withTop(gutterViewPortWithoutStickyScrollWithoutPaddingTop.top + gutterViewPortPaddingTop);\n\n\t\t// The glyph margin area across all relevant lines\n\t\tconst verticalEditRange = s.lineOffsetRange.read(reader);\n\t\tconst gutterEditArea = Rect.fromRanges(OffsetRange.fromTo(gutterViewPortWithoutStickyScroll.left, gutterViewPortWithoutStickyScroll.right), verticalEditRange);\n\n\t\t// The gutter view container (pill)\n\t\tconst pillHeight = lineHeight;\n\t\tconst pillOffset = this._verticalOffset.read(reader);\n\t\tconst pillFullyDockedRect = gutterEditArea.withHeight(pillHeight).translateY(pillOffset);\n\t\tconst pillIsFullyDocked = gutterViewPortWithoutStickyScrollWithoutPaddingTop.containsRect(pillFullyDockedRect);\n\n\t\t// The icon which will be rendered in the pill\n\t\tconst customIcon = this._data.read(reader)?.customization?.icon;\n\t\tconst iconNoneDocked = customIcon\n\t\t\t? constObservable(customIcon)\n\t\t\t: this._tabAction.map(action => action === InlineEditTabAction.Accept ? Codicon.keyboardTab : Codicon.arrowRight);\n\t\tconst iconDocked = customIcon\n\t\t\t? constObservable(customIcon)\n\t\t\t: derived(this, reader => {\n\t\t\t\tif (this._isHoveredOverIconDebounced.read(reader) || this._isHoveredOverInlineEditDebounced.read(reader)) {\n\t\t\t\t\treturn Codicon.check;\n\t\t\t\t}\n\t\t\t\tif (this._tabAction.read(reader) === InlineEditTabAction.Accept) {\n\t\t\t\t\treturn Codicon.keyboardTab;\n\t\t\t\t}\n\t\t\t\tconst cursorLineNumber = this._editorObs.cursorLineNumber.read(reader) ?? 0;\n\t\t\t\tconst editStartLineNumber = s.range.read(reader).startLineNumber;\n\t\t\t\treturn cursorLineNumber <= editStartLineNumber ? Codicon.keyboardTabAbove : Codicon.keyboardTabBelow;\n\t\t\t});\n\n\t\tconst idealIconAreaWidth = 22;\n\t\tconst iconWidth = (pillRect: Rect) => {\n\t\t\tconst availableIconAreaWidth = this._availableWidthForIcon.read(undefined)(pillRect.bottom + this._editorObs.editor.getScrollTop()) - gutterViewPortPaddingLeft;\n\t\t\treturn Math.max(Math.min(availableIconAreaWidth, idealIconAreaWidth), CODICON_SIZE_PX);\n\t\t};\n\n\t\tif (pillIsFullyDocked) {\n\t\t\tconst pillRect = pillFullyDockedRect;\n\n\t\t\tlet widthUntilLineNumberEnd;\n\t\t\tif (layout.lineNumbersWidth === 0) {\n\t\t\t\twidthUntilLineNumberEnd = Math.min(Math.max(layout.lineNumbersLeft - gutterViewPortWithStickyScroll.left, 0), pillRect.width - idealIconAreaWidth);\n\t\t\t} else {\n\t\t\t\twidthUntilLineNumberEnd = Math.max(layout.lineNumbersLeft + layout.lineNumbersWidth - gutterViewPortWithStickyScroll.left, 0);\n\t\t\t}\n\n\t\t\tconst lineNumberRect = pillRect.withWidth(widthUntilLineNumberEnd);\n\t\t\tconst minimalIconWidthWithPadding = CODICON_SIZE_PX + CODICON_PADDING_PX;\n\t\t\tconst iconWidth = Math.min(pillRect.width - widthUntilLineNumberEnd, idealIconAreaWidth);\n\t\t\tconst iconRect = pillRect.withWidth(Math.max(iconWidth, minimalIconWidthWithPadding)).translateX(widthUntilLineNumberEnd);\n\t\t\tconst iconVisible = iconWidth >= minimalIconWidthWithPadding;\n\n\t\t\treturn {\n\t\t\t\tgutterEditArea,\n\t\t\t\ticon: iconDocked,\n\t\t\t\ticonDirection: 'right' as const,\n\t\t\t\ticonRect,\n\t\t\t\ticonVisible,\n\t\t\t\tpillRect,\n\t\t\t\tlineNumberRect,\n\t\t\t};\n\t\t}\n\n\t\tconst pillPartiallyDockedPossibleArea = gutterViewPortWithStickyScroll.intersect(gutterEditArea); // The area in which the pill could be partially docked\n\t\tconst pillIsPartiallyDocked = pillPartiallyDockedPossibleArea && pillPartiallyDockedPossibleArea.height >= pillHeight;\n\n\t\tif (pillIsPartiallyDocked) {\n\t\t\t// pillFullyDockedRect is outside viewport, move it into the viewport under sticky scroll as we prefer the pill to not be on top of the sticky scroll\n\t\t\t// then move it into the possible area which will only cause it to move if it has to be rendered on top of the sticky scroll\n\t\t\tconst pillRectMoved = pillFullyDockedRect.moveToBeContainedIn(gutterViewPortWithoutStickyScroll).moveToBeContainedIn(pillPartiallyDockedPossibleArea);\n\t\t\tconst pillRect = pillRectMoved.withWidth(iconWidth(pillRectMoved));\n\t\t\tconst iconRect = pillRect;\n\n\t\t\treturn {\n\t\t\t\tgutterEditArea,\n\t\t\t\ticon: iconDocked,\n\t\t\t\ticonDirection: 'right' as const,\n\t\t\t\ticonRect,\n\t\t\t\tpillRect,\n\t\t\t\ticonVisible: true,\n\t\t\t};\n\t\t}\n\n\t\t// pillFullyDockedRect is outside viewport, so move it into viewport\n\t\tconst pillRectMoved = pillFullyDockedRect.moveToBeContainedIn(gutterViewPortWithStickyScroll);\n\t\tconst pillRect = pillRectMoved.withWidth(iconWidth(pillRectMoved));\n\t\tconst iconRect = pillRect;\n\n\t\t// docked = pill was already in the viewport\n\t\tconst iconDirection = pillRect.top < pillFullyDockedRect.top ?\n\t\t\t'top' as const :\n\t\t\t'bottom' as const;\n\n\t\treturn {\n\t\t\tgutterEditArea,\n\t\t\ticon: iconNoneDocked,\n\t\t\ticonDirection,\n\t\t\ticonRect,\n\t\t\tpillRect,\n\t\t\ticonVisible: true,\n\t\t};\n\t});\n\n\n\tprotected readonly _iconRef = n.ref<HTMLDivElement>();\n\n\tpublic readonly isVisible = this._layout.map(l => !!l);\n\n\tprotected readonly _hoverVisible = observableValue(this, false);\n\tpublic readonly isHoverVisible: IObservable<boolean> = this._hoverVisible;\n\n\tprivate readonly _isHoveredOverIcon = observableValue(this, false);\n\tprivate readonly _isHoveredOverIconDebounced: IObservable<boolean> = debouncedObservable(this._isHoveredOverIcon, 100);\n\tpublic readonly isHoveredOverIcon: IObservable<boolean> = this._isHoveredOverIconDebounced;\n\n\tprotected _showHover(): void {\n\t\tif (this._hoverVisible.get()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst data = this._data.get();\n\t\tif (!data) {\n\t\t\tthrow new BugIndicatingError('Gutter indicator data not available');\n\t\t}\n\t\tconst disposableStore = new DisposableStore();\n\t\tconst content = disposableStore.add(this._instantiationService.createInstance(\n\t\t\tGutterIndicatorMenuContent,\n\t\t\tthis._editorObs,\n\t\t\tdata.gutterMenuData,\n\t\t\t(focusEditor) => {\n\t\t\t\tif (focusEditor) {\n\t\t\t\t\tthis._editorObs.editor.focus();\n\t\t\t\t}\n\t\t\t\th?.dispose();\n\t\t\t},\n\t\t).toDisposableLiveElement());\n\n\t\tconst focusTracker = disposableStore.add(trackFocus(content.element)); // TODO@benibenj should this be removed?\n\t\tdisposableStore.add(focusTracker.onDidBlur(() => this._focusIsInMenu.set(false, undefined)));\n\t\tdisposableStore.add(focusTracker.onDidFocus(() => this._focusIsInMenu.set(true, undefined)));\n\t\tdisposableStore.add(toDisposable(() => this._focusIsInMenu.set(false, undefined)));\n\n\t\tconst h = this._hoverService.showInstantHover({\n\t\t\ttarget: this._iconRef.element,\n\t\t\tcontent: content.element,\n\t\t}) as HoverWidget | undefined;\n\t\tif (h) {\n\t\t\tthis._hoverVisible.set(true, undefined);\n\t\t\tdisposableStore.add(this._editorObs.editor.onDidScrollChange(() => h.dispose()));\n\t\t\tdisposableStore.add(h.onDispose(() => {\n\t\t\t\tthis._hoverVisible.set(false, undefined);\n\t\t\t\tdisposableStore.dispose();\n\t\t\t}));\n\t\t} else {\n\t\t\tdisposableStore.dispose();\n\t\t}\n\t}\n\n\tprivate readonly _indicator = n.div({\n\t\tclass: 'inline-edits-view-gutter-indicator',\n\t\tstyle: {\n\t\t\tposition: 'absolute',\n\t\t\toverflow: 'visible',\n\t\t},\n\t}, mapOutFalsy(this._layout).map(layout => !layout ? [] : [\n\t\tn.div({\n\t\t\tstyle: {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tbackground: asCssVariable(inlineEditIndicatorBackground),\n\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t...rectToProps(reader => layout.read(reader).gutterEditArea),\n\t\t\t}\n\t\t}),\n\t\tn.div({\n\t\t\tclass: 'icon',\n\t\t\tref: this._iconRef,\n\n\t\t\ttabIndex: 0,\n\t\t\tonclick: () => {\n\t\t\t\tconst layout = this._layout.get();\n\t\t\t\tconst acceptOnClick = layout?.icon.get() === Codicon.check;\n\n\t\t\t\tconst data = this._data.get();\n\t\t\t\tif (!data) { throw new BugIndicatingError('Gutter indicator data not available'); }\n\n\t\t\t\tthis._editorObs.editor.focus();\n\t\t\t\tif (acceptOnClick) {\n\t\t\t\t\tdata.model.accept();\n\t\t\t\t} else {\n\t\t\t\t\tdata.model.jump();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonmouseenter: () => {\n\t\t\t\t// TODO show hover when hovering ghost text etc.\n\t\t\t\tthis._showHover();\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\tcursor: 'pointer',\n\t\t\t\tzIndex: '20',\n\t\t\t\tposition: 'absolute',\n\t\t\t\tbackgroundColor: this._gutterIndicatorStyles.map(v => v.background),\n\t\t\t\t// eslint-disable-next-line local/code-no-any-casts\n\t\t\t\t['--vscodeIconForeground' as any]: this._gutterIndicatorStyles.map(v => v.foreground),\n\t\t\t\tborder: this._gutterIndicatorStyles.map(v => `1px solid ${v.border}`),\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tjustifyContent: layout.map(l => l.iconDirection === 'bottom' ? 'flex-start' : 'flex-end'),\n\t\t\t\ttransition: this._modifierPressed.map(m => m ? '' : 'background-color 0.2s ease-in-out, width 0.2s ease-in-out'),\n\t\t\t\t...rectToProps(reader => layout.read(reader).pillRect),\n\t\t\t}\n\t\t}, [\n\t\t\tn.div({\n\t\t\t\tclassName: 'line-number',\n\t\t\t\tstyle: {\n\t\t\t\t\tlineHeight: layout.map(l => l.lineNumberRect ? l.lineNumberRect.height : 0),\n\t\t\t\t\tdisplay: layout.map(l => l.lineNumberRect ? 'flex' : 'none'),\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tjustifyContent: 'flex-end',\n\t\t\t\t\twidth: layout.map(l => l.lineNumberRect ? l.lineNumberRect.width : 0),\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolor: this._gutterIndicatorStyles.map(v => v.foreground),\n\t\t\t\t}\n\t\t\t},\n\t\t\t\tthis._lineNumberToRender\n\t\t\t),\n\t\t\tn.div({\n\t\t\t\tstyle: {\n\t\t\t\t\ttransform: layout.map(l => `rotate(${getRotationFromDirection(l.iconDirection)}deg)`),\n\t\t\t\t\ttransition: 'rotate 0.2s ease-in-out, opacity 0.2s ease-in-out',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\topacity: layout.map(l => l.iconVisible ? '1' : '0'),\n\t\t\t\t\tmarginRight: layout.map(l => l.pillRect.width - l.iconRect.width - (l.lineNumberRect?.width ?? 0)),\n\t\t\t\t\twidth: layout.map(l => l.iconRect.width),\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t\tright: layout.map(l => l.iconDirection === 'top' ? '1px' : '0'),\n\t\t\t\t}\n\t\t\t}, [\n\t\t\t\tlayout.map((l, reader) => withStyles(renderIcon(l.icon.read(reader)), { fontSize: toPx(Math.min(l.iconRect.width - CODICON_PADDING_PX, CODICON_SIZE_PX)) })),\n\t\t\t])\n\t\t]),\n\t]));\n}\n\nfunction getRotationFromDirection(direction: 'top' | 'bottom' | 'right'): number {\n\tswitch (direction) {\n\t\tcase 'top': return 90;\n\t\tcase 'bottom': return -90;\n\t\tcase 'right': return 0;\n\t}\n}\n\nfunction withStyles<T extends HTMLElement>(element: T, styles: { [key: string]: string }): T {\n\tfor (const key in styles) {\n\t\t// eslint-disable-next-line local/code-no-any-casts\n\t\telement.style[key as any] = styles[key];\n\t}\n\treturn element;\n}\n\nfunction toPx(n: number): string {\n\treturn `${n}px`;\n}\n"]}
|
|
@@ -109,10 +109,10 @@ let InlineEditsWordReplacementView = class InlineEditsWordReplacementView extend
|
|
|
109
109
|
const count = altCount.read(reader);
|
|
110
110
|
const active = altModifierActive.read(reader);
|
|
111
111
|
const occurrencesLabel = count !== undefined ? count === 1 ?
|
|
112
|
-
localize(
|
|
113
|
-
localize(
|
|
112
|
+
localize(1232, "{0} 1 occurrence", label) :
|
|
113
|
+
localize(1233, "{0} {1} occurrences", label, count)
|
|
114
114
|
: label;
|
|
115
|
-
const keybindingTooltip = localize(
|
|
115
|
+
const keybindingTooltip = localize(1234, "{0} show occurrences", '[shift]');
|
|
116
116
|
alternativeAction = {
|
|
117
117
|
label: count !== undefined ? (active ? occurrencesLabel : label) : label,
|
|
118
118
|
tooltip: occurrencesLabel ? `${occurrencesLabel}\n${keybindingTooltip}` : undefined,
|