monaco-editor-core 0.55.0-dev-20251008 → 0.55.0-dev-20251009
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +3 -1
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +4 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +9 -1
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +5 -8
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js +36 -31
- package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/editor/common/core/text/abstractText.js +5 -1
- package/esm/vs/editor/common/core/text/abstractText.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js +2 -1
- package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +54 -61
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +5 -8
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +18 -23
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +10 -12
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +9 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +8 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +10 -12
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +5 -5
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +18 -24
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +15 -18
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +7 -6
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js.map +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -32
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
- package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/package.json +2 -2
- package/version.txt +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/suggest/browser/suggestWidget.ts"],"names":[],"mappings":"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","file":"suggestWidget.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 * as dom from '../../../../base/browser/dom.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\nimport { IListEvent, IListGestureEvent, IListMouseEvent } from '../../../../base/browser/ui/list/list.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport { CancelablePromise, createCancelablePromise, disposableTimeout, TimeoutTimer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter, Event, PauseableEmitter } from '../../../../base/common/event.js';\nimport { DisposableStore, IDisposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { clamp } from '../../../../base/common/numbers.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './media/suggest.css';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent } from '../../../browser/editorBrowser.js';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IPosition } from '../../../common/core/position.js';\nimport { SuggestWidgetStatus } from './suggestWidgetStatus.js';\nimport '../../symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\nimport { activeContrastBorder, editorForeground, editorWidgetBackground, editorWidgetBorder, listFocusHighlightForeground, listHighlightForeground, quickInputListFocusBackground, quickInputListFocusForeground, quickInputListFocusIconForeground, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { IColorTheme, IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { CompletionModel } from './completionModel.js';\nimport { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport { CompletionItem, Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\nimport { canExpandCompletionItem, SuggestDetailsOverlay, SuggestDetailsWidget } from './suggestWidgetDetails.js';\nimport { ItemRenderer } from './suggestWidgetRenderer.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\nimport { CompletionItemKinds } from '../../../common/languages.js';\nimport { isWindows } from '../../../../base/common/platform.js';\n\n/**\n * Suggest widget colors\n */\nregisterColor('editorSuggestWidget.background', editorWidgetBackground, nls.localize('editorSuggestWidgetBackground', 'Background color of the suggest widget.'));\nregisterColor('editorSuggestWidget.border', editorWidgetBorder, nls.localize('editorSuggestWidgetBorder', 'Border color of the suggest widget.'));\nexport const editorSuggestWidgetForeground = registerColor('editorSuggestWidget.foreground', editorForeground, nls.localize('editorSuggestWidgetForeground', 'Foreground color of the suggest widget.'));\nregisterColor('editorSuggestWidget.selectedForeground', quickInputListFocusForeground, nls.localize('editorSuggestWidgetSelectedForeground', 'Foreground color of the selected entry in the suggest widget.'));\nregisterColor('editorSuggestWidget.selectedIconForeground', quickInputListFocusIconForeground, nls.localize('editorSuggestWidgetSelectedIconForeground', 'Icon foreground color of the selected entry in the suggest widget.'));\nexport const editorSuggestWidgetSelectedBackground = registerColor('editorSuggestWidget.selectedBackground', quickInputListFocusBackground, nls.localize('editorSuggestWidgetSelectedBackground', 'Background color of the selected entry in the suggest widget.'));\nregisterColor('editorSuggestWidget.highlightForeground', listHighlightForeground, nls.localize('editorSuggestWidgetHighlightForeground', 'Color of the match highlights in the suggest widget.'));\nregisterColor('editorSuggestWidget.focusHighlightForeground', listFocusHighlightForeground, nls.localize('editorSuggestWidgetFocusHighlightForeground', 'Color of the match highlights in the suggest widget when an item is focused.'));\nregisterColor('editorSuggestWidgetStatus.foreground', transparent(editorSuggestWidgetForeground, .5), nls.localize('editorSuggestWidgetStatusForeground', 'Foreground color of the suggest widget status.'));\n\nconst enum State {\n\tHidden,\n\tLoading,\n\tEmpty,\n\tOpen,\n\tFrozen,\n\tDetails,\n\tonDetailsKeyDown\n}\n\nexport interface ISelectedSuggestion {\n\titem: CompletionItem;\n\tindex: number;\n\tmodel: CompletionModel;\n}\n\nclass PersistedWidgetSize {\n\n\tprivate readonly _key: string;\n\n\tconstructor(\n\t\tprivate readonly _service: IStorageService,\n\t\teditor: ICodeEditor\n\t) {\n\t\tthis._key = `suggestWidget.size/${editor.getEditorType()}/${editor instanceof EmbeddedCodeEditorWidget}`;\n\t}\n\n\trestore(): dom.Dimension | undefined {\n\t\tconst raw = this._service.get(this._key, StorageScope.PROFILE) ?? '';\n\t\ttry {\n\t\t\tconst obj = JSON.parse(raw);\n\t\t\tif (dom.Dimension.is(obj)) {\n\t\t\t\treturn dom.Dimension.lift(obj);\n\t\t\t}\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tstore(size: dom.Dimension) {\n\t\tthis._service.store(this._key, JSON.stringify(size), StorageScope.PROFILE, StorageTarget.MACHINE);\n\t}\n\n\treset(): void {\n\t\tthis._service.remove(this._key, StorageScope.PROFILE);\n\t}\n}\n\nexport class SuggestWidget implements IDisposable {\n\n\tprivate static LOADING_MESSAGE: string = nls.localize('suggestWidget.loading', \"Loading...\");\n\tprivate static NO_SUGGESTIONS_MESSAGE: string = nls.localize('suggestWidget.noSuggestions', \"No suggestions.\");\n\n\tprivate _state: State = State.Hidden;\n\tprivate _isAuto: boolean = false;\n\tprivate _loadingTimeout?: IDisposable;\n\tprivate readonly _pendingLayout = new MutableDisposable();\n\tprivate readonly _pendingShowDetails = new MutableDisposable();\n\tprivate _currentSuggestionDetails?: CancelablePromise<void>;\n\tprivate _focusedItem?: CompletionItem;\n\tprivate _ignoreFocusEvents: boolean = false;\n\tprivate _completionModel?: CompletionModel;\n\tprivate _cappedHeight?: { wanted: number; capped: number };\n\tprivate _forceRenderingAbove: boolean = false;\n\tprivate _explainMode: boolean = false;\n\n\treadonly element: ResizableHTMLElement;\n\tprivate readonly _messageElement: HTMLElement;\n\tprivate readonly _listElement: HTMLElement;\n\tprivate readonly _list: List<CompletionItem>;\n\tprivate readonly _status: SuggestWidgetStatus;\n\tprivate readonly _details: SuggestDetailsOverlay;\n\tprivate readonly _contentWidget: SuggestContentWidget;\n\tprivate readonly _persistedSize: PersistedWidgetSize;\n\n\tprivate readonly _ctxSuggestWidgetVisible: IContextKey<boolean>;\n\tprivate readonly _ctxSuggestWidgetDetailsVisible: IContextKey<boolean>;\n\tprivate readonly _ctxSuggestWidgetMultipleSuggestions: IContextKey<boolean>;\n\tprivate readonly _ctxSuggestWidgetHasFocusedSuggestion: IContextKey<boolean>;\n\n\tprivate readonly _showTimeout = new TimeoutTimer();\n\tprivate readonly _disposables = new DisposableStore();\n\n\n\tprivate readonly _onDidSelect = new PauseableEmitter<ISelectedSuggestion>();\n\tprivate readonly _onDidFocus = new PauseableEmitter<ISelectedSuggestion>();\n\tprivate readonly _onDidHide = new Emitter<this>();\n\tprivate readonly _onDidShow = new Emitter<this>();\n\n\treadonly onDidSelect: Event<ISelectedSuggestion> = this._onDidSelect.event;\n\treadonly onDidFocus: Event<ISelectedSuggestion> = this._onDidFocus.event;\n\treadonly onDidHide: Event<this> = this._onDidHide.event;\n\treadonly onDidShow: Event<this> = this._onDidShow.event;\n\n\tprivate readonly _onDetailsKeydown = new Emitter<IKeyboardEvent>();\n\treadonly onDetailsKeyDown: Event<IKeyboardEvent> = this._onDetailsKeydown.event;\n\n\tconstructor(\n\t\tprivate readonly editor: ICodeEditor,\n\t\t@IStorageService private readonly _storageService: IStorageService,\n\t\t@IContextKeyService _contextKeyService: IContextKeyService,\n\t\t@IThemeService _themeService: IThemeService,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t) {\n\t\tthis.element = new ResizableHTMLElement();\n\t\tthis.element.domNode.classList.add('editor-widget', 'suggest-widget');\n\n\t\tthis._contentWidget = new SuggestContentWidget(this, editor);\n\t\tthis._persistedSize = new PersistedWidgetSize(_storageService, editor);\n\n\t\tclass ResizeState {\n\t\t\tconstructor(\n\t\t\t\treadonly persistedSize: dom.Dimension | undefined,\n\t\t\t\treadonly currentSize: dom.Dimension,\n\t\t\t\tpublic persistHeight = false,\n\t\t\t\tpublic persistWidth = false,\n\t\t\t) { }\n\t\t}\n\n\t\tlet state: ResizeState | undefined;\n\t\tthis._disposables.add(this.element.onDidWillResize(() => {\n\t\t\tthis._contentWidget.lockPreference();\n\t\t\tstate = new ResizeState(this._persistedSize.restore(), this.element.size);\n\t\t}));\n\t\tthis._disposables.add(this.element.onDidResize(e => {\n\n\t\t\tthis._resize(e.dimension.width, e.dimension.height);\n\n\t\t\tif (state) {\n\t\t\t\tstate.persistHeight = state.persistHeight || !!e.north || !!e.south;\n\t\t\t\tstate.persistWidth = state.persistWidth || !!e.east || !!e.west;\n\t\t\t}\n\n\t\t\tif (!e.done) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (state) {\n\t\t\t\t// only store width or height value that have changed and also\n\t\t\t\t// only store changes that are above a certain threshold\n\t\t\t\tconst { itemHeight, defaultSize } = this.getLayoutInfo();\n\t\t\t\tconst threshold = Math.round(itemHeight / 2);\n\t\t\t\tlet { width, height } = this.element.size;\n\t\t\t\tif (!state.persistHeight || Math.abs(state.currentSize.height - height) <= threshold) {\n\t\t\t\t\theight = state.persistedSize?.height ?? defaultSize.height;\n\t\t\t\t}\n\t\t\t\tif (!state.persistWidth || Math.abs(state.currentSize.width - width) <= threshold) {\n\t\t\t\t\twidth = state.persistedSize?.width ?? defaultSize.width;\n\t\t\t\t}\n\t\t\t\tthis._persistedSize.store(new dom.Dimension(width, height));\n\t\t\t}\n\n\t\t\t// reset working state\n\t\t\tthis._contentWidget.unlockPreference();\n\t\t\tstate = undefined;\n\t\t}));\n\n\t\tthis._messageElement = dom.append(this.element.domNode, dom.$('.message'));\n\t\tthis._listElement = dom.append(this.element.domNode, dom.$('.tree'));\n\n\t\tconst details = this._disposables.add(instantiationService.createInstance(SuggestDetailsWidget, this.editor));\n\t\tdetails.onDidClose(() => this.toggleDetails(), this, this._disposables);\n\t\tthis._details = new SuggestDetailsOverlay(details, this.editor);\n\n\t\tconst applyIconStyle = () => this.element.domNode.classList.toggle('no-icons', !this.editor.getOption(EditorOption.suggest).showIcons);\n\t\tapplyIconStyle();\n\n\t\tconst renderer = instantiationService.createInstance(ItemRenderer, this.editor);\n\t\tthis._disposables.add(renderer);\n\t\tthis._disposables.add(renderer.onDidToggleDetails(() => this.toggleDetails()));\n\n\t\tthis._list = new List('SuggestWidget', this._listElement, {\n\t\t\tgetHeight: (_element: CompletionItem): number => this.getLayoutInfo().itemHeight,\n\t\t\tgetTemplateId: (_element: CompletionItem): string => 'suggestion'\n\t\t}, [renderer], {\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t\tuseShadows: false,\n\t\t\tmouseSupport: false,\n\t\t\tmultipleSelectionSupport: false,\n\t\t\taccessibilityProvider: {\n\t\t\t\tgetRole: () => isWindows ? 'listitem' : 'option',\n\t\t\t\tgetWidgetAriaLabel: () => nls.localize('suggest', \"Suggest\"),\n\t\t\t\tgetWidgetRole: () => 'listbox',\n\t\t\t\tgetAriaLabel: (item: CompletionItem) => {\n\n\t\t\t\t\tlet label = item.textLabel;\n\t\t\t\t\tconst kindLabel = CompletionItemKinds.toLabel(item.completion.kind);\n\t\t\t\t\tif (typeof item.completion.label !== 'string') {\n\t\t\t\t\t\tconst { detail, description } = item.completion.label;\n\t\t\t\t\t\tif (detail && description) {\n\t\t\t\t\t\t\tlabel = nls.localize('label.full', '{0} {1}, {2}, {3}', label, detail, description, kindLabel);\n\t\t\t\t\t\t} else if (detail) {\n\t\t\t\t\t\t\tlabel = nls.localize('label.detail', '{0} {1}, {2}', label, detail, kindLabel);\n\t\t\t\t\t\t} else if (description) {\n\t\t\t\t\t\t\tlabel = nls.localize('label.desc', '{0}, {1}, {2}', label, description, kindLabel);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabel = nls.localize('label', '{0}, {1}', label, kindLabel);\n\t\t\t\t\t}\n\t\t\t\t\tif (!item.isResolved || !this._isDetailsVisible()) {\n\t\t\t\t\t\treturn label;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { documentation, detail } = item.completion;\n\t\t\t\t\tconst docs = strings.format(\n\t\t\t\t\t\t'{0}{1}',\n\t\t\t\t\t\tdetail || '',\n\t\t\t\t\t\tdocumentation ? (typeof documentation === 'string' ? documentation : documentation.value) : '');\n\n\t\t\t\t\treturn nls.localize('ariaCurrenttSuggestionReadDetails', \"{0}, docs: {1}\", label, docs);\n\t\t\t\t},\n\t\t\t}\n\t\t});\n\t\tthis._list.style(getListStyles({\n\t\t\tlistInactiveFocusBackground: editorSuggestWidgetSelectedBackground,\n\t\t\tlistInactiveFocusOutline: activeContrastBorder\n\t\t}));\n\n\t\tthis._status = instantiationService.createInstance(SuggestWidgetStatus, this.element.domNode, suggestWidgetStatusbarMenu);\n\t\tconst applyStatusBarStyle = () => this.element.domNode.classList.toggle('with-status-bar', this.editor.getOption(EditorOption.suggest).showStatusBar);\n\t\tapplyStatusBarStyle();\n\n\t\tthis._disposables.add(_themeService.onDidColorThemeChange(t => this._onThemeChange(t)));\n\t\tthis._onThemeChange(_themeService.getColorTheme());\n\n\t\tthis._disposables.add(this._list.onMouseDown(e => this._onListMouseDownOrTap(e)));\n\t\tthis._disposables.add(this._list.onTap(e => this._onListMouseDownOrTap(e)));\n\t\tthis._disposables.add(this._list.onDidChangeSelection(e => this._onListSelection(e)));\n\t\tthis._disposables.add(this._list.onDidChangeFocus(e => this._onListFocus(e)));\n\t\tthis._disposables.add(this.editor.onDidChangeCursorSelection(() => this._onCursorSelectionChanged()));\n\t\tthis._disposables.add(this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.suggest)) {\n\t\t\t\tapplyStatusBarStyle();\n\t\t\t\tapplyIconStyle();\n\t\t\t}\n\t\t\tif (this._completionModel && (e.hasChanged(EditorOption.fontInfo) || e.hasChanged(EditorOption.suggestFontSize) || e.hasChanged(EditorOption.suggestLineHeight))) {\n\t\t\t\tthis._list.splice(0, this._list.length, this._completionModel.items);\n\t\t\t}\n\t\t}));\n\n\t\tthis._ctxSuggestWidgetVisible = SuggestContext.Visible.bindTo(_contextKeyService);\n\t\tthis._ctxSuggestWidgetDetailsVisible = SuggestContext.DetailsVisible.bindTo(_contextKeyService);\n\t\tthis._ctxSuggestWidgetMultipleSuggestions = SuggestContext.MultipleSuggestions.bindTo(_contextKeyService);\n\t\tthis._ctxSuggestWidgetHasFocusedSuggestion = SuggestContext.HasFocusedSuggestion.bindTo(_contextKeyService);\n\n\t\tthis._disposables.add(dom.addStandardDisposableListener(this._details.widget.domNode, 'keydown', e => {\n\t\t\tthis._onDetailsKeydown.fire(e);\n\t\t}));\n\n\t\tthis._disposables.add(this.editor.onMouseDown((e: IEditorMouseEvent) => this._onEditorMouseDown(e)));\n\t}\n\n\tdispose(): void {\n\t\tthis._details.widget.dispose();\n\t\tthis._details.dispose();\n\t\tthis._list.dispose();\n\t\tthis._status.dispose();\n\t\tthis._disposables.dispose();\n\t\tthis._loadingTimeout?.dispose();\n\t\tthis._pendingLayout.dispose();\n\t\tthis._pendingShowDetails.dispose();\n\t\tthis._showTimeout.dispose();\n\t\tthis._contentWidget.dispose();\n\t\tthis.element.dispose();\n\t}\n\n\tprivate _onEditorMouseDown(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._details.widget.domNode.contains(mouseEvent.target.element)) {\n\t\t\t// Clicking inside details\n\t\t\tthis._details.widget.domNode.focus();\n\t\t} else {\n\t\t\t// Clicking outside details and inside suggest\n\t\t\tif (this.element.domNode.contains(mouseEvent.target.element)) {\n\t\t\t\tthis.editor.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _onCursorSelectionChanged(): void {\n\t\tif (this._state !== State.Hidden) {\n\t\t\tthis._contentWidget.layout();\n\t\t}\n\t}\n\n\tprivate _onListMouseDownOrTap(e: IListMouseEvent<CompletionItem> | IListGestureEvent<CompletionItem>): void {\n\t\tif (typeof e.element === 'undefined' || typeof e.index === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\t// prevent stealing browser focus from the editor\n\t\te.browserEvent.preventDefault();\n\t\te.browserEvent.stopPropagation();\n\n\t\tthis._select(e.element, e.index);\n\t}\n\n\tprivate _onListSelection(e: IListEvent<CompletionItem>): void {\n\t\tif (e.elements.length) {\n\t\t\tthis._select(e.elements[0], e.indexes[0]);\n\t\t}\n\t}\n\n\tprivate _select(item: CompletionItem, index: number): void {\n\t\tconst completionModel = this._completionModel;\n\t\tif (completionModel) {\n\t\t\tthis._onDidSelect.fire({ item, index, model: completionModel });\n\t\t\tthis.editor.focus();\n\t\t}\n\t}\n\n\tprivate _onThemeChange(theme: IColorTheme) {\n\t\tthis._details.widget.borderWidth = isHighContrast(theme.type) ? 2 : 1;\n\t}\n\n\tprivate _onListFocus(e: IListEvent<CompletionItem>): void {\n\t\tif (this._ignoreFocusEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._state === State.Details) {\n\t\t\t// This can happen when focus is in the details-panel and when\n\t\t\t// arrow keys are pressed to select next/prev items\n\t\t\tthis._setState(State.Open);\n\t\t}\n\n\t\tif (!e.elements.length) {\n\t\t\tif (this._currentSuggestionDetails) {\n\t\t\t\tthis._currentSuggestionDetails.cancel();\n\t\t\t\tthis._currentSuggestionDetails = undefined;\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t}\n\n\t\t\tthis.editor.setAriaOptions({ activeDescendant: undefined });\n\t\t\tthis._ctxSuggestWidgetHasFocusedSuggestion.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._completionModel) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctxSuggestWidgetHasFocusedSuggestion.set(true);\n\t\tconst item = e.elements[0];\n\t\tconst index = e.indexes[0];\n\n\t\tif (item !== this._focusedItem) {\n\n\t\t\tthis._currentSuggestionDetails?.cancel();\n\t\t\tthis._currentSuggestionDetails = undefined;\n\n\t\t\tthis._focusedItem = item;\n\n\t\t\tthis._list.reveal(index);\n\n\t\t\tthis._currentSuggestionDetails = createCancelablePromise(async token => {\n\t\t\t\tconst loading = disposableTimeout(() => {\n\t\t\t\t\tif (this._isDetailsVisible()) {\n\t\t\t\t\t\tthis._showDetails(true, false);\n\t\t\t\t\t}\n\t\t\t\t}, 250);\n\t\t\t\tconst sub = token.onCancellationRequested(() => loading.dispose());\n\t\t\t\ttry {\n\t\t\t\t\treturn await item.resolve(token);\n\t\t\t\t} finally {\n\t\t\t\t\tloading.dispose();\n\t\t\t\t\tsub.dispose();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._currentSuggestionDetails.then(() => {\n\t\t\t\tif (index >= this._list.length || item !== this._list.element(index)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// item can have extra information, so re-render\n\t\t\t\tthis._ignoreFocusEvents = true;\n\t\t\t\tthis._list.splice(index, 1, [item]);\n\t\t\t\tthis._list.setFocus([index]);\n\t\t\t\tthis._ignoreFocusEvents = false;\n\n\t\t\t\tif (this._isDetailsVisible()) {\n\t\t\t\t\tthis._showDetails(false, false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.element.domNode.classList.remove('docs-side');\n\t\t\t\t}\n\n\t\t\t\tthis.editor.setAriaOptions({ activeDescendant: this._list.getElementID(index) });\n\t\t\t}).catch(onUnexpectedError);\n\t\t}\n\n\t\t// emit an event\n\t\tthis._onDidFocus.fire({ item, index, model: this._completionModel });\n\t}\n\n\tprivate _setState(state: State): void {\n\n\t\tif (this._state === state) {\n\t\t\treturn;\n\t\t}\n\t\tthis._state = state;\n\n\t\tthis.element.domNode.classList.toggle('frozen', state === State.Frozen);\n\t\tthis.element.domNode.classList.remove('message');\n\n\t\tswitch (state) {\n\t\t\tcase State.Hidden:\n\t\t\t\tdom.hide(this._messageElement, this._listElement, this._status.element);\n\t\t\t\tthis._details.hide(true);\n\t\t\t\tthis._status.hide();\n\t\t\t\tthis._contentWidget.hide();\n\t\t\t\tthis._ctxSuggestWidgetVisible.reset();\n\t\t\t\tthis._ctxSuggestWidgetMultipleSuggestions.reset();\n\t\t\t\tthis._ctxSuggestWidgetHasFocusedSuggestion.reset();\n\t\t\t\tthis._showTimeout.cancel();\n\t\t\t\tthis.element.domNode.classList.remove('visible');\n\t\t\t\tthis._list.splice(0, this._list.length);\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t\tthis._cappedHeight = undefined;\n\t\t\t\tthis._explainMode = false;\n\t\t\t\tbreak;\n\t\t\tcase State.Loading:\n\t\t\t\tthis.element.domNode.classList.add('message');\n\t\t\t\tthis._messageElement.textContent = SuggestWidget.LOADING_MESSAGE;\n\t\t\t\tdom.hide(this._listElement, this._status.element);\n\t\t\t\tdom.show(this._messageElement);\n\t\t\t\tthis._details.hide();\n\t\t\t\tthis._show();\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t\tstatus(SuggestWidget.LOADING_MESSAGE);\n\t\t\t\tbreak;\n\t\t\tcase State.Empty:\n\t\t\t\tthis.element.domNode.classList.add('message');\n\t\t\t\tthis._messageElement.textContent = SuggestWidget.NO_SUGGESTIONS_MESSAGE;\n\t\t\t\tdom.hide(this._listElement, this._status.element);\n\t\t\t\tdom.show(this._messageElement);\n\t\t\t\tthis._details.hide();\n\t\t\t\tthis._show();\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t\tstatus(SuggestWidget.NO_SUGGESTIONS_MESSAGE);\n\t\t\t\tbreak;\n\t\t\tcase State.Open:\n\t\t\t\tdom.hide(this._messageElement);\n\t\t\t\tdom.show(this._listElement, this._status.element);\n\t\t\t\tthis._show();\n\t\t\t\tbreak;\n\t\t\tcase State.Frozen:\n\t\t\t\tdom.hide(this._messageElement);\n\t\t\t\tdom.show(this._listElement, this._status.element);\n\t\t\t\tthis._show();\n\t\t\t\tbreak;\n\t\t\tcase State.Details:\n\t\t\t\tdom.hide(this._messageElement);\n\t\t\t\tdom.show(this._listElement, this._status.element);\n\t\t\t\tthis._details.show();\n\t\t\t\tthis._show();\n\t\t\t\tthis._details.widget.focus();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate _show(): void {\n\t\tthis._status.show();\n\t\tthis._contentWidget.show();\n\t\tthis._layout(this._persistedSize.restore());\n\t\tthis._ctxSuggestWidgetVisible.set(true);\n\n\t\tthis._showTimeout.cancelAndSet(() => {\n\t\t\tthis.element.domNode.classList.add('visible');\n\t\t\tthis._onDidShow.fire(this);\n\t\t}, 100);\n\t}\n\n\tshowTriggered(auto: boolean, delay: number) {\n\t\tif (this._state !== State.Hidden) {\n\t\t\treturn;\n\t\t}\n\t\tthis._contentWidget.setPosition(this.editor.getPosition());\n\t\tthis._isAuto = !!auto;\n\n\t\tif (!this._isAuto) {\n\t\t\tthis._loadingTimeout = disposableTimeout(() => this._setState(State.Loading), delay);\n\t\t}\n\t}\n\n\tshowSuggestions(completionModel: CompletionModel, selectionIndex: number, isFrozen: boolean, isAuto: boolean, noFocus: boolean): void {\n\n\t\tthis._contentWidget.setPosition(this.editor.getPosition());\n\t\tthis._loadingTimeout?.dispose();\n\n\t\tthis._currentSuggestionDetails?.cancel();\n\t\tthis._currentSuggestionDetails = undefined;\n\n\t\tif (this._completionModel !== completionModel) {\n\t\t\tthis._completionModel = completionModel;\n\t\t}\n\n\t\tif (isFrozen && this._state !== State.Empty && this._state !== State.Hidden) {\n\t\t\tthis._setState(State.Frozen);\n\t\t\treturn;\n\t\t}\n\n\t\tconst visibleCount = this._completionModel.items.length;\n\t\tconst isEmpty = visibleCount === 0;\n\t\tthis._ctxSuggestWidgetMultipleSuggestions.set(visibleCount > 1);\n\n\t\tif (isEmpty) {\n\t\t\tthis._setState(isAuto ? State.Hidden : State.Empty);\n\t\t\tthis._completionModel = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._focusedItem = undefined;\n\n\t\t// calling list.splice triggers focus event which this widget forwards. That can lead to\n\t\t// suggestions being cancelled and the widget being cleared (and hidden). All this happens\n\t\t// before revealing and focusing is done which means revealing and focusing will fail when\n\t\t// they get run.\n\t\tthis._onDidFocus.pause();\n\t\tthis._onDidSelect.pause();\n\t\ttry {\n\t\t\tthis._list.splice(0, this._list.length, this._completionModel.items);\n\t\t\tthis._setState(isFrozen ? State.Frozen : State.Open);\n\t\t\tthis._list.reveal(selectionIndex, 0, selectionIndex === 0 ? 0 : this.getLayoutInfo().itemHeight * 0.33);\n\t\t\tthis._list.setFocus(noFocus ? [] : [selectionIndex]);\n\t\t} finally {\n\t\t\tthis._onDidFocus.resume();\n\t\t\tthis._onDidSelect.resume();\n\t\t}\n\n\t\tthis._pendingLayout.value = dom.runAtThisOrScheduleAtNextAnimationFrame(dom.getWindow(this.element.domNode), () => {\n\t\t\tthis._pendingLayout.clear();\n\t\t\tthis._layout(this.element.size);\n\t\t\t// Reset focus border\n\t\t\tthis._details.widget.domNode.classList.remove('focused');\n\t\t});\n\t}\n\n\tfocusSelected(): void {\n\t\tif (this._list.length > 0) {\n\t\t\tthis._list.setFocus([0]);\n\t\t}\n\t}\n\n\tselectNextPage(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.pageDown();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusNextPage();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectNext(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusNext(1, true);\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectLast(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.scrollBottom();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusLast();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectPreviousPage(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.pageUp();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusPreviousPage();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectPrevious(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusPrevious(1, true);\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tselectFirst(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.scrollTop();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusFirst();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tgetFocusedItem(): ISelectedSuggestion | undefined {\n\t\tif (this._state !== State.Hidden\n\t\t\t&& this._state !== State.Empty\n\t\t\t&& this._state !== State.Loading\n\t\t\t&& this._completionModel\n\t\t\t&& this._list.getFocus().length > 0\n\t\t) {\n\n\t\t\treturn {\n\t\t\t\titem: this._list.getFocusedElements()[0],\n\t\t\t\tindex: this._list.getFocus()[0],\n\t\t\t\tmodel: this._completionModel\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\ttoggleDetailsFocus(): void {\n\t\tif (this._state === State.Details) {\n\t\t\t// Should return the focus to the list item.\n\t\t\tthis._list.setFocus(this._list.getFocus());\n\t\t\tthis._setState(State.Open);\n\t\t} else if (this._state === State.Open) {\n\t\t\tthis._setState(State.Details);\n\t\t\tif (!this._isDetailsVisible()) {\n\t\t\t\tthis.toggleDetails(true);\n\t\t\t} else {\n\t\t\t\tthis._details.widget.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleDetails(focused: boolean = false): void {\n\t\tif (this._isDetailsVisible()) {\n\t\t\t// hide details widget\n\t\t\tthis._pendingShowDetails.clear();\n\t\t\tthis._ctxSuggestWidgetDetailsVisible.set(false);\n\t\t\tthis._setDetailsVisible(false);\n\t\t\tthis._details.hide();\n\t\t\tthis.element.domNode.classList.remove('shows-details');\n\n\t\t} else if ((canExpandCompletionItem(this._list.getFocusedElements()[0]) || this._explainMode) && (this._state === State.Open || this._state === State.Details || this._state === State.Frozen)) {\n\t\t\t// show details widget (iff possible)\n\t\t\tthis._ctxSuggestWidgetDetailsVisible.set(true);\n\t\t\tthis._setDetailsVisible(true);\n\t\t\tthis._showDetails(false, focused);\n\t\t}\n\t}\n\n\tprivate _showDetails(loading: boolean, focused: boolean): void {\n\t\tthis._pendingShowDetails.value = dom.runAtThisOrScheduleAtNextAnimationFrame(dom.getWindow(this.element.domNode), () => {\n\t\t\tthis._pendingShowDetails.clear();\n\t\t\tthis._details.show();\n\t\t\tlet didFocusDetails = false;\n\t\t\tif (loading) {\n\t\t\t\tthis._details.widget.renderLoading();\n\t\t\t} else {\n\t\t\t\tthis._details.widget.renderItem(this._list.getFocusedElements()[0], this._explainMode);\n\t\t\t}\n\t\t\tif (!this._details.widget.isEmpty) {\n\t\t\t\tthis._positionDetails();\n\t\t\t\tthis.element.domNode.classList.add('shows-details');\n\t\t\t\tif (focused) {\n\t\t\t\t\tthis._details.widget.focus();\n\t\t\t\t\tdidFocusDetails = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._details.hide();\n\t\t\t}\n\t\t\tif (!didFocusDetails) {\n\t\t\t\tthis.editor.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\ttoggleExplainMode(): void {\n\t\tif (this._list.getFocusedElements()[0]) {\n\t\t\tthis._explainMode = !this._explainMode;\n\t\t\tif (!this._isDetailsVisible()) {\n\t\t\t\tthis.toggleDetails();\n\t\t\t} else {\n\t\t\t\tthis._showDetails(false, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tresetPersistedSize(): void {\n\t\tthis._persistedSize.reset();\n\t}\n\n\thideWidget(): void {\n\t\tthis._pendingLayout.clear();\n\t\tthis._pendingShowDetails.clear();\n\t\tthis._loadingTimeout?.dispose();\n\n\t\tthis._setState(State.Hidden);\n\t\tthis._onDidHide.fire(this);\n\t\tthis.element.clearSashHoverState();\n\n\t\t// ensure that a reasonable widget height is persisted so that\n\t\t// accidential \"resize-to-single-items\" cases aren't happening\n\t\tconst dim = this._persistedSize.restore();\n\t\tconst minPersistedHeight = Math.ceil(this.getLayoutInfo().itemHeight * 4.3);\n\t\tif (dim && dim.height < minPersistedHeight) {\n\t\t\tthis._persistedSize.store(dim.with(undefined, minPersistedHeight));\n\t\t}\n\t}\n\n\tisFrozen(): boolean {\n\t\treturn this._state === State.Frozen;\n\t}\n\n\t_afterRender(position: ContentWidgetPositionPreference | null) {\n\t\tif (position === null) {\n\t\t\tif (this._isDetailsVisible()) {\n\t\t\t\tthis._details.hide(); //todo@jrieken soft-hide\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (this._state === State.Empty || this._state === State.Loading) {\n\t\t\t// no special positioning when widget isn't showing list\n\t\t\treturn;\n\t\t}\n\t\tif (this._isDetailsVisible() && !this._details.widget.isEmpty) {\n\t\t\tthis._details.show();\n\t\t}\n\t\tthis._positionDetails();\n\t}\n\n\tprivate _layout(size: dom.Dimension | undefined): void {\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.editor.getDomNode()) {\n\t\t\t// happens when running tests\n\t\t\treturn;\n\t\t}\n\n\t\tconst bodyBox = dom.getClientArea(this.element.domNode.ownerDocument.body);\n\t\tconst info = this.getLayoutInfo();\n\n\t\tif (!size) {\n\t\t\tsize = info.defaultSize;\n\t\t}\n\n\t\tlet height = size.height;\n\t\tlet width = size.width;\n\n\t\t// status bar\n\t\tthis._status.element.style.height = `${info.itemHeight}px`;\n\n\t\tif (this._state === State.Empty || this._state === State.Loading) {\n\t\t\t// showing a message only\n\t\t\theight = info.itemHeight + info.borderHeight;\n\t\t\twidth = info.defaultSize.width / 2;\n\t\t\tthis.element.enableSashes(false, false, false, false);\n\t\t\tthis.element.minSize = this.element.maxSize = new dom.Dimension(width, height);\n\t\t\tthis._contentWidget.setPreference(ContentWidgetPositionPreference.BELOW);\n\n\t\t} else {\n\t\t\t// showing items\n\n\t\t\t// width math\n\t\t\tconst maxWidth = bodyBox.width - info.borderHeight - 2 * info.horizontalPadding;\n\t\t\tif (width > maxWidth) {\n\t\t\t\twidth = maxWidth;\n\t\t\t}\n\t\t\tconst preferredWidth = this._completionModel ? this._completionModel.stats.pLabelLen * info.typicalHalfwidthCharacterWidth : width;\n\n\t\t\t// height math\n\t\t\tconst fullHeight = info.statusBarHeight + this._list.contentHeight + info.borderHeight;\n\t\t\tconst minHeight = info.itemHeight + info.statusBarHeight;\n\t\t\tconst editorBox = dom.getDomNodePagePosition(this.editor.getDomNode());\n\t\t\tconst cursorBox = this.editor.getScrolledVisiblePosition(this.editor.getPosition());\n\t\t\tconst cursorBottom = editorBox.top + cursorBox.top + cursorBox.height;\n\t\t\tconst maxHeightBelow = Math.min(bodyBox.height - cursorBottom - info.verticalPadding, fullHeight);\n\t\t\tconst availableSpaceAbove = editorBox.top + cursorBox.top - info.verticalPadding;\n\t\t\tconst maxHeightAbove = Math.min(availableSpaceAbove, fullHeight);\n\t\t\tlet maxHeight = Math.min(Math.max(maxHeightAbove, maxHeightBelow) + info.borderHeight, fullHeight);\n\n\t\t\tif (height === this._cappedHeight?.capped) {\n\t\t\t\t// Restore the old (wanted) height when the current\n\t\t\t\t// height is capped to fit\n\t\t\t\theight = this._cappedHeight.wanted;\n\t\t\t}\n\n\t\t\tif (height < minHeight) {\n\t\t\t\theight = minHeight;\n\t\t\t}\n\t\t\tif (height > maxHeight) {\n\t\t\t\theight = maxHeight;\n\t\t\t}\n\n\t\t\tconst forceRenderingAboveRequiredSpace = 150;\n\t\t\tif ((height > maxHeightBelow && maxHeightAbove > maxHeightBelow) || (this._forceRenderingAbove && availableSpaceAbove > forceRenderingAboveRequiredSpace)) {\n\t\t\t\tthis._contentWidget.setPreference(ContentWidgetPositionPreference.ABOVE);\n\t\t\t\tthis.element.enableSashes(true, true, false, false);\n\t\t\t\tmaxHeight = maxHeightAbove;\n\t\t\t} else {\n\t\t\t\tthis._contentWidget.setPreference(ContentWidgetPositionPreference.BELOW);\n\t\t\t\tthis.element.enableSashes(false, true, true, false);\n\t\t\t\tmaxHeight = maxHeightBelow;\n\t\t\t}\n\t\t\tthis.element.preferredSize = new dom.Dimension(preferredWidth, info.defaultSize.height);\n\t\t\tthis.element.maxSize = new dom.Dimension(maxWidth, maxHeight);\n\t\t\tthis.element.minSize = new dom.Dimension(220, minHeight);\n\n\t\t\t// Know when the height was capped to fit and remember\n\t\t\t// the wanted height for later. This is required when going\n\t\t\t// left to widen suggestions.\n\t\t\tthis._cappedHeight = height === fullHeight\n\t\t\t\t? { wanted: this._cappedHeight?.wanted ?? size.height, capped: height }\n\t\t\t\t: undefined;\n\t\t}\n\t\tthis._resize(width, height);\n\t}\n\n\tprivate _resize(width: number, height: number): void {\n\n\t\tconst { width: maxWidth, height: maxHeight } = this.element.maxSize;\n\t\twidth = Math.min(maxWidth, width);\n\t\theight = Math.min(maxHeight, height);\n\n\t\tconst { statusBarHeight } = this.getLayoutInfo();\n\t\tthis._list.layout(height - statusBarHeight, width);\n\t\tthis._listElement.style.height = `${height - statusBarHeight}px`;\n\t\tthis.element.layout(height, width);\n\t\tthis._contentWidget.layout();\n\n\t\tthis._positionDetails();\n\t}\n\n\tprivate _positionDetails(): void {\n\t\tif (this._isDetailsVisible()) {\n\t\t\tthis._details.placeAtAnchor(this.element.domNode, this._contentWidget.getPosition()?.preference[0] === ContentWidgetPositionPreference.BELOW);\n\t\t}\n\t}\n\n\tgetLayoutInfo() {\n\t\tconst fontInfo = this.editor.getOption(EditorOption.fontInfo);\n\t\tconst itemHeight = clamp(this.editor.getOption(EditorOption.suggestLineHeight) || fontInfo.lineHeight, 8, 1000);\n\t\tconst statusBarHeight = !this.editor.getOption(EditorOption.suggest).showStatusBar || this._state === State.Empty || this._state === State.Loading ? 0 : itemHeight;\n\t\tconst borderWidth = this._details.widget.borderWidth;\n\t\tconst borderHeight = 2 * borderWidth;\n\n\t\treturn {\n\t\t\titemHeight,\n\t\t\tstatusBarHeight,\n\t\t\tborderWidth,\n\t\t\tborderHeight,\n\t\t\ttypicalHalfwidthCharacterWidth: fontInfo.typicalHalfwidthCharacterWidth,\n\t\t\tverticalPadding: 22,\n\t\t\thorizontalPadding: 14,\n\t\t\tdefaultSize: new dom.Dimension(430, statusBarHeight + 12 * itemHeight)\n\t\t};\n\t}\n\n\tprivate _isDetailsVisible(): boolean {\n\t\treturn this._storageService.getBoolean('expandSuggestionDocs', StorageScope.PROFILE, false);\n\t}\n\n\tprivate _setDetailsVisible(value: boolean) {\n\t\tthis._storageService.store('expandSuggestionDocs', value, StorageScope.PROFILE, StorageTarget.USER);\n\t}\n\n\tforceRenderingAbove() {\n\t\tif (!this._forceRenderingAbove) {\n\t\t\tthis._forceRenderingAbove = true;\n\t\t\tthis._layout(this._persistedSize.restore());\n\t\t}\n\t}\n\n\tstopForceRenderingAbove() {\n\t\tthis._forceRenderingAbove = false;\n\t}\n}\n\nexport class SuggestContentWidget implements IContentWidget {\n\n\treadonly allowEditorOverflow = true;\n\treadonly suppressMouseDown = false;\n\n\tprivate _position?: IPosition | null;\n\tprivate _preference?: ContentWidgetPositionPreference;\n\tprivate _preferenceLocked = false;\n\n\tprivate _added: boolean = false;\n\tprivate _hidden: boolean = false;\n\n\tconstructor(\n\t\tprivate readonly _widget: SuggestWidget,\n\t\tprivate readonly _editor: ICodeEditor\n\t) { }\n\n\tdispose(): void {\n\t\tif (this._added) {\n\t\t\tthis._added = false;\n\t\t\tthis._editor.removeContentWidget(this);\n\t\t}\n\t}\n\n\tgetId(): string {\n\t\treturn 'editor.widget.suggestWidget';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this._widget.element.domNode;\n\t}\n\n\tshow(): void {\n\t\tthis._hidden = false;\n\t\tif (!this._added) {\n\t\t\tthis._added = true;\n\t\t\tthis._editor.addContentWidget(this);\n\t\t}\n\t}\n\n\thide(): void {\n\t\tif (!this._hidden) {\n\t\t\tthis._hidden = true;\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\tlayout(): void {\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (this._hidden || !this._position || !this._preference) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tposition: this._position,\n\t\t\tpreference: [this._preference]\n\t\t};\n\t}\n\n\tbeforeRender() {\n\t\tconst { height, width } = this._widget.element.size;\n\t\tconst { borderWidth, horizontalPadding } = this._widget.getLayoutInfo();\n\t\treturn new dom.Dimension(width + 2 * borderWidth + horizontalPadding, height + 2 * borderWidth);\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null) {\n\t\tthis._widget._afterRender(position);\n\t}\n\n\tsetPreference(preference: ContentWidgetPositionPreference) {\n\t\tif (!this._preferenceLocked) {\n\t\t\tthis._preference = preference;\n\t\t}\n\t}\n\n\tlockPreference() {\n\t\tthis._preferenceLocked = true;\n\t}\n\n\tunlockPreference() {\n\t\tthis._preferenceLocked = false;\n\t}\n\n\tsetPosition(position: IPosition | null): void {\n\t\tthis._position = position;\n\t}\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/suggest/browser/suggestWidget.ts"],"names":[],"mappings":"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","file":"suggestWidget.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 * as dom from '../../../../base/browser/dom.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\nimport { IListEvent, IListGestureEvent, IListMouseEvent } from '../../../../base/browser/ui/list/list.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport { CancelablePromise, createCancelablePromise, disposableTimeout, TimeoutTimer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter, Event, PauseableEmitter } from '../../../../base/common/event.js';\nimport { DisposableStore, IDisposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { clamp } from '../../../../base/common/numbers.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './media/suggest.css';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent } from '../../../browser/editorBrowser.js';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IPosition } from '../../../common/core/position.js';\nimport { SuggestWidgetStatus } from './suggestWidgetStatus.js';\nimport '../../symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\nimport { activeContrastBorder, editorForeground, editorWidgetBackground, editorWidgetBorder, listFocusHighlightForeground, listHighlightForeground, quickInputListFocusBackground, quickInputListFocusForeground, quickInputListFocusIconForeground, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { CompletionModel } from './completionModel.js';\nimport { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport { CompletionItem, Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\nimport { canExpandCompletionItem, SuggestDetailsOverlay, SuggestDetailsWidget } from './suggestWidgetDetails.js';\nimport { ItemRenderer } from './suggestWidgetRenderer.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\nimport { CompletionItemKinds } from '../../../common/languages.js';\nimport { isWindows } from '../../../../base/common/platform.js';\n\n/**\n * Suggest widget colors\n */\nregisterColor('editorSuggestWidget.background', editorWidgetBackground, nls.localize('editorSuggestWidgetBackground', 'Background color of the suggest widget.'));\nregisterColor('editorSuggestWidget.border', editorWidgetBorder, nls.localize('editorSuggestWidgetBorder', 'Border color of the suggest widget.'));\nexport const editorSuggestWidgetForeground = registerColor('editorSuggestWidget.foreground', editorForeground, nls.localize('editorSuggestWidgetForeground', 'Foreground color of the suggest widget.'));\nregisterColor('editorSuggestWidget.selectedForeground', quickInputListFocusForeground, nls.localize('editorSuggestWidgetSelectedForeground', 'Foreground color of the selected entry in the suggest widget.'));\nregisterColor('editorSuggestWidget.selectedIconForeground', quickInputListFocusIconForeground, nls.localize('editorSuggestWidgetSelectedIconForeground', 'Icon foreground color of the selected entry in the suggest widget.'));\nexport const editorSuggestWidgetSelectedBackground = registerColor('editorSuggestWidget.selectedBackground', quickInputListFocusBackground, nls.localize('editorSuggestWidgetSelectedBackground', 'Background color of the selected entry in the suggest widget.'));\nregisterColor('editorSuggestWidget.highlightForeground', listHighlightForeground, nls.localize('editorSuggestWidgetHighlightForeground', 'Color of the match highlights in the suggest widget.'));\nregisterColor('editorSuggestWidget.focusHighlightForeground', listFocusHighlightForeground, nls.localize('editorSuggestWidgetFocusHighlightForeground', 'Color of the match highlights in the suggest widget when an item is focused.'));\nregisterColor('editorSuggestWidgetStatus.foreground', transparent(editorSuggestWidgetForeground, .5), nls.localize('editorSuggestWidgetStatusForeground', 'Foreground color of the suggest widget status.'));\n\nconst enum State {\n\tHidden,\n\tLoading,\n\tEmpty,\n\tOpen,\n\tFrozen,\n\tDetails,\n\tonDetailsKeyDown\n}\n\nexport interface ISelectedSuggestion {\n\titem: CompletionItem;\n\tindex: number;\n\tmodel: CompletionModel;\n}\n\nclass PersistedWidgetSize {\n\n\tprivate readonly _key: string;\n\n\tconstructor(\n\t\tprivate readonly _service: IStorageService,\n\t\teditor: ICodeEditor\n\t) {\n\t\tthis._key = `suggestWidget.size/${editor.getEditorType()}/${editor instanceof EmbeddedCodeEditorWidget}`;\n\t}\n\n\trestore(): dom.Dimension | undefined {\n\t\tconst raw = this._service.get(this._key, StorageScope.PROFILE) ?? '';\n\t\ttry {\n\t\t\tconst obj = JSON.parse(raw);\n\t\t\tif (dom.Dimension.is(obj)) {\n\t\t\t\treturn dom.Dimension.lift(obj);\n\t\t\t}\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tstore(size: dom.Dimension) {\n\t\tthis._service.store(this._key, JSON.stringify(size), StorageScope.PROFILE, StorageTarget.MACHINE);\n\t}\n\n\treset(): void {\n\t\tthis._service.remove(this._key, StorageScope.PROFILE);\n\t}\n}\n\nexport class SuggestWidget implements IDisposable {\n\n\tprivate static LOADING_MESSAGE: string = nls.localize('suggestWidget.loading', \"Loading...\");\n\tprivate static NO_SUGGESTIONS_MESSAGE: string = nls.localize('suggestWidget.noSuggestions', \"No suggestions.\");\n\n\tprivate _state: State = State.Hidden;\n\tprivate _isAuto: boolean = false;\n\tprivate _loadingTimeout?: IDisposable;\n\tprivate readonly _pendingLayout = new MutableDisposable();\n\tprivate readonly _pendingShowDetails = new MutableDisposable();\n\tprivate _currentSuggestionDetails?: CancelablePromise<void>;\n\tprivate _focusedItem?: CompletionItem;\n\tprivate _ignoreFocusEvents: boolean = false;\n\tprivate _completionModel?: CompletionModel;\n\tprivate _cappedHeight?: { wanted: number; capped: number };\n\tprivate _forceRenderingAbove: boolean = false;\n\tprivate _explainMode: boolean = false;\n\n\treadonly element: ResizableHTMLElement;\n\tprivate readonly _messageElement: HTMLElement;\n\tprivate readonly _listElement: HTMLElement;\n\tprivate readonly _list: List<CompletionItem>;\n\tprivate readonly _status: SuggestWidgetStatus;\n\tprivate readonly _details: SuggestDetailsOverlay;\n\tprivate readonly _contentWidget: SuggestContentWidget;\n\tprivate readonly _persistedSize: PersistedWidgetSize;\n\n\tprivate readonly _ctxSuggestWidgetVisible: IContextKey<boolean>;\n\tprivate readonly _ctxSuggestWidgetDetailsVisible: IContextKey<boolean>;\n\tprivate readonly _ctxSuggestWidgetMultipleSuggestions: IContextKey<boolean>;\n\tprivate readonly _ctxSuggestWidgetHasFocusedSuggestion: IContextKey<boolean>;\n\n\tprivate readonly _showTimeout = new TimeoutTimer();\n\tprivate readonly _disposables = new DisposableStore();\n\n\n\tprivate readonly _onDidSelect = new PauseableEmitter<ISelectedSuggestion>();\n\tprivate readonly _onDidFocus = new PauseableEmitter<ISelectedSuggestion>();\n\tprivate readonly _onDidHide = new Emitter<this>();\n\tprivate readonly _onDidShow = new Emitter<this>();\n\n\treadonly onDidSelect: Event<ISelectedSuggestion> = this._onDidSelect.event;\n\treadonly onDidFocus: Event<ISelectedSuggestion> = this._onDidFocus.event;\n\treadonly onDidHide: Event<this> = this._onDidHide.event;\n\treadonly onDidShow: Event<this> = this._onDidShow.event;\n\n\tprivate readonly _onDetailsKeydown = new Emitter<IKeyboardEvent>();\n\treadonly onDetailsKeyDown: Event<IKeyboardEvent> = this._onDetailsKeydown.event;\n\n\tconstructor(\n\t\tprivate readonly editor: ICodeEditor,\n\t\t@IStorageService private readonly _storageService: IStorageService,\n\t\t@IContextKeyService _contextKeyService: IContextKeyService,\n\t\t@IThemeService _themeService: IThemeService,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t) {\n\t\tthis.element = new ResizableHTMLElement();\n\t\tthis.element.domNode.classList.add('editor-widget', 'suggest-widget');\n\n\t\tthis._contentWidget = new SuggestContentWidget(this, editor);\n\t\tthis._persistedSize = new PersistedWidgetSize(_storageService, editor);\n\n\t\tclass ResizeState {\n\t\t\tconstructor(\n\t\t\t\treadonly persistedSize: dom.Dimension | undefined,\n\t\t\t\treadonly currentSize: dom.Dimension,\n\t\t\t\tpublic persistHeight = false,\n\t\t\t\tpublic persistWidth = false,\n\t\t\t) { }\n\t\t}\n\n\t\tlet state: ResizeState | undefined;\n\t\tthis._disposables.add(this.element.onDidWillResize(() => {\n\t\t\tthis._contentWidget.lockPreference();\n\t\t\tstate = new ResizeState(this._persistedSize.restore(), this.element.size);\n\t\t}));\n\t\tthis._disposables.add(this.element.onDidResize(e => {\n\n\t\t\tthis._resize(e.dimension.width, e.dimension.height);\n\n\t\t\tif (state) {\n\t\t\t\tstate.persistHeight = state.persistHeight || !!e.north || !!e.south;\n\t\t\t\tstate.persistWidth = state.persistWidth || !!e.east || !!e.west;\n\t\t\t}\n\n\t\t\tif (!e.done) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (state) {\n\t\t\t\t// only store width or height value that have changed and also\n\t\t\t\t// only store changes that are above a certain threshold\n\t\t\t\tconst { itemHeight, defaultSize } = this.getLayoutInfo();\n\t\t\t\tconst threshold = Math.round(itemHeight / 2);\n\t\t\t\tlet { width, height } = this.element.size;\n\t\t\t\tif (!state.persistHeight || Math.abs(state.currentSize.height - height) <= threshold) {\n\t\t\t\t\theight = state.persistedSize?.height ?? defaultSize.height;\n\t\t\t\t}\n\t\t\t\tif (!state.persistWidth || Math.abs(state.currentSize.width - width) <= threshold) {\n\t\t\t\t\twidth = state.persistedSize?.width ?? defaultSize.width;\n\t\t\t\t}\n\t\t\t\tthis._persistedSize.store(new dom.Dimension(width, height));\n\t\t\t}\n\n\t\t\t// reset working state\n\t\t\tthis._contentWidget.unlockPreference();\n\t\t\tstate = undefined;\n\t\t}));\n\n\t\tthis._messageElement = dom.append(this.element.domNode, dom.$('.message'));\n\t\tthis._listElement = dom.append(this.element.domNode, dom.$('.tree'));\n\n\t\tconst details = this._disposables.add(instantiationService.createInstance(SuggestDetailsWidget, this.editor));\n\t\tdetails.onDidClose(() => this.toggleDetails(), this, this._disposables);\n\t\tthis._details = new SuggestDetailsOverlay(details, this.editor);\n\n\t\tconst applyIconStyle = () => this.element.domNode.classList.toggle('no-icons', !this.editor.getOption(EditorOption.suggest).showIcons);\n\t\tapplyIconStyle();\n\n\t\tconst renderer = instantiationService.createInstance(ItemRenderer, this.editor);\n\t\tthis._disposables.add(renderer);\n\t\tthis._disposables.add(renderer.onDidToggleDetails(() => this.toggleDetails()));\n\n\t\tthis._list = new List('SuggestWidget', this._listElement, {\n\t\t\tgetHeight: (_element: CompletionItem): number => this.getLayoutInfo().itemHeight,\n\t\t\tgetTemplateId: (_element: CompletionItem): string => 'suggestion'\n\t\t}, [renderer], {\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t\tuseShadows: false,\n\t\t\tmouseSupport: false,\n\t\t\tmultipleSelectionSupport: false,\n\t\t\taccessibilityProvider: {\n\t\t\t\tgetRole: () => isWindows ? 'listitem' : 'option',\n\t\t\t\tgetWidgetAriaLabel: () => nls.localize('suggest', \"Suggest\"),\n\t\t\t\tgetWidgetRole: () => 'listbox',\n\t\t\t\tgetAriaLabel: (item: CompletionItem) => {\n\n\t\t\t\t\tlet label = item.textLabel;\n\t\t\t\t\tconst kindLabel = CompletionItemKinds.toLabel(item.completion.kind);\n\t\t\t\t\tif (typeof item.completion.label !== 'string') {\n\t\t\t\t\t\tconst { detail, description } = item.completion.label;\n\t\t\t\t\t\tif (detail && description) {\n\t\t\t\t\t\t\tlabel = nls.localize('label.full', '{0} {1}, {2}, {3}', label, detail, description, kindLabel);\n\t\t\t\t\t\t} else if (detail) {\n\t\t\t\t\t\t\tlabel = nls.localize('label.detail', '{0} {1}, {2}', label, detail, kindLabel);\n\t\t\t\t\t\t} else if (description) {\n\t\t\t\t\t\t\tlabel = nls.localize('label.desc', '{0}, {1}, {2}', label, description, kindLabel);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabel = nls.localize('label', '{0}, {1}', label, kindLabel);\n\t\t\t\t\t}\n\t\t\t\t\tif (!item.isResolved || !this._isDetailsVisible()) {\n\t\t\t\t\t\treturn label;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { documentation, detail } = item.completion;\n\t\t\t\t\tconst docs = strings.format(\n\t\t\t\t\t\t'{0}{1}',\n\t\t\t\t\t\tdetail || '',\n\t\t\t\t\t\tdocumentation ? (typeof documentation === 'string' ? documentation : documentation.value) : '');\n\n\t\t\t\t\treturn nls.localize('ariaCurrenttSuggestionReadDetails', \"{0}, docs: {1}\", label, docs);\n\t\t\t\t},\n\t\t\t}\n\t\t});\n\t\tthis._list.style(getListStyles({\n\t\t\tlistInactiveFocusBackground: editorSuggestWidgetSelectedBackground,\n\t\t\tlistInactiveFocusOutline: activeContrastBorder\n\t\t}));\n\n\t\tthis._status = instantiationService.createInstance(SuggestWidgetStatus, this.element.domNode, suggestWidgetStatusbarMenu);\n\t\tconst applyStatusBarStyle = () => this.element.domNode.classList.toggle('with-status-bar', this.editor.getOption(EditorOption.suggest).showStatusBar);\n\t\tapplyStatusBarStyle();\n\n\t\tthis._disposables.add(this._list.onMouseDown(e => this._onListMouseDownOrTap(e)));\n\t\tthis._disposables.add(this._list.onTap(e => this._onListMouseDownOrTap(e)));\n\t\tthis._disposables.add(this._list.onDidChangeSelection(e => this._onListSelection(e)));\n\t\tthis._disposables.add(this._list.onDidChangeFocus(e => this._onListFocus(e)));\n\t\tthis._disposables.add(this.editor.onDidChangeCursorSelection(() => this._onCursorSelectionChanged()));\n\t\tthis._disposables.add(this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.suggest)) {\n\t\t\t\tapplyStatusBarStyle();\n\t\t\t\tapplyIconStyle();\n\t\t\t}\n\t\t\tif (this._completionModel && (e.hasChanged(EditorOption.fontInfo) || e.hasChanged(EditorOption.suggestFontSize) || e.hasChanged(EditorOption.suggestLineHeight))) {\n\t\t\t\tthis._list.splice(0, this._list.length, this._completionModel.items);\n\t\t\t}\n\t\t}));\n\n\t\tthis._ctxSuggestWidgetVisible = SuggestContext.Visible.bindTo(_contextKeyService);\n\t\tthis._ctxSuggestWidgetDetailsVisible = SuggestContext.DetailsVisible.bindTo(_contextKeyService);\n\t\tthis._ctxSuggestWidgetMultipleSuggestions = SuggestContext.MultipleSuggestions.bindTo(_contextKeyService);\n\t\tthis._ctxSuggestWidgetHasFocusedSuggestion = SuggestContext.HasFocusedSuggestion.bindTo(_contextKeyService);\n\n\t\tthis._disposables.add(dom.addStandardDisposableListener(this._details.widget.domNode, 'keydown', e => {\n\t\t\tthis._onDetailsKeydown.fire(e);\n\t\t}));\n\n\t\tthis._disposables.add(this.editor.onMouseDown((e: IEditorMouseEvent) => this._onEditorMouseDown(e)));\n\t}\n\n\tdispose(): void {\n\t\tthis._details.widget.dispose();\n\t\tthis._details.dispose();\n\t\tthis._list.dispose();\n\t\tthis._status.dispose();\n\t\tthis._disposables.dispose();\n\t\tthis._loadingTimeout?.dispose();\n\t\tthis._pendingLayout.dispose();\n\t\tthis._pendingShowDetails.dispose();\n\t\tthis._showTimeout.dispose();\n\t\tthis._contentWidget.dispose();\n\t\tthis.element.dispose();\n\t}\n\n\tprivate _onEditorMouseDown(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._details.widget.domNode.contains(mouseEvent.target.element)) {\n\t\t\t// Clicking inside details\n\t\t\tthis._details.widget.domNode.focus();\n\t\t} else {\n\t\t\t// Clicking outside details and inside suggest\n\t\t\tif (this.element.domNode.contains(mouseEvent.target.element)) {\n\t\t\t\tthis.editor.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _onCursorSelectionChanged(): void {\n\t\tif (this._state !== State.Hidden) {\n\t\t\tthis._contentWidget.layout();\n\t\t}\n\t}\n\n\tprivate _onListMouseDownOrTap(e: IListMouseEvent<CompletionItem> | IListGestureEvent<CompletionItem>): void {\n\t\tif (typeof e.element === 'undefined' || typeof e.index === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\t// prevent stealing browser focus from the editor\n\t\te.browserEvent.preventDefault();\n\t\te.browserEvent.stopPropagation();\n\n\t\tthis._select(e.element, e.index);\n\t}\n\n\tprivate _onListSelection(e: IListEvent<CompletionItem>): void {\n\t\tif (e.elements.length) {\n\t\t\tthis._select(e.elements[0], e.indexes[0]);\n\t\t}\n\t}\n\n\tprivate _select(item: CompletionItem, index: number): void {\n\t\tconst completionModel = this._completionModel;\n\t\tif (completionModel) {\n\t\t\tthis._onDidSelect.fire({ item, index, model: completionModel });\n\t\t\tthis.editor.focus();\n\t\t}\n\t}\n\n\tprivate _onListFocus(e: IListEvent<CompletionItem>): void {\n\t\tif (this._ignoreFocusEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._state === State.Details) {\n\t\t\t// This can happen when focus is in the details-panel and when\n\t\t\t// arrow keys are pressed to select next/prev items\n\t\t\tthis._setState(State.Open);\n\t\t}\n\n\t\tif (!e.elements.length) {\n\t\t\tif (this._currentSuggestionDetails) {\n\t\t\t\tthis._currentSuggestionDetails.cancel();\n\t\t\t\tthis._currentSuggestionDetails = undefined;\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t}\n\n\t\t\tthis.editor.setAriaOptions({ activeDescendant: undefined });\n\t\t\tthis._ctxSuggestWidgetHasFocusedSuggestion.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._completionModel) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctxSuggestWidgetHasFocusedSuggestion.set(true);\n\t\tconst item = e.elements[0];\n\t\tconst index = e.indexes[0];\n\n\t\tif (item !== this._focusedItem) {\n\n\t\t\tthis._currentSuggestionDetails?.cancel();\n\t\t\tthis._currentSuggestionDetails = undefined;\n\n\t\t\tthis._focusedItem = item;\n\n\t\t\tthis._list.reveal(index);\n\n\t\t\tthis._currentSuggestionDetails = createCancelablePromise(async token => {\n\t\t\t\tconst loading = disposableTimeout(() => {\n\t\t\t\t\tif (this._isDetailsVisible()) {\n\t\t\t\t\t\tthis._showDetails(true, false);\n\t\t\t\t\t}\n\t\t\t\t}, 250);\n\t\t\t\tconst sub = token.onCancellationRequested(() => loading.dispose());\n\t\t\t\ttry {\n\t\t\t\t\treturn await item.resolve(token);\n\t\t\t\t} finally {\n\t\t\t\t\tloading.dispose();\n\t\t\t\t\tsub.dispose();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._currentSuggestionDetails.then(() => {\n\t\t\t\tif (index >= this._list.length || item !== this._list.element(index)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// item can have extra information, so re-render\n\t\t\t\tthis._ignoreFocusEvents = true;\n\t\t\t\tthis._list.splice(index, 1, [item]);\n\t\t\t\tthis._list.setFocus([index]);\n\t\t\t\tthis._ignoreFocusEvents = false;\n\n\t\t\t\tif (this._isDetailsVisible()) {\n\t\t\t\t\tthis._showDetails(false, false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.element.domNode.classList.remove('docs-side');\n\t\t\t\t}\n\n\t\t\t\tthis.editor.setAriaOptions({ activeDescendant: this._list.getElementID(index) });\n\t\t\t}).catch(onUnexpectedError);\n\t\t}\n\n\t\t// emit an event\n\t\tthis._onDidFocus.fire({ item, index, model: this._completionModel });\n\t}\n\n\tprivate _setState(state: State): void {\n\n\t\tif (this._state === state) {\n\t\t\treturn;\n\t\t}\n\t\tthis._state = state;\n\n\t\tthis.element.domNode.classList.toggle('frozen', state === State.Frozen);\n\t\tthis.element.domNode.classList.remove('message');\n\n\t\tswitch (state) {\n\t\t\tcase State.Hidden:\n\t\t\t\tdom.hide(this._messageElement, this._listElement, this._status.element);\n\t\t\t\tthis._details.hide(true);\n\t\t\t\tthis._status.hide();\n\t\t\t\tthis._contentWidget.hide();\n\t\t\t\tthis._ctxSuggestWidgetVisible.reset();\n\t\t\t\tthis._ctxSuggestWidgetMultipleSuggestions.reset();\n\t\t\t\tthis._ctxSuggestWidgetHasFocusedSuggestion.reset();\n\t\t\t\tthis._showTimeout.cancel();\n\t\t\t\tthis.element.domNode.classList.remove('visible');\n\t\t\t\tthis._list.splice(0, this._list.length);\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t\tthis._cappedHeight = undefined;\n\t\t\t\tthis._explainMode = false;\n\t\t\t\tbreak;\n\t\t\tcase State.Loading:\n\t\t\t\tthis.element.domNode.classList.add('message');\n\t\t\t\tthis._messageElement.textContent = SuggestWidget.LOADING_MESSAGE;\n\t\t\t\tdom.hide(this._listElement, this._status.element);\n\t\t\t\tdom.show(this._messageElement);\n\t\t\t\tthis._details.hide();\n\t\t\t\tthis._show();\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t\tstatus(SuggestWidget.LOADING_MESSAGE);\n\t\t\t\tbreak;\n\t\t\tcase State.Empty:\n\t\t\t\tthis.element.domNode.classList.add('message');\n\t\t\t\tthis._messageElement.textContent = SuggestWidget.NO_SUGGESTIONS_MESSAGE;\n\t\t\t\tdom.hide(this._listElement, this._status.element);\n\t\t\t\tdom.show(this._messageElement);\n\t\t\t\tthis._details.hide();\n\t\t\t\tthis._show();\n\t\t\t\tthis._focusedItem = undefined;\n\t\t\t\tstatus(SuggestWidget.NO_SUGGESTIONS_MESSAGE);\n\t\t\t\tbreak;\n\t\t\tcase State.Open:\n\t\t\t\tdom.hide(this._messageElement);\n\t\t\t\tdom.show(this._listElement, this._status.element);\n\t\t\t\tthis._show();\n\t\t\t\tbreak;\n\t\t\tcase State.Frozen:\n\t\t\t\tdom.hide(this._messageElement);\n\t\t\t\tdom.show(this._listElement, this._status.element);\n\t\t\t\tthis._show();\n\t\t\t\tbreak;\n\t\t\tcase State.Details:\n\t\t\t\tdom.hide(this._messageElement);\n\t\t\t\tdom.show(this._listElement, this._status.element);\n\t\t\t\tthis._details.show();\n\t\t\t\tthis._show();\n\t\t\t\tthis._details.widget.focus();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate _show(): void {\n\t\tthis._status.show();\n\t\tthis._contentWidget.show();\n\t\tthis._layout(this._persistedSize.restore());\n\t\tthis._ctxSuggestWidgetVisible.set(true);\n\n\t\tthis._showTimeout.cancelAndSet(() => {\n\t\t\tthis.element.domNode.classList.add('visible');\n\t\t\tthis._onDidShow.fire(this);\n\t\t}, 100);\n\t}\n\n\tshowTriggered(auto: boolean, delay: number) {\n\t\tif (this._state !== State.Hidden) {\n\t\t\treturn;\n\t\t}\n\t\tthis._contentWidget.setPosition(this.editor.getPosition());\n\t\tthis._isAuto = !!auto;\n\n\t\tif (!this._isAuto) {\n\t\t\tthis._loadingTimeout = disposableTimeout(() => this._setState(State.Loading), delay);\n\t\t}\n\t}\n\n\tshowSuggestions(completionModel: CompletionModel, selectionIndex: number, isFrozen: boolean, isAuto: boolean, noFocus: boolean): void {\n\n\t\tthis._contentWidget.setPosition(this.editor.getPosition());\n\t\tthis._loadingTimeout?.dispose();\n\n\t\tthis._currentSuggestionDetails?.cancel();\n\t\tthis._currentSuggestionDetails = undefined;\n\n\t\tif (this._completionModel !== completionModel) {\n\t\t\tthis._completionModel = completionModel;\n\t\t}\n\n\t\tif (isFrozen && this._state !== State.Empty && this._state !== State.Hidden) {\n\t\t\tthis._setState(State.Frozen);\n\t\t\treturn;\n\t\t}\n\n\t\tconst visibleCount = this._completionModel.items.length;\n\t\tconst isEmpty = visibleCount === 0;\n\t\tthis._ctxSuggestWidgetMultipleSuggestions.set(visibleCount > 1);\n\n\t\tif (isEmpty) {\n\t\t\tthis._setState(isAuto ? State.Hidden : State.Empty);\n\t\t\tthis._completionModel = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._focusedItem = undefined;\n\n\t\t// calling list.splice triggers focus event which this widget forwards. That can lead to\n\t\t// suggestions being cancelled and the widget being cleared (and hidden). All this happens\n\t\t// before revealing and focusing is done which means revealing and focusing will fail when\n\t\t// they get run.\n\t\tthis._onDidFocus.pause();\n\t\tthis._onDidSelect.pause();\n\t\ttry {\n\t\t\tthis._list.splice(0, this._list.length, this._completionModel.items);\n\t\t\tthis._setState(isFrozen ? State.Frozen : State.Open);\n\t\t\tthis._list.reveal(selectionIndex, 0, selectionIndex === 0 ? 0 : this.getLayoutInfo().itemHeight * 0.33);\n\t\t\tthis._list.setFocus(noFocus ? [] : [selectionIndex]);\n\t\t} finally {\n\t\t\tthis._onDidFocus.resume();\n\t\t\tthis._onDidSelect.resume();\n\t\t}\n\n\t\tthis._pendingLayout.value = dom.runAtThisOrScheduleAtNextAnimationFrame(dom.getWindow(this.element.domNode), () => {\n\t\t\tthis._pendingLayout.clear();\n\t\t\tthis._layout(this.element.size);\n\t\t\t// Reset focus border\n\t\t\tthis._details.widget.domNode.classList.remove('focused');\n\t\t});\n\t}\n\n\tfocusSelected(): void {\n\t\tif (this._list.length > 0) {\n\t\t\tthis._list.setFocus([0]);\n\t\t}\n\t}\n\n\tselectNextPage(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.pageDown();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusNextPage();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectNext(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusNext(1, true);\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectLast(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.scrollBottom();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusLast();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectPreviousPage(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.pageUp();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusPreviousPage();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tselectPrevious(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusPrevious(1, true);\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tselectFirst(): boolean {\n\t\tswitch (this._state) {\n\t\t\tcase State.Hidden:\n\t\t\t\treturn false;\n\t\t\tcase State.Details:\n\t\t\t\tthis._details.widget.scrollTop();\n\t\t\t\treturn true;\n\t\t\tcase State.Loading:\n\t\t\t\treturn !this._isAuto;\n\t\t\tdefault:\n\t\t\t\tthis._list.focusFirst();\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tgetFocusedItem(): ISelectedSuggestion | undefined {\n\t\tif (this._state !== State.Hidden\n\t\t\t&& this._state !== State.Empty\n\t\t\t&& this._state !== State.Loading\n\t\t\t&& this._completionModel\n\t\t\t&& this._list.getFocus().length > 0\n\t\t) {\n\n\t\t\treturn {\n\t\t\t\titem: this._list.getFocusedElements()[0],\n\t\t\t\tindex: this._list.getFocus()[0],\n\t\t\t\tmodel: this._completionModel\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\ttoggleDetailsFocus(): void {\n\t\tif (this._state === State.Details) {\n\t\t\t// Should return the focus to the list item.\n\t\t\tthis._list.setFocus(this._list.getFocus());\n\t\t\tthis._setState(State.Open);\n\t\t} else if (this._state === State.Open) {\n\t\t\tthis._setState(State.Details);\n\t\t\tif (!this._isDetailsVisible()) {\n\t\t\t\tthis.toggleDetails(true);\n\t\t\t} else {\n\t\t\t\tthis._details.widget.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleDetails(focused: boolean = false): void {\n\t\tif (this._isDetailsVisible()) {\n\t\t\t// hide details widget\n\t\t\tthis._pendingShowDetails.clear();\n\t\t\tthis._ctxSuggestWidgetDetailsVisible.set(false);\n\t\t\tthis._setDetailsVisible(false);\n\t\t\tthis._details.hide();\n\t\t\tthis.element.domNode.classList.remove('shows-details');\n\n\t\t} else if ((canExpandCompletionItem(this._list.getFocusedElements()[0]) || this._explainMode) && (this._state === State.Open || this._state === State.Details || this._state === State.Frozen)) {\n\t\t\t// show details widget (iff possible)\n\t\t\tthis._ctxSuggestWidgetDetailsVisible.set(true);\n\t\t\tthis._setDetailsVisible(true);\n\t\t\tthis._showDetails(false, focused);\n\t\t}\n\t}\n\n\tprivate _showDetails(loading: boolean, focused: boolean): void {\n\t\tthis._pendingShowDetails.value = dom.runAtThisOrScheduleAtNextAnimationFrame(dom.getWindow(this.element.domNode), () => {\n\t\t\tthis._pendingShowDetails.clear();\n\t\t\tthis._details.show();\n\t\t\tlet didFocusDetails = false;\n\t\t\tif (loading) {\n\t\t\t\tthis._details.widget.renderLoading();\n\t\t\t} else {\n\t\t\t\tthis._details.widget.renderItem(this._list.getFocusedElements()[0], this._explainMode);\n\t\t\t}\n\t\t\tif (!this._details.widget.isEmpty) {\n\t\t\t\tthis._positionDetails();\n\t\t\t\tthis.element.domNode.classList.add('shows-details');\n\t\t\t\tif (focused) {\n\t\t\t\t\tthis._details.widget.focus();\n\t\t\t\t\tdidFocusDetails = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._details.hide();\n\t\t\t}\n\t\t\tif (!didFocusDetails) {\n\t\t\t\tthis.editor.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\ttoggleExplainMode(): void {\n\t\tif (this._list.getFocusedElements()[0]) {\n\t\t\tthis._explainMode = !this._explainMode;\n\t\t\tif (!this._isDetailsVisible()) {\n\t\t\t\tthis.toggleDetails();\n\t\t\t} else {\n\t\t\t\tthis._showDetails(false, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tresetPersistedSize(): void {\n\t\tthis._persistedSize.reset();\n\t}\n\n\thideWidget(): void {\n\t\tthis._pendingLayout.clear();\n\t\tthis._pendingShowDetails.clear();\n\t\tthis._loadingTimeout?.dispose();\n\n\t\tthis._setState(State.Hidden);\n\t\tthis._onDidHide.fire(this);\n\t\tthis.element.clearSashHoverState();\n\n\t\t// ensure that a reasonable widget height is persisted so that\n\t\t// accidential \"resize-to-single-items\" cases aren't happening\n\t\tconst dim = this._persistedSize.restore();\n\t\tconst minPersistedHeight = Math.ceil(this.getLayoutInfo().itemHeight * 4.3);\n\t\tif (dim && dim.height < minPersistedHeight) {\n\t\t\tthis._persistedSize.store(dim.with(undefined, minPersistedHeight));\n\t\t}\n\t}\n\n\tisFrozen(): boolean {\n\t\treturn this._state === State.Frozen;\n\t}\n\n\t_afterRender(position: ContentWidgetPositionPreference | null) {\n\t\tif (position === null) {\n\t\t\tif (this._isDetailsVisible()) {\n\t\t\t\tthis._details.hide(); //todo@jrieken soft-hide\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (this._state === State.Empty || this._state === State.Loading) {\n\t\t\t// no special positioning when widget isn't showing list\n\t\t\treturn;\n\t\t}\n\t\tif (this._isDetailsVisible() && !this._details.widget.isEmpty) {\n\t\t\tthis._details.show();\n\t\t}\n\t\tthis._positionDetails();\n\t}\n\n\tprivate _layout(size: dom.Dimension | undefined): void {\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.editor.getDomNode()) {\n\t\t\t// happens when running tests\n\t\t\treturn;\n\t\t}\n\n\t\tconst bodyBox = dom.getClientArea(this.element.domNode.ownerDocument.body);\n\t\tconst info = this.getLayoutInfo();\n\n\t\tif (!size) {\n\t\t\tsize = info.defaultSize;\n\t\t}\n\n\t\tlet height = size.height;\n\t\tlet width = size.width;\n\n\t\t// status bar\n\t\tthis._status.element.style.height = `${info.itemHeight}px`;\n\n\t\tif (this._state === State.Empty || this._state === State.Loading) {\n\t\t\t// showing a message only\n\t\t\theight = info.itemHeight + info.borderHeight;\n\t\t\twidth = info.defaultSize.width / 2;\n\t\t\tthis.element.enableSashes(false, false, false, false);\n\t\t\tthis.element.minSize = this.element.maxSize = new dom.Dimension(width, height);\n\t\t\tthis._contentWidget.setPreference(ContentWidgetPositionPreference.BELOW);\n\n\t\t} else {\n\t\t\t// showing items\n\n\t\t\t// width math\n\t\t\tconst maxWidth = bodyBox.width - info.borderHeight - 2 * info.horizontalPadding;\n\t\t\tif (width > maxWidth) {\n\t\t\t\twidth = maxWidth;\n\t\t\t}\n\t\t\tconst preferredWidth = this._completionModel ? this._completionModel.stats.pLabelLen * info.typicalHalfwidthCharacterWidth : width;\n\n\t\t\t// height math\n\t\t\tconst fullHeight = info.statusBarHeight + this._list.contentHeight + info.borderHeight;\n\t\t\tconst minHeight = info.itemHeight + info.statusBarHeight;\n\t\t\tconst editorBox = dom.getDomNodePagePosition(this.editor.getDomNode());\n\t\t\tconst cursorBox = this.editor.getScrolledVisiblePosition(this.editor.getPosition());\n\t\t\tconst cursorBottom = editorBox.top + cursorBox.top + cursorBox.height;\n\t\t\tconst maxHeightBelow = Math.min(bodyBox.height - cursorBottom - info.verticalPadding, fullHeight);\n\t\t\tconst availableSpaceAbove = editorBox.top + cursorBox.top - info.verticalPadding;\n\t\t\tconst maxHeightAbove = Math.min(availableSpaceAbove, fullHeight);\n\t\t\tlet maxHeight = Math.min(Math.max(maxHeightAbove, maxHeightBelow) + info.borderHeight, fullHeight);\n\n\t\t\tif (height === this._cappedHeight?.capped) {\n\t\t\t\t// Restore the old (wanted) height when the current\n\t\t\t\t// height is capped to fit\n\t\t\t\theight = this._cappedHeight.wanted;\n\t\t\t}\n\n\t\t\tif (height < minHeight) {\n\t\t\t\theight = minHeight;\n\t\t\t}\n\t\t\tif (height > maxHeight) {\n\t\t\t\theight = maxHeight;\n\t\t\t}\n\n\t\t\tconst forceRenderingAboveRequiredSpace = 150;\n\t\t\tif ((height > maxHeightBelow && maxHeightAbove > maxHeightBelow) || (this._forceRenderingAbove && availableSpaceAbove > forceRenderingAboveRequiredSpace)) {\n\t\t\t\tthis._contentWidget.setPreference(ContentWidgetPositionPreference.ABOVE);\n\t\t\t\tthis.element.enableSashes(true, true, false, false);\n\t\t\t\tmaxHeight = maxHeightAbove;\n\t\t\t} else {\n\t\t\t\tthis._contentWidget.setPreference(ContentWidgetPositionPreference.BELOW);\n\t\t\t\tthis.element.enableSashes(false, true, true, false);\n\t\t\t\tmaxHeight = maxHeightBelow;\n\t\t\t}\n\t\t\tthis.element.preferredSize = new dom.Dimension(preferredWidth, info.defaultSize.height);\n\t\t\tthis.element.maxSize = new dom.Dimension(maxWidth, maxHeight);\n\t\t\tthis.element.minSize = new dom.Dimension(220, minHeight);\n\n\t\t\t// Know when the height was capped to fit and remember\n\t\t\t// the wanted height for later. This is required when going\n\t\t\t// left to widen suggestions.\n\t\t\tthis._cappedHeight = height === fullHeight\n\t\t\t\t? { wanted: this._cappedHeight?.wanted ?? size.height, capped: height }\n\t\t\t\t: undefined;\n\t\t}\n\t\tthis._resize(width, height);\n\t}\n\n\tprivate _resize(width: number, height: number): void {\n\n\t\tconst { width: maxWidth, height: maxHeight } = this.element.maxSize;\n\t\twidth = Math.min(maxWidth, width);\n\t\theight = Math.min(maxHeight, height);\n\n\t\tconst { statusBarHeight } = this.getLayoutInfo();\n\t\tthis._list.layout(height - statusBarHeight, width);\n\t\tthis._listElement.style.height = `${height - statusBarHeight}px`;\n\t\tthis.element.layout(height, width);\n\t\tthis._contentWidget.layout();\n\n\t\tthis._positionDetails();\n\t}\n\n\tprivate _positionDetails(): void {\n\t\tif (this._isDetailsVisible()) {\n\t\t\tthis._details.placeAtAnchor(this.element.domNode, this._contentWidget.getPosition()?.preference[0] === ContentWidgetPositionPreference.BELOW);\n\t\t}\n\t}\n\n\tgetLayoutInfo() {\n\t\tconst fontInfo = this.editor.getOption(EditorOption.fontInfo);\n\t\tconst itemHeight = clamp(this.editor.getOption(EditorOption.suggestLineHeight) || fontInfo.lineHeight, 8, 1000);\n\t\tconst statusBarHeight = !this.editor.getOption(EditorOption.suggest).showStatusBar || this._state === State.Empty || this._state === State.Loading ? 0 : itemHeight;\n\t\tconst borderWidth = this._details.widget.getLayoutInfo().borderWidth;\n\t\tconst borderHeight = 2 * borderWidth;\n\n\t\treturn {\n\t\t\titemHeight,\n\t\t\tstatusBarHeight,\n\t\t\tborderWidth,\n\t\t\tborderHeight,\n\t\t\ttypicalHalfwidthCharacterWidth: fontInfo.typicalHalfwidthCharacterWidth,\n\t\t\tverticalPadding: 22,\n\t\t\thorizontalPadding: 14,\n\t\t\tdefaultSize: new dom.Dimension(430, statusBarHeight + 12 * itemHeight)\n\t\t};\n\t}\n\n\tprivate _isDetailsVisible(): boolean {\n\t\treturn this._storageService.getBoolean('expandSuggestionDocs', StorageScope.PROFILE, false);\n\t}\n\n\tprivate _setDetailsVisible(value: boolean) {\n\t\tthis._storageService.store('expandSuggestionDocs', value, StorageScope.PROFILE, StorageTarget.USER);\n\t}\n\n\tforceRenderingAbove() {\n\t\tif (!this._forceRenderingAbove) {\n\t\t\tthis._forceRenderingAbove = true;\n\t\t\tthis._layout(this._persistedSize.restore());\n\t\t}\n\t}\n\n\tstopForceRenderingAbove() {\n\t\tthis._forceRenderingAbove = false;\n\t}\n}\n\nexport class SuggestContentWidget implements IContentWidget {\n\n\treadonly allowEditorOverflow = true;\n\treadonly suppressMouseDown = false;\n\n\tprivate _position?: IPosition | null;\n\tprivate _preference?: ContentWidgetPositionPreference;\n\tprivate _preferenceLocked = false;\n\n\tprivate _added: boolean = false;\n\tprivate _hidden: boolean = false;\n\n\tconstructor(\n\t\tprivate readonly _widget: SuggestWidget,\n\t\tprivate readonly _editor: ICodeEditor\n\t) { }\n\n\tdispose(): void {\n\t\tif (this._added) {\n\t\t\tthis._added = false;\n\t\t\tthis._editor.removeContentWidget(this);\n\t\t}\n\t}\n\n\tgetId(): string {\n\t\treturn 'editor.widget.suggestWidget';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this._widget.element.domNode;\n\t}\n\n\tshow(): void {\n\t\tthis._hidden = false;\n\t\tif (!this._added) {\n\t\t\tthis._added = true;\n\t\t\tthis._editor.addContentWidget(this);\n\t\t}\n\t}\n\n\thide(): void {\n\t\tif (!this._hidden) {\n\t\t\tthis._hidden = true;\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\tlayout(): void {\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (this._hidden || !this._position || !this._preference) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tposition: this._position,\n\t\t\tpreference: [this._preference]\n\t\t};\n\t}\n\n\tbeforeRender() {\n\t\tconst { height, width } = this._widget.element.size;\n\t\tconst { borderWidth, horizontalPadding } = this._widget.getLayoutInfo();\n\t\treturn new dom.Dimension(width + 2 * borderWidth + horizontalPadding, height + 2 * borderWidth);\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null) {\n\t\tthis._widget._afterRender(position);\n\t}\n\n\tsetPreference(preference: ContentWidgetPositionPreference) {\n\t\tif (!this._preferenceLocked) {\n\t\t\tthis._preference = preference;\n\t\t}\n\t}\n\n\tlockPreference() {\n\t\tthis._preferenceLocked = true;\n\t}\n\n\tunlockPreference() {\n\t\tthis._preferenceLocked = false;\n\t}\n\n\tsetPosition(position: IPosition | null): void {\n\t\tthis._position = position;\n\t}\n}\n"]}
|
|
@@ -12,33 +12,34 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
14
|
import * as dom from '../../../../base/browser/dom.js';
|
|
15
|
+
import { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';
|
|
15
16
|
import { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';
|
|
16
17
|
import { Codicon } from '../../../../base/common/codicons.js';
|
|
17
|
-
import { ThemeIcon } from '../../../../base/common/themables.js';
|
|
18
18
|
import { Emitter } from '../../../../base/common/event.js';
|
|
19
19
|
import { MarkdownString } from '../../../../base/common/htmlContent.js';
|
|
20
20
|
import { DisposableStore } from '../../../../base/common/lifecycle.js';
|
|
21
|
-
import {
|
|
22
|
-
import { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';
|
|
21
|
+
import { ThemeIcon } from '../../../../base/common/themables.js';
|
|
23
22
|
import * as nls from '../../../../nls.js';
|
|
24
|
-
import {
|
|
23
|
+
import { isHighContrast } from '../../../../platform/theme/common/theme.js';
|
|
24
|
+
import { IThemeService } from '../../../../platform/theme/common/themeService.js';
|
|
25
|
+
import { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
|
|
25
26
|
export function canExpandCompletionItem(item) {
|
|
26
27
|
return !!item && Boolean(item.completion.documentation || item.completion.detail && item.completion.detail !== item.completion.label);
|
|
27
28
|
}
|
|
28
29
|
let SuggestDetailsWidget = class SuggestDetailsWidget {
|
|
29
|
-
constructor(_editor,
|
|
30
|
+
constructor(_editor, _themeService, _markdownRendererService) {
|
|
30
31
|
this._editor = _editor;
|
|
32
|
+
this._themeService = _themeService;
|
|
33
|
+
this._markdownRendererService = _markdownRendererService;
|
|
31
34
|
this._onDidClose = new Emitter();
|
|
32
35
|
this.onDidClose = this._onDidClose.event;
|
|
33
36
|
this._onDidChangeContents = new Emitter();
|
|
34
37
|
this.onDidChangeContents = this._onDidChangeContents.event;
|
|
35
38
|
this._disposables = new DisposableStore();
|
|
36
39
|
this._renderDisposeable = new DisposableStore();
|
|
37
|
-
this._borderWidth = 1;
|
|
38
40
|
this._size = new dom.Dimension(330, 0);
|
|
39
41
|
this.domNode = dom.$('.suggest-details');
|
|
40
42
|
this.domNode.classList.add('no-docs');
|
|
41
|
-
this._markdownRenderer = instaService.createInstance(MarkdownRenderer, { editor: _editor });
|
|
42
43
|
this._body = dom.$('.body');
|
|
43
44
|
this._scrollbar = new DomScrollableElement(this._body, {
|
|
44
45
|
alwaysConsumeMouseWheel: true,
|
|
@@ -47,7 +48,7 @@ let SuggestDetailsWidget = class SuggestDetailsWidget {
|
|
|
47
48
|
this._disposables.add(this._scrollbar);
|
|
48
49
|
this._header = dom.append(this._body, dom.$('.header'));
|
|
49
50
|
this._close = dom.append(this._header, dom.$('span' + ThemeIcon.asCSSSelector(Codicon.close)));
|
|
50
|
-
this._close.title = nls.localize(
|
|
51
|
+
this._close.title = nls.localize(1476, "Close");
|
|
51
52
|
this._close.role = 'button';
|
|
52
53
|
this._close.tabIndex = -1;
|
|
53
54
|
this._type = dom.append(this._header, dom.$('p.type'));
|
|
@@ -82,7 +83,7 @@ let SuggestDetailsWidget = class SuggestDetailsWidget {
|
|
|
82
83
|
}
|
|
83
84
|
getLayoutInfo() {
|
|
84
85
|
const lineHeight = this._editor.getOption(136 /* EditorOption.suggestLineHeight */) || this._editor.getOption(59 /* EditorOption.fontInfo */).lineHeight;
|
|
85
|
-
const borderWidth = this.
|
|
86
|
+
const borderWidth = isHighContrast(this._themeService.getColorTheme().type) ? 2 : 1;
|
|
86
87
|
const borderHeight = borderWidth * 2;
|
|
87
88
|
return {
|
|
88
89
|
lineHeight,
|
|
@@ -93,7 +94,7 @@ let SuggestDetailsWidget = class SuggestDetailsWidget {
|
|
|
93
94
|
};
|
|
94
95
|
}
|
|
95
96
|
renderLoading() {
|
|
96
|
-
this._type.textContent = nls.localize(
|
|
97
|
+
this._type.textContent = nls.localize(1477, "Loading...");
|
|
97
98
|
this._docs.textContent = '';
|
|
98
99
|
this.domNode.classList.remove('no-docs', 'no-type');
|
|
99
100
|
this.layout(this.size.width, this.getLayoutInfo().lineHeight * 2);
|
|
@@ -141,7 +142,8 @@ let SuggestDetailsWidget = class SuggestDetailsWidget {
|
|
|
141
142
|
else if (documentation) {
|
|
142
143
|
this._docs.classList.add('markdown-docs');
|
|
143
144
|
dom.clearNode(this._docs);
|
|
144
|
-
const renderedContents = this.
|
|
145
|
+
const renderedContents = this._markdownRendererService.render(documentation, {
|
|
146
|
+
editor: this._editor,
|
|
145
147
|
asyncRenderCallback: () => {
|
|
146
148
|
this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);
|
|
147
149
|
this._onDidChangeContents.fire(this);
|
|
@@ -203,18 +205,13 @@ let SuggestDetailsWidget = class SuggestDetailsWidget {
|
|
|
203
205
|
pageUp() {
|
|
204
206
|
this.scrollUp(80);
|
|
205
207
|
}
|
|
206
|
-
set borderWidth(width) {
|
|
207
|
-
this._borderWidth = width;
|
|
208
|
-
}
|
|
209
|
-
get borderWidth() {
|
|
210
|
-
return this._borderWidth;
|
|
211
|
-
}
|
|
212
208
|
focus() {
|
|
213
209
|
this.domNode.focus();
|
|
214
210
|
}
|
|
215
211
|
};
|
|
216
212
|
SuggestDetailsWidget = __decorate([
|
|
217
|
-
__param(1,
|
|
213
|
+
__param(1, IThemeService),
|
|
214
|
+
__param(2, IMarkdownRendererService)
|
|
218
215
|
], SuggestDetailsWidget);
|
|
219
216
|
export { SuggestDetailsWidget };
|
|
220
217
|
export class SuggestDetailsOverlay {
|