monaco-editor-core 0.56.0-dev-20251218 → 0.56.0-dev-20251220
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.messages.cs.js +1 -1
- package/esm/nls.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.pl.js +1 -1
- package/esm/nls.messages.pt-br.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.tr.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/common/fuzzyScorer.js +3 -2
- package/esm/vs/base/common/fuzzyScorer.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +3 -3
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +4 -15
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +13 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +5 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +6 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +6 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +9 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +14 -9
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +9 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +5 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +3 -37
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputController.js +1 -0
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js.map +1 -1
- package/esm/vs/platform/quickinput/common/quickInput.js.map +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 } 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 _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) {\n\t\tthis._cancellationTokenSource = new CancellationTokenSource();\n\t\tthis._promise = rawRename(languageFeaturesService.renameProvider, textModel, position, newName, this._cancellationTokenSource.token);\n\t}\n\n\tpublic cancel(): void {\n\t\tthis._cancellationTokenSource.cancel();\n\t}\n\n\tpublic async getCount(): Promise<number> {\n\t\tconst result = await this.getResult();\n\t\tif (result === undefined) {\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._result === undefined) {\n\t\t\tthis._result = await this._promise;\n\t\t}\n\t\tif (this._result.rejectReason) {\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: { id: string; runnable: RenameSymbolRunnable } | 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\tconst self = this;\n\t\tthis._register(CommandsRegistry.registerCommand(renameSymbolCommandId, async (_: ServicesAccessor, textModel: ITextModel, position: Position, newName: string, source: TextModelEditSource, id: string) => {\n\t\t\tif (self._renameRunnable === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet workspaceEdit: WorkspaceEdit | undefined;\n\t\t\tif (self._renameRunnable.id !== id) {\n\t\t\t\tself._renameRunnable.runnable.cancel();\n\t\t\t\tself._renameRunnable = undefined;\n\t\t\t\tconst runnable = new RenameSymbolRunnable(self._languageFeaturesService, textModel, position, newName);\n\t\t\t\tworkspaceEdit = await runnable.getWorkspaceEdit();\n\t\t\t} else {\n\t\t\t\tworkspaceEdit = await self._renameRunnable.runnable.getWorkspaceEdit();\n\t\t\t\tself._renameRunnable = undefined;\n\t\t\t}\n\t\t\tif (workspaceEdit === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbulkEditService.apply(workspaceEdit, { reason: source });\n\t\t}));\n\t}\n\n\tpublic async proposeRenameRefactoring(textModel: ITextModel, suggestItem: InlineSuggestionItem): Promise<InlineSuggestionItem> {\n\t\tif (!suggestItem.supportsRename || suggestItem.action?.kind !== 'edit') {\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 = check === RenameKind.yes || check === RenameKind.maybe;\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\tconst id = suggestItem.identity.id;\n\t\tif (this._renameRunnable !== undefined) {\n\t\t\tthis._renameRunnable.runnable.cancel();\n\t\t\tthis._renameRunnable = undefined;\n\t\t}\n\t\tconst runnable = new RenameSymbolRunnable(this._languageFeaturesService, textModel, position, newName);\n\t\tthis._renameRunnable = { id, runnable };\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: [textModel, position, newName, source, id],\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: runnable.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\t// const result = await prepareRename(this._languageFeaturesService.renameProvider, textModel, position, CancellationToken.None);\n\t\t// if (result === undefined || result.rejectReason) {\n\t\t// \treturn RenameKind.no;\n\t\t// }\n\t\t// return oldName === result.text ? RenameKind.yes : RenameKind.no;\n\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"]}
|
|
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 _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) {\n\t\tthis._cancellationTokenSource = new CancellationTokenSource();\n\t\tthis._promise = rawRename(languageFeaturesService.renameProvider, textModel, position, newName, this._cancellationTokenSource.token);\n\t}\n\n\tpublic cancel(): void {\n\t\tthis._cancellationTokenSource.cancel();\n\t}\n\n\tpublic async getCount(): Promise<number> {\n\t\tconst result = await this.getResult();\n\t\tif (result === undefined) {\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._result === undefined) {\n\t\t\tthis._result = await this._promise;\n\t\t}\n\t\tif (this._result.rejectReason) {\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: { id: string; runnable: RenameSymbolRunnable } | 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\tconst self = this;\n\t\tthis._register(CommandsRegistry.registerCommand(renameSymbolCommandId, async (_: ServicesAccessor, textModel: ITextModel, position: Position, newName: string, source: TextModelEditSource, id: string) => {\n\t\t\tif (self._renameRunnable === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet workspaceEdit: WorkspaceEdit | undefined;\n\t\t\tif (self._renameRunnable.id !== id) {\n\t\t\t\tself._renameRunnable.runnable.cancel();\n\t\t\t\tself._renameRunnable = undefined;\n\t\t\t\tconst runnable = new RenameSymbolRunnable(self._languageFeaturesService, textModel, position, newName);\n\t\t\t\tworkspaceEdit = await runnable.getWorkspaceEdit();\n\t\t\t} else {\n\t\t\t\tworkspaceEdit = await self._renameRunnable.runnable.getWorkspaceEdit();\n\t\t\t\tself._renameRunnable = undefined;\n\t\t\t}\n\t\t\tif (workspaceEdit === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbulkEditService.apply(workspaceEdit, { reason: source });\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 = check === RenameKind.yes || check === RenameKind.maybe;\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\tconst id = suggestItem.identity.id;\n\t\tif (this._renameRunnable !== undefined) {\n\t\t\tthis._renameRunnable.runnable.cancel();\n\t\t\tthis._renameRunnable = undefined;\n\t\t}\n\t\tconst runnable = new RenameSymbolRunnable(this._languageFeaturesService, textModel, position, newName);\n\t\tthis._renameRunnable = { id, runnable };\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: [textModel, position, newName, source, id],\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: runnable.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\t// const result = await prepareRename(this._languageFeaturesService.renameProvider, textModel, position, CancellationToken.None);\n\t\t// if (result === undefined || result.rejectReason) {\n\t\t// \treturn RenameKind.no;\n\t\t// }\n\t\t// return oldName === result.text ? RenameKind.yes : RenameKind.no;\n\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"]}
|
|
@@ -235,17 +235,17 @@ let InlineEditsGutterIndicator = class InlineEditsGutterIndicator extends Dispos
|
|
|
235
235
|
};
|
|
236
236
|
if (pillIsFullyDocked) {
|
|
237
237
|
const pillRect = pillFullyDockedRect;
|
|
238
|
-
let
|
|
238
|
+
let widthUntilLineNumberEnd;
|
|
239
239
|
if (layout.lineNumbersWidth === 0) {
|
|
240
|
-
|
|
240
|
+
widthUntilLineNumberEnd = Math.min(Math.max(layout.lineNumbersLeft - gutterViewPortWithStickyScroll.left, 0), pillRect.width - idealIconAreaWidth);
|
|
241
241
|
}
|
|
242
242
|
else {
|
|
243
|
-
|
|
243
|
+
widthUntilLineNumberEnd = Math.max(layout.lineNumbersLeft + layout.lineNumbersWidth - gutterViewPortWithStickyScroll.left, 0);
|
|
244
244
|
}
|
|
245
|
-
const lineNumberRect = pillRect.withWidth(
|
|
245
|
+
const lineNumberRect = pillRect.withWidth(widthUntilLineNumberEnd);
|
|
246
246
|
const minimalIconWidthWithPadding = CODICON_SIZE_PX + CODICON_PADDING_PX;
|
|
247
|
-
const iconWidth = Math.min(
|
|
248
|
-
const iconRect = pillRect.withWidth(Math.max(iconWidth, minimalIconWidthWithPadding)).translateX(
|
|
247
|
+
const iconWidth = Math.min(pillRect.width - widthUntilLineNumberEnd, idealIconAreaWidth);
|
|
248
|
+
const iconRect = pillRect.withWidth(Math.max(iconWidth, minimalIconWidthWithPadding)).translateX(widthUntilLineNumberEnd);
|
|
249
249
|
const iconVisible = iconWidth >= minimalIconWidthWithPadding;
|
|
250
250
|
return {
|
|
251
251
|
gutterEditArea,
|
|
@@ -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';\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) { }\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 iconNoneDocked = this._tabAction.map(action => action === InlineEditTabAction.Accept ? Codicon.keyboardTab : Codicon.arrowRight);\n\t\tconst iconDocked = derived(this, reader => {\n\t\t\tif (this._isHoveredOverIconDebounced.read(reader) || this._isHoveredOverInlineEditDebounced.read(reader)) {\n\t\t\t\treturn Codicon.check;\n\t\t\t}\n\t\t\tif (this._tabAction.read(reader) === InlineEditTabAction.Accept) {\n\t\t\t\treturn Codicon.keyboardTab;\n\t\t\t}\n\t\t\tconst cursorLineNumber = this._editorObs.cursorLineNumber.read(reader) ?? 0;\n\t\t\tconst editStartLineNumber = s.range.read(reader).startLineNumber;\n\t\t\treturn cursorLineNumber <= editStartLineNumber ? Codicon.keyboardTabAbove : Codicon.keyboardTabBelow;\n\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 lineNumberWidth;\n\t\t\tif (layout.lineNumbersWidth === 0) {\n\t\t\t\tlineNumberWidth = Math.min(Math.max(layout.lineNumbersLeft - gutterViewPortWithStickyScroll.left, 0), pillRect.width - idealIconAreaWidth);\n\t\t\t} else {\n\t\t\t\tlineNumberWidth = Math.max(layout.lineNumbersLeft + layout.lineNumbersWidth - gutterViewPortWithStickyScroll.left, 0);\n\t\t\t}\n\n\t\t\tconst lineNumberRect = pillRect.withWidth(lineNumberWidth);\n\t\t\tconst minimalIconWidthWithPadding = CODICON_SIZE_PX + CODICON_PADDING_PX;\n\t\t\tconst iconWidth = Math.min(layout.decorationsWidth, idealIconAreaWidth);\n\t\t\tconst iconRect = pillRect.withWidth(Math.max(iconWidth, minimalIconWidthWithPadding)).translateX(lineNumberWidth);\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\tprivate readonly _iconRef = n.ref<HTMLDivElement>();\n\n\tpublic readonly isVisible = this._layout.map(l => !!l);\n\n\tprivate 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\tprivate _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';\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) { }\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 iconNoneDocked = this._tabAction.map(action => action === InlineEditTabAction.Accept ? Codicon.keyboardTab : Codicon.arrowRight);\n\t\tconst iconDocked = derived(this, reader => {\n\t\t\tif (this._isHoveredOverIconDebounced.read(reader) || this._isHoveredOverInlineEditDebounced.read(reader)) {\n\t\t\t\treturn Codicon.check;\n\t\t\t}\n\t\t\tif (this._tabAction.read(reader) === InlineEditTabAction.Accept) {\n\t\t\t\treturn Codicon.keyboardTab;\n\t\t\t}\n\t\t\tconst cursorLineNumber = this._editorObs.cursorLineNumber.read(reader) ?? 0;\n\t\t\tconst editStartLineNumber = s.range.read(reader).startLineNumber;\n\t\t\treturn cursorLineNumber <= editStartLineNumber ? Codicon.keyboardTabAbove : Codicon.keyboardTabBelow;\n\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\tprivate readonly _iconRef = n.ref<HTMLDivElement>();\n\n\tpublic readonly isVisible = this._layout.map(l => !!l);\n\n\tprivate 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\tprivate _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"]}
|
package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js
CHANGED
|
@@ -14,7 +14,7 @@ export class ModelPerInlineEdit {
|
|
|
14
14
|
this._model = _model;
|
|
15
15
|
this.inlineEdit = inlineEdit;
|
|
16
16
|
this.tabAction = tabAction;
|
|
17
|
-
this.
|
|
17
|
+
this.editorType = this._model.editorType;
|
|
18
18
|
this.displayLocation = this.inlineEdit.inlineCompletion.hint;
|
|
19
19
|
this.inViewPort = derived(this, reader => isSuggestionInViewport(this._model.editor, this.inlineEdit.inlineCompletion, reader));
|
|
20
20
|
this.onDidAccept = this._model.onDidAccept;
|
package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,OAAO,EAAe,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAA0B,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,OAAO,EAAe,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAA0B,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAMvG;;;EAGE;AACF,MAAM,OAAO,kBAAkB;IAY9B,YACkB,MAA8B,EACtC,UAAiC,EACjC,SAA2C;QAFnC,WAAM,GAAN,MAAM,CAAwB;QACtC,eAAU,GAAV,UAAU,CAAuB;QACjC,cAAS,GAAT,SAAS,CAAkC;QAEpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAEzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAE7D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;QAChI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,iBAA2B;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAED,8BAA8B,CAAC,QAAkC,EAAE,QAAkC;QACpG,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,WAAW,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD","file":"inlineEditsModel.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Event } from '../../../../../../base/common/event.js';\nimport { derived, IObservable } from '../../../../../../base/common/observable.js';\nimport { setTimeout0 } from '../../../../../../base/common/platform.js';\nimport { InlineCompletionsModel, isSuggestionInViewport } from '../../model/inlineCompletionsModel.js';\nimport { InlineSuggestHint } from '../../model/inlineSuggestionItem.js';\nimport { InlineCompletionEditorType } from '../../model/provideInlineCompletions.js';\nimport { InlineCompletionViewData, InlineCompletionViewKind, InlineEditTabAction } from './inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from './inlineEditWithChanges.js';\n\n/**\n * Warning: This is not per inline edit id and gets created often.\n * @deprecated TODO@hediet remove\n*/\nexport class ModelPerInlineEdit {\n\n\treadonly editorType: InlineCompletionEditorType;\n\n\treadonly displayLocation: InlineSuggestHint | undefined;\n\n\n\t/** Determines if the inline suggestion is fully in the view port */\n\treadonly inViewPort: IObservable<boolean>;\n\n\treadonly onDidAccept: Event<void>;\n\n\tconstructor(\n\t\tprivate readonly _model: InlineCompletionsModel,\n\t\treadonly inlineEdit: InlineEditWithChanges,\n\t\treadonly tabAction: IObservable<InlineEditTabAction>,\n\t) {\n\t\tthis.editorType = this._model.editorType;\n\n\t\tthis.displayLocation = this.inlineEdit.inlineCompletion.hint;\n\n\t\tthis.inViewPort = derived(this, reader => isSuggestionInViewport(this._model.editor, this.inlineEdit.inlineCompletion, reader));\n\t\tthis.onDidAccept = this._model.onDidAccept;\n\t}\n\n\taccept(alternativeAction?: boolean) {\n\t\tthis._model.accept(undefined, alternativeAction);\n\t}\n\n\thandleInlineEditShownNextFrame(viewKind: InlineCompletionViewKind, viewData: InlineCompletionViewData) {\n\t\tconst item = this.inlineEdit.inlineCompletion;\n\t\tconst timeWhenShown = Date.now();\n\t\titem.addRef();\n\t\tsetTimeout0(() => {\n\t\t\tthis._model.handleInlineSuggestionShown(item, viewKind, viewData, timeWhenShown);\n\t\t\titem.removeRef();\n\t\t});\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Event } from '../../../../../../base/common/event.js';\nimport { derived, IObservable } from '../../../../../../base/common/observable.js';\nimport { setTimeout0 } from '../../../../../../base/common/platform.js';\nimport { InlineCompletionsModel, isSuggestionInViewport } from '../../model/inlineCompletionsModel.js';\nimport { InlineSuggestHint } from '../../model/inlineSuggestionItem.js';\nimport { InlineCompletionEditorType } from '../../model/provideInlineCompletions.js';\nimport { InlineCompletionViewData, InlineCompletionViewKind, InlineEditTabAction } from './inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from './inlineEditWithChanges.js';\n\n/**\n * Warning: This is not per inline edit id and gets created often.\n * @deprecated TODO@hediet remove\n*/\nexport class ModelPerInlineEdit {\n\n\treadonly editorType: InlineCompletionEditorType;\n\n\treadonly displayLocation: InlineSuggestHint | undefined;\n\n\n\t/** Determines if the inline suggestion is fully in the view port */\n\treadonly inViewPort: IObservable<boolean>;\n\n\treadonly onDidAccept: Event<void>;\n\n\tconstructor(\n\t\tprivate readonly _model: InlineCompletionsModel,\n\t\treadonly inlineEdit: InlineEditWithChanges,\n\t\treadonly tabAction: IObservable<InlineEditTabAction>,\n\t) {\n\t\tthis.editorType = this._model.editorType;\n\n\t\tthis.displayLocation = this.inlineEdit.inlineCompletion.hint;\n\n\t\tthis.inViewPort = derived(this, reader => isSuggestionInViewport(this._model.editor, this.inlineEdit.inlineCompletion, reader));\n\t\tthis.onDidAccept = this._model.onDidAccept;\n\t}\n\n\taccept(alternativeAction?: boolean) {\n\t\tthis._model.accept(undefined, alternativeAction);\n\t}\n\n\thandleInlineEditShownNextFrame(viewKind: InlineCompletionViewKind, viewData: InlineCompletionViewData) {\n\t\tconst item = this.inlineEdit.inlineCompletion;\n\t\tconst timeWhenShown = Date.now();\n\t\titem.addRef();\n\t\tsetTimeout0(() => {\n\t\t\tthis._model.handleInlineSuggestionShown(item, viewKind, viewData, timeWhenShown);\n\t\t\titem.removeRef();\n\t\t});\n\t}\n}\n"]}
|
|
@@ -43,6 +43,7 @@ import { JumpToView } from './inlineEditsViews/jumpToView.js';
|
|
|
43
43
|
import { StringEdit } from '../../../../../common/core/edits/stringEdit.js';
|
|
44
44
|
import { OffsetRange } from '../../../../../common/core/ranges/offsetRange.js';
|
|
45
45
|
import { getPositionOffsetTransformerFromTextModel } from '../../../../../common/core/text/getPositionOffsetTransformerFromTextModel.js';
|
|
46
|
+
import { InlineCompletionEditorType } from '../../model/provideInlineCompletions.js';
|
|
46
47
|
let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposable {
|
|
47
48
|
constructor(_editor, _model, _simpleModel, _inlineSuggestInfo, _showCollapsed, _instantiationService) {
|
|
48
49
|
super();
|
|
@@ -126,7 +127,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
126
127
|
edit: inlineEdit,
|
|
127
128
|
newText: newText.getValue(),
|
|
128
129
|
newTextLineCount: inlineEdit.modifiedLineRange.length,
|
|
129
|
-
|
|
130
|
+
editorType: model.editorType,
|
|
130
131
|
longDistanceHint,
|
|
131
132
|
nextCursorPosition: nextCursorPosition,
|
|
132
133
|
};
|
|
@@ -153,21 +154,21 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
153
154
|
this._previewTextModel = this._register(this._instantiationService.createInstance(TextModel, '', this._editor.getModel().getLanguageId(), { ...TextModel.DEFAULT_CREATION_OPTIONS, bracketPairColorizationOptions: { enabled: true, independentColorPoolPerBracketType: false } }, null));
|
|
154
155
|
this._sideBySide = this._register(this._instantiationService.createInstance(InlineEditsSideBySideView, this._editor, this._model.map(m => m?.inlineEdit), this._previewTextModel, this._uiState.map(s => s && s.state?.kind === InlineCompletionViewKind.SideBySide ? ({
|
|
155
156
|
newTextLineCount: s.newTextLineCount,
|
|
156
|
-
|
|
157
|
+
editorType: s.editorType,
|
|
157
158
|
}) : undefined), this._tabAction));
|
|
158
159
|
this._deletion = this._register(this._instantiationService.createInstance(InlineEditsDeletionView, this._editor, this._model.map(m => m?.inlineEdit), this._uiState.map(s => s && s.state?.kind === InlineCompletionViewKind.Deletion ? ({
|
|
159
160
|
originalRange: s.state.originalRange,
|
|
160
161
|
deletions: s.state.deletions,
|
|
161
|
-
|
|
162
|
+
editorType: s.editorType,
|
|
162
163
|
}) : undefined), this._tabAction));
|
|
163
164
|
this._insertion = this._register(this._instantiationService.createInstance(InlineEditsInsertionView, this._editor, this._uiState.map(s => s && s.state?.kind === InlineCompletionViewKind.InsertionMultiLine ? ({
|
|
164
165
|
lineNumber: s.state.lineNumber,
|
|
165
166
|
startColumn: s.state.column,
|
|
166
167
|
text: s.state.text,
|
|
167
|
-
|
|
168
|
+
editorType: s.editorType,
|
|
168
169
|
}) : undefined), this._tabAction));
|
|
169
170
|
this._inlineCollapsedView = this._register(this._instantiationService.createInstance(InlineEditsCollapsedView, this._editor, this._model.map((m, reader) => this._uiState.read(reader)?.state?.kind === InlineCompletionViewKind.Collapsed ? m?.inlineEdit : undefined)));
|
|
170
|
-
this._customView = this._register(this._instantiationService.createInstance(InlineEditsCustomView, this._editor, this._model.map((m, reader) => this._uiState.read(reader)?.state?.kind === InlineCompletionViewKind.Custom ? m?.displayLocation : undefined), this._tabAction));
|
|
171
|
+
this._customView = this._register(this._instantiationService.createInstance(InlineEditsCustomView, this._editor, this._model.map((m, reader) => this._uiState.read(reader)?.state?.kind === InlineCompletionViewKind.Custom ? m?.displayLocation : undefined), this._tabAction, this._uiState.map(s => s?.editorType ?? InlineCompletionEditorType.TextEditor)));
|
|
171
172
|
this._showLongDistanceHint = this._editorObs.getOption(71 /* EditorOption.inlineSuggest */).map(this, s => s.edits.showLongDistanceHint);
|
|
172
173
|
this._longDistanceHint = derived(this, reader => {
|
|
173
174
|
if (!this._showLongDistanceHint.read(reader)) {
|
|
@@ -178,6 +179,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
178
179
|
newTextLineCount: s.newTextLineCount,
|
|
179
180
|
edit: s.edit,
|
|
180
181
|
diff: s.diff,
|
|
182
|
+
editorType: s.editorType,
|
|
181
183
|
model: this._simpleModel.read(reader),
|
|
182
184
|
inlineSuggestInfo: this._inlineSuggestInfo.read(reader),
|
|
183
185
|
nextCursorPosition: s.nextCursorPosition,
|
|
@@ -196,7 +198,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
196
198
|
diff: e.diff,
|
|
197
199
|
mode: e.state.kind,
|
|
198
200
|
modifiedCodeEditor: this._sideBySide.previewEditor,
|
|
199
|
-
|
|
201
|
+
editorType: e.editorType,
|
|
200
202
|
};
|
|
201
203
|
});
|
|
202
204
|
this._inlineDiffView = this._register(new OriginalEditorInlineDiffView(this._editor, this._inlineDiffViewState, this._previewTextModel));
|
|
@@ -211,7 +213,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
211
213
|
equalsFn: equals.arrayC(equals.thisC())
|
|
212
214
|
}, reader => {
|
|
213
215
|
const s = this._uiState.read(reader);
|
|
214
|
-
return s?.state?.kind === InlineCompletionViewKind.WordReplacements ? s.state.replacements.map(replacement => new WordReplacementsViewData(replacement, s.state?.alternativeAction)) : [];
|
|
216
|
+
return s?.state?.kind === InlineCompletionViewKind.WordReplacements ? s.state.replacements.map(replacement => new WordReplacementsViewData(replacement, s.editorType, s.state?.alternativeAction)) : [];
|
|
215
217
|
});
|
|
216
218
|
this._wordReplacementViews = mapObservableArrayCached(this, wordReplacements, (viewData, store) => {
|
|
217
219
|
return store.add(this._instantiationService.createInstance(InlineEditsWordReplacementView, this._editorObs, viewData, this._tabAction));
|
|
@@ -221,7 +223,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
221
223
|
modifiedRange: s.state.modifiedRange,
|
|
222
224
|
modifiedLines: s.state.modifiedLines,
|
|
223
225
|
replacements: s.state.replacements,
|
|
224
|
-
}) : undefined), this._uiState.map(s => s?.
|
|
226
|
+
}) : undefined), this._uiState.map(s => s?.editorType ?? InlineCompletionEditorType.TextEditor), this._tabAction));
|
|
225
227
|
this._useCodeShifting = this._editorObs.getOption(71 /* EditorOption.inlineSuggest */).map(s => s.edits.allowCodeShifting);
|
|
226
228
|
this._renderSideBySide = this._editorObs.getOption(71 /* EditorOption.inlineSuggest */).map(s => s.edits.renderSideBySide);
|
|
227
229
|
this._register(autorun((reader) => {
|
|
@@ -313,7 +315,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
313
315
|
const numModifiedLines = inlineEdit.modifiedLineRange.length;
|
|
314
316
|
const inner = diff.flatMap(d => d.innerChanges ?? []);
|
|
315
317
|
const isSingleInnerEdit = inner.length === 1;
|
|
316
|
-
if (
|
|
318
|
+
if (model.editorType !== InlineCompletionEditorType.DiffEditor) {
|
|
317
319
|
if (isSingleInnerEdit
|
|
318
320
|
&& this._useCodeShifting.read(reader) !== 'never'
|
|
319
321
|
&& isSingleLineInsertion(diff)) {
|
|
@@ -345,7 +347,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
345
347
|
}
|
|
346
348
|
}
|
|
347
349
|
if (numOriginalLines > 0 && numModifiedLines > 0) {
|
|
348
|
-
if (numOriginalLines === 1 && numModifiedLines === 1 &&
|
|
350
|
+
if (numOriginalLines === 1 && numModifiedLines === 1 && model.editorType !== InlineCompletionEditorType.DiffEditor /* prefer side by side in diff editor */) {
|
|
349
351
|
return InlineCompletionViewKind.LineReplacement;
|
|
350
352
|
}
|
|
351
353
|
if (this._renderSideBySide.read(reader) !== 'never' && InlineEditsSideBySideView.fitsInsideViewport(this._editor, this._previewTextModel, inlineEdit, reader)) {
|
|
@@ -353,7 +355,7 @@ let InlineEditsView = InlineEditsView_1 = class InlineEditsView extends Disposab
|
|
|
353
355
|
}
|
|
354
356
|
return InlineCompletionViewKind.LineReplacement;
|
|
355
357
|
}
|
|
356
|
-
if (model.
|
|
358
|
+
if (model.editorType === InlineCompletionEditorType.DiffEditor) {
|
|
357
359
|
if (isDeletion(inner, inlineEdit, newText)) {
|
|
358
360
|
return InlineCompletionViewKind.Deletion;
|
|
359
361
|
}
|