monaco-editor-core 0.55.0-dev-20251012 → 0.55.0-dev-20251014
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/countBadge/countBadge.css +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +2 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +2 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +3 -3
- package/monaco.d.ts +3 -3
- package/package.json +2 -2
- package/version.txt +1 -1
package/esm/nls.messages.de.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
package/esm/nls.messages.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
package/esm/nls.messages.fr.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
package/esm/nls.messages.it.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
package/esm/nls.messages.ja.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
package/esm/nls.messages.ko.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
package/esm/nls.messages.ru.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!-----------------------------------------------------------
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Version: 0.55.0-dev-
|
|
3
|
+
* Version: 0.55.0-dev-20251014(d3649a2a6b3e27d6e4a2576e451df2a51f7cb948)
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/microsoft/vscode/blob/main/LICENSE.txt
|
|
6
6
|
*-----------------------------------------------------------*/
|
|
Binary file
|
|
@@ -33,7 +33,7 @@ import { PlaceholderViewZone, ViewZoneOverlayWidget, applyObservableDecorations,
|
|
|
33
33
|
*/
|
|
34
34
|
let HideUnchangedRegionsFeature = class HideUnchangedRegionsFeature extends Disposable {
|
|
35
35
|
static { HideUnchangedRegionsFeature_1 = this; }
|
|
36
|
-
static { this._breadcrumbsSourceFactory = observableValue(
|
|
36
|
+
static { this._breadcrumbsSourceFactory = observableValue(this, () => ({
|
|
37
37
|
dispose() {
|
|
38
38
|
},
|
|
39
39
|
getBreadcrumbItems(startRange, reader) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.ts"],"names":[],"mappings":"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","file":"hideUnchangedRegionsFeature.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 { $, addDisposableListener, getWindow, h, reset } from '../../../../../base/browser/dom.js';\nimport { renderIcon, renderLabelWithIcons } from '../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { MarkdownString } from '../../../../../base/common/htmlContent.js';\nimport { Disposable, IDisposable } from '../../../../../base/common/lifecycle.js';\nimport { IObservable, IReader, autorun, derived, derivedDisposable, observableValue, transaction } from '../../../../../base/common/observable.js';\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { isDefined } from '../../../../../base/common/types.js';\nimport { localize } from '../../../../../nls.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../common/core/ranges/lineRange.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { CursorChangeReason } from '../../../../common/cursorEvents.js';\nimport { SymbolKind, SymbolKinds } from '../../../../common/languages.js';\nimport { IModelDecorationOptions, IModelDeltaDecoration, ITextModel } from '../../../../common/model.js';\nimport { ICodeEditor } from '../../../editorBrowser.js';\nimport { observableCodeEditor } from '../../../observableCodeEditor.js';\nimport { DiffEditorEditors } from '../components/diffEditorEditors.js';\nimport { DiffEditorOptions } from '../diffEditorOptions.js';\nimport { DiffEditorViewModel, RevealPreference, UnchangedRegion } from '../diffEditorViewModel.js';\nimport { IObservableViewZone, PlaceholderViewZone, ViewZoneOverlayWidget, applyObservableDecorations, applyStyle } from '../utils.js';\n\n/**\n * Make sure to add the view zones to the editor!\n */\nexport class HideUnchangedRegionsFeature extends Disposable {\n\tprivate static readonly _breadcrumbsSourceFactory = observableValue<((textModel: ITextModel, instantiationService: IInstantiationService) => IDiffEditorBreadcrumbsSource)>(\n\t\tHideUnchangedRegionsFeature, () => ({\n\t\t\tdispose() {\n\t\t\t},\n\t\t\tgetBreadcrumbItems(startRange, reader) {\n\t\t\t\treturn [];\n\t\t\t},\n\t\t}));\n\tpublic static setBreadcrumbsSourceFactory(factory: (textModel: ITextModel, instantiationService: IInstantiationService) => IDiffEditorBreadcrumbsSource) {\n\t\tthis._breadcrumbsSourceFactory.set(factory, undefined);\n\t}\n\n\tprivate readonly _modifiedOutlineSource = derivedDisposable(this, (reader) => {\n\t\tconst m = this._editors.modifiedModel.read(reader);\n\t\tconst factory = HideUnchangedRegionsFeature._breadcrumbsSourceFactory.read(reader);\n\t\treturn (!m || !factory) ? undefined : factory(m, this._instantiationService);\n\t});\n\n\tpublic readonly viewZones: IObservable<{\n\t\torigViewZones: IObservableViewZone[];\n\t\tmodViewZones: IObservableViewZone[];\n\t}>;\n\n\tprivate _isUpdatingHiddenAreas = false;\n\tpublic get isUpdatingHiddenAreas() { return this._isUpdatingHiddenAreas; }\n\n\tconstructor(\n\t\tprivate readonly _editors: DiffEditorEditors,\n\t\tprivate readonly _diffModel: IObservable<DiffEditorViewModel | undefined>,\n\t\tprivate readonly _options: DiffEditorOptions,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(this._editors.original.onDidChangeCursorPosition(e => {\n\t\t\tif (e.reason === CursorChangeReason.ContentFlush) { return; }\n\t\t\tconst m = this._diffModel.get();\n\t\t\ttransaction(tx => {\n\t\t\t\tfor (const s of this._editors.original.getSelections() || []) {\n\t\t\t\t\tm?.ensureOriginalLineIsVisible(s.getStartPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t\tm?.ensureOriginalLineIsVisible(s.getEndPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t}\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this._editors.modified.onDidChangeCursorPosition(e => {\n\t\t\tif (e.reason === CursorChangeReason.ContentFlush) { return; }\n\t\t\tconst m = this._diffModel.get();\n\t\t\ttransaction(tx => {\n\t\t\t\tfor (const s of this._editors.modified.getSelections() || []) {\n\t\t\t\t\tm?.ensureModifiedLineIsVisible(s.getStartPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t\tm?.ensureModifiedLineIsVisible(s.getEndPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t}\n\t\t\t});\n\t\t}));\n\n\t\tconst unchangedRegions = this._diffModel.map((m, reader) => {\n\t\t\tconst regions = m?.unchangedRegions.read(reader) ?? [];\n\t\t\tif (regions.length === 1 && regions[0].modifiedLineNumber === 1 && regions[0].lineCount === this._editors.modifiedModel.read(reader)?.getLineCount()) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn regions;\n\t\t});\n\n\t\tthis.viewZones = derived(this, (reader) => {\n\t\t\t/** @description view Zones */\n\t\t\tconst modifiedOutlineSource = this._modifiedOutlineSource.read(reader);\n\t\t\tif (!modifiedOutlineSource) { return { origViewZones: [], modViewZones: [] }; }\n\n\t\t\tconst origViewZones: IObservableViewZone[] = [];\n\t\t\tconst modViewZones: IObservableViewZone[] = [];\n\t\t\tconst sideBySide = this._options.renderSideBySide.read(reader);\n\n\t\t\tconst compactMode = this._options.compactMode.read(reader);\n\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tfor (let i = 0; i < curUnchangedRegions.length; i++) {\n\t\t\t\tconst r = curUnchangedRegions[i];\n\t\t\t\tif (r.shouldHideControls(reader)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (compactMode && (i === 0 || i === curUnchangedRegions.length - 1)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (compactMode) {\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenOriginalRangeStart */ r.getHiddenOriginalRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst origVz = new PlaceholderViewZone(d, 12);\n\t\t\t\t\t\torigViewZones.push(origVz);\n\t\t\t\t\t\treader.store.add(new CompactCollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.original,\n\t\t\t\t\t\t\torigVz,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\t!sideBySide,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenModifiedRangeStart */ r.getHiddenModifiedRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst modViewZone = new PlaceholderViewZone(d, 12);\n\t\t\t\t\t\tmodViewZones.push(modViewZone);\n\t\t\t\t\t\treader.store.add(new CompactCollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.modified,\n\t\t\t\t\t\t\tmodViewZone,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenOriginalRangeStart */ r.getHiddenOriginalRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst origVz = new PlaceholderViewZone(d, 24);\n\t\t\t\t\t\torigViewZones.push(origVz);\n\t\t\t\t\t\treader.store.add(new CollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.original,\n\t\t\t\t\t\t\torigVz,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\tr.originalUnchangedRange,\n\t\t\t\t\t\t\t!sideBySide,\n\t\t\t\t\t\t\tmodifiedOutlineSource,\n\t\t\t\t\t\t\tl => this._diffModel.get()!.ensureModifiedLineIsVisible(l, RevealPreference.FromBottom, undefined),\n\t\t\t\t\t\t\tthis._options,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenModifiedRangeStart */ r.getHiddenModifiedRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst modViewZone = new PlaceholderViewZone(d, 24);\n\t\t\t\t\t\tmodViewZones.push(modViewZone);\n\t\t\t\t\t\treader.store.add(new CollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.modified,\n\t\t\t\t\t\t\tmodViewZone,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\tr.modifiedUnchangedRange,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tmodifiedOutlineSource,\n\t\t\t\t\t\t\tl => this._diffModel.get()!.ensureModifiedLineIsVisible(l, RevealPreference.FromBottom, undefined),\n\t\t\t\t\t\t\tthis._options,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { origViewZones, modViewZones, };\n\t\t});\n\n\n\t\tconst unchangedLinesDecoration: IModelDecorationOptions = {\n\t\t\tdescription: 'unchanged lines',\n\t\t\tclassName: 'diff-unchanged-lines',\n\t\t\tisWholeLine: true,\n\t\t};\n\t\tconst unchangedLinesDecorationShow: IModelDecorationOptions = {\n\t\t\tdescription: 'Fold Unchanged',\n\t\t\tglyphMarginHoverMessage: new MarkdownString(undefined, { isTrusted: true, supportThemeIcons: true })\n\t\t\t\t.appendMarkdown(localize('foldUnchanged', 'Fold Unchanged Region')),\n\t\t\tglyphMarginClassName: 'fold-unchanged ' + ThemeIcon.asClassName(Codicon.fold),\n\t\t\tzIndex: 10001,\n\t\t};\n\n\t\tthis._register(applyObservableDecorations(this._editors.original, derived(this, reader => {\n\t\t\t/** @description decorations */\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tconst result = curUnchangedRegions.map<IModelDeltaDecoration>(r => ({\n\t\t\t\trange: r.originalUnchangedRange.toInclusiveRange()!,\n\t\t\t\toptions: unchangedLinesDecoration,\n\t\t\t}));\n\t\t\tfor (const r of curUnchangedRegions) {\n\t\t\t\tif (r.shouldHideControls(reader)) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\trange: Range.fromPositions(new Position(r.originalLineNumber, 1)),\n\t\t\t\t\t\toptions: unchangedLinesDecorationShow,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t})));\n\n\t\tthis._register(applyObservableDecorations(this._editors.modified, derived(this, reader => {\n\t\t\t/** @description decorations */\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tconst result = curUnchangedRegions.map<IModelDeltaDecoration>(r => ({\n\t\t\t\trange: r.modifiedUnchangedRange.toInclusiveRange()!,\n\t\t\t\toptions: unchangedLinesDecoration,\n\t\t\t}));\n\t\t\tfor (const r of curUnchangedRegions) {\n\t\t\t\tif (r.shouldHideControls(reader)) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\trange: LineRange.ofLength(r.modifiedLineNumber, 1).toInclusiveRange()!,\n\t\t\t\t\t\toptions: unchangedLinesDecorationShow,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t})));\n\n\t\tthis._register(autorun((reader) => {\n\t\t\t/** @description update folded unchanged regions */\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tthis._isUpdatingHiddenAreas = true;\n\t\t\ttry {\n\t\t\t\tthis._editors.original.setHiddenAreas(curUnchangedRegions.map(r => r.getHiddenOriginalRange(reader).toInclusiveRange()).filter(isDefined));\n\t\t\t\tthis._editors.modified.setHiddenAreas(curUnchangedRegions.map(r => r.getHiddenModifiedRange(reader).toInclusiveRange()).filter(isDefined));\n\t\t\t} finally {\n\t\t\t\tthis._isUpdatingHiddenAreas = false;\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._editors.modified.onMouseUp(event => {\n\t\t\tif (!event.event.rightButton && event.target.position && event.target.element?.className.includes('fold-unchanged')) {\n\t\t\t\tconst lineNumber = event.target.position.lineNumber;\n\t\t\t\tconst model = this._diffModel.get();\n\t\t\t\tif (!model) { return; }\n\t\t\t\tconst region = model.unchangedRegions.get().find(r => r.modifiedUnchangedRange.contains(lineNumber));\n\t\t\t\tif (!region) { return; }\n\t\t\t\tregion.collapseAll(undefined);\n\t\t\t\tevent.event.stopPropagation();\n\t\t\t\tevent.event.preventDefault();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._editors.original.onMouseUp(event => {\n\t\t\tif (!event.event.rightButton && event.target.position && event.target.element?.className.includes('fold-unchanged')) {\n\t\t\t\tconst lineNumber = event.target.position.lineNumber;\n\t\t\t\tconst model = this._diffModel.get();\n\t\t\t\tif (!model) { return; }\n\t\t\t\tconst region = model.unchangedRegions.get().find(r => r.originalUnchangedRange.contains(lineNumber));\n\t\t\t\tif (!region) { return; }\n\t\t\t\tregion.collapseAll(undefined);\n\t\t\t\tevent.event.stopPropagation();\n\t\t\t\tevent.event.preventDefault();\n\t\t\t}\n\t\t}));\n\t}\n}\n\nclass CompactCollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {\n\tprivate readonly _nodes = h('div.diff-hidden-lines-compact', [\n\t\th('div.line-left', []),\n\t\th('div.text@text', []),\n\t\th('div.line-right', [])\n\t]);\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t_viewZone: PlaceholderViewZone,\n\t\tprivate readonly _unchangedRegion: UnchangedRegion,\n\t\tprivate readonly _hide: boolean = false,\n\t) {\n\t\tconst root = h('div.diff-hidden-lines-widget');\n\t\tsuper(editor, _viewZone, root.root);\n\t\troot.root.appendChild(this._nodes.root);\n\n\t\tif (this._hide) {\n\t\t\tthis._nodes.root.replaceChildren();\n\t\t}\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update labels */\n\n\t\t\tif (!this._hide) {\n\t\t\t\tconst lineCount = this._unchangedRegion.getHiddenModifiedRange(reader).length;\n\t\t\t\tconst linesHiddenText = localize('hiddenLines', '{0} hidden lines', lineCount);\n\t\t\t\tthis._nodes.text.innerText = linesHiddenText;\n\t\t\t}\n\t\t}));\n\t}\n}\n\nclass CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {\n\tprivate readonly _nodes = h('div.diff-hidden-lines', [\n\t\th('div.top@top', { title: localize('diff.hiddenLines.top', 'Click or drag to show more above') }),\n\t\th('div.center@content', { style: { display: 'flex' } }, [\n\t\t\th('div@first', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', flexShrink: '0' } },\n\t\t\t\t[$('a', { title: localize('showUnchangedRegion', 'Show Unchanged Region'), role: 'button', onclick: () => { this._unchangedRegion.showAll(undefined); } },\n\t\t\t\t\t...renderLabelWithIcons('$(unfold)'))]\n\t\t\t),\n\t\t\th('div@others', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center' } }),\n\t\t]),\n\t\th('div.bottom@bottom', { title: localize('diff.bottom', 'Click or drag to show more below'), role: 'button' }),\n\t]);\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t_viewZone: PlaceholderViewZone,\n\t\tprivate readonly _unchangedRegion: UnchangedRegion,\n\t\tprivate readonly _unchangedRegionRange: LineRange,\n\t\tprivate readonly _hide: boolean,\n\t\tprivate readonly _modifiedOutlineSource: IDiffEditorBreadcrumbsSource,\n\t\tprivate readonly _revealModifiedHiddenLine: (lineNumber: number) => void,\n\t\tprivate readonly _options: DiffEditorOptions,\n\t) {\n\t\tconst root = h('div.diff-hidden-lines-widget');\n\t\tsuper(_editor, _viewZone, root.root);\n\t\troot.root.appendChild(this._nodes.root);\n\n\t\tif (!this._hide) {\n\t\t\tthis._register(applyStyle(this._nodes.first, { width: observableCodeEditor(this._editor).layoutInfoContentLeft }));\n\t\t} else {\n\t\t\treset(this._nodes.first);\n\t\t}\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description Update CollapsedCodeOverlayWidget canMove* css classes */\n\t\t\tconst isFullyRevealed = this._unchangedRegion.visibleLineCountTop.read(reader) + this._unchangedRegion.visibleLineCountBottom.read(reader) === this._unchangedRegion.lineCount;\n\n\t\t\tthis._nodes.bottom.classList.toggle('canMoveTop', !isFullyRevealed);\n\t\t\tthis._nodes.bottom.classList.toggle('canMoveBottom', this._unchangedRegion.visibleLineCountBottom.read(reader) > 0);\n\t\t\tthis._nodes.top.classList.toggle('canMoveTop', this._unchangedRegion.visibleLineCountTop.read(reader) > 0);\n\t\t\tthis._nodes.top.classList.toggle('canMoveBottom', !isFullyRevealed);\n\t\t\tconst isDragged = this._unchangedRegion.isDragged.read(reader);\n\t\t\tconst domNode = this._editor.getDomNode();\n\t\t\tif (domNode) {\n\t\t\t\tdomNode.classList.toggle('draggingUnchangedRegion', !!isDragged);\n\t\t\t\tif (isDragged === 'top') {\n\t\t\t\t\tdomNode.classList.toggle('canMoveTop', this._unchangedRegion.visibleLineCountTop.read(reader) > 0);\n\t\t\t\t\tdomNode.classList.toggle('canMoveBottom', !isFullyRevealed);\n\t\t\t\t} else if (isDragged === 'bottom') {\n\t\t\t\t\tdomNode.classList.toggle('canMoveTop', !isFullyRevealed);\n\t\t\t\t\tdomNode.classList.toggle('canMoveBottom', this._unchangedRegion.visibleLineCountBottom.read(reader) > 0);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.classList.toggle('canMoveTop', false);\n\t\t\t\t\tdomNode.classList.toggle('canMoveBottom', false);\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tconst editor = this._editor;\n\n\t\tthis._register(addDisposableListener(this._nodes.top, 'mousedown', e => {\n\t\t\tif (e.button !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._nodes.top.classList.toggle('dragging', true);\n\t\t\tthis._nodes.root.classList.toggle('dragging', true);\n\t\t\te.preventDefault();\n\t\t\tconst startTop = e.clientY;\n\t\t\tlet didMove = false;\n\t\t\tconst cur = this._unchangedRegion.visibleLineCountTop.get();\n\t\t\tthis._unchangedRegion.isDragged.set('top', undefined);\n\n\t\t\tconst window = getWindow(this._nodes.top);\n\n\t\t\tconst mouseMoveListener = addDisposableListener(window, 'mousemove', e => {\n\t\t\t\tconst currentTop = e.clientY;\n\t\t\t\tconst delta = currentTop - startTop;\n\t\t\t\tdidMove = didMove || Math.abs(delta) > 2;\n\t\t\t\tconst lineDelta = Math.round(delta / editor.getOption(EditorOption.lineHeight));\n\t\t\t\tconst newVal = Math.max(0, Math.min(cur + lineDelta, this._unchangedRegion.getMaxVisibleLineCountTop()));\n\t\t\t\tthis._unchangedRegion.visibleLineCountTop.set(newVal, undefined);\n\t\t\t});\n\n\t\t\tconst mouseUpListener = addDisposableListener(window, 'mouseup', e => {\n\t\t\t\tif (!didMove) {\n\t\t\t\t\tthis._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);\n\t\t\t\t}\n\t\t\t\tthis._nodes.top.classList.toggle('dragging', false);\n\t\t\t\tthis._nodes.root.classList.toggle('dragging', false);\n\t\t\t\tthis._unchangedRegion.isDragged.set(undefined, undefined);\n\t\t\t\tmouseMoveListener.dispose();\n\t\t\t\tmouseUpListener.dispose();\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(addDisposableListener(this._nodes.bottom, 'mousedown', e => {\n\t\t\tif (e.button !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._nodes.bottom.classList.toggle('dragging', true);\n\t\t\tthis._nodes.root.classList.toggle('dragging', true);\n\t\t\te.preventDefault();\n\t\t\tconst startTop = e.clientY;\n\t\t\tlet didMove = false;\n\t\t\tconst cur = this._unchangedRegion.visibleLineCountBottom.get();\n\t\t\tthis._unchangedRegion.isDragged.set('bottom', undefined);\n\n\t\t\tconst window = getWindow(this._nodes.bottom);\n\n\t\t\tconst mouseMoveListener = addDisposableListener(window, 'mousemove', e => {\n\t\t\t\tconst currentTop = e.clientY;\n\t\t\t\tconst delta = currentTop - startTop;\n\t\t\t\tdidMove = didMove || Math.abs(delta) > 2;\n\t\t\t\tconst lineDelta = Math.round(delta / editor.getOption(EditorOption.lineHeight));\n\t\t\t\tconst newVal = Math.max(0, Math.min(cur - lineDelta, this._unchangedRegion.getMaxVisibleLineCountBottom()));\n\t\t\t\tconst top = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel()!.getLineCount()\n\t\t\t\t\t? editor.getContentHeight()\n\t\t\t\t\t: editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\t\t\t\tthis._unchangedRegion.visibleLineCountBottom.set(newVal, undefined);\n\t\t\t\tconst top2 = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel()!.getLineCount()\n\t\t\t\t\t? editor.getContentHeight()\n\t\t\t\t\t: editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\t\t\t\teditor.setScrollTop(editor.getScrollTop() + (top2 - top));\n\t\t\t});\n\n\t\t\tconst mouseUpListener = addDisposableListener(window, 'mouseup', e => {\n\t\t\t\tthis._unchangedRegion.isDragged.set(undefined, undefined);\n\n\t\t\t\tif (!didMove) {\n\t\t\t\t\tconst top = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\n\t\t\t\t\tthis._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);\n\t\t\t\t\tconst top2 = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\t\t\t\t\teditor.setScrollTop(editor.getScrollTop() + (top2 - top));\n\t\t\t\t}\n\t\t\t\tthis._nodes.bottom.classList.toggle('dragging', false);\n\t\t\t\tthis._nodes.root.classList.toggle('dragging', false);\n\t\t\t\tmouseMoveListener.dispose();\n\t\t\t\tmouseUpListener.dispose();\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update labels */\n\n\t\t\tconst children: HTMLElement[] = [];\n\t\t\tif (!this._hide) {\n\t\t\t\tconst lineCount = _unchangedRegion.getHiddenModifiedRange(reader).length;\n\t\t\t\tconst linesHiddenText = localize('hiddenLines', '{0} hidden lines', lineCount);\n\t\t\t\tconst span = $('span', { title: localize('diff.hiddenLines.expandAll', 'Double click to unfold') }, linesHiddenText);\n\t\t\t\tspan.addEventListener('dblclick', e => {\n\t\t\t\t\tif (e.button !== 0) { return; }\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._unchangedRegion.showAll(undefined);\n\t\t\t\t});\n\t\t\t\tchildren.push(span);\n\n\t\t\t\tconst range = this._unchangedRegion.getHiddenModifiedRange(reader);\n\t\t\t\tconst items = this._modifiedOutlineSource.getBreadcrumbItems(range, reader);\n\n\t\t\t\tif (items.length > 0) {\n\t\t\t\t\tchildren.push($('span', undefined, '\\u00a0\\u00a0|\\u00a0\\u00a0'));\n\n\t\t\t\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\t\t\t\tconst item = items[i];\n\t\t\t\t\t\tconst icon = SymbolKinds.toIcon(item.kind);\n\t\t\t\t\t\tconst divItem = h('div.breadcrumb-item', {\n\t\t\t\t\t\t\tstyle: { display: 'flex', alignItems: 'center' },\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\trenderIcon(icon),\n\t\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\t\titem.name,\n\t\t\t\t\t\t\t...(i === items.length - 1\n\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t: [renderIcon(Codicon.chevronRight)]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t]).root;\n\t\t\t\t\t\tchildren.push(divItem);\n\t\t\t\t\t\tdivItem.onclick = () => {\n\t\t\t\t\t\t\tthis._revealModifiedHiddenLine(item.startLineNumber);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treset(this._nodes.others, ...children);\n\t\t}));\n\t}\n}\n\nexport interface IDiffEditorBreadcrumbsSource extends IDisposable {\n\tgetBreadcrumbItems(startRange: LineRange, reader: IReader): { name: string; kind: SymbolKind; startLineNumber: number }[];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.ts"],"names":[],"mappings":"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","file":"hideUnchangedRegionsFeature.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 { $, addDisposableListener, getWindow, h, reset } from '../../../../../base/browser/dom.js';\nimport { renderIcon, renderLabelWithIcons } from '../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { MarkdownString } from '../../../../../base/common/htmlContent.js';\nimport { Disposable, IDisposable } from '../../../../../base/common/lifecycle.js';\nimport { IObservable, IReader, autorun, derived, derivedDisposable, observableValue, transaction } from '../../../../../base/common/observable.js';\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { isDefined } from '../../../../../base/common/types.js';\nimport { localize } from '../../../../../nls.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../common/core/ranges/lineRange.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { CursorChangeReason } from '../../../../common/cursorEvents.js';\nimport { SymbolKind, SymbolKinds } from '../../../../common/languages.js';\nimport { IModelDecorationOptions, IModelDeltaDecoration, ITextModel } from '../../../../common/model.js';\nimport { ICodeEditor } from '../../../editorBrowser.js';\nimport { observableCodeEditor } from '../../../observableCodeEditor.js';\nimport { DiffEditorEditors } from '../components/diffEditorEditors.js';\nimport { DiffEditorOptions } from '../diffEditorOptions.js';\nimport { DiffEditorViewModel, RevealPreference, UnchangedRegion } from '../diffEditorViewModel.js';\nimport { IObservableViewZone, PlaceholderViewZone, ViewZoneOverlayWidget, applyObservableDecorations, applyStyle } from '../utils.js';\n\n/**\n * Make sure to add the view zones to the editor!\n */\nexport class HideUnchangedRegionsFeature extends Disposable {\n\tprivate static readonly _breadcrumbsSourceFactory = observableValue<((textModel: ITextModel, instantiationService: IInstantiationService) => IDiffEditorBreadcrumbsSource)>(\n\t\tthis, () => ({\n\t\t\tdispose() {\n\t\t\t},\n\t\t\tgetBreadcrumbItems(startRange, reader) {\n\t\t\t\treturn [];\n\t\t\t},\n\t\t}));\n\tpublic static setBreadcrumbsSourceFactory(factory: (textModel: ITextModel, instantiationService: IInstantiationService) => IDiffEditorBreadcrumbsSource) {\n\t\tthis._breadcrumbsSourceFactory.set(factory, undefined);\n\t}\n\n\tprivate readonly _modifiedOutlineSource = derivedDisposable(this, (reader) => {\n\t\tconst m = this._editors.modifiedModel.read(reader);\n\t\tconst factory = HideUnchangedRegionsFeature._breadcrumbsSourceFactory.read(reader);\n\t\treturn (!m || !factory) ? undefined : factory(m, this._instantiationService);\n\t});\n\n\tpublic readonly viewZones: IObservable<{\n\t\torigViewZones: IObservableViewZone[];\n\t\tmodViewZones: IObservableViewZone[];\n\t}>;\n\n\tprivate _isUpdatingHiddenAreas = false;\n\tpublic get isUpdatingHiddenAreas() { return this._isUpdatingHiddenAreas; }\n\n\tconstructor(\n\t\tprivate readonly _editors: DiffEditorEditors,\n\t\tprivate readonly _diffModel: IObservable<DiffEditorViewModel | undefined>,\n\t\tprivate readonly _options: DiffEditorOptions,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(this._editors.original.onDidChangeCursorPosition(e => {\n\t\t\tif (e.reason === CursorChangeReason.ContentFlush) { return; }\n\t\t\tconst m = this._diffModel.get();\n\t\t\ttransaction(tx => {\n\t\t\t\tfor (const s of this._editors.original.getSelections() || []) {\n\t\t\t\t\tm?.ensureOriginalLineIsVisible(s.getStartPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t\tm?.ensureOriginalLineIsVisible(s.getEndPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t}\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this._editors.modified.onDidChangeCursorPosition(e => {\n\t\t\tif (e.reason === CursorChangeReason.ContentFlush) { return; }\n\t\t\tconst m = this._diffModel.get();\n\t\t\ttransaction(tx => {\n\t\t\t\tfor (const s of this._editors.modified.getSelections() || []) {\n\t\t\t\t\tm?.ensureModifiedLineIsVisible(s.getStartPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t\tm?.ensureModifiedLineIsVisible(s.getEndPosition().lineNumber, RevealPreference.FromCloserSide, tx);\n\t\t\t\t}\n\t\t\t});\n\t\t}));\n\n\t\tconst unchangedRegions = this._diffModel.map((m, reader) => {\n\t\t\tconst regions = m?.unchangedRegions.read(reader) ?? [];\n\t\t\tif (regions.length === 1 && regions[0].modifiedLineNumber === 1 && regions[0].lineCount === this._editors.modifiedModel.read(reader)?.getLineCount()) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn regions;\n\t\t});\n\n\t\tthis.viewZones = derived(this, (reader) => {\n\t\t\t/** @description view Zones */\n\t\t\tconst modifiedOutlineSource = this._modifiedOutlineSource.read(reader);\n\t\t\tif (!modifiedOutlineSource) { return { origViewZones: [], modViewZones: [] }; }\n\n\t\t\tconst origViewZones: IObservableViewZone[] = [];\n\t\t\tconst modViewZones: IObservableViewZone[] = [];\n\t\t\tconst sideBySide = this._options.renderSideBySide.read(reader);\n\n\t\t\tconst compactMode = this._options.compactMode.read(reader);\n\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tfor (let i = 0; i < curUnchangedRegions.length; i++) {\n\t\t\t\tconst r = curUnchangedRegions[i];\n\t\t\t\tif (r.shouldHideControls(reader)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (compactMode && (i === 0 || i === curUnchangedRegions.length - 1)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (compactMode) {\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenOriginalRangeStart */ r.getHiddenOriginalRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst origVz = new PlaceholderViewZone(d, 12);\n\t\t\t\t\t\torigViewZones.push(origVz);\n\t\t\t\t\t\treader.store.add(new CompactCollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.original,\n\t\t\t\t\t\t\torigVz,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\t!sideBySide,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenModifiedRangeStart */ r.getHiddenModifiedRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst modViewZone = new PlaceholderViewZone(d, 12);\n\t\t\t\t\t\tmodViewZones.push(modViewZone);\n\t\t\t\t\t\treader.store.add(new CompactCollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.modified,\n\t\t\t\t\t\t\tmodViewZone,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenOriginalRangeStart */ r.getHiddenOriginalRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst origVz = new PlaceholderViewZone(d, 24);\n\t\t\t\t\t\torigViewZones.push(origVz);\n\t\t\t\t\t\treader.store.add(new CollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.original,\n\t\t\t\t\t\t\torigVz,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\tr.originalUnchangedRange,\n\t\t\t\t\t\t\t!sideBySide,\n\t\t\t\t\t\t\tmodifiedOutlineSource,\n\t\t\t\t\t\t\tl => this._diffModel.get()!.ensureModifiedLineIsVisible(l, RevealPreference.FromBottom, undefined),\n\t\t\t\t\t\t\tthis._options,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tconst d = derived(this, reader => /** @description hiddenModifiedRangeStart */ r.getHiddenModifiedRange(reader).startLineNumber - 1);\n\t\t\t\t\t\tconst modViewZone = new PlaceholderViewZone(d, 24);\n\t\t\t\t\t\tmodViewZones.push(modViewZone);\n\t\t\t\t\t\treader.store.add(new CollapsedCodeOverlayWidget(\n\t\t\t\t\t\t\tthis._editors.modified,\n\t\t\t\t\t\t\tmodViewZone,\n\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\tr.modifiedUnchangedRange,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tmodifiedOutlineSource,\n\t\t\t\t\t\t\tl => this._diffModel.get()!.ensureModifiedLineIsVisible(l, RevealPreference.FromBottom, undefined),\n\t\t\t\t\t\t\tthis._options,\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { origViewZones, modViewZones, };\n\t\t});\n\n\n\t\tconst unchangedLinesDecoration: IModelDecorationOptions = {\n\t\t\tdescription: 'unchanged lines',\n\t\t\tclassName: 'diff-unchanged-lines',\n\t\t\tisWholeLine: true,\n\t\t};\n\t\tconst unchangedLinesDecorationShow: IModelDecorationOptions = {\n\t\t\tdescription: 'Fold Unchanged',\n\t\t\tglyphMarginHoverMessage: new MarkdownString(undefined, { isTrusted: true, supportThemeIcons: true })\n\t\t\t\t.appendMarkdown(localize('foldUnchanged', 'Fold Unchanged Region')),\n\t\t\tglyphMarginClassName: 'fold-unchanged ' + ThemeIcon.asClassName(Codicon.fold),\n\t\t\tzIndex: 10001,\n\t\t};\n\n\t\tthis._register(applyObservableDecorations(this._editors.original, derived(this, reader => {\n\t\t\t/** @description decorations */\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tconst result = curUnchangedRegions.map<IModelDeltaDecoration>(r => ({\n\t\t\t\trange: r.originalUnchangedRange.toInclusiveRange()!,\n\t\t\t\toptions: unchangedLinesDecoration,\n\t\t\t}));\n\t\t\tfor (const r of curUnchangedRegions) {\n\t\t\t\tif (r.shouldHideControls(reader)) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\trange: Range.fromPositions(new Position(r.originalLineNumber, 1)),\n\t\t\t\t\t\toptions: unchangedLinesDecorationShow,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t})));\n\n\t\tthis._register(applyObservableDecorations(this._editors.modified, derived(this, reader => {\n\t\t\t/** @description decorations */\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tconst result = curUnchangedRegions.map<IModelDeltaDecoration>(r => ({\n\t\t\t\trange: r.modifiedUnchangedRange.toInclusiveRange()!,\n\t\t\t\toptions: unchangedLinesDecoration,\n\t\t\t}));\n\t\t\tfor (const r of curUnchangedRegions) {\n\t\t\t\tif (r.shouldHideControls(reader)) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\trange: LineRange.ofLength(r.modifiedLineNumber, 1).toInclusiveRange()!,\n\t\t\t\t\t\toptions: unchangedLinesDecorationShow,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t})));\n\n\t\tthis._register(autorun((reader) => {\n\t\t\t/** @description update folded unchanged regions */\n\t\t\tconst curUnchangedRegions = unchangedRegions.read(reader);\n\t\t\tthis._isUpdatingHiddenAreas = true;\n\t\t\ttry {\n\t\t\t\tthis._editors.original.setHiddenAreas(curUnchangedRegions.map(r => r.getHiddenOriginalRange(reader).toInclusiveRange()).filter(isDefined));\n\t\t\t\tthis._editors.modified.setHiddenAreas(curUnchangedRegions.map(r => r.getHiddenModifiedRange(reader).toInclusiveRange()).filter(isDefined));\n\t\t\t} finally {\n\t\t\t\tthis._isUpdatingHiddenAreas = false;\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._editors.modified.onMouseUp(event => {\n\t\t\tif (!event.event.rightButton && event.target.position && event.target.element?.className.includes('fold-unchanged')) {\n\t\t\t\tconst lineNumber = event.target.position.lineNumber;\n\t\t\t\tconst model = this._diffModel.get();\n\t\t\t\tif (!model) { return; }\n\t\t\t\tconst region = model.unchangedRegions.get().find(r => r.modifiedUnchangedRange.contains(lineNumber));\n\t\t\t\tif (!region) { return; }\n\t\t\t\tregion.collapseAll(undefined);\n\t\t\t\tevent.event.stopPropagation();\n\t\t\t\tevent.event.preventDefault();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._editors.original.onMouseUp(event => {\n\t\t\tif (!event.event.rightButton && event.target.position && event.target.element?.className.includes('fold-unchanged')) {\n\t\t\t\tconst lineNumber = event.target.position.lineNumber;\n\t\t\t\tconst model = this._diffModel.get();\n\t\t\t\tif (!model) { return; }\n\t\t\t\tconst region = model.unchangedRegions.get().find(r => r.originalUnchangedRange.contains(lineNumber));\n\t\t\t\tif (!region) { return; }\n\t\t\t\tregion.collapseAll(undefined);\n\t\t\t\tevent.event.stopPropagation();\n\t\t\t\tevent.event.preventDefault();\n\t\t\t}\n\t\t}));\n\t}\n}\n\nclass CompactCollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {\n\tprivate readonly _nodes = h('div.diff-hidden-lines-compact', [\n\t\th('div.line-left', []),\n\t\th('div.text@text', []),\n\t\th('div.line-right', [])\n\t]);\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t_viewZone: PlaceholderViewZone,\n\t\tprivate readonly _unchangedRegion: UnchangedRegion,\n\t\tprivate readonly _hide: boolean = false,\n\t) {\n\t\tconst root = h('div.diff-hidden-lines-widget');\n\t\tsuper(editor, _viewZone, root.root);\n\t\troot.root.appendChild(this._nodes.root);\n\n\t\tif (this._hide) {\n\t\t\tthis._nodes.root.replaceChildren();\n\t\t}\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update labels */\n\n\t\t\tif (!this._hide) {\n\t\t\t\tconst lineCount = this._unchangedRegion.getHiddenModifiedRange(reader).length;\n\t\t\t\tconst linesHiddenText = localize('hiddenLines', '{0} hidden lines', lineCount);\n\t\t\t\tthis._nodes.text.innerText = linesHiddenText;\n\t\t\t}\n\t\t}));\n\t}\n}\n\nclass CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {\n\tprivate readonly _nodes = h('div.diff-hidden-lines', [\n\t\th('div.top@top', { title: localize('diff.hiddenLines.top', 'Click or drag to show more above') }),\n\t\th('div.center@content', { style: { display: 'flex' } }, [\n\t\t\th('div@first', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', flexShrink: '0' } },\n\t\t\t\t[$('a', { title: localize('showUnchangedRegion', 'Show Unchanged Region'), role: 'button', onclick: () => { this._unchangedRegion.showAll(undefined); } },\n\t\t\t\t\t...renderLabelWithIcons('$(unfold)'))]\n\t\t\t),\n\t\t\th('div@others', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center' } }),\n\t\t]),\n\t\th('div.bottom@bottom', { title: localize('diff.bottom', 'Click or drag to show more below'), role: 'button' }),\n\t]);\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t_viewZone: PlaceholderViewZone,\n\t\tprivate readonly _unchangedRegion: UnchangedRegion,\n\t\tprivate readonly _unchangedRegionRange: LineRange,\n\t\tprivate readonly _hide: boolean,\n\t\tprivate readonly _modifiedOutlineSource: IDiffEditorBreadcrumbsSource,\n\t\tprivate readonly _revealModifiedHiddenLine: (lineNumber: number) => void,\n\t\tprivate readonly _options: DiffEditorOptions,\n\t) {\n\t\tconst root = h('div.diff-hidden-lines-widget');\n\t\tsuper(_editor, _viewZone, root.root);\n\t\troot.root.appendChild(this._nodes.root);\n\n\t\tif (!this._hide) {\n\t\t\tthis._register(applyStyle(this._nodes.first, { width: observableCodeEditor(this._editor).layoutInfoContentLeft }));\n\t\t} else {\n\t\t\treset(this._nodes.first);\n\t\t}\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description Update CollapsedCodeOverlayWidget canMove* css classes */\n\t\t\tconst isFullyRevealed = this._unchangedRegion.visibleLineCountTop.read(reader) + this._unchangedRegion.visibleLineCountBottom.read(reader) === this._unchangedRegion.lineCount;\n\n\t\t\tthis._nodes.bottom.classList.toggle('canMoveTop', !isFullyRevealed);\n\t\t\tthis._nodes.bottom.classList.toggle('canMoveBottom', this._unchangedRegion.visibleLineCountBottom.read(reader) > 0);\n\t\t\tthis._nodes.top.classList.toggle('canMoveTop', this._unchangedRegion.visibleLineCountTop.read(reader) > 0);\n\t\t\tthis._nodes.top.classList.toggle('canMoveBottom', !isFullyRevealed);\n\t\t\tconst isDragged = this._unchangedRegion.isDragged.read(reader);\n\t\t\tconst domNode = this._editor.getDomNode();\n\t\t\tif (domNode) {\n\t\t\t\tdomNode.classList.toggle('draggingUnchangedRegion', !!isDragged);\n\t\t\t\tif (isDragged === 'top') {\n\t\t\t\t\tdomNode.classList.toggle('canMoveTop', this._unchangedRegion.visibleLineCountTop.read(reader) > 0);\n\t\t\t\t\tdomNode.classList.toggle('canMoveBottom', !isFullyRevealed);\n\t\t\t\t} else if (isDragged === 'bottom') {\n\t\t\t\t\tdomNode.classList.toggle('canMoveTop', !isFullyRevealed);\n\t\t\t\t\tdomNode.classList.toggle('canMoveBottom', this._unchangedRegion.visibleLineCountBottom.read(reader) > 0);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.classList.toggle('canMoveTop', false);\n\t\t\t\t\tdomNode.classList.toggle('canMoveBottom', false);\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tconst editor = this._editor;\n\n\t\tthis._register(addDisposableListener(this._nodes.top, 'mousedown', e => {\n\t\t\tif (e.button !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._nodes.top.classList.toggle('dragging', true);\n\t\t\tthis._nodes.root.classList.toggle('dragging', true);\n\t\t\te.preventDefault();\n\t\t\tconst startTop = e.clientY;\n\t\t\tlet didMove = false;\n\t\t\tconst cur = this._unchangedRegion.visibleLineCountTop.get();\n\t\t\tthis._unchangedRegion.isDragged.set('top', undefined);\n\n\t\t\tconst window = getWindow(this._nodes.top);\n\n\t\t\tconst mouseMoveListener = addDisposableListener(window, 'mousemove', e => {\n\t\t\t\tconst currentTop = e.clientY;\n\t\t\t\tconst delta = currentTop - startTop;\n\t\t\t\tdidMove = didMove || Math.abs(delta) > 2;\n\t\t\t\tconst lineDelta = Math.round(delta / editor.getOption(EditorOption.lineHeight));\n\t\t\t\tconst newVal = Math.max(0, Math.min(cur + lineDelta, this._unchangedRegion.getMaxVisibleLineCountTop()));\n\t\t\t\tthis._unchangedRegion.visibleLineCountTop.set(newVal, undefined);\n\t\t\t});\n\n\t\t\tconst mouseUpListener = addDisposableListener(window, 'mouseup', e => {\n\t\t\t\tif (!didMove) {\n\t\t\t\t\tthis._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);\n\t\t\t\t}\n\t\t\t\tthis._nodes.top.classList.toggle('dragging', false);\n\t\t\t\tthis._nodes.root.classList.toggle('dragging', false);\n\t\t\t\tthis._unchangedRegion.isDragged.set(undefined, undefined);\n\t\t\t\tmouseMoveListener.dispose();\n\t\t\t\tmouseUpListener.dispose();\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(addDisposableListener(this._nodes.bottom, 'mousedown', e => {\n\t\t\tif (e.button !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._nodes.bottom.classList.toggle('dragging', true);\n\t\t\tthis._nodes.root.classList.toggle('dragging', true);\n\t\t\te.preventDefault();\n\t\t\tconst startTop = e.clientY;\n\t\t\tlet didMove = false;\n\t\t\tconst cur = this._unchangedRegion.visibleLineCountBottom.get();\n\t\t\tthis._unchangedRegion.isDragged.set('bottom', undefined);\n\n\t\t\tconst window = getWindow(this._nodes.bottom);\n\n\t\t\tconst mouseMoveListener = addDisposableListener(window, 'mousemove', e => {\n\t\t\t\tconst currentTop = e.clientY;\n\t\t\t\tconst delta = currentTop - startTop;\n\t\t\t\tdidMove = didMove || Math.abs(delta) > 2;\n\t\t\t\tconst lineDelta = Math.round(delta / editor.getOption(EditorOption.lineHeight));\n\t\t\t\tconst newVal = Math.max(0, Math.min(cur - lineDelta, this._unchangedRegion.getMaxVisibleLineCountBottom()));\n\t\t\t\tconst top = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel()!.getLineCount()\n\t\t\t\t\t? editor.getContentHeight()\n\t\t\t\t\t: editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\t\t\t\tthis._unchangedRegion.visibleLineCountBottom.set(newVal, undefined);\n\t\t\t\tconst top2 = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel()!.getLineCount()\n\t\t\t\t\t? editor.getContentHeight()\n\t\t\t\t\t: editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\t\t\t\teditor.setScrollTop(editor.getScrollTop() + (top2 - top));\n\t\t\t});\n\n\t\t\tconst mouseUpListener = addDisposableListener(window, 'mouseup', e => {\n\t\t\t\tthis._unchangedRegion.isDragged.set(undefined, undefined);\n\n\t\t\t\tif (!didMove) {\n\t\t\t\t\tconst top = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\n\t\t\t\t\tthis._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);\n\t\t\t\t\tconst top2 = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n\t\t\t\t\teditor.setScrollTop(editor.getScrollTop() + (top2 - top));\n\t\t\t\t}\n\t\t\t\tthis._nodes.bottom.classList.toggle('dragging', false);\n\t\t\t\tthis._nodes.root.classList.toggle('dragging', false);\n\t\t\t\tmouseMoveListener.dispose();\n\t\t\t\tmouseUpListener.dispose();\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update labels */\n\n\t\t\tconst children: HTMLElement[] = [];\n\t\t\tif (!this._hide) {\n\t\t\t\tconst lineCount = _unchangedRegion.getHiddenModifiedRange(reader).length;\n\t\t\t\tconst linesHiddenText = localize('hiddenLines', '{0} hidden lines', lineCount);\n\t\t\t\tconst span = $('span', { title: localize('diff.hiddenLines.expandAll', 'Double click to unfold') }, linesHiddenText);\n\t\t\t\tspan.addEventListener('dblclick', e => {\n\t\t\t\t\tif (e.button !== 0) { return; }\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._unchangedRegion.showAll(undefined);\n\t\t\t\t});\n\t\t\t\tchildren.push(span);\n\n\t\t\t\tconst range = this._unchangedRegion.getHiddenModifiedRange(reader);\n\t\t\t\tconst items = this._modifiedOutlineSource.getBreadcrumbItems(range, reader);\n\n\t\t\t\tif (items.length > 0) {\n\t\t\t\t\tchildren.push($('span', undefined, '\\u00a0\\u00a0|\\u00a0\\u00a0'));\n\n\t\t\t\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\t\t\t\tconst item = items[i];\n\t\t\t\t\t\tconst icon = SymbolKinds.toIcon(item.kind);\n\t\t\t\t\t\tconst divItem = h('div.breadcrumb-item', {\n\t\t\t\t\t\t\tstyle: { display: 'flex', alignItems: 'center' },\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\trenderIcon(icon),\n\t\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\t\titem.name,\n\t\t\t\t\t\t\t...(i === items.length - 1\n\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t: [renderIcon(Codicon.chevronRight)]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t]).root;\n\t\t\t\t\t\tchildren.push(divItem);\n\t\t\t\t\t\tdivItem.onclick = () => {\n\t\t\t\t\t\t\tthis._revealModifiedHiddenLine(item.startLineNumber);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treset(this._nodes.others, ...children);\n\t\t}));\n\t}\n}\n\nexport interface IDiffEditorBreadcrumbsSource extends IDisposable {\n\tgetBreadcrumbItems(startRange: LineRange, reader: IReader): { name: string; kind: SymbolKind; startLineNumber: number }[];\n}\n"]}
|
package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js
CHANGED
|
@@ -46,7 +46,7 @@ import { InlineCompletionContextKeys } from './inlineCompletionContextKeys.js';
|
|
|
46
46
|
let InlineCompletionsController = class InlineCompletionsController extends Disposable {
|
|
47
47
|
static { InlineCompletionsController_1 = this; }
|
|
48
48
|
static { this._instances = new Set(); }
|
|
49
|
-
static { this.hot = createHotClass(
|
|
49
|
+
static { this.hot = createHotClass(this); }
|
|
50
50
|
static { this.ID = 'editor.contrib.inlineCompletionsController'; }
|
|
51
51
|
/**
|
|
52
52
|
* Find the controller in the focused editor or in the outer editor (if applicable)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.ts"],"names":[],"mappings":"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","file":"inlineCompletionsController.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 { alert } from '../../../../../base/browser/ui/aria/aria.js';\nimport { timeout } from '../../../../../base/common/async.js';\nimport { cancelOnDispose } from '../../../../../base/common/cancellation.js';\nimport { createHotClass } from '../../../../../base/common/hotReloadHelpers.js';\nimport { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { ITransaction, autorun, derived, derivedDisposable, derivedObservableWithCache, observableFromEvent, observableSignal, observableValue, runOnChange, runOnChangeWithStore, transaction, waitForState } from '../../../../../base/common/observable.js';\nimport { isEqual } from '../../../../../base/common/resources.js';\nimport { isUndefined } from '../../../../../base/common/types.js';\nimport { localize } from '../../../../../nls.js';\nimport { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { ICommandService } from '../../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { hotClassGetOriginalInstance } from '../../../../../platform/observable/common/wrapInHotClass.js';\nimport { CoreEditingCommands } from '../../../../browser/coreCommands.js';\nimport { ICodeEditor } from '../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../browser/observableCodeEditor.js';\nimport { getOuterEditor } from '../../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { CursorChangeReason } from '../../../../common/cursorEvents.js';\nimport { ILanguageFeatureDebounceService } from '../../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nimport { InlineSuggestionHintsContentWidget } from '../hintsWidget/inlineCompletionsHintsWidget.js';\nimport { TextModelChangeRecorder } from '../model/changeRecorder.js';\nimport { InlineCompletionsModel } from '../model/inlineCompletionsModel.js';\nimport { ObservableSuggestWidgetAdapter } from '../model/suggestWidgetAdapter.js';\nimport { ObservableContextKeyService } from '../utils.js';\nimport { InlineCompletionsView } from '../view/inlineCompletionsView.js';\nimport { inlineSuggestCommitId } from './commandIds.js';\nimport { InlineCompletionContextKeys } from './inlineCompletionContextKeys.js';\n\nexport class InlineCompletionsController extends Disposable {\n\tprivate static readonly _instances = new Set<InlineCompletionsController>();\n\n\tpublic static hot = createHotClass(InlineCompletionsController);\n\tpublic static ID = 'editor.contrib.inlineCompletionsController';\n\n\t/**\n\t * Find the controller in the focused editor or in the outer editor (if applicable)\n\t */\n\tpublic static getInFocusedEditorOrParent(accessor: ServicesAccessor): InlineCompletionsController | null {\n\t\tconst outerEditor = getOuterEditor(accessor);\n\t\tif (!outerEditor) {\n\t\t\treturn null;\n\t\t}\n\t\treturn InlineCompletionsController.get(outerEditor);\n\t}\n\n\tpublic static get(editor: ICodeEditor): InlineCompletionsController | null {\n\t\treturn hotClassGetOriginalInstance(editor.getContribution<InlineCompletionsController>(InlineCompletionsController.ID));\n\t}\n\n\tprivate readonly _editorObs;\n\tprivate readonly _positions;\n\n\tprivate readonly _suggestWidgetAdapter;\n\n\tprivate readonly _enabledInConfig;\n\tprivate readonly _isScreenReaderEnabled;\n\tprivate readonly _editorDictationInProgress;\n\tprivate readonly _enabled;\n\n\tprivate readonly _debounceValue;\n\n\tprivate readonly _focusIsInMenu;\n\tprivate readonly _focusIsInEditorOrMenu;\n\n\tprivate readonly _cursorIsInIndentation;\n\n\tpublic readonly model;\n\n\tprivate readonly _playAccessibilitySignal;\n\n\tprivate readonly _hideInlineEditOnSelectionChange;\n\n\tprotected readonly _view;\n\n\tconstructor(\n\t\tpublic readonly editor: ICodeEditor,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@ILanguageFeatureDebounceService private readonly _debounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,\n\t) {\n\t\tsuper();\n\t\tthis._editorObs = observableCodeEditor(this.editor);\n\t\tthis._positions = derived(this, reader => this._editorObs.selections.read(reader)?.map(s => s.getEndPosition()) ?? [new Position(1, 1)]);\n\t\tthis._suggestWidgetAdapter = this._register(new ObservableSuggestWidgetAdapter(\n\t\t\tthis._editorObs,\n\t\t\titem => this.model.get()?.handleSuggestAccepted(item),\n\t\t\t() => this.model.get()?.selectedInlineCompletion.get()?.getSingleTextEdit(),\n\t\t));\n\t\tthis._enabledInConfig = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.inlineSuggest).enabled);\n\t\tthis._isScreenReaderEnabled = observableFromEvent(this, this._accessibilityService.onDidChangeScreenReaderOptimized, () => this._accessibilityService.isScreenReaderOptimized());\n\t\tthis._editorDictationInProgress = observableFromEvent(this,\n\t\t\tthis._contextKeyService.onDidChangeContext,\n\t\t\t() => this._contextKeyService.getContext(this.editor.getDomNode()).getValue('editorDictation.inProgress') === true\n\t\t);\n\t\tthis._enabled = derived(this, reader => this._enabledInConfig.read(reader) && (!this._isScreenReaderEnabled.read(reader) || !this._editorDictationInProgress.read(reader)));\n\t\tthis._debounceValue = this._debounceService.for(\n\t\t\tthis._languageFeaturesService.inlineCompletionsProvider,\n\t\t\t'InlineCompletionsDebounce',\n\t\t\t{ min: 50, max: 50 }\n\t\t);\n\t\tthis._focusIsInMenu = observableValue<boolean>(this, false);\n\t\tthis._focusIsInEditorOrMenu = derived(this, reader => {\n\t\t\tconst editorHasFocus = this._editorObs.isFocused.read(reader);\n\t\t\tconst menuHasFocus = this._focusIsInMenu.read(reader);\n\t\t\treturn editorHasFocus || menuHasFocus;\n\t\t});\n\t\tthis._cursorIsInIndentation = derived(this, reader => {\n\t\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (cursorPos === null) { return false; }\n\t\t\tconst model = this._editorObs.model.read(reader);\n\t\t\tif (!model) { return false; }\n\t\t\tthis._editorObs.versionId.read(reader);\n\t\t\tconst indentMaxColumn = model.getLineIndentColumn(cursorPos.lineNumber);\n\t\t\treturn cursorPos.column <= indentMaxColumn;\n\t\t});\n\t\tthis.model = derivedDisposable<InlineCompletionsModel | undefined>(this, reader => {\n\t\t\tif (this._editorObs.isReadonly.read(reader)) { return undefined; }\n\t\t\tconst textModel = this._editorObs.model.read(reader);\n\t\t\tif (!textModel) { return undefined; }\n\n\t\t\tconst model: InlineCompletionsModel = this._instantiationService.createInstance(\n\t\t\t\tInlineCompletionsModel,\n\t\t\t\ttextModel,\n\t\t\t\tthis._suggestWidgetAdapter.selectedItem,\n\t\t\t\tthis._editorObs.versionId,\n\t\t\t\tthis._positions,\n\t\t\t\tthis._debounceValue,\n\t\t\t\tthis._enabled,\n\t\t\t\tthis.editor,\n\t\t\t);\n\t\t\treturn model;\n\t\t}).recomputeInitiallyAndOnChange(this._store);\n\t\tthis._playAccessibilitySignal = observableSignal(this);\n\t\tthis._hideInlineEditOnSelectionChange = this._editorObs.getOption(EditorOption.inlineSuggest).map(val => true);\n\t\tthis._view = this._register(this._instantiationService.createInstance(InlineCompletionsView, this.editor, this.model, this._focusIsInMenu));\n\n\t\tInlineCompletionsController._instances.add(this);\n\t\tthis._register(toDisposable(() => InlineCompletionsController._instances.delete(this)));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tconst state = model.state.read(reader);\n\t\t\tif (!state) { return; }\n\t\t\tif (!this._focusIsInEditorOrMenu.read(undefined)) { return; }\n\n\t\t\t// This controller is in focus, hence reject others.\n\t\t\t// However if we display a NES that relates to another edit then trigger NES on that related controller\n\t\t\tconst nextEditUri = state.kind === 'inlineEdit' ? state.nextEditUri : undefined;\n\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\tif (ctrl === this) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (nextEditUri && isEqual(nextEditUri, ctrl.editor.getModel()?.uri)) {\n\t\t\t\t\t// The next edit in other edito is related to this controller, trigger it.\n\t\t\t\t\tctrl.model.read(undefined)?.trigger();\n\t\t\t\t} else {\n\t\t\t\t\tctrl.reject();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst uri = this.editor.getModel()?.uri;\n\t\t\tif (!model || !uri) { return; }\n\n\t\t\t// This NES was accepted, its possible there is an NES that points to this editor.\n\t\t\t// I.e. there's an NES that reads `Go To Next Edit`,\n\t\t\t// If there is one that points to this editor, then we need to hide that as this NES was accepted.\n\t\t\treader.store.add(model.onDidAccept(() => {\n\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\tif (ctrl === this) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// Find the nes from another editor that points to this.\n\t\t\t\t\tconst state = ctrl.model.read(undefined)?.state.read(undefined);\n\t\t\t\t\tif (state?.kind === 'inlineEdit' && isEqual(state.nextEditUri, uri)) {\n\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidType, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidPaste, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._commandService.onDidExecuteCommand((e) => {\n\t\t\t// These commands don't trigger onDidType.\n\t\t\tconst commands = new Set([\n\t\t\t\tCoreEditingCommands.Tab.id,\n\t\t\t\tCoreEditingCommands.DeleteLeft.id,\n\t\t\t\tCoreEditingCommands.DeleteRight.id,\n\t\t\t\tinlineSuggestCommitId,\n\t\t\t\t'acceptSelectedSuggestion',\n\t\t\t]);\n\t\t\tif (commands.has(e.commandId) && editor.hasTextFocus() && this._enabled.get()) {\n\t\t\t\tlet noDelay = false;\n\t\t\t\tif (e.commandId === inlineSuggestCommitId) {\n\t\t\t\t\tnoDelay = true;\n\t\t\t\t}\n\t\t\t\tthis._editorObs.forceUpdate(tx => {\n\t\t\t\t\t/** @description onDidExecuteCommand */\n\t\t\t\t\tthis.model.get()?.trigger(tx, { noDelay });\n\t\t\t\t});\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.selections, (_value, _, changes) => {\n\t\t\tif (changes.some(e => e.reason === CursorChangeReason.Explicit || e.source === 'api')) {\n\t\t\t\tif (!this._hideInlineEditOnSelectionChange.get() && this.model.get()?.state.get()?.kind === 'inlineEdit') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst m = this.model.get();\n\t\t\t\tif (!m) { return; }\n\t\t\t\tif (m.state.get()?.kind === 'ghostText') {\n\t\t\t\t\tthis.model.get()?.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isFocused = this._focusIsInEditorOrMenu.read(reader);\n\t\t\tconst model = this.model.read(undefined);\n\t\t\tif (isFocused) {\n\t\t\t\t// If this model already has an NES for another editor, then leave as is\n\t\t\t\t// Else stop other models.\n\t\t\t\tconst state = model?.state.read(undefined);\n\t\t\t\tif (!state || state.kind !== 'inlineEdit' || !state.nextEditUri) {\n\t\t\t\t\ttransaction(tx => {\n\t\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic', tx);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This is a hidden setting very useful for debugging\n\t\t\tif (this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown')\n\t\t\t\t|| this._configurationService.getValue('editor.inlineSuggest.keepOnBlur')\n\t\t\t\t|| editor.getOption(EditorOption.inlineSuggest).keepOnBlur\n\t\t\t\t|| InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!model) { return; }\n\t\t\tif (model.state.read(undefined)?.inlineCompletion?.isFromExplicitRequest && model.inlineEditAvailable.read(undefined)) {\n\t\t\t\t// dont hide inline edits on blur when requested explicitly\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttransaction(tx => {\n\t\t\t\t/** @description InlineCompletionsController.onDidBlurEditorWidget */\n\t\t\t\tmodel.stop('automatic', tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description InlineCompletionsController.forceRenderingAbove */\n\t\t\tconst state = this.model.read(reader)?.inlineCompletionState.read(reader);\n\t\t\tif (state?.suggestItem) {\n\t\t\t\tif (state.primaryGhostText.lineCount >= 2) {\n\t\t\t\t\tthis._suggestWidgetAdapter.forceRenderingAbove();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t\t}\n\t\t}));\n\t\tthis._register(toDisposable(() => {\n\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t}));\n\n\t\tconst currentInlineCompletionBySemanticId = derivedObservableWithCache<string | undefined>(this, (reader, last) => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.state.read(reader);\n\t\t\tif (this._suggestWidgetAdapter.selectedItem.get()) {\n\t\t\t\treturn last;\n\t\t\t}\n\t\t\treturn state?.inlineCompletion?.semanticId;\n\t\t});\n\t\tthis._register(runOnChangeWithStore(derived(reader => {\n\t\t\tthis._playAccessibilitySignal.read(reader);\n\t\t\tcurrentInlineCompletionBySemanticId.read(reader);\n\t\t\treturn {};\n\t\t}), async (_value, _, _deltas, store) => {\n\t\t\t/** @description InlineCompletionsController.playAccessibilitySignalAndReadSuggestion */\n\t\t\tlet model = this.model.get();\n\t\t\tlet state = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\n\t\t\tawait timeout(50, cancelOnDispose(store));\n\t\t\tawait waitForState(this._suggestWidgetAdapter.selectedItem, isUndefined, () => false, cancelOnDispose(store));\n\n\t\t\tmodel = this.model.get();\n\t\t\tstate = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\t\t\tconst lineText = state.kind === 'ghostText' ? model.textModel.getLineContent(state.primaryGhostText.lineNumber) : '';\n\t\t\tthis._accessibilitySignalService.playSignal(state.kind === 'ghostText' ? AccessibilitySignal.inlineSuggestion : AccessibilitySignal.nextEditSuggestion);\n\n\t\t\tif (this.editor.getOption(EditorOption.screenReaderAnnounceInlineSuggestion)) {\n\t\t\t\tif (state.kind === 'ghostText') {\n\t\t\t\t\tthis._provideScreenReaderUpdate(state.primaryGhostText.renderForScreenReader(lineText));\n\t\t\t\t} else {\n\t\t\t\t\tthis._provideScreenReaderUpdate(''); // Only announce Alt+F2\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\t// TODO@hediet\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration('accessibility.verbosity.inlineCompletions')) {\n\t\t\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\t\t\t}\n\t\t}));\n\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\n\t\tconst contextKeySvcObs = new ObservableContextKeyService(this._contextKeyService);\n\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorInIndentation, this._cursorIsInIndentation));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.hasSelection, reader => !this._editorObs.cursorSelection.read(reader)?.isEmpty()));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorAtInlineEdit, this.model.map((m, reader) => m?.inlineEditState?.read(reader)?.cursorAtInlineEdit.read(reader))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldAcceptInlineEdit, this.model.map((m, r) => !!m?.tabShouldAcceptInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldJumpToInlineEdit, this.model.map((m, r) => !!m?.tabShouldJumpToInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineEditVisible, reader => this.model.read(reader)?.inlineEditState.read(reader) !== undefined));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentation,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentation\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentationLessThanTabSize\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.suppressSuggestions, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn state?.primaryGhostText && state?.inlineCompletion ? state.inlineCompletion.source.inlineSuggestions.suppressSuggestions : undefined;\n\t\t}));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionVisible, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn !!state?.inlineCompletion && state?.primaryGhostText !== undefined && !state?.primaryGhostText.isEmpty();\n\t\t}));\n\t\tconst firstGhostTextPos = derived(this, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\tconst primaryGhostText = state?.primaryGhostText;\n\t\t\tif (!primaryGhostText || primaryGhostText.isEmpty()) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst firstPartPos = new Position(primaryGhostText.lineNumber, primaryGhostText.parts[0].column);\n\t\t\treturn firstPartPos;\n\t\t});\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorBeforeGhostText, reader => {\n\t\t\tconst firstPartPos = firstGhostTextPos.read(reader);\n\t\t\tif (!firstPartPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (!cursorPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn firstPartPos.equals(cursorPos);\n\t\t}));\n\n\t\tthis._register(this._instantiationService.createInstance(TextModelChangeRecorder, this.editor));\n\t}\n\n\tpublic playAccessibilitySignal(tx: ITransaction) {\n\t\tthis._playAccessibilitySignal.trigger(tx);\n\t}\n\n\tprivate _provideScreenReaderUpdate(content: string): void {\n\t\tconst accessibleViewShowing = this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown');\n\t\tconst accessibleViewKeybinding = this._keybindingService.lookupKeybinding('editor.action.accessibleView');\n\t\tlet hint: string | undefined;\n\t\tif (!accessibleViewShowing && accessibleViewKeybinding && this.editor.getOption(EditorOption.inlineCompletionsAccessibilityVerbose)) {\n\t\t\thint = localize('showAccessibleViewHint', \"Inspect this in the accessible view ({0})\", accessibleViewKeybinding.getAriaLabel());\n\t\t}\n\t\talert(hint ? content + ', ' + hint : content);\n\t}\n\n\tpublic shouldShowHoverAt(range: Range) {\n\t\tconst ghostText = this.model.get()?.primaryGhostText.get();\n\t\tif (!ghostText) {\n\t\t\treturn false;\n\t\t}\n\t\treturn ghostText.parts.some(p => range.containsPosition(new Position(ghostText.lineNumber, p.column)));\n\t}\n\n\tpublic shouldShowHoverAtViewZone(viewZoneId: string): boolean {\n\t\treturn this._view.shouldShowHoverAtViewZone(viewZoneId);\n\t}\n\n\tpublic reject(): void {\n\t\ttransaction(tx => {\n\t\t\tconst m = this.model.get();\n\t\t\tif (m) {\n\t\t\t\tm.stop('explicitCancel', tx);\n\t\t\t\t// Only if this controller is in focus can we cancel others.\n\t\t\t\tif (this._focusIsInEditorOrMenu.get()) {\n\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\tctrl.model.get()?.stop('automatic', tx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic jump(): void {\n\t\tconst m = this.model.get();\n\t\tif (m) {\n\t\t\tm.jump();\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.ts"],"names":[],"mappings":"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","file":"inlineCompletionsController.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 { alert } from '../../../../../base/browser/ui/aria/aria.js';\nimport { timeout } from '../../../../../base/common/async.js';\nimport { cancelOnDispose } from '../../../../../base/common/cancellation.js';\nimport { createHotClass } from '../../../../../base/common/hotReloadHelpers.js';\nimport { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { ITransaction, autorun, derived, derivedDisposable, derivedObservableWithCache, observableFromEvent, observableSignal, observableValue, runOnChange, runOnChangeWithStore, transaction, waitForState } from '../../../../../base/common/observable.js';\nimport { isEqual } from '../../../../../base/common/resources.js';\nimport { isUndefined } from '../../../../../base/common/types.js';\nimport { localize } from '../../../../../nls.js';\nimport { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { ICommandService } from '../../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { hotClassGetOriginalInstance } from '../../../../../platform/observable/common/wrapInHotClass.js';\nimport { CoreEditingCommands } from '../../../../browser/coreCommands.js';\nimport { ICodeEditor } from '../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../browser/observableCodeEditor.js';\nimport { getOuterEditor } from '../../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { CursorChangeReason } from '../../../../common/cursorEvents.js';\nimport { ILanguageFeatureDebounceService } from '../../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nimport { InlineSuggestionHintsContentWidget } from '../hintsWidget/inlineCompletionsHintsWidget.js';\nimport { TextModelChangeRecorder } from '../model/changeRecorder.js';\nimport { InlineCompletionsModel } from '../model/inlineCompletionsModel.js';\nimport { ObservableSuggestWidgetAdapter } from '../model/suggestWidgetAdapter.js';\nimport { ObservableContextKeyService } from '../utils.js';\nimport { InlineCompletionsView } from '../view/inlineCompletionsView.js';\nimport { inlineSuggestCommitId } from './commandIds.js';\nimport { InlineCompletionContextKeys } from './inlineCompletionContextKeys.js';\n\nexport class InlineCompletionsController extends Disposable {\n\tprivate static readonly _instances = new Set<InlineCompletionsController>();\n\n\tpublic static hot = createHotClass(this);\n\tpublic static ID = 'editor.contrib.inlineCompletionsController';\n\n\t/**\n\t * Find the controller in the focused editor or in the outer editor (if applicable)\n\t */\n\tpublic static getInFocusedEditorOrParent(accessor: ServicesAccessor): InlineCompletionsController | null {\n\t\tconst outerEditor = getOuterEditor(accessor);\n\t\tif (!outerEditor) {\n\t\t\treturn null;\n\t\t}\n\t\treturn InlineCompletionsController.get(outerEditor);\n\t}\n\n\tpublic static get(editor: ICodeEditor): InlineCompletionsController | null {\n\t\treturn hotClassGetOriginalInstance(editor.getContribution<InlineCompletionsController>(InlineCompletionsController.ID));\n\t}\n\n\tprivate readonly _editorObs;\n\tprivate readonly _positions;\n\n\tprivate readonly _suggestWidgetAdapter;\n\n\tprivate readonly _enabledInConfig;\n\tprivate readonly _isScreenReaderEnabled;\n\tprivate readonly _editorDictationInProgress;\n\tprivate readonly _enabled;\n\n\tprivate readonly _debounceValue;\n\n\tprivate readonly _focusIsInMenu;\n\tprivate readonly _focusIsInEditorOrMenu;\n\n\tprivate readonly _cursorIsInIndentation;\n\n\tpublic readonly model;\n\n\tprivate readonly _playAccessibilitySignal;\n\n\tprivate readonly _hideInlineEditOnSelectionChange;\n\n\tprotected readonly _view;\n\n\tconstructor(\n\t\tpublic readonly editor: ICodeEditor,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@ILanguageFeatureDebounceService private readonly _debounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,\n\t) {\n\t\tsuper();\n\t\tthis._editorObs = observableCodeEditor(this.editor);\n\t\tthis._positions = derived(this, reader => this._editorObs.selections.read(reader)?.map(s => s.getEndPosition()) ?? [new Position(1, 1)]);\n\t\tthis._suggestWidgetAdapter = this._register(new ObservableSuggestWidgetAdapter(\n\t\t\tthis._editorObs,\n\t\t\titem => this.model.get()?.handleSuggestAccepted(item),\n\t\t\t() => this.model.get()?.selectedInlineCompletion.get()?.getSingleTextEdit(),\n\t\t));\n\t\tthis._enabledInConfig = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.inlineSuggest).enabled);\n\t\tthis._isScreenReaderEnabled = observableFromEvent(this, this._accessibilityService.onDidChangeScreenReaderOptimized, () => this._accessibilityService.isScreenReaderOptimized());\n\t\tthis._editorDictationInProgress = observableFromEvent(this,\n\t\t\tthis._contextKeyService.onDidChangeContext,\n\t\t\t() => this._contextKeyService.getContext(this.editor.getDomNode()).getValue('editorDictation.inProgress') === true\n\t\t);\n\t\tthis._enabled = derived(this, reader => this._enabledInConfig.read(reader) && (!this._isScreenReaderEnabled.read(reader) || !this._editorDictationInProgress.read(reader)));\n\t\tthis._debounceValue = this._debounceService.for(\n\t\t\tthis._languageFeaturesService.inlineCompletionsProvider,\n\t\t\t'InlineCompletionsDebounce',\n\t\t\t{ min: 50, max: 50 }\n\t\t);\n\t\tthis._focusIsInMenu = observableValue<boolean>(this, false);\n\t\tthis._focusIsInEditorOrMenu = derived(this, reader => {\n\t\t\tconst editorHasFocus = this._editorObs.isFocused.read(reader);\n\t\t\tconst menuHasFocus = this._focusIsInMenu.read(reader);\n\t\t\treturn editorHasFocus || menuHasFocus;\n\t\t});\n\t\tthis._cursorIsInIndentation = derived(this, reader => {\n\t\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (cursorPos === null) { return false; }\n\t\t\tconst model = this._editorObs.model.read(reader);\n\t\t\tif (!model) { return false; }\n\t\t\tthis._editorObs.versionId.read(reader);\n\t\t\tconst indentMaxColumn = model.getLineIndentColumn(cursorPos.lineNumber);\n\t\t\treturn cursorPos.column <= indentMaxColumn;\n\t\t});\n\t\tthis.model = derivedDisposable<InlineCompletionsModel | undefined>(this, reader => {\n\t\t\tif (this._editorObs.isReadonly.read(reader)) { return undefined; }\n\t\t\tconst textModel = this._editorObs.model.read(reader);\n\t\t\tif (!textModel) { return undefined; }\n\n\t\t\tconst model: InlineCompletionsModel = this._instantiationService.createInstance(\n\t\t\t\tInlineCompletionsModel,\n\t\t\t\ttextModel,\n\t\t\t\tthis._suggestWidgetAdapter.selectedItem,\n\t\t\t\tthis._editorObs.versionId,\n\t\t\t\tthis._positions,\n\t\t\t\tthis._debounceValue,\n\t\t\t\tthis._enabled,\n\t\t\t\tthis.editor,\n\t\t\t);\n\t\t\treturn model;\n\t\t}).recomputeInitiallyAndOnChange(this._store);\n\t\tthis._playAccessibilitySignal = observableSignal(this);\n\t\tthis._hideInlineEditOnSelectionChange = this._editorObs.getOption(EditorOption.inlineSuggest).map(val => true);\n\t\tthis._view = this._register(this._instantiationService.createInstance(InlineCompletionsView, this.editor, this.model, this._focusIsInMenu));\n\n\t\tInlineCompletionsController._instances.add(this);\n\t\tthis._register(toDisposable(() => InlineCompletionsController._instances.delete(this)));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tconst state = model.state.read(reader);\n\t\t\tif (!state) { return; }\n\t\t\tif (!this._focusIsInEditorOrMenu.read(undefined)) { return; }\n\n\t\t\t// This controller is in focus, hence reject others.\n\t\t\t// However if we display a NES that relates to another edit then trigger NES on that related controller\n\t\t\tconst nextEditUri = state.kind === 'inlineEdit' ? state.nextEditUri : undefined;\n\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\tif (ctrl === this) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (nextEditUri && isEqual(nextEditUri, ctrl.editor.getModel()?.uri)) {\n\t\t\t\t\t// The next edit in other edito is related to this controller, trigger it.\n\t\t\t\t\tctrl.model.read(undefined)?.trigger();\n\t\t\t\t} else {\n\t\t\t\t\tctrl.reject();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst uri = this.editor.getModel()?.uri;\n\t\t\tif (!model || !uri) { return; }\n\n\t\t\t// This NES was accepted, its possible there is an NES that points to this editor.\n\t\t\t// I.e. there's an NES that reads `Go To Next Edit`,\n\t\t\t// If there is one that points to this editor, then we need to hide that as this NES was accepted.\n\t\t\treader.store.add(model.onDidAccept(() => {\n\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\tif (ctrl === this) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// Find the nes from another editor that points to this.\n\t\t\t\t\tconst state = ctrl.model.read(undefined)?.state.read(undefined);\n\t\t\t\t\tif (state?.kind === 'inlineEdit' && isEqual(state.nextEditUri, uri)) {\n\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidType, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidPaste, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._commandService.onDidExecuteCommand((e) => {\n\t\t\t// These commands don't trigger onDidType.\n\t\t\tconst commands = new Set([\n\t\t\t\tCoreEditingCommands.Tab.id,\n\t\t\t\tCoreEditingCommands.DeleteLeft.id,\n\t\t\t\tCoreEditingCommands.DeleteRight.id,\n\t\t\t\tinlineSuggestCommitId,\n\t\t\t\t'acceptSelectedSuggestion',\n\t\t\t]);\n\t\t\tif (commands.has(e.commandId) && editor.hasTextFocus() && this._enabled.get()) {\n\t\t\t\tlet noDelay = false;\n\t\t\t\tif (e.commandId === inlineSuggestCommitId) {\n\t\t\t\t\tnoDelay = true;\n\t\t\t\t}\n\t\t\t\tthis._editorObs.forceUpdate(tx => {\n\t\t\t\t\t/** @description onDidExecuteCommand */\n\t\t\t\t\tthis.model.get()?.trigger(tx, { noDelay });\n\t\t\t\t});\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.selections, (_value, _, changes) => {\n\t\t\tif (changes.some(e => e.reason === CursorChangeReason.Explicit || e.source === 'api')) {\n\t\t\t\tif (!this._hideInlineEditOnSelectionChange.get() && this.model.get()?.state.get()?.kind === 'inlineEdit') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst m = this.model.get();\n\t\t\t\tif (!m) { return; }\n\t\t\t\tif (m.state.get()?.kind === 'ghostText') {\n\t\t\t\t\tthis.model.get()?.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isFocused = this._focusIsInEditorOrMenu.read(reader);\n\t\t\tconst model = this.model.read(undefined);\n\t\t\tif (isFocused) {\n\t\t\t\t// If this model already has an NES for another editor, then leave as is\n\t\t\t\t// Else stop other models.\n\t\t\t\tconst state = model?.state.read(undefined);\n\t\t\t\tif (!state || state.kind !== 'inlineEdit' || !state.nextEditUri) {\n\t\t\t\t\ttransaction(tx => {\n\t\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic', tx);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This is a hidden setting very useful for debugging\n\t\t\tif (this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown')\n\t\t\t\t|| this._configurationService.getValue('editor.inlineSuggest.keepOnBlur')\n\t\t\t\t|| editor.getOption(EditorOption.inlineSuggest).keepOnBlur\n\t\t\t\t|| InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!model) { return; }\n\t\t\tif (model.state.read(undefined)?.inlineCompletion?.isFromExplicitRequest && model.inlineEditAvailable.read(undefined)) {\n\t\t\t\t// dont hide inline edits on blur when requested explicitly\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttransaction(tx => {\n\t\t\t\t/** @description InlineCompletionsController.onDidBlurEditorWidget */\n\t\t\t\tmodel.stop('automatic', tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description InlineCompletionsController.forceRenderingAbove */\n\t\t\tconst state = this.model.read(reader)?.inlineCompletionState.read(reader);\n\t\t\tif (state?.suggestItem) {\n\t\t\t\tif (state.primaryGhostText.lineCount >= 2) {\n\t\t\t\t\tthis._suggestWidgetAdapter.forceRenderingAbove();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t\t}\n\t\t}));\n\t\tthis._register(toDisposable(() => {\n\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t}));\n\n\t\tconst currentInlineCompletionBySemanticId = derivedObservableWithCache<string | undefined>(this, (reader, last) => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.state.read(reader);\n\t\t\tif (this._suggestWidgetAdapter.selectedItem.get()) {\n\t\t\t\treturn last;\n\t\t\t}\n\t\t\treturn state?.inlineCompletion?.semanticId;\n\t\t});\n\t\tthis._register(runOnChangeWithStore(derived(reader => {\n\t\t\tthis._playAccessibilitySignal.read(reader);\n\t\t\tcurrentInlineCompletionBySemanticId.read(reader);\n\t\t\treturn {};\n\t\t}), async (_value, _, _deltas, store) => {\n\t\t\t/** @description InlineCompletionsController.playAccessibilitySignalAndReadSuggestion */\n\t\t\tlet model = this.model.get();\n\t\t\tlet state = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\n\t\t\tawait timeout(50, cancelOnDispose(store));\n\t\t\tawait waitForState(this._suggestWidgetAdapter.selectedItem, isUndefined, () => false, cancelOnDispose(store));\n\n\t\t\tmodel = this.model.get();\n\t\t\tstate = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\t\t\tconst lineText = state.kind === 'ghostText' ? model.textModel.getLineContent(state.primaryGhostText.lineNumber) : '';\n\t\t\tthis._accessibilitySignalService.playSignal(state.kind === 'ghostText' ? AccessibilitySignal.inlineSuggestion : AccessibilitySignal.nextEditSuggestion);\n\n\t\t\tif (this.editor.getOption(EditorOption.screenReaderAnnounceInlineSuggestion)) {\n\t\t\t\tif (state.kind === 'ghostText') {\n\t\t\t\t\tthis._provideScreenReaderUpdate(state.primaryGhostText.renderForScreenReader(lineText));\n\t\t\t\t} else {\n\t\t\t\t\tthis._provideScreenReaderUpdate(''); // Only announce Alt+F2\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\t// TODO@hediet\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration('accessibility.verbosity.inlineCompletions')) {\n\t\t\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\t\t\t}\n\t\t}));\n\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\n\t\tconst contextKeySvcObs = new ObservableContextKeyService(this._contextKeyService);\n\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorInIndentation, this._cursorIsInIndentation));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.hasSelection, reader => !this._editorObs.cursorSelection.read(reader)?.isEmpty()));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorAtInlineEdit, this.model.map((m, reader) => m?.inlineEditState?.read(reader)?.cursorAtInlineEdit.read(reader))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldAcceptInlineEdit, this.model.map((m, r) => !!m?.tabShouldAcceptInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldJumpToInlineEdit, this.model.map((m, r) => !!m?.tabShouldJumpToInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineEditVisible, reader => this.model.read(reader)?.inlineEditState.read(reader) !== undefined));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentation,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentation\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentationLessThanTabSize\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.suppressSuggestions, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn state?.primaryGhostText && state?.inlineCompletion ? state.inlineCompletion.source.inlineSuggestions.suppressSuggestions : undefined;\n\t\t}));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionVisible, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn !!state?.inlineCompletion && state?.primaryGhostText !== undefined && !state?.primaryGhostText.isEmpty();\n\t\t}));\n\t\tconst firstGhostTextPos = derived(this, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\tconst primaryGhostText = state?.primaryGhostText;\n\t\t\tif (!primaryGhostText || primaryGhostText.isEmpty()) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst firstPartPos = new Position(primaryGhostText.lineNumber, primaryGhostText.parts[0].column);\n\t\t\treturn firstPartPos;\n\t\t});\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorBeforeGhostText, reader => {\n\t\t\tconst firstPartPos = firstGhostTextPos.read(reader);\n\t\t\tif (!firstPartPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (!cursorPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn firstPartPos.equals(cursorPos);\n\t\t}));\n\n\t\tthis._register(this._instantiationService.createInstance(TextModelChangeRecorder, this.editor));\n\t}\n\n\tpublic playAccessibilitySignal(tx: ITransaction) {\n\t\tthis._playAccessibilitySignal.trigger(tx);\n\t}\n\n\tprivate _provideScreenReaderUpdate(content: string): void {\n\t\tconst accessibleViewShowing = this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown');\n\t\tconst accessibleViewKeybinding = this._keybindingService.lookupKeybinding('editor.action.accessibleView');\n\t\tlet hint: string | undefined;\n\t\tif (!accessibleViewShowing && accessibleViewKeybinding && this.editor.getOption(EditorOption.inlineCompletionsAccessibilityVerbose)) {\n\t\t\thint = localize('showAccessibleViewHint', \"Inspect this in the accessible view ({0})\", accessibleViewKeybinding.getAriaLabel());\n\t\t}\n\t\talert(hint ? content + ', ' + hint : content);\n\t}\n\n\tpublic shouldShowHoverAt(range: Range) {\n\t\tconst ghostText = this.model.get()?.primaryGhostText.get();\n\t\tif (!ghostText) {\n\t\t\treturn false;\n\t\t}\n\t\treturn ghostText.parts.some(p => range.containsPosition(new Position(ghostText.lineNumber, p.column)));\n\t}\n\n\tpublic shouldShowHoverAtViewZone(viewZoneId: string): boolean {\n\t\treturn this._view.shouldShowHoverAtViewZone(viewZoneId);\n\t}\n\n\tpublic reject(): void {\n\t\ttransaction(tx => {\n\t\t\tconst m = this.model.get();\n\t\t\tif (m) {\n\t\t\t\tm.stop('explicitCancel', tx);\n\t\t\t\t// Only if this controller is in focus can we cancel others.\n\t\t\t\tif (this._focusIsInEditorOrMenu.get()) {\n\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\tctrl.model.get()?.stop('automatic', tx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic jump(): void {\n\t\tconst m = this.model.get();\n\t\tif (m) {\n\t\t\tm.jump();\n\t\t}\n\t}\n}\n"]}
|
package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js
CHANGED
|
@@ -101,7 +101,7 @@ const inlineSuggestionHintsNextIcon = registerIcon('inline-suggestion-hints-next
|
|
|
101
101
|
const inlineSuggestionHintsPreviousIcon = registerIcon('inline-suggestion-hints-previous', Codicon.chevronLeft, localize(1199, 'Icon for show previous parameter hint.'));
|
|
102
102
|
let InlineSuggestionHintsContentWidget = class InlineSuggestionHintsContentWidget extends Disposable {
|
|
103
103
|
static { InlineSuggestionHintsContentWidget_1 = this; }
|
|
104
|
-
static { this.hot = createHotClass(
|
|
104
|
+
static { this.hot = createHotClass(this); }
|
|
105
105
|
static { this._dropDownVisible = false; }
|
|
106
106
|
static get dropDownVisible() { return this._dropDownVisible; }
|
|
107
107
|
static { this.id = 0; }
|